公开记录
软件健康报告模式 0.27.0 · 指标 2.3.1 · 2026-07-30 06:02 UTC

docling-project / docling.rs

Full Rust port of Python docling

RustMIT★ 20 星标⑂ 3 复刻始于 2026年6月在 GitHub 上查看 ↗
类型网络服务命令行工具如何判定

docling-project/docling.rs 的健康指数为 100 分中的 69 分,处于「良好」区间。 其得分最高的类别是AI Readiness(78/100),最低的是Community & Adoption(47/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

69
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均,再依据公开记录的分布进行校准,使各等级具有百分位含义;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 34(存在风险)的上限。

69
卓越93-100公开记录中的最高层级(约前 5%);基本满足所有检验标准
优秀80-92各方面均表现强劲;仅有少量不足
良好65-79健康;不足之处有限且可控
中等50-64可接受,但存在明显不足;建议进行审查
薄弱35-49多个领域存在实质性薄弱环节
存在风险20-34存在重大薄弱环节;采用时应保持审慎
危急1-19问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

加权总体分 62 经校准后在公布的指数量表上为 69(记录校准 2026-08-02)。

所有权

1,206 关注者26 个公开仓库始于 2024年11月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

71良好 · 占总体的 21%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
3.5/36提交节奏 — 52 周中有 5 周有提交
18/18提交量 — 最近一年 690 次提交
0/10OpenSSF Scorecard:Maintained — project was created within the last 90 days. Please review its contents carefully
所用输入
commits_last_year690
human_commit_share0.94
days_since_last_push0
active_weeks_last_year5

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 63 个发布版本
36/36发布时效 — 最近一次发布版本于 0 天前
27/27发布节奏 — 约每 0.9 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count63
latest_release_tagnpm-cuda-v0.52.1
releases_from_tags
days_since_latest_release0
mean_days_between_releases0.9

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

47薄弱 · 占总体的 17%

流行度与采用

23存在风险
评分方式
20.7/60星标 — 20 个星标
2.5/25复刻 — 3 个复刻
0/15关注者 — 1 位关注者
所用输入
forks3
stars20
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

70良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
has_readme
has_license
readme_badges
has_contributing
has_issue_template
has_code_of_conduct
readme_badge_services
has_pull_request_template
评分方式
44.1/80月度下载量 — crates 合计每月 2,037 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagesdocling, docling-asr, docling-cli, docling-pdf, docling-rag, docling-core
dependents
ecosystemscrates
total_downloads6,108
monthly_downloads2,037
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

63中等 · 占总体的 23%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
4.9/22.5提交分布 — 头号贡献者编写了 78% 的提交
2.7/13.5贡献者广度 — 2 位贡献者
6/10OpenSSF Scorecard:Contributors — project has 2 contributing companies or organizations -- score normalized to 6
所用输入
bus_factor1
contributors_sampled2
top_contributor_share0.78
评分方式
40.2/42议题解决 — 96% 的议题已关闭
29.8/30PR 接受 — 已裁定的 PR 中 126/127 已合并
0/13Newcomer PR acceptance — 30 天内没有首次贡献者的 PR 得到裁决
0/15OpenSSF Scorecard:Code-Review — Found 0/14 approved changesets -- score normalized to 0
所用输入
merged_prs126
open_issues2
closed_issues45
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0.957
closed_unmerged_prs1
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
已排除计分(无数据或不适用):newcomer_pr_acceptance。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
22.2/25所有者影响力 — docling-project 有 1,206 位关注者
13.8/25既往记录 — 26 个公开仓库,账户约 1 年
所用输入
followers1,206
owner_typeOrganization
is_verified
owner_logindocling-project
public_repos26
account_age_days622
评分方式
25/25已发布且可解析 — crates 上有 6 个软件包
35/35发布时效 — 最近一次发布于 0 天前
20/20版本历史 — 46 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesdocling, docling-asr, docling-cli, docling-pdf, docling-rag, docling-core
ecosystemscrates
any_deprecated
min_days_since_publish0

工程质量

基础的工程与文档实践是否到位?

71良好 · 占总体的 19%

工程实践

68良好
评分方式
24/24CI 工作流 — 6 个工作流
24/24存在测试
0/16Linter 配置
0/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 8 out of 8 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

75良好
评分方式
30/30README
25/25文档目录
0/15文档 / 主页站点
10/10仓库描述
0/10主题标签
10/10Wiki
所用输入
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

48薄弱 · 占总体的 16%

安全态势

42薄弱
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 8 out of 8 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/14 approved changesets -- score normalized to 0
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
2/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
3.8/7.5Vulnerabilities — 5 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate4.2
评分方式
14/35直接依赖不含已知公告 — 1 个受影响:quick-xml 0.31.0 (high 7.5)
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
40/40没有长期未处理的公告 — 没有公告公开超过 90 天
所用输入
sourceosv
advisories5
affected_packages4
assessed_packages622
unassessed_packages64
affected_by_severityhigh 1, unknown 3
direct_affected_packages1
已排除计分(无数据或不适用):间接依赖不含已知公告。 其余权重已重新归一化。 已将 622 个已解析依赖与 OSV 比对。 有 64 项无法评估——没有已解析的版本、生态系统不受支持,或超出所报告的软件包清单。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?权重刻意设小(4%):代理工具链是一项真实的维护信号,但完全不具备的仓库仍可达到 100/100。

78良好 · 占总体的 4%
评分方式
45/45代理指令 — CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 94 次人类提交中有 92 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.979
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes6,621
评分方式
12.6/18一条命令的引导启动 — Cargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml(工具链约定,无任务运行器)
22/22自动化测试
0/11Lint / 格式化配置
11/11静态类型检查 — Rust(静态类型)
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 75 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesCargo.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs
agent_commit_share0.75
toolchain_manifestsCargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml, crates/docling-core/Cargo.toml, crates/docling-node/Cargo.toml, crates/docling-pdf/Cargo.toml, crates/docling-py/Cargo.toml, crates/docling-rag/Cargo.toml, crates/docling-serve/Cargo.toml, crates/docling-wasm/Cargo.toml, crates/docling/Cargo.toml
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — Rust(静态类型)
52.4/55可控的文件大小 — 采样的 188 个源文件中有 9 个超过 60KB
所用输入
primary_languageRust
largest_source_bytes107,873
source_files_sampled188
oversized_source_files9
评分方式
40/40API 模式(OpenAPI/GraphQL/proto) — crates/docling-serve/src/openapi.yaml
0/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_filescrates/docling-serve/src/openapi.yaml

关键数据

20GitHub 星标
2贡献者
690最近 12 个月提交数
0距最近推送天数
63发布版本数
1巴士系数(bus factor)
2开放议题
crates.io软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch crates package 'docling-py' from its registry
  • Could not fetch crates package 'docling-node' from its registry
  • deps.dev does not index crates:docling@0.52.2; advisories assessed against the repository dependency graph instead

更多细节

Star 与 Fork 历史 0 ★ / 3 ⇿
0Star
3Fork
26发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

12233312026-062026-072026-07
主版本 0次版本 20修订 5
OpenSSF Scorecard 4.2 / 10
4.2综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-30 06:02 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests8 out of 8 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/14 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
4Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
5Vulnerabilities5 existing vulnerabilities detected
直接依赖 92
注册表软件包版本约束清单文件
crates.iodocling-core0.52.2crates/docling-asr/Cargo.toml
crates.ioort2.0.0-rc.12crates/docling-asr/Cargo.toml
crates.ioserde_json1crates/docling-asr/Cargo.toml
crates.iosymphonia0.5crates/docling-asr/Cargo.toml
crates.iodocling0.52.2crates/docling-cli/Cargo.toml
crates.iodocling-serve0.52.2crates/docling-cli/Cargo.toml
crates.ioserde_json1crates/docling-cli/Cargo.toml
crates.iotokio1crates/docling-cli/Cargo.toml
crates.ioserde_json1crates/docling-core/Cargo.toml
crates.iosha20.10crates/docling-core/Cargo.toml
crates.iotokenizers0.20crates/docling-core/Cargo.toml
crates.iopulldown-cmark0.13crates/docling-core/Cargo.toml
crates.iodocling0.52.2crates/docling-node/Cargo.toml
crates.ionapi2crates/docling-node/Cargo.toml
crates.ionapi-derive2crates/docling-node/Cargo.toml
crates.iodocling-core0.52.2crates/docling-pdf/Cargo.toml
crates.iopdfium-render0.8crates/docling-pdf/Cargo.toml
crates.ioort2.0.0-rc.12crates/docling-pdf/Cargo.toml
crates.ioimage0.25crates/docling-pdf/Cargo.toml
crates.ioflate21crates/docling-pdf/Cargo.toml
crates.iotar0.4crates/docling-pdf/Cargo.toml
crates.ioregex1.11crates/docling-pdf/Cargo.toml
crates.iolopdf0.44crates/docling-pdf/Cargo.toml
crates.iofast_image_resize5.1.4crates/docling-pdf/Cargo.toml
crates.iotokenizers0.20crates/docling-pdf/Cargo.toml
crates.iodoclingcrates/docling-py/Cargo.toml
crates.iopyo30.29crates/docling-py/Cargo.toml
crates.ioserde_json1crates/docling-py/Cargo.toml
PyPIdocling-core>=2.0crates/docling-py/pyproject.toml
crates.iodocling0.52.2crates/docling-rag/Cargo.toml
crates.iodocling-pdf0.52.2crates/docling-rag/Cargo.toml
crates.iozip2.2crates/docling-rag/Cargo.toml
crates.iotokio1crates/docling-rag/Cargo.toml
crates.ioaxum0.8crates/docling-rag/Cargo.toml
crates.ioasync-trait0.1crates/docling-rag/Cargo.toml
crates.iothiserror2crates/docling-rag/Cargo.toml
crates.ioserde1crates/docling-rag/Cargo.toml
crates.ioserde_json1crates/docling-rag/Cargo.toml
crates.iodotenvy0.15crates/docling-rag/Cargo.toml
crates.ioclap4crates/docling-rag/Cargo.toml
crates.ioreqwest0.12crates/docling-rag/Cargo.toml
crates.iosqlx0.8crates/docling-rag/Cargo.toml
crates.iosqlite-vec0.1.6crates/docling-rag/Cargo.toml
crates.iolibsqlite3-sys0.30crates/docling-rag/Cargo.toml
crates.iopulldown-cmark0.13crates/docling-rag/Cargo.toml
crates.iouuid1crates/docling-rag/Cargo.toml
crates.iosha20.10crates/docling-rag/Cargo.toml
crates.iotracing0.1crates/docling-rag/Cargo.toml
crates.iotracing-subscriber0.3crates/docling-rag/Cargo.toml
crates.ioort2.0.0-rc.12crates/docling-rag/Cargo.toml
crates.iotokenizers0.20crates/docling-rag/Cargo.toml
crates.iosuppaftp6crates/docling-rag/Cargo.toml
crates.iossh20.9crates/docling-rag/Cargo.toml
crates.iolapin2crates/docling-rag/Cargo.toml
crates.iofutures-lite2crates/docling-rag/Cargo.toml
crates.ioredis0.27crates/docling-rag/Cargo.toml
crates.ioaxum0.8crates/docling-serve/Cargo.toml
crates.iodocling0.52.2crates/docling-serve/Cargo.toml
crates.ioserde1crates/docling-serve/Cargo.toml
crates.ioserde_json1crates/docling-serve/Cargo.toml
crates.iotokio1crates/docling-serve/Cargo.toml
crates.iotokio-stream0.1crates/docling-serve/Cargo.toml
crates.ioureq3crates/docling-serve/Cargo.toml
crates.iourl2crates/docling-serve/Cargo.toml
crates.iodocling0.52.2crates/docling-wasm/Cargo.toml
crates.iodocling-core0.52.2crates/docling-wasm/Cargo.toml
crates.iodocling-pdf0.52.2crates/docling-wasm/Cargo.toml
crates.ioimage0.25crates/docling-wasm/Cargo.toml
crates.iojs-sys0.3crates/docling-wasm/Cargo.toml
crates.iowasm-bindgen-futures0.4crates/docling-wasm/Cargo.toml
crates.ioserde_json1crates/docling-wasm/Cargo.toml
crates.iowasm-bindgen0.2crates/docling-wasm/Cargo.toml
crates.ioconsole_error_panic_hook0.1crates/docling-wasm/Cargo.toml
crates.iocalamine0.26crates/docling/Cargo.toml
crates.iocsv1.4.0crates/docling/Cargo.toml
crates.ioheadless_chrome1.0crates/docling/Cargo.toml
crates.iotempfile3crates/docling/Cargo.toml
crates.iodocling-asr0.52.2crates/docling/Cargo.toml
crates.iodocling-core0.52.2crates/docling/Cargo.toml
crates.iodocling-pdf0.52.2crates/docling/Cargo.toml
crates.ioimage0.25crates/docling/Cargo.toml
crates.iomail-parser0.11crates/docling/Cargo.toml
crates.iopulldown-cmark0.13.4crates/docling/Cargo.toml
crates.ioquick-xml0.41crates/docling/Cargo.toml
crates.iorayon1.10crates/docling/Cargo.toml
crates.ioregex1.11crates/docling/Cargo.toml
crates.ioroxmltree0.20crates/docling/Cargo.toml
crates.ioscraper0.27.0crates/docling/Cargo.toml
crates.ioserde_json1crates/docling/Cargo.toml
crates.ioureq3crates/docling/Cargo.toml
crates.iourl2crates/docling/Cargo.toml
crates.iozip2.2crates/docling/Cargo.toml
全部依赖 686

来自 GitHub 依赖图的完整解析依赖集合:113 个直接依赖与 573 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
crates.ioasync-trait直接
crates.ioasync-trait0.1.91直接
crates.ioaxum直接
crates.ioaxum0.8.9直接
crates.iocalamine直接
crates.iocalamine0.26.1直接
crates.ioclap直接
crates.ioclap4.6.4直接
crates.ioconsole_error_panic_hook直接
crates.ioconsole_error_panic_hook0.1.7直接
crates.iocsv直接
crates.iocsv1.4.0直接
crates.iodocling直接
crates.iodocling-asr直接
crates.iodocling-core直接
crates.iodocling-pdf直接
crates.iodocling-serve直接
crates.iodotenvy直接
crates.iodotenvy0.15.7直接
crates.iofast_image_resize直接
crates.iofast_image_resize5.5.0直接
crates.ioflate2直接
crates.ioflate21.1.9直接
crates.iofutures-lite直接
crates.iofutures-lite1.13.0直接
crates.iofutures-lite2.6.1直接
crates.ioheadless_chrome直接
crates.ioheadless_chrome1.0.22直接
crates.ioimage直接
crates.ioimage0.25.10直接
crates.iojs-sys直接
crates.iojs-sys0.3.103直接
crates.iolapin直接
crates.iolapin2.5.5直接
crates.iolibsqlite3-sys直接
crates.iolibsqlite3-sys0.30.1直接
crates.iolopdf直接
crates.iolopdf0.44.0直接
crates.iomail-parser直接
crates.iomail-parser0.11.5直接
crates.ionapi直接
crates.ionapi2.16.17直接
crates.ionapi-derive直接
crates.ionapi-derive2.16.13直接
crates.ioort直接
crates.ioort2.0.0-rc.12直接
crates.iopdfium-render直接
crates.iopdfium-render0.8.37直接
crates.iopulldown-cmark直接
crates.iopulldown-cmark0.13.4直接
crates.iopyo30.29.0直接
crates.ioquick-xml直接
crates.ioquick-xml0.31.0直接
crates.ioquick-xml0.41.0直接
crates.iorayon直接
crates.iorayon1.12.0直接
crates.ioredis直接
crates.ioredis0.27.6直接
crates.ioregex直接
crates.ioregex1.13.1直接
crates.ioreqwest直接
crates.ioreqwest0.12.28直接
crates.ioroxmltree直接
crates.ioroxmltree0.20.0直接
crates.ioscraper直接
crates.ioscraper0.27.0直接
crates.ioserde直接
crates.ioserde1.0.229直接
crates.ioserde_json直接
crates.ioserde_json1.0.151直接
crates.iosha2直接
crates.iosha20.10.9直接
crates.iosha20.11.0直接
crates.iosqlite-vec直接
crates.iosqlite-vec0.1.9直接
crates.iosqlx直接
crates.iosqlx0.8.6直接
crates.iossh2直接
crates.iossh20.9.6直接
crates.iosuppaftp直接
crates.iosuppaftp6.3.0直接
crates.iosymphonia直接
crates.iosymphonia0.5.5直接
crates.iotar直接
crates.iotar0.4.46直接
crates.iotempfile直接
crates.iotempfile3.27.0直接
crates.iothiserror直接
crates.iothiserror1.0.69直接
crates.iothiserror2.0.19直接
crates.iotokenizers直接
crates.iotokenizers0.20.4直接
crates.iotokio直接
crates.iotokio1.53.1直接
crates.iotokio-stream直接
crates.iotokio-stream0.1.19直接
crates.iotracing直接
crates.iotracing0.1.44直接
crates.iotracing-subscriber直接
crates.iotracing-subscriber0.3.23直接
crates.ioureq直接
crates.ioureq3.3.0直接
crates.iourl直接
crates.iourl2.5.8直接
crates.iouuid直接
crates.iouuid1.24.0直接
crates.iowasm-bindgen直接
crates.iowasm-bindgen0.2.126直接
crates.iowasm-bindgen-futures直接
crates.iowasm-bindgen-futures0.4.76直接
crates.iozip直接
crates.iozip2.4.2直接
PyPIdocling-core直接
crates.ioadler22.0.1间接
crates.ioaes0.8.4间接
crates.ioaes0.9.2间接
crates.ioaho-corasick1.1.4间接
crates.ioaligned0.4.3间接
crates.ioaligned-vec0.6.4间接
crates.ioallocator-api20.2.21间接
crates.ioamq-protocol7.2.3间接
crates.ioamq-protocol-tcp7.2.3间接
crates.ioamq-protocol-types7.2.3间接
crates.ioamq-protocol-uri7.2.3间接
crates.ioandroid_system_properties0.1.5间接
crates.ioanes0.1.6间接
crates.ioanstream1.0.0间接
crates.ioanstyle1.0.14间接
crates.ioanstyle-parse1.0.0间接
crates.ioanstyle-query1.1.5间接
crates.ioanstyle-wincon3.0.11间接
crates.ioanyhow1.0.104间接
crates.ioarbitrary1.4.2间接
crates.ioarc-swap1.9.2间接
crates.ioarg_enum_proc_macro0.3.4间接
crates.ioarrayvec0.7.8间接
crates.ioas-slice0.2.1间接
crates.ioasn1-rs0.7.2间接
crates.ioasn1-rs-derive0.6.0间接
crates.ioasn1-rs-impl0.2.0间接
crates.ioasync-channel2.5.0间接
crates.ioasync-executor1.14.0间接
crates.ioasync-global-executor3.1.0间接
crates.ioasync-global-executor-trait2.2.0间接
crates.ioasync-io1.13.0间接
crates.ioasync-io2.6.0间接
crates.ioasync-lock2.8.0间接
crates.ioasync-lock3.4.2间接
crates.ioasync-reactor-trait1.1.0间接
crates.ioasync-task4.7.1间接
crates.ioatoi2.0.0间接
crates.ioatomic-waker1.1.2间接
crates.ioauto_generate_cdp0.4.6间接
crates.ioautocfg1.5.1间接
crates.ioav-scenechange0.14.1间接
crates.ioav1-grain0.2.5间接
crates.ioavif-serialize0.8.9间接
crates.ioaxum-core0.5.6间接
crates.iobase640.13.1间接
crates.iobase640.22.1间接
crates.iobase64ct1.8.3间接
crates.iobit_field0.10.3间接
crates.iobitflags1.3.2间接
crates.iobitflags2.13.1间接
crates.iobitstream-io4.10.0间接
crates.ioblock-buffer0.10.4间接
crates.ioblock-buffer0.12.1间接
crates.ioblock-padding0.3.3间接
crates.ioblock-padding0.4.2间接
crates.ioblocking1.6.2间接
crates.iobuilt0.8.1间接
crates.iobumpalo3.20.3间接
crates.iobytemuck1.25.2间接
crates.iobyteorder1.5.0间接
crates.iobyteorder-lite0.1.0间接
crates.iobytes1.12.1间接
crates.iocast0.3.0间接
crates.iocbc0.1.2间接
crates.iocbc0.2.1间接
crates.iocc1.4.0间接
crates.iocfg-if1.0.4间接
crates.iocfg_aliases0.2.2间接
crates.iochacha200.10.1间接
crates.iochrono0.4.45间接
crates.iociborium0.2.2间接
crates.iociborium-io0.2.2间接
crates.iociborium-ll0.2.2间接
crates.iocipher0.4.4间接
crates.iocipher0.5.2间接
crates.ioclap_builder4.6.2间接
crates.ioclap_derive4.6.4间接
crates.ioclap_lex1.1.0间接
crates.iocms0.2.3间接
crates.iocodepage0.1.2间接
crates.iocolor_quant1.1.0间接
crates.iocolorchoice1.0.5间接
crates.iocombine4.6.7间接
crates.ioconcurrent-queue2.5.0间接
crates.ioconsole_log1.1.0间接
crates.ioconst-oid0.10.2间接
crates.ioconst-oid0.9.6间接
crates.ioconvert_case0.6.0间接
crates.ioconvert_case0.8.0间接
crates.iocookie-factory0.3.3间接
crates.iocore-foundation0.9.4间接
crates.iocore-foundation-sys0.8.7间接
crates.iocpubits0.1.1间接
crates.iocpufeatures0.2.17间接
crates.iocpufeatures0.3.0间接
crates.iocrc3.4.0间接
crates.iocrc-catalog2.5.0间接
crates.iocrc32fast1.5.0间接
crates.iocriterion间接
crates.iocriterion0.5.1间接
crates.iocriterion-plot0.5.0间接
crates.iocrossbeam-deque0.8.7间接
crates.iocrossbeam-epoch0.9.20间接
crates.iocrossbeam-queue0.3.13间接
crates.iocrossbeam-utils0.8.22间接
crates.iocrunchy0.2.4间接
crates.iocrypto-common0.1.7间接
crates.iocrypto-common0.2.2间接
crates.iocssparser0.37.0间接
crates.iocssparser-macros0.7.0间接
crates.iocsv-core0.1.13间接
crates.ioctor0.2.9间接
crates.iodarling0.20.11间接
crates.iodarling_core0.20.11间接
crates.iodarling_macro0.20.11间接
crates.iodata-encoding2.11.0间接
crates.iodefmt1.1.1间接
crates.iodefmt-macros1.1.1间接
crates.iodefmt-parser1.0.0间接
crates.ioder0.7.10间接
crates.ioder-parser10.0.0间接
crates.ioder_derive0.7.3间接
crates.ioderanged0.5.8间接
crates.ioderive_arbitrary1.4.2间接
crates.ioderive_builder0.20.2间接
crates.ioderive_builder_core0.20.2间接
crates.ioderive_builder_macro0.20.2间接
crates.ioderive_more2.1.1间接
crates.ioderive_more-impl2.1.1间接
crates.iodes0.8.1间接
crates.iodigest0.10.7间接
crates.iodigest0.11.3间接
crates.iodisplaydoc0.2.6间接
crates.iodoc-comment0.3.4间接
crates.iodocument-features0.2.12间接
crates.iodtoa1.0.11间接
crates.iodtoa-short0.3.5间接
crates.ioecb0.2.0间接
crates.ioego-tree0.11.0间接
crates.ioeither1.17.0间接
crates.ioencoding_rs0.8.35间接
crates.ioequator0.4.2间接
crates.ioequator-macro0.4.2间接
crates.ioequivalent1.0.2间接
crates.ioerrno0.3.14间接
crates.ioesaxx-rs0.1.10间接
crates.ioetcetera0.8.0间接
crates.ioevent-listener2.5.3间接
crates.ioevent-listener5.4.1间接
crates.ioevent-listener-strategy0.5.4间接
crates.ioexecutor-trait2.1.2间接
crates.ioexr1.74.2间接
crates.ioextended0.1.0间接
crates.iofastrand1.9.0间接
crates.iofastrand2.5.0间接
crates.iofax0.2.7间接
crates.iofdeflate0.3.7间接
crates.iofiletime0.2.29间接
crates.iofind-msvc-tools0.1.9间接
crates.ioflagset0.4.7间接
crates.ioflume0.11.1间接
crates.iofnv1.0.7间接
crates.iofoldhash0.1.5间接
crates.ioform_urlencoded1.2.2间接
crates.iofutures-channel0.3.33间接
crates.iofutures-core0.3.33间接
crates.iofutures-executor0.3.33间接
crates.iofutures-intrusive0.5.0间接
crates.iofutures-io0.3.33间接
crates.iofutures-sink0.3.33间接
crates.iofutures-task0.3.33间接
crates.iofutures-util0.3.33间接
crates.iogeneric-array0.14.7间接
crates.iogetopts0.2.24间接
crates.iogetrandom0.2.17间接
crates.iogetrandom0.3.4间接
crates.iogetrandom0.4.3间接
crates.iogif0.14.2间接
crates.iohalf2.7.1间接
crates.iohashbrown0.15.5间接
crates.iohashbrown0.17.1间接
crates.iohashify0.2.9间接
crates.iohashlink0.10.0间接
crates.ioheck0.5.0间接
crates.iohermit-abi0.3.9间接
crates.iohermit-abi0.5.2间接
crates.iohex0.4.3间接
crates.iohkdf0.12.4间接
crates.iohmac0.12.1间接
crates.iohmac-sha2561.1.14间接
crates.iohome0.5.12间接
crates.iohtml5ever0.39.0间接
crates.iohttp1.4.2间接
crates.iohttp-body1.1.0间接
crates.iohttp-body-util间接
crates.iohttp-body-util0.1.4间接
crates.iohttparse1.10.1间接
crates.iohttpdate1.0.3间接
crates.iohybrid-array0.4.13间接
crates.iohyper1.11.0间接
crates.iohyper-rustls0.27.9间接
crates.iohyper-util0.1.20间接
crates.ioiana-time-zone0.1.65间接
crates.ioiana-time-zone-haiku0.1.2间接
crates.ioicu_collections2.2.0间接
crates.ioicu_locale_core2.2.0间接
crates.ioicu_normalizer2.2.0间接
crates.ioicu_normalizer_data2.2.0间接
crates.ioicu_properties2.2.0间接
crates.ioicu_properties_data2.2.0间接
crates.ioicu_provider2.2.0间接
crates.ioident_case1.0.1间接
crates.ioidna1.1.0间接
crates.ioidna_adapter1.2.2间接
crates.ioimage-webp0.2.4间接
crates.ioimgref1.12.2间接
crates.ioindexmap2.14.0间接
crates.ioinout0.1.4间接
crates.ioinout0.2.2间接
crates.ioinstant0.1.13间接
crates.iointerpolate_name0.2.4间接
crates.ioio-lifetimes1.0.11间接
crates.ioipnet2.12.0间接
crates.iois-terminal0.4.17间接
crates.iois_terminal_polyfill1.70.2间接
crates.ioitertools0.10.5间接
crates.ioitertools0.11.0间接
crates.ioitertools0.12.1间接
crates.ioitertools0.13.0间接
crates.ioitertools0.14.0间接
crates.ioitertools0.15.0间接
crates.ioitoa1.0.18间接
crates.iojiff0.2.35间接
crates.iojiff-core0.1.0间接
crates.iojiff-static0.2.35间接
crates.iojiff-tzdb0.1.8间接
crates.iojiff-tzdb-platform0.1.3间接
crates.iojobserver0.1.35间接
crates.iolazy-regex3.6.0间接
crates.iolazy-regex-proc_macros3.6.0间接
crates.iolazy_static1.5.0间接
crates.iolebe0.5.3间接
crates.iolibc0.2.189间接
crates.iolibfuzzer-sys0.4.13间接
crates.iolibloading0.8.9间接
crates.iolibloading0.9.0间接
crates.iolibm0.2.16间接
crates.iolibredox0.1.18间接
crates.iolibssh2-sys0.3.2间接
crates.iolibz-sys1.1.29间接
crates.iolinux-raw-sys0.12.1间接
crates.iolinux-raw-sys0.3.8间接
crates.iolitemap0.8.2间接
crates.iolitrs1.0.0间接
crates.iolock_api0.4.14间接
crates.iolog0.4.33间接
crates.ioloop90.1.5间接
crates.iolru-slab0.1.2间接
crates.iolzma-rust20.15.8间接
crates.iomacro_rules_attribute0.2.2间接
crates.iomacro_rules_attribute-proc_macro0.2.2间接
crates.iomarkup5ever0.39.0间接
crates.iomatchers0.2.0间接
crates.iomatchit0.8.4间接
crates.iomatrixmultiply0.3.11间接
crates.iomaybe-owned0.3.4间接
crates.iomaybe-rayon0.1.1间接
crates.iomd-50.10.6间接
crates.iomd-50.11.0间接
crates.iomemchr2.8.3间接
crates.iomime0.3.17间接
crates.iominimal-lexical0.2.1间接
crates.iominiz_oxide0.8.9间接
crates.iomio1.2.2间接
crates.iomonostate0.1.18间接
crates.iomonostate-impl0.1.18间接
crates.iomoxcms0.8.1间接
crates.iomulter3.1.0间接
crates.ionapi-build间接
crates.ionapi-build2.3.2间接
crates.ionapi-derive-backend1.0.75间接
crates.ionapi-sys2.4.0间接
crates.iondarray0.17.2间接
crates.ionew_debug_unreachable1.0.6间接
crates.iono_std_io20.9.4间接
crates.ionom7.1.3间接
crates.ionom8.0.0间接
crates.ionoop_proc_macro0.3.0间接
crates.ionu-ansi-term0.50.3间接
crates.ionum-bigint0.4.8间接
crates.ionum-complex0.4.6间接
crates.ionum-conv0.2.2间接
crates.ionum-derive0.4.2间接
crates.ionum-integer0.1.46间接
crates.ionum-rational0.4.2间接
crates.ionum-traits0.2.19间接
crates.iooid-registry0.8.1间接
crates.ioonce_cell1.21.4间接
crates.ioonce_cell_polyfill1.70.2间接
crates.ioonig6.5.3间接
crates.ioonig_sys69.9.3间接
crates.iooorandom11.1.5间接
crates.ioopenssl-probe0.1.6间接
crates.ioopenssl-sys0.9.117间接
crates.ioort-sys2.0.0-rc.12间接
crates.iop12-keystore0.1.5间接
crates.ioparking2.2.1间接
crates.ioparking_lot0.12.5间接
crates.ioparking_lot_core0.9.12间接
crates.iopaste1.0.15间接
crates.iopastey0.1.1间接
crates.iopbkdf20.12.2间接
crates.iopem-rfc74680.7.0间接
crates.iopercent-encoding2.3.2间接
crates.iophf0.13.1间接
crates.iophf_codegen0.13.1间接
crates.iophf_generator0.13.1间接
crates.iophf_macros0.13.1间接
crates.iophf_shared0.13.1间接
crates.iopin-project-lite0.2.17间接
crates.iopinky-swear6.2.1间接
crates.iopiper0.2.5间接
crates.iopiston-float1.0.1间接
crates.iopkcs120.1.0间接
crates.iopkcs50.7.1间接
crates.iopkg-config0.3.33间接
crates.ioplain0.2.3间接
crates.ioplotters0.3.7间接
crates.ioplotters-backend0.3.7间接
crates.ioplotters-svg0.3.7间接
crates.iopng0.18.1间接
crates.iopolling2.8.0间接
crates.iopolling3.11.0间接
crates.ioportable-atomic1.14.0间接
crates.ioportable-atomic-util0.2.7间接
crates.iopotential_utf0.1.5间接
crates.iopowerfmt0.2.0间接
crates.ioppv-lite860.2.21间接
crates.ioprecomputed-hash0.1.1间接
crates.ioproc-macro21.0.107间接
crates.ioprofiling1.0.18间接
crates.ioprofiling-procmacros1.0.18间接
crates.iopulp0.22.3间接
crates.iopulp-wasm-simd-flag0.1.1间接
crates.iopxfm0.1.30间接
crates.iopyo3-build-config0.29.0间接
crates.iopyo3-ffi0.29.0间接
crates.iopyo3-macros0.29.0间接
crates.iopyo3-macros-backend0.29.0间接
crates.ioqoi0.4.1间接
crates.ioquick-error2.0.1间接
crates.ioquinn0.11.11间接
crates.ioquinn-proto0.11.16间接
crates.ioquinn-udp0.5.15间接
crates.ioquote1.0.47间接
crates.ior-efi5.3.0间接
crates.ior-efi6.0.0间接
crates.iorand0.10.2间接
crates.iorand0.8.7间接
crates.iorand0.9.5间接
crates.iorand_chacha0.3.1间接
crates.iorand_chacha0.9.0间接
crates.iorand_core0.10.1间接
crates.iorand_core0.6.4间接
crates.iorand_core0.9.5间接
crates.iorand_pcg0.10.2间接
crates.iorangemap1.7.1间接
crates.iorav1e0.8.1间接
crates.ioravif0.13.0间接
crates.ioraw-cpuid11.6.0间接
crates.iorawpointer0.2.1间接
crates.iorayon-cond0.3.0间接
crates.iorayon-core1.13.0间接
crates.iorc20.8.1间接
crates.ioreactor-trait1.1.0间接
crates.ioreborrow0.5.5间接
crates.ioredox_syscall0.5.18间接
crates.ioredox_syscall0.9.0间接
crates.ioregex-automata0.4.16间接
crates.ioregex-syntax0.8.11间接
crates.iorgb0.8.53间接
crates.ioring0.17.14间接
crates.iorustc-hash2.1.3间接
crates.iorustc_version0.4.1间接
crates.iorusticata-macros4.1.0间接
crates.iorustix0.37.28间接
crates.iorustix1.1.4间接
crates.iorustls0.23.42间接
crates.iorustls-connector0.20.2间接
crates.iorustls-native-certs0.7.3间接
crates.iorustls-pemfile2.2.0间接
crates.iorustls-pki-types1.15.1间接
crates.iorustls-webpki0.103.13间接
crates.iorustversion1.0.23间接
crates.ioryu1.0.23间接
crates.iosalsa200.10.2间接
crates.iosame-file1.0.6间接
crates.ioschannel0.1.29间接
crates.ioscopeguard1.2.0间接
crates.ioscrypt0.11.0间接
crates.iosecurity-framework2.11.1间接
crates.iosecurity-framework-sys2.17.0间接
crates.ioselectors0.38.0间接
crates.iosemver1.0.28间接
crates.ioserde_core1.0.229间接
crates.ioserde_derive1.0.229间接
crates.ioserde_path_to_error0.1.20间接
crates.ioserde_urlencoded0.7.1间接
crates.ioservo_arc0.4.3间接
crates.iosha10.10.7间接
crates.iosharded-slab0.1.7间接
crates.ioshlex2.0.1间接
crates.iosignal-hook-registry1.4.8间接
crates.iosimd-adler320.3.10间接
crates.iosimd_helpers0.1.0间接
crates.iosiphasher1.0.3间接
crates.ioslab0.4.12间接
crates.iosmallvec1.15.2间接
crates.iosocket20.4.10间接
crates.iosocket20.6.5间接
crates.iosocks0.3.4间接
crates.iospin0.9.9间接
crates.iospki0.7.3间接
crates.iospm_precompiled0.1.4间接
crates.iosqlx-core0.8.6间接
crates.iosqlx-macros0.8.6间接
crates.iosqlx-macros-core0.8.6间接
crates.iosqlx-postgres0.8.6间接
crates.iosqlx-sqlite0.8.6间接
crates.iostable_deref_trait1.2.1间接
crates.iostring_cache0.9.0间接
crates.iostring_cache_codegen0.6.1间接
crates.iostringprep0.1.5间接
crates.iostrsim0.11.1间接
crates.iosubtle2.6.1间接
crates.iosymphonia-bundle-flac0.5.5间接
crates.iosymphonia-bundle-mp30.5.5间接
crates.iosymphonia-codec-aac0.5.5间接
crates.iosymphonia-codec-pcm0.5.5间接
crates.iosymphonia-codec-vorbis0.5.5间接
crates.iosymphonia-core0.5.5间接
crates.iosymphonia-format-isomp40.5.5间接
crates.iosymphonia-format-mkv0.5.5间接
crates.iosymphonia-format-ogg0.5.5间接
crates.iosymphonia-format-riff0.5.5间接
crates.iosymphonia-metadata0.5.5间接
crates.iosymphonia-utils-xiph0.5.5间接
crates.iosyn2.0.119间接
crates.iosyn3.0.3间接
crates.iosync_wrapper1.0.2间接
crates.iosynstructure0.13.2间接
crates.iotarget-lexicon0.13.5间接
crates.iotcp-stream0.28.0间接
crates.iotendril0.5.1间接
crates.iothiserror-impl1.0.69间接
crates.iothiserror-impl2.0.19间接
crates.iothread_local1.1.10间接
crates.iotiff0.11.3间接
crates.iotime0.3.54间接
crates.iotime-core0.1.9间接
crates.iotime-macros0.2.32间接
crates.iotinystr0.8.3间接
crates.iotinytemplate1.2.1间接
crates.iotinyvec1.12.0间接
crates.iotinyvec_macros0.1.1间接
crates.iotokio-macros2.7.1间接
crates.iotokio-rustls0.26.4间接
crates.iotokio-util0.7.19间接
crates.iotower间接
crates.iotower0.5.3间接
crates.iotower-http0.6.11间接
crates.iotower-layer0.3.3间接
crates.iotower-service0.3.3间接
crates.iotracing-attributes0.1.31间接
crates.iotracing-core0.1.36间接
crates.iotracing-log0.2.0间接
crates.iotry-lock0.2.5间接
crates.iotungstenite0.29.0间接
crates.iotypenum1.20.1间接
crates.iounicase2.9.0间接
crates.iounicode-bidi0.3.18间接
crates.iounicode-ident1.0.24间接
crates.iounicode-normalization0.1.25间接
crates.iounicode-normalization-alignments0.1.12间接
crates.iounicode-properties0.1.4间接
crates.iounicode-segmentation1.13.3间接
crates.iounicode-width0.2.2间接
crates.iounicode_categories0.1.1间接
crates.iountrusted0.9.0间接
crates.ioureq-proto0.6.0间接
crates.ioutf16string0.2.0间接
crates.ioutf8-zero0.8.1间接
crates.ioutf8_iter1.0.4间接
crates.ioutf8parse0.2.2间接
crates.iov_frame0.3.9间接
crates.iovaluable0.1.1间接
crates.iovcpkg0.2.15间接
crates.iovecmath1.0.0间接
crates.ioversion_check0.9.5间接
crates.iowaker-fn1.2.0间接
crates.iowalkdir2.5.0间接
crates.iowant0.3.1间接
crates.iowasi0.11.1+wasi-snapshot-preview1间接
crates.iowasip21.0.4+wasi-0.2.12间接
crates.iowasite0.1.0间接
crates.iowasm-bindgen-macro0.2.126间接
crates.iowasm-bindgen-macro-support0.2.126间接
crates.iowasm-bindgen-shared0.2.126间接
crates.ioweb-sys0.3.103间接
crates.ioweb-time1.1.0间接
crates.ioweb_atoms0.2.5间接
crates.iowebpki-roots0.26.11间接
crates.iowebpki-roots1.0.9间接
crates.ioweezl0.1.12间接
crates.ioweezl0.2.1间接
crates.iowhich8.0.5间接
crates.iowhoami1.6.1间接
crates.iowinapi0.3.9间接
crates.iowinapi-i686-pc-windows-gnu0.4.0间接
crates.iowinapi-util0.1.11间接
crates.iowinapi-x86_64-pc-windows-gnu0.4.0间接
crates.iowindows-core0.62.2间接
crates.iowindows-implement0.60.2间接
crates.iowindows-interface0.59.3间接
crates.iowindows-link0.2.1间接
crates.iowindows-result0.4.1间接
crates.iowindows-strings0.5.1间接
crates.iowindows-sys0.48.0间接
crates.iowindows-sys0.52.0间接
crates.iowindows-sys0.61.2间接
crates.iowindows-targets0.48.5间接
crates.iowindows-targets0.52.6间接
crates.iowindows_aarch64_gnullvm0.48.5间接
crates.iowindows_aarch64_gnullvm0.52.6间接
crates.iowindows_aarch64_msvc0.48.5间接
crates.iowindows_aarch64_msvc0.52.6间接
crates.iowindows_i686_gnu0.48.5间接
crates.iowindows_i686_gnu0.52.6间接
crates.iowindows_i686_gnullvm0.52.6间接
crates.iowindows_i686_msvc0.48.5间接
crates.iowindows_i686_msvc0.52.6间接
crates.iowindows_x86_64_gnu0.48.5间接
crates.iowindows_x86_64_gnu0.52.6间接
crates.iowindows_x86_64_gnullvm0.48.5间接
crates.iowindows_x86_64_gnullvm0.52.6间接
crates.iowindows_x86_64_msvc0.48.5间接
crates.iowindows_x86_64_msvc0.52.6间接
crates.iowinreg0.56.0间接
crates.iowit-bindgen0.57.1间接
crates.iowriteable0.6.3间接
crates.iox509-cert0.2.5间接
crates.iox509-parser0.17.0间接
crates.ioxattr1.6.1间接
crates.ioy4m0.8.0间接
crates.ioyoke0.8.3间接
crates.ioyoke-derive0.8.2间接
crates.iozerocopy0.8.55间接
crates.iozerocopy-derive0.8.55间接
crates.iozerofrom0.1.8间接
crates.iozerofrom-derive0.1.7间接
crates.iozeroize1.9.0间接
crates.iozerotrie0.2.4间接
crates.iozerovec0.11.6间接
crates.iozerovec-derive0.11.3间接
crates.iozmij1.0.23间接
crates.iozopfli0.8.3间接
crates.iozune-core0.5.1间接
crates.iozune-inflate0.2.54间接
crates.iozune-jpeg0.5.15间接
npm@napi-rs/cli^2.18.4间接
npmdocling.rs^0.20.0间接
PyPImaturin间接
依赖安全公告 4

该仓库未发布可被索引解析的包,因此评估的是其自身的依赖图——共 622 个包,其中也包含从不交付的开发与测试版本固定:4 个存在已知公告,1 个为直接依赖。 有 64 个无法评估——没有已解析的版本、生态系统不受支持,或不在所列包清单之内。

软件包版本关系严重程度公告数修复版本
quick-xml0.31.0直接20.41.0
instant0.1.13间接未知1
paste1.0.15间接未知1
rustls-pemfile2.2.0间接未知1

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 138942,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "HTML": 63327,
        "Rust": 2188026,
        "Shell": 85072,
        "Python": 162068,
        "Batchfile": 6281,
        "Dockerfile": 1709,
        "JavaScript": 62101,
        "TypeScript": 1808
      },
      "pushed_at": "2026-07-30T05:53:15Z",
      "created_at": "2026-06-27T16:51:49Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-30T05:50:29Z",
      "description": "Full Rust port of Python docling",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "Rust",
      "significant_languages": [
        "Rust"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Docling Project",
      "type": "Organization",
      "login": "docling-project",
      "company": null,
      "location": "Switzerland",
      "followers": 1206,
      "avatar_url": "https://avatars.githubusercontent.com/u/188446108?v=4",
      "created_at": "2024-11-14T10:15:54Z",
      "is_verified": null,
      "public_repos": 26,
      "account_age_days": 622
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "npm-cuda-v0.52.1",
          "kind": "other",
          "published_at": "2026-07-30T05:53:15Z"
        },
        {
          "tag": "v0.52.2",
          "kind": "patch",
          "published_at": "2026-07-30T05:51:22Z"
        },
        {
          "tag": "v0.52.1",
          "kind": "patch",
          "published_at": "2026-07-29T17:25:53Z"
        },
        {
          "tag": "v0.52.0",
          "kind": "minor",
          "published_at": "2026-07-28T13:46:00Z"
        },
        {
          "tag": "v0.51.0",
          "kind": "minor",
          "published_at": "2026-07-28T12:22:53Z"
        },
        {
          "tag": "npm-cuda-v0.50.0",
          "kind": "other",
          "published_at": "2026-07-28T07:55:31Z"
        },
        {
          "tag": "v0.50.0",
          "kind": "minor",
          "published_at": "2026-07-27T20:10:58Z"
        },
        {
          "tag": "npm-cuda-v0.49.0",
          "kind": "other",
          "published_at": "2026-07-23T10:55:47Z"
        },
        {
          "tag": "v0.49.0",
          "kind": "minor",
          "published_at": "2026-07-22T12:27:36Z"
        },
        {
          "tag": "v0.48.0",
          "kind": "minor",
          "published_at": "2026-07-22T10:33:40Z"
        },
        {
          "tag": "v0.47.3",
          "kind": "patch",
          "published_at": "2026-07-22T10:14:55Z"
        },
        {
          "tag": "v0.47.2",
          "kind": "patch",
          "published_at": "2026-07-22T09:53:06Z"
        },
        {
          "tag": "v0.47.1",
          "kind": "patch",
          "published_at": "2026-07-22T09:14:14Z"
        },
        {
          "tag": "v0.47.0",
          "kind": "minor",
          "published_at": "2026-07-22T07:14:10Z"
        },
        {
          "tag": "v0.46.0",
          "kind": "minor",
          "published_at": "2026-07-21T20:08:09Z"
        },
        {
          "tag": "v0.45.0",
          "kind": "minor",
          "published_at": "2026-07-21T09:22:10Z"
        },
        {
          "tag": "v0.44.0",
          "kind": "minor",
          "published_at": "2026-07-20T14:49:30Z"
        },
        {
          "tag": "v0.43.0",
          "kind": "minor",
          "published_at": "2026-07-20T14:14:28Z"
        },
        {
          "tag": "v0.42.1",
          "kind": "patch",
          "published_at": "2026-07-17T09:05:16Z"
        },
        {
          "tag": "v0.42.0",
          "kind": "minor",
          "published_at": "2026-07-16T15:47:00Z"
        },
        {
          "tag": "v0.41.2",
          "kind": "patch",
          "published_at": "2026-07-16T12:31:11Z"
        },
        {
          "tag": "v0.41.1",
          "kind": "patch",
          "published_at": "2026-07-16T10:07:18Z"
        },
        {
          "tag": "v0.41.0",
          "kind": "minor",
          "published_at": "2026-07-16T09:20:42Z"
        },
        {
          "tag": "v0.40.3",
          "kind": "patch",
          "published_at": "2026-07-15T20:03:20Z"
        },
        {
          "tag": "v0.40.2",
          "kind": "patch",
          "published_at": "2026-07-15T18:17:36Z"
        },
        {
          "tag": "v0.40.1",
          "kind": "patch",
          "published_at": "2026-07-15T15:59:23Z"
        },
        {
          "tag": "v0.40.0",
          "kind": "minor",
          "published_at": "2026-07-15T12:57:49Z"
        },
        {
          "tag": "v0.38.2",
          "kind": "patch",
          "published_at": "2026-07-15T08:10:19Z"
        },
        {
          "tag": "v0.38.1",
          "kind": "patch",
          "published_at": "2026-07-15T06:04:45Z"
        },
        {
          "tag": "v0.38.0",
          "kind": "minor",
          "published_at": "2026-07-14T20:24:58Z"
        },
        {
          "tag": "v0.37.0",
          "kind": "minor",
          "published_at": "2026-07-14T17:25:37Z"
        },
        {
          "tag": "v0.36.0",
          "kind": "minor",
          "published_at": "2026-07-14T15:31:31Z"
        },
        {
          "tag": "v0.35.0",
          "kind": "minor",
          "published_at": "2026-07-14T12:32:15Z"
        },
        {
          "tag": "v0.34.0",
          "kind": "minor",
          "published_at": "2026-07-14T06:43:43Z"
        },
        {
          "tag": "v0.33.0",
          "kind": "minor",
          "published_at": "2026-07-13T19:19:02Z"
        },
        {
          "tag": "v0.32.0",
          "kind": "minor",
          "published_at": "2026-07-13T18:36:57Z"
        },
        {
          "tag": "v0.31.0",
          "kind": "minor",
          "published_at": "2026-07-13T12:52:07Z"
        },
        {
          "tag": "v0.30.0",
          "kind": "minor",
          "published_at": "2026-07-10T13:34:43Z"
        },
        {
          "tag": "v0.29.0",
          "kind": "minor",
          "published_at": "2026-07-10T10:34:09Z"
        },
        {
          "tag": "v0.28.0",
          "kind": "minor",
          "published_at": "2026-07-10T07:30:04Z"
        },
        {
          "tag": "v0.27.0",
          "kind": "minor",
          "published_at": "2026-07-10T06:22:44Z"
        },
        {
          "tag": "v0.26.0",
          "kind": "minor",
          "published_at": "2026-07-10T05:00:22Z"
        },
        {
          "tag": "v0.25.0",
          "kind": "minor",
          "published_at": "2026-07-09T16:25:40Z"
        },
        {
          "tag": "v0.24.0",
          "kind": "minor",
          "published_at": "2026-07-09T14:47:44Z"
        },
        {
          "tag": "v0.23.0",
          "kind": "minor",
          "published_at": "2026-07-09T11:48:42Z"
        },
        {
          "tag": "v0.22.0",
          "kind": "minor",
          "published_at": "2026-07-09T11:22:05Z"
        },
        {
          "tag": "v0.21.0",
          "kind": "minor",
          "published_at": "2026-07-09T09:27:38Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-07-08T15:54:10Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-07-06T11:27:35Z"
        },
        {
          "tag": "v0.15.1",
          "kind": "patch",
          "published_at": "2026-07-06T08:41:32Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-07-03T18:37:45Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-07-03T08:15:40Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-07-02T16:21:52Z"
        },
        {
          "tag": "v0.12.1",
          "kind": "patch",
          "published_at": "2026-07-02T11:51:21Z"
        },
        {
          "tag": "v0.11.0",
          "kind": "minor",
          "published_at": "2026-07-02T08:55:58Z"
        },
        {
          "tag": "v0.10.0",
          "kind": "minor",
          "published_at": "2026-07-01T16:27:24Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-07-01T15:58:24Z"
        },
        {
          "tag": "models-v1",
          "kind": "other",
          "published_at": "2026-07-09T13:36:22Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-07-01T15:06:55Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-07-01T12:54:16Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-07-01T11:45:53Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-07-01T09:54:49Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2026-07-01T08:02:33Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ca9fe7a543b55a540dfa18b88f4f44591b5a928e",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): v0.52.2 [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-30T05:50:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95a98efaefb719aeb35bef1d09de0a50465cd80f",
          "body": "panel optout flag 173",
          "is_bot": false,
          "headline": "Merge pull request #174 from artiz/claude/panel-optout-173",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-30T05:47:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9ebe8078c63fc12e4bbde8e72c4674279b71e83",
          "body": "…+table\n\nAdds tests/snapshots/scanned/sources/scanned_chart_table.pdf.md — the\nregression pin for #173: the uncaptioned chart stays a picture and the\nbordered 8x4 table extracts with its OCR'd text.\n\nThe rest of the baseline was stale: it predates the text-panel demotion\n(#157), the force-OCR pictur\n[…]\niff identical.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(pdf): re-baseline the snapshot corpus; pin the #173 scanned chart…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-30T05:20:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c27b35dec384c405f42495a648e29bec4bd8f870",
          "body": "…orpus\n\ntests/data/scanned/sources/ is where scanned regression inputs live and\nwhat the snapshot harness sweeps; the e2e in the text_layer target reads\nit from there instead of carrying a private copy. Snapshot baseline for\nthe new fixture follows separately.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(pdf): move the #173 scanned chart+table fixture into the shared c…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-30T04:50:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aa0cbc8fd8a1955d505d54c91f41b83d854528ba",
          "body": "…atcher\n\nThe #173 repro's second failure: on a scanned page the layout model finds\nthe bordered table (0.98) and TableFormer predicts its full structure, but\nthe grid comes back empty and dissolves — `tables: 0`. Region-scoped OCR\ndeliberately skips table labels, and a scanned page has no pdfium tex\n[…]\ns diagnosable.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(pdf): extract scanned tables — OCR table interiors for the cell m…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-30T04:25:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6d4885b3c86f25c80cf9999c72f8e51bd93c1889",
          "body": "Two complaints from #173 about the #157 text-panel recovery on scanned\npages:\n\n1. Uncaptioned charts/figures whose title + axis labels are dense enough\n   to pass the coverage/width gates were demoted into (garbled OCR) text.\n   Harden the heuristic with a line-height uniformity gate: a real text\n  \n[…]\nnoTextPanels`.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(pdf): keep uncaptioned charts as pictures + no_text_panels opt-out",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-29T21:34:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11f3ca517544d4efe37bac57a2eccb361366a0a7",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): v0.52.1 [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-29T17:24:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fdc84f8a27e685c0166668c786aa4d5605f4a3f",
          "body": "fix(json): PDF JSON export carries page geometry and per-item provenance",
          "is_bot": false,
          "headline": "Merge pull request #172 from artiz/claude/json-prov-171",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-29T17:22:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e272257aaf3384351166111a9ff7f8b4077cb7ae",
          "body": "DoclingDocument JSON from a PDF came back with an empty pages map and\nprov: [] on every item — the geometry existed (DocLang serializes it as\n<location> tokens) but the JSON builder hardcoded both fields, so Python\ndocling migrators lost bbox highlighting, page attribution and coordinate\nfiltering w\n[…]\narting at 0).\n\nFixes #171\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(json): PDF JSON export carries page geometry and per-item provenance",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-29T17:16:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29e74f06b18afb2d3370c7ab7748985e3d7aeb6e",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): v0.52.0 [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-28T13:41:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53bc13f8da58730908b7d9395dad3414f0949b71",
          "body": "serve: docling.rs page shell for the playground, and an OpenAPI descr…",
          "is_bot": false,
          "headline": "Merge pull request #170 from artiz/claude/serve-ui-redesign",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-28T13:38:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50c09669132d48d72755fa8430193277c8aef542",
          "body": "The model-inventory insertion landed between model_path's #[cfg(feature =\n\"ml\")] attribute and the function it guarded, so the pdf-text (wasm) build\nstarted compiling model_path — which calls the ml-gated prefer_fp32 /\nresolve_asset — and CI's wasm32 job failed with E0425. Re-attach the gate\n(and th\n[…]\ne suites, fmt and clippy.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(pdf): keep model_path behind the ml feature gate",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-28T13:31:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b48dffdb6f773bc4bc10ab085bd51d1692894d26",
          "body": "…entory\n\nSame build, same models, same bill: one machine's CPU converts it\nperfectly, another's dissolves page 1 into orphan one-liners — every table\ngone — while its CUDA build is fine. The default int8 layout graph keeps\nits confidences near the 0.5 label thresholds, and a different CPU's\nquantize\n[…]\nmetric; fmt/clippy clean.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "fix(pdf): fp32 layout retry for pages the int8 quant loses; model inv…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-28T13:20:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "90cac9043baa9a316a28376d6f0f4f597926e48d",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): v0.51.0 [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-28T12:18:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2301925c875b61e899fb3f3c751ea274b9c0047",
          "body": "ci: least-privilege GITHUB_TOKEN; serve UI renders pictures from the …",
          "is_bot": false,
          "headline": "Merge pull request #169 from artiz/claude/codeql-findings",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-28T12:15:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdc3c844c2b4f13c57245f6c1f3cd85fe1638513",
          "body": "…iption\n\nThe playground looked nothing like the wasm demo page — a bare 🦆 heading, no\nlogo, no way back to the project — and the API had no machine-readable\ndescription at all, so pointing Swagger UI, Redoc or a client generator at a\nrunning server was impossible.\n\n- index.html adopts the demo page'\n[…]\nert to Markdown and JSON.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "serve: docling.rs page shell for the playground, and an OpenAPI descr…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-28T12:12:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c05d3fcd11ede1aec688bc7f9f856775c7a8007c",
          "body": "…response\n\nClears the open CodeQL code-scanning alerts on master.\n\nWorkflow permissions (8 medium alerts, actions/missing-workflow-permissions):\nci.yml and npm-publish.yml declared no `permissions:` block, so every job ran\nwith the repository's default GITHUB_TOKEN scope. Both now default to\n`conten\n[…]\nile rejecting an SVG one.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "ci: least-privilege GITHUB_TOKEN; serve UI renders pictures from the …",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-28T12:00:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2093d806ab1cb92fdc81629615b97b2c566276e1",
          "body": null,
          "is_bot": false,
          "headline": "Update issue templates",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-28T11:46:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e23b499ea34e8abe9858c5ac322e4a0eab1c853",
          "body": "docs: add CONTRIBUTING.md",
          "is_bot": false,
          "headline": "Merge pull request #168 from artiz/claude/contributing-guide",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-28T11:37:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "321d41a244044285cc6a7622c904f3c021d5215d",
          "body": "The repo had no contributor guide: the build/test invocations, the\nconformance workflow and the conventions a change has to satisfy lived in\nCLAUDE.md (AI-session notes) or nowhere. Collect the parts an outside\ncontributor needs — setup with and without the optional models, the test and\nlint command\n[…]\n, verified\nby running it.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docs: add CONTRIBUTING.md",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-28T11:35:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "24163e2d99681676377eda0b902814eeacf778c9",
          "body": "wasm: publish docling.rs-wasm to npm; document the Tauri paths",
          "is_bot": false,
          "headline": "Merge pull request #167 from artiz/claude/wasm-npm-package",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-28T07:49:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73098dcbc52bffa288150e13883345ea5cd5eaf5",
          "body": "The browser build had no consumable artifact: the wasm module existed only\ninside the GitHub Pages demo deployment (built ad-hoc by pages.yml, never\npublished) or via a DIY cargo + wasm-bindgen build. `npm i docling.rs-wasm`\nnow works:\n\n- crates/docling-wasm/npm/: the package skeleton — package.json\n[…]\nr PDF\nconvert correctly).\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: publish docling.rs-wasm to npm; document the Tauri paths",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-28T05:17:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e10dea35c156bc450be5ee39bf6a75e1edbace85",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): v0.50.0 [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T20:06:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d31e15ad764e46a106b9e4ad005db7dc427dfa8d",
          "body": "pdf: pictures no longer claim cells in orphan recovery (#165)",
          "is_bot": false,
          "headline": "Merge pull request #166 from artiz/claude/orphan-picture-text-165",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-27T20:03:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35a52e607e0ae2a9bf2523c71f09abb79f47972e",
          "body": "Requiring conventional feat:/fix: prefixes silently stopped every release\nafter v0.49.0 — the repo's de-facto commit style is bare area prefixes\n(\"pdf: …\", \"wasm: …\"), so bump_version.sh found nothing release-worthy in\n~100 merged commits and every master merge ended in \"nothing to release\".\n\nInvert\n[…]\nle backlog\nsince v0.49.0.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "ci(release): any non-fix merge releases the 0.x \"major\"",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T19:59:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e80df73e87af248a3c04a7b0ed133fa1cc916b92",
          "body": "docling's LayoutPostprocessor splits clusters into regular and special\n(picture + the table/document_index/form/key_value_region wrappers), and\nits _find_unassigned_cells walks regular_clusters alone — a special never\nclaims a cell. Our add_orphan_regions counted every region as a claimer at\n0.2 int\n[…]\nrget compiles.\n\nRefs #165\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "pdf: pictures no longer claim cells in orphan recovery (#165)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T19:39:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c950a0a230c3661551b12b9e479c16e2fdccaeb",
          "body": "pdf: force_full_page_ocr on every surface (#157)",
          "is_bot": false,
          "headline": "Merge pull request #164 from artiz/claude/force-ocr",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-27T18:54:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5977a1b424ac90124977cf115e4d130c44820d41",
          "body": "A terms-and-conditions box exported as an image — the XXXLutz blue\n\"Folgen des Widerrufs\" panel — survives every pipeline as a picture: its\nwords are not in the digital text layer, region-scoped OCR skips picture\ninteriors, and docling itself never serializes cells assigned to a picture\ncluster. The\n[…]\n clippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "pdf: demote uncaptioned text-panel pictures into paragraphs (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T17:24:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f76f56159c1e981b8687ac31d5b3033125f773d7",
          "body": "…#157)\n\nPDF generators that paint a line's bold runs *after* the surrounding regular\ntext (the XXXLutz terms document does this for every bold token) hand the\nsanitizer cells in stream order, not reading order. docling's cluster join\nfollows the docling-parse cell index — that same stream order — so\n[…]\nrgets compile.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "pdf: read interleaved font runs in visual order (\"C.6.\" kept whole) (…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T15:47:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d2a3b63c4a5db6b8f1709b7147fe5900d86130fc",
          "body": "… (#157)\n\nDemo page, in the docling docs' visual language (dark #003778 header bar,\nduck logo, GitHub link):\n\n- a Stop button: a Web Worker cannot be interrupted mid-inference, so a real\n  stop terminates the worker, rejects every pending call with a sentinel the\n  page treats as \"user asked\" (blank\n[…]\nt suite green.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demo: docling-style page, Stop, Pages cap; OCR embedded pictures…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T15:24:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b1dac98d38a2e6cddfab871918244cf896d88a3",
          "body": "Signed-off-by: artiz <artem.kustikov@gmail.com>",
          "is_bot": false,
          "headline": "WASM demo page alyout update",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T14:32:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a22f30a65045d39fbbe37c201d91c607f05a4c5",
          "body": "docling's escape hatch for text layers that exist but lie — broken\nencodings, subset fonts with garbage mappings, scanned forms with a few\ntyped-in field values — under docling's exact name and semantics: OCR every\npage from its rendered image, ignoring the embedded text layer; ignored when\nOCR is d\n[…]\nsuites green.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "pdf: force_full_page_ocr on every surface (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T14:15:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1eb14f0d245384d79d1a382313f74d89a1e5d38",
          "body": "pdf: a few typed-in form fields are not a text layer (#157)",
          "is_bot": false,
          "headline": "Merge pull request #163 from artiz/claude/wasm-vestigial-text-layer",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-27T14:13:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edf511fad6cec1648fec1909c28b8d00a4bee481",
          "body": "A scanned parental-consent form converted to almost nothing everywhere: its\n\"text layer\" is three typed-in field values — \"03\", \"05\", \"2025\", thirteen\ncharacters over three image pages. Every gate took that vestige at face\nvalue. The native pipeline saw cells on page 1 and skipped OCR for it, losing\n[…]\ncling-wasm 8.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "pdf: a few typed-in form fields are not a text layer (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T13:45:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91c2f3d931b5de3414cc504c8b3d1d0d6eec7409",
          "body": "chore(deps): weekly cargo update",
          "is_bot": false,
          "headline": "Merge pull request #161 from docling-project/deps/cargo-update",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-27T12:56:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a20a54de51beeef94c90d32e46a5df1ee60a3ffd",
          "body": "wasm: OCR the whole image when layout finds no text in it (#157)",
          "is_bot": false,
          "headline": "Merge pull request #162 from artiz/claude/wasm-image-ocr-fallback",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-27T12:40:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "196479a7d32d61f57a8712c6d12302d613f4ba40",
          "body": "Regression from unifying the demo pages: images now go through the full lite\nprofile, whose first step is the document layout model — and a UI screenshot\n(the reported case: a chat window) reads as wall-to-wall `picture` to a model\ntrained on documents. Region-scoped OCR then never fires, and the\n\"c\n[…]\nclippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: OCR the whole image when layout finds no text in it (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T12:34:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5115c40316ac7cdf47a6a96ec68ddc51827cf949",
          "body": "wasm: one demo page with the whole pipeline (#157)",
          "is_bot": false,
          "headline": "Merge pull request #160 from artiz/claude/wasm-unified-demo",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-27T12:09:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e02f01e15779bd582c93f084852a363a1686b30",
          "body": "The reporting invoice's flat text-layer output opened with `\" ==` — its\nT-Mobile mark is drawn with a `TeleLogo` Type1 font, stacking the glyphs\nencoded as `\"` and `==` on top of one another. Nothing in the font metadata\ngives that away: the file's *text* fonts carry the same symbolic flag, and\nthe \n[…]\ncling-wasm 7.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: drop logo glyphs painted over each other on the flat path",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T11:43:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f70d97c7ea5aaa73abd695be877fa333c667806",
          "body": "…(#157)\n\nBoth structured-path screenshots of the reporting invoice print the\nEinspruch paragraph twice. Localized it by elimination: the flat text-layer\noutput contains the text once, the native pipeline emits it once, and a\nnative replica of the digital path (same textparse cells, same layout model\n[…]\nclippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: don't read the same cells twice when layout detections overlap …",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T11:35:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bdd76c04b2b746a4a43260d292bb3445c2230c52",
          "body": "Fixing the text-layer parser made this invoice convert in 63 ms instead of\nten seconds of OCR — and lost its tables. That was not a regression but the\nshape of the choice the browser offered: the pure text-layer path is exact\nand instant but emits flat paragraphs, because headings, tables and pictur\n[…]\nd has no GPU.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: digital PDFs keep their structure without OCR (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T10:41:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e11be1ac75e48db5ce9d999704556cfd9d297043",
          "body": "The invoice that started this carries a second, independent defect. Its\ncontent streams declare `/Length 2826` where only 2825 bytes reach\n`endstream`, so lopdf reads past the data, does not find the keyword it\nexpects, and drops the stream — the object comes back as a bare dictionary.\nThe page then\n[…]\nill compiles.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: trust `endstream` over an overstated /Length",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T10:03:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d63ec4c8d18b14592ee1af60381e8d4e38862578",
          "body": "The repair either fires or it does not, and a decline looks exactly like a\nscan from the outside — so a report of \"still going to OCR\" cannot be told\napart from \"the wasm build is stale\". Carry a reason out of\npad_short_xref_entries and surface it through xref_repair_status, which the\ntext_layer exa\n[…]\nl-unloadable.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: say why the xref repair declined",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T09:53:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4b0b172eb8c4cd33189ae5633fe2259af17b52fe",
          "body": "A real invoice converted to nothing in the browser while pdfium read it\nfine. Traced it to the cross-reference table: the spec fixes an entry at 20\nbytes — `nnnnnnnnnn ggggg n` plus a *two*-byte EOL — and this generator emits\na bare LF, making each entry 19. lopdf rejects the whole file\n(\"invalid fi\n[…]\nill compiles.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: recover PDFs whose xref entries are 19 bytes, not 20",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T09:40:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a558df6e4af0c5989591a887bb5c012a43ab8f56",
          "body": "A real invoice fails at the very first stage — lopdf reports \"invalid file\ntrailer\" while pdfium reads the same file fine — so the browser spends ~10 s\non OCR for a document whose text layer is right there. The failure says\nnothing about which part of the cross-reference machinery is wrong, and the\n\n[…]\nof the file\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: probe the xref/trailer when a PDF will not load",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T09:30:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "425615b13decac6944039d32893706cd01271bd5",
          "body": "… text\n\nConfirmed on a real invoice that convert_text_layer returns nothing where\npdfium reads the layer fine, so the browser pays 10 s of OCR for a document\nit could convert in milliseconds. textparse cannot say why: every failure\npath is `let Ok(doc) = Document::load_mem(..) else { return empty }`\n[…]\ning to read\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: make the text-layer example name the stage that lost the…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T09:09:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bae8ea837a6be612b1b61fa244d840545a68620d",
          "body": "Telling \"this PDF genuinely needs OCR\" apart from \"our pure-Rust parser\nmissed a text layer pdfium can read\" had no offline reproduction: the CLI's\n--no-ocr goes through pdfium's extraction, while a wasm build calls\nconvert_text_layer (lopdf content-stream parsing). They are different\nengines, so --\n[…]\no OCR here\").\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: example that runs the browser's exact text-layer path",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T09:05:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "07af462a9bfe6ec0e68dfa189909f102676715ec",
          "body": "Investigating a cell-merge report from the browser pipeline (\"Telefon\" and\n\"0676/2000\" landing in one TableFormer cell) meant knowing how coarse the\nOCR-derived word boxes actually are, since those are the one input the browser\npath does not share with the native one (no pdfium text layer — words co\n[…]\nntly retuned.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-pdf: pin the browser word-segmentation threshold with a test",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T08:07:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3defa1c200fb0f4dd761457355788a67eff55469",
          "body": "… (#157)\n\n**Selective TableFormer.** The encoder runs once per table region and costs\nseconds, but many tables need no model at all. Each table is now first\nreconstructed geometrically — free, from the OCR cell positions — and\nTableFormer is invoked only when that grid looks unreliable.\n\nThe test co\n[…]\ness Chromium.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: run TableFormer only where geometry fails, and publish the demo…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-27T07:02:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b5649c94fef1801e9feda9f07a1d69efbd4d08c0",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): weekly cargo update",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-27T05:35:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70272708bf5e21de10c214575479ced0fcdcff37",
          "body": "…erting\n\nTwo reports, one cause. The preview checkbox was the only control left live\nwhile a conversion ran, and its handler was wired straight to run(). Clicking\nit mid-conversion therefore started a second run on top of the first; the\nfirst then reached finishDoc, which clears the pipeline's singl\n[…]\n, fixed here.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demo: freeze the preview toggle during a run, and stop it reconv…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-26T19:49:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "753057846aed04a7742ae5844295596466e86e59",
          "body": "… (#157)\n\n`images=embedded` did nothing for scanned input: the browser pipeline built\nits page with `PdfPage::from_cells`, which carries no bitmap, so every\npicture region came out as `<!-- image -->` with no pixels to inline — the\noption looked broken to anyone converting a scan.\n\nThe native pipeli\n[…]\nt-layer PDF).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: crop pictures on the OCR path so images=embedded has real bytes…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-26T19:30:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e74aa9c333f4dd609f9e5e98c84e17c8cc839b1f",
          "body": "The browser demo had grown into three pages: index.html (declarative only,\nno PDF/image, no output-format parity) plus ocr.html and scan.html, which\nwere really OCR test harnesses. Fold everything into index.html and delete\nthe other two.\n\nThe single page now covers what the module can actually do: \n[…]\nets threads).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: one demo page with the whole pipeline (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-26T19:11:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "68963dbb8238aa7a786cfe87180e0ab6bdbc64ac",
          "body": "VLM doclang fallback",
          "is_bot": false,
          "headline": "Merge pull request #159 from artiz/claude/vlm-doclang-fallback",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-26T17:38:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ad8e486c6931390a47dc288ff798a126c353368",
          "body": "picture_classification scored 1.3% similarity in the live VLM corpus run.\nRoot-causing it deterministically: our DocTags parser reproduces docling's\ngroundtruth Markdown for that fixture byte-for-byte (pictures with captions\nbefore the image placeholder, multi-page <page_break>, reading order), so\nt\n[…]\nI everywhere.\n\nRefs #153\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "vlm: lock DocTags→Markdown parity for picture_classification (#153)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T08:25:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5522d021b689ec7c5b4e5feba798e5c5e691c108",
          "body": "…153)\n\nThe VLM pipeline routes non-DocTags model output through the DocLang XML\nreader, which is a strict parser: a model that leaves a <heading>/<text>\nunclosed produces markup it rejects with `expected 'heading' tag, not\n'doclang'`, and that error propagated all the way out — dropping the entire\nn\n[…]\noth branches.\n\nRefs #153\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "vlm: don't fail the whole page on malformed DocLang from the model (#…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T08:19:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2eeff630b0012c8238eaff5fd498e37a9f97430c",
          "body": "wasm: in-browser OCR via ONNX Runtime Web interop (#157 stage 1)",
          "is_bot": false,
          "headline": "Merge pull request #158 from artiz/claude/wasm-ml-stage1",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-25T08:10:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "583b706235e282ece892a1fd00f0b6e235aeb8ca",
          "body": "The earlier note called an int8 TableFormer encoder \"the biggest lever.\"\nMeasuring on a native x86 build over 15 real corpus table crops shows\notherwise: the encoder is a ResNet backbone feeding a 6-layer transformer,\nand the transformer Gemms (not the ~20 convs) are the cost. Conv-only\nstatic QDQ k\n[…]\ndoes not pay.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm docs: correct the int8-encoder perf note with measured numbers",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9e2e3fbfd62e6d305c9f88f659c38cb0e06d2147",
          "body": "Rewrite the README's ML section to cover all three stages (OCR, layout,\nTableFormer #157) with the model manifest, add a \"Run it on your phone\"\nwalkthrough (download_dependencies.sh from upstream master, static hosting\nnotes, and the device model-file picker with its device → local → Hugging\nFace re\n[…]\nisfy rustfmt.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm docs: document the full in-browser ML pipeline + phone run guide",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e05c6fafdf09d8cb72927bde86164350570faf19",
          "body": "Add a multi-file picker so the models can be selected from the device\ninstead of fetched: each File is read to an ArrayBuffer, handed to the\npipeline (transferred to the worker), and used by name before any network\nfetch. This avoids the 380 MB TableFormer download on a phone entirely and\n— since re\n[…]\nn that order.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demo: load models from device files (no download)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "05685e16d7698e72e9c60ce5d56d30edf134ce38",
          "body": "The load fallback swallowed the fetch error and reported a flat \"not\nfound\", hiding whether it was a 404, an HTTP 503 throttle, or an\nout-of-memory on the 225 MB encoder. Keep and report the last error.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demo: surface the real TableFormer load error",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "829e28d204972974e6a82ce705b0171573788322",
          "body": "The models were uploaded to the repo root next to layout_heron_int8.onnx\n(no subfolder), so point the HF fallback base at MODEL_BASE directly\ninstead of MODEL_BASE + \"tableformer/\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demo: TableFormer graphs load from the HF repo root",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fb9e799e49c37384f4040c7501cd41527b5cd00d",
          "body": "Mirror the layout-model fallback: try local ./models/tableformer/ first,\nthen the CORS Hugging Face base, so TableFormer works on the hosted\n(phone) demo. External data is fetched from the same base that served the\n.onnx.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demo: Hugging Face fallback for the TableFormer graphs",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bc5541111ea576715b70f82e396bac1fe309d3dd",
          "body": "The browser scanned path never recognized text inside table regions —\nprep_region_lines skips non-text labels and there's no pdfium text layer —\nso a detected table had no words for the matcher and rendered empty. Add\nocr_prep::prep_table_words: crop each table region, split into lines, then\nsplit e\n[…]\nfrom pdfium).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 3: OCR table interiors so browser tables fill",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "42235b81b93bb93fb8ad31e688e3ddf0aed9752b",
          "body": "Phones can't open the console, so route the layout region-label histogram\nto the page instead: the wasm calls a global __docling_diag sink, the\nworker forwards it to the main thread, and scan.html shows it in a small\n#diag line under the controls (cleared on each new conversion). The\nmain-thread fal\n[…]\nink directly.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan: render the region-label diagnostic on the page",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c48df3b99a1c25559a07f5b32c89d63a570b7e0",
          "body": "Diagnostic for the browser scanned path: console-log the per-page region\nlabels after refinement, so it's visible whether the layout flagged any\n`table` region — a scanned table only fills when it does and the region's\nwords are OCR'd (a known gap: prep_region_lines skips non-text labels, so\ntable i\n[…]\nthe matcher).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan: log the layout region-label histogram",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d36b75111989c8a32f20f7ad3d0b6f9154d83412",
          "body": "Add a cross-origin layout candidate after the local ./models/ ones: a\nHugging Face mirror (pivozavrus/docling-rs-models) that sends CORS\nheaders, so the page works when served cross-origin (the hosted phone\ndemo on raw.githack) — GitHub Release assets can't be fetched that way.\nLocal dev still prefers ./models/.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: Hugging Face fallback for the layout model",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0c65226084a5f22d1d8639ac3326575f0b51ba46",
          "body": "Formatting-only: rustfmt reorders the tf_core/tf_match mod declarations\nand rewraps a couple of tf_core lines. Fixes the pinned fmt·clippy CI job.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "tf_core: cargo fmt (module order + line wrapping)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "266b1586c6353ef3536fcdd2bd04566babd134f9",
          "body": "Splitting add_page into a #[wasm_bindgen] wrapper pair plus a plain\nadd_page_impl left page_count and finish inside the non-wasm_bindgen impl\nblock, so they stopped being exported to JS (\"cur.conv.finish is not a\nfunction\"). Close the plain impl right after add_page_impl and put\npage_count/finish ba\n[…]\n] impl block.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan: keep page_count/finish exported after the add_page split",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "98f06b4822c43c6588c88bf348a7a966c0688ac2",
          "body": "Add the browser TableFormer profile to the scan demo. A \"TableFormer\ntables\" checkbox opts in; when checked, pipeline.js lazily loads the three\ngraphs same-origin from ./models/tableformer/ (encoder.onnx self-contained\n~225 MB; decoder_kv.onnx + bbox.onnx with their .onnx.data sidecars via\nort-web's\n[…]\nrogress line.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 3 (phase 4): TableFormer demo wiring",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5cf278477bf863123a9561f7a1c0e6357e24a1c5",
          "body": "Wire the ONNX table-structure model into the browser pipeline. New wasm\nmodule tableformer.rs delegates the three graphs (encoder/decoder/bbox) to\na stateful JS TfSession and drives the autoregressive loop in Rust on\ntf_core: preprocess_input → encode → step* (BboxBook bookkeeping, argmax) →\nbbox → \n[…]\nclippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 3 (phase 3b/3c): browser TableFormer via ort-web interop",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c78e6389d56cc3cc6de44a3f4362bba90e1202c1",
          "body": "Extract the second half of predict_table_rows — word-to-cell matching\n(docling's post-processor via tf_match, or the geometric fallback) and the\nspan-expanded rows×cols grid assembly — into tf_core::table_rows, shared\nwith the browser path. The native predict_table_rows keeps its ort head\n(resample \n[…]\nut unchanged.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 3 (phase 3a): move the ort-free table-rows tail into tf_core",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a47738c25391484bedf82f2052d33f223f2d394e",
          "body": "Both modules are already pure Rust (resample uses only `image`; tf_match\nonly std) but were gated behind `ml`. Re-gate them to ocr-prep and make\ntf_match a public module so the browser TableFormer path (phase 3) can\ncrop table regions (page→1024px box-average, crop→448 bilinear) and run\ndocling's ce\n[…]\navior change.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 3 (phase 2): expose resample + tf_match under ocr-prep",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "837cdcfc59c993b3e00a464ab337cc186b2fada1",
          "body": "Scanned PDFs frequently store pages as JPEG2000 (or JBIG2) images, which\npdf.js v6 decodes with a separate wasm module; without a wasmUrl it warns\n\"Ensure that the wasmUrl API parameter is provided\" and drops the image,\nso the rasterized page — and the OCR run on it — comes out blank. Pin\npdf.js to \n[…]\nt on the CDN.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: give pdf.js its wasm/cmap/font asset URLs",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3002bb1fc1d865076b709c94a2401c284d4e4c1b",
          "body": "Groundwork for TableFormer in the browser: move the ONNX-free half of the\npipeline — the 448 encoder-input preprocessing, the autoregressive loop's\nstructure corrections (xcel→lcel, lcel-after-ucel→fcel) and bbox\nbookkeeping (tag_H_buf / bboxes_to_merge), span merging, and the OTSL→grid\nlayout — int\n[…]\npt verbatim).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 3 (phase 1): extract ort-free TableFormer core into tf_core",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c48b7d3eaed63023c498d5cdd1b3297e5a321558",
          "body": "wasm-pack warns when license.workspace resolves but no LICENSE sits next\nto the crate. Copy the workspace MIT license into the crate directory.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "docling-wasm: add LICENSE file for wasm-pack",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1ab32b8ffcf31dcfc013d401d3a340a3c6b8adaf",
          "body": "…alls)\"\n\nThis reverts commit 1c871c7. Padding every line in a batch up to the\nbatch's max width inflates recognition compute (a narrow line padded to\na wide one does several times the conv work), and on real pages line\nwidths vary enough that the padding waste outweighs the saved per-call\noverhead —\n[…]\nidth batches.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "Revert \"#157 stage 2: padded rec batching in the browser (fewer ORT c…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df455c6d7ac0a72ef54abcb12620cb3cda374588",
          "body": "The exact-width grouping runs one recognition call per distinct line\nwidth — on a text-dense page (most lines differing) that is nearly one\nORT call per line, and every call carries thread-sync overhead under ORT\nWeb. Add width_batches_padded / batch_input_padded: group lines into\nREC_BATCH chunks s\n[…]\nis untouched.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "#157 stage 2: padded rec batching in the browser (fewer ORT calls)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8f2be443795adf2eaa27cceed71288cced8fa67c",
          "body": "Running pdf.js inside the Web Worker fell back to its \"fake worker\" mode\n(a worker can't reliably spawn pdf.js's nested worker), which garbled the\nrasterized line crops: layout still found the page structure (it downsizes\nthe whole page to 640x640) but recognition decoded noise.\n\nSplit the two: pdf.\n[…]\nconvertImage.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: rasterize on the main thread, OCR in the worker",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7b2e35c9c0b900d97b5f1e41d83eba8a1bb3a2c7",
          "body": "Even with multi-threaded ORT, the main thread still froze during a\nconversion: pdf.js rasterizes on it, and the Rust pre/post-processing\ninside add_page (line segmentation, CTC decode, reading-order assembly)\nruns synchronously on the calling thread. Move the whole pipeline off the\nmain thread so th\n[…]\n/thread init.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: run the pipeline in a Web Worker (responsive UI)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "87f4be60fae66a8d4c5ed5c67f3f502a4f575711",
          "body": "Rasterize page p+1 while page p is being converted. pdf.js raster is\nmain-thread and the ORT layout/OCR inference runs on worker threads (once\ncross-origin isolated), so the render of the next page now overlaps the\nconvert of the current one instead of running strictly after it.\ngetImageData hands b\n[…]\n the overlap.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: pipeline pdf.js rasterization with conversion",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6eaed97031681b35debe83c8e2e6374ec2f74195",
          "body": "…orker\n\nORT Web ran single-threaded because SharedArrayBuffer needs the page to\nbe cross-origin isolated, which needs COOP+COEP response headers a static\nfile server can't set. coi.js is a service worker that re-serves every\nresponse with COOP: same-origin + COEP: credentialless (credentialless so\nt\n[…]\ne ORT bundle.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demos: multi-threaded ORT via a cross-origin-isolation service w…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e2123efdda31802ef1e1fae14d2a46289759e41",
          "body": "The release now hosts layout_heron_int8.onnx, so a fresh\ndownload_dependencies.sh drops it under ./models/ and the page already\nprefers it. Report which export actually loaded (\"ready (int8 layout)\")\nso the ~2.4x-faster path is visible instead of guessed.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: surface int8 vs fp32 layout in the ready line",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bf92b9d3d2d842d4b7a71372eab00af279de7ef0",
          "body": "Show a running \"Ns/page avg\" in the status line as pages convert, log\neach page's wall time to the console, and print a total + average when\nthe run finishes — so a slow multi-page PDF is measurable instead of\njust \"page 2/10 …\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: per-page timing",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e75a13500bb3b6cc70d54e29e223bee6d85d51ae",
          "body": "….sh in www/\n\nPoint the same-origin layout paths at ./models/ and document running the\ninstaller from crates/docling-wasm/www/ — it writes ./models/ relative to\nthe current directory, so the page reads ./models/layout_heron_int8.onnx\n(fallback ./models/layout_heron.onnx) with no copy step. gitignore\n[…]\ner populates.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: fetch layout into ./models/ via download_dependencies…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a3ccf0812e3b4ed0059887b11fca91e87a45b9a2",
          "body": "…n't CORS-fetchable)\n\nGitHub Release assets are served from release-assets.githubusercontent.com\nwith no Access-Control-Allow-Origin header, so a browser fetch of the\nlayout model failed with a CORS error the moment the URL stopped 404ing.\nThe recognition models avoid this only because Hugging Face \n[…]\n't committed.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: load the layout model same-origin (release assets are…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df2920fd50400f7cd7b755b6aeca407a75f36155",
          "body": "The demo pointed at layout_heron_int8.onnx, but the release only hosts\nthe fp32 layout_heron.onnx (172 MB) — the int8 variant is produced\nlocally by scripts/install/quantize_models.py and was never uploaded,\nso the page died on a 404 before ever becoming ready.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm scan demo: fetch the layout model that models-v1 actually hosts",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ce64ed55fc35f0fa2dee4223f4efe8aea3cc948b",
          "body": "While a model loads or a document converts, the demos now disable the\nupload controls (drop zone, file input, language selector), pulse the\ndrop-zone border and spin the status line, so a click mid-run can't\nstart a second conversion. Model downloads stream through a\nfetch-with-progress helper showi\n[…]\nsession load.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demos: busy-state UI + download progress + quiet ort logs",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a154e93d52e81b0ca87d566e13d1eeee8d26f154",
          "body": "The paddle2onnx v5 export carries unused initializers, and ort logs a\nconsole warning for each one it prunes at session load. Harmless but\nnoisy — cap logSeverityLevel at errors for all demo sessions.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demos: errors-only ort logging",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "644520d9e589647975220e744f6af67950c354fe",
          "body": "The v3 cyrillic export reads Cyrillic but drops spaces and flips case\non lookalike glyphs. Side-by-side on a rendered test line (same\npreprocessing as prep_line, greedy CTC): v3 gives \"еш: pаs\" with glued\nwords, PaddlePaddle/cyrillic_PP-OCRv5_mobile_rec_onnx decodes the whole\nline exactly, spaces in\n[…]\ne demo pages.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demos: cyrillic recognition via PP-OCRv5",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34113668142c45261bf844465387955b9974b19a",
          "body": "Without the fetch-images feature (the wasm32 build) the fetch_remote\nstub had no caller left — fetch_cached, its only user, is feature-gated\n— and FsImageResolver::base_url is stored but only read by the gated\nremote-URL resolution. Drop the stub and allow(dead_code) the field so\n`wasm-pack build` s\n[…]\neature shape.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "images: silence dead-code warnings in the no-fetch build shape",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c45388a81152077d28589fa1783e04af0d953a29",
          "body": "SWHL/RapidOCR ships no cyrillic PP-OCRv3 export — the previous URL\n404'd and ort-web choked on the HTML error page (\"protobuf parsing\nfailed\"). Point the cyrillic entry at the\ncycloneboy/cyrillic_PP-OCRv3_rec_infer HF repo instead, which carries\nboth the ONNX export and its paired 163-char dictionar\n[…]\nable layout).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm demos: working cyrillic recognition model URL",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47c1783328c16218d084d0a377f3440b62166681",
          "body": "The demo pages hardcoded the English PP-OCRv3 model, so any non-Latin\nscan (e.g. Cyrillic) decoded to mojibake through the wrong dictionary.\nThe wasm API is language-agnostic — model and dict are injected from\nJS — so the fix is demo-side only: both ocr.html and scan.html get a\nrecognition-language \n[…]\n~10 MB each).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: recognition-language selector in the browser demos",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "16a09557ca37614eca60c2a4223ec99f5fe5a042",
          "body": "First real-browser test fed ocr.html a dark-theme screenshot and got\n\"(no text found)\": the whole scan pipeline assumes dark ink on light\npaper — the line segmentation thresholds pixels *darker* than the page\nmean, so light-on-dark input yields garbage. New\nocr_prep::normalize_polarity inverts a pre\n[…]\ngh untouched.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: polarity normalization for dark-mode captures (#157)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ebd2cb6e18273278a38102cc59f37ee69c8e9e25",
          "body": "… field\n\nThe workspace-wide clippy job unifies features: docling-cli enables\ndocling-pdf/ml alongside docling-wasm, so PdfPage grows its ml-gated\n`image` field and docling-wasm's struct literal stopped compiling\n(E0063). A cfg-aware constructor (from_cells, under ocr-prep) spells\nthe field only when\n[…]\ntarget check.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: fix workspace clippy — PdfPage::from_cells absorbs the ml image…",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "76add75301a5658f3cb0e8bc5193c278892bc45a",
          "body": "Scanned PDFs and images now convert fully client-side through the real\npipeline shape: RT-DETR layout detection + PP-OCRv3 recognition via\nONNX Runtime Web, everything else in Rust — the native pipeline's own\nfunctions, no second implementation.\n\ndocling-pdf (all under the existing ocr-prep feature,\n[…]\ntable-former.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: lite-profile scanned pipeline in the browser (#157 stage 2)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5a837fca8e676249ffd71cb80f1554abcf0f5a7a",
          "body": "First slice of the browser ML pipeline: scanned images OCR fully\nclient-side.\n\ndocling-pdf grows an `ocr-prep` feature (pure Rust + the image crate, no\nort/pdfium): the ONNX-free half of the PP-OCRv3 recognition pipeline —\nline segmentation, crop prep, deterministic width-batching, CTC decode,\ndicti\n[…]\ns\nunaffected.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
          "is_bot": false,
          "headline": "wasm: in-browser OCR via ONNX Runtime Web interop (#157 stage 1)",
          "author_name": "artiz",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "42aad70cf55caa2e5a939bac2103b23c74c50ff6",
          "body": "dev: full OpenAI response schema in the VLM shim (#153)",
          "is_bot": false,
          "headline": "Merge pull request #155 from artiz/claude/vlm-shim-openai-schema",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-25T07:53:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5fd2ce560fefb4a9a4d5144be2ed0901dcfc7601",
          "body": "Update README to include Claude Code and TENET",
          "is_bot": false,
          "headline": "Merge pull request #156 from docling-project/artiz-patch-1",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-24T08:32:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a230abcef1d0be9c31a20f125c1a8b822f539e9",
          "body": "Added mention of Claude Code and TENET framework in README.\n\nSigned-off-by: Artem Kustikov <artem.kustikov@gmail.com>",
          "is_bot": false,
          "headline": "Update README to include Claude Code and TENET",
          "author_name": "Artem Kustikov",
          "author_login": "artiz",
          "committed_at": "2026-07-24T08:32:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 63,
      "commits_last_year": 690,
      "latest_release_at": "2026-07-30T05:53:15Z",
      "latest_release_tag": "npm-cuda-v0.52.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 5,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 0.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "docling",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "converter",
            "docling",
            "document",
            "markdown",
            "pdf",
            "parser-implementations",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/docling",
          "is_deprecated": false,
          "latest_version": "0.52.2",
          "repository_url": "https://github.com/docling-project/docling.rs",
          "versions_count": 46,
          "total_downloads": 1118,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 373,
          "first_published_at": "2026-07-08T15:54:01.732660Z",
          "latest_published_at": "2026-07-30T05:50:42.945872Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "docling-asr",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "converter",
            "docling",
            "document",
            "markdown",
            "pdf",
            "parser-implementations",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/docling-asr",
          "is_deprecated": false,
          "latest_version": "0.52.2",
          "repository_url": "https://github.com/docling-project/docling.rs",
          "versions_count": 46,
          "total_downloads": 1235,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 412,
          "first_published_at": "2026-07-08T15:53:12.378481Z",
          "latest_published_at": "2026-07-30T05:50:33.280768Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "docling-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "converter",
            "docling",
            "document",
            "markdown",
            "pdf",
            "command-line-utilities",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/docling-cli",
          "is_deprecated": false,
          "latest_version": "0.52.2",
          "repository_url": "https://github.com/docling-project/docling.rs",
          "versions_count": 45,
          "total_downloads": 686,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 229,
          "first_published_at": "2026-07-08T15:54:07.970189Z",
          "latest_published_at": "2026-07-30T05:51:19.748141Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "docling-pdf",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "converter",
            "docling",
            "document",
            "markdown",
            "pdf",
            "parser-implementations",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/docling-pdf",
          "is_deprecated": false,
          "latest_version": "0.52.2",
          "repository_url": "https://github.com/docling-project/docling.rs",
          "versions_count": 46,
          "total_downloads": 1265,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 422,
          "first_published_at": "2026-07-08T15:53:00.766718Z",
          "latest_published_at": "2026-07-30T05:50:29.092972Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "docling-rag",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "docling",
            "embeddings",
            "rag",
            "semantic-search",
            "vector",
            "database",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/docling-rag",
          "is_deprecated": false,
          "latest_version": "0.52.2",
          "repository_url": "https://github.com/docling-project/docling.rs",
          "versions_count": 24,
          "total_downloads": 327,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 109,
          "first_published_at": "2026-07-15T12:57:34.707551Z",
          "latest_published_at": "2026-07-30T05:51:10.105021Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        },
        {
          "name": "docling-core",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "converter",
            "docling",
            "document",
            "markdown",
            "pdf",
            "parser-implementations",
            "text-processing"
          ],
          "ecosystem": "crates",
          "matches_repo": true,
          "registry_url": "https://crates.io/crates/docling-core",
          "is_deprecated": false,
          "latest_version": "0.52.2",
          "repository_url": "https://github.com/docling-project/docling.rs",
          "versions_count": 46,
          "total_downloads": 1477,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 492,
          "first_published_at": "2026-07-08T15:52:00.893838Z",
          "latest_published_at": "2026-07-30T05:50:20.077902Z",
          "latest_version_yanked": false,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 3,
      "stars": 20,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-27",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 3,
        "total_forks": 3
      },
      "star_history": null,
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [
        "crates/docling-serve/src/openapi.yaml"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "Cargo.toml",
        "crates/docling-asr/Cargo.toml",
        "crates/docling-cli/Cargo.toml",
        "crates/docling-core/Cargo.toml",
        "crates/docling-node/Cargo.toml",
        "crates/docling-pdf/Cargo.toml",
        "crates/docling-py/Cargo.toml",
        "crates/docling-rag/Cargo.toml",
        "crates/docling-serve/Cargo.toml",
        "crates/docling-wasm/Cargo.toml",
        "crates/docling/Cargo.toml"
      ],
      "largest_source_bytes": 107873,
      "source_files_sampled": 188,
      "oversized_source_files": 9,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 6621
    },
    "dependencies": {
      "manifests": [
        "Cargo.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "quick-xml",
            "direct": true,
            "version": "0.31.0",
            "severity": "high",
            "ecosystem": "crates",
            "cvss_score": 7.5,
            "advisory_ids": [
              "RUSTSEC-2026-0194",
              "RUSTSEC-2026-0195"
            ],
            "fixed_version": "0.41.0",
            "advisory_count": 2,
            "oldest_advisory_days": 30
          },
          {
            "name": "instant",
            "direct": false,
            "version": "0.1.13",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2024-0384"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 696
          },
          {
            "name": "paste",
            "direct": false,
            "version": "1.0.15",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2024-0436"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 660
          },
          {
            "name": "rustls-pemfile",
            "direct": false,
            "version": "2.2.0",
            "severity": "unknown",
            "ecosystem": "crates",
            "cvss_score": null,
            "advisory_ids": [
              "RUSTSEC-2025-0134"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 243
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "unknown": 3
        },
        "advisory_count": 5,
        "affected_count": 4,
        "assessed_count": 622,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 64,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "crates"
      ],
      "dependencies": [
        {
          "name": "docling-core",
          "manifest": "crates/docling-asr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "ort",
          "manifest": "crates/docling-asr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0.0-rc.12"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-asr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "symphonia",
          "manifest": "crates/docling-asr/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.5"
        },
        {
          "name": "docling",
          "manifest": "crates/docling-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "docling-serve",
          "manifest": "crates/docling-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tokio",
          "manifest": "crates/docling-cli/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "sha2",
          "manifest": "crates/docling-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10"
        },
        {
          "name": "tokenizers",
          "manifest": "crates/docling-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.20"
        },
        {
          "name": "pulldown-cmark",
          "manifest": "crates/docling-core/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "docling",
          "manifest": "crates/docling-node/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "napi",
          "manifest": "crates/docling-node/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "napi-derive",
          "manifest": "crates/docling-node/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "docling-core",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "pdfium-render",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "ort",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0.0-rc.12"
        },
        {
          "name": "image",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25"
        },
        {
          "name": "flate2",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tar",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "regex",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.11"
        },
        {
          "name": "lopdf",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.44"
        },
        {
          "name": "fast_image_resize",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "5.1.4"
        },
        {
          "name": "tokenizers",
          "manifest": "crates/docling-pdf/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.20"
        },
        {
          "name": "docling",
          "manifest": "crates/docling-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": null
        },
        {
          "name": "pyo3",
          "manifest": "crates/docling-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.29"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-py/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "docling-core",
          "manifest": "crates/docling-py/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0"
        },
        {
          "name": "docling",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "docling-pdf",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "zip",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.2"
        },
        {
          "name": "tokio",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "axum",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "async-trait",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "thiserror",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "serde",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "dotenvy",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.15"
        },
        {
          "name": "clap",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "4"
        },
        {
          "name": "reqwest",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.12"
        },
        {
          "name": "sqlx",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "sqlite-vec",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1.6"
        },
        {
          "name": "libsqlite3-sys",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.30"
        },
        {
          "name": "pulldown-cmark",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13"
        },
        {
          "name": "uuid",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "sha2",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.10"
        },
        {
          "name": "tracing",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "tracing-subscriber",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "ort",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.0.0-rc.12"
        },
        {
          "name": "tokenizers",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.20"
        },
        {
          "name": "suppaftp",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "6"
        },
        {
          "name": "ssh2",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.9"
        },
        {
          "name": "lapin",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "futures-lite",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "redis",
          "manifest": "crates/docling-rag/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.27"
        },
        {
          "name": "axum",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.8"
        },
        {
          "name": "docling",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "serde",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tokio",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "tokio-stream",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "ureq",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "url",
          "manifest": "crates/docling-serve/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "docling",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "docling-core",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "docling-pdf",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "image",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25"
        },
        {
          "name": "js-sys",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "wasm-bindgen-futures",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "wasm-bindgen",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "console_error_panic_hook",
          "manifest": "crates/docling-wasm/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "calamine",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.26"
        },
        {
          "name": "csv",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.4.0"
        },
        {
          "name": "headless_chrome",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.0"
        },
        {
          "name": "tempfile",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "docling-asr",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "docling-core",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "docling-pdf",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.52.2"
        },
        {
          "name": "image",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.25"
        },
        {
          "name": "mail-parser",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.11"
        },
        {
          "name": "pulldown-cmark",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.13.4"
        },
        {
          "name": "quick-xml",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.41"
        },
        {
          "name": "rayon",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.10"
        },
        {
          "name": "regex",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.11"
        },
        {
          "name": "roxmltree",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.20"
        },
        {
          "name": "scraper",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.27.0"
        },
        {
          "name": "serde_json",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "ureq",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "url",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "zip",
          "manifest": "crates/docling/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "async-trait",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "async-trait",
            "direct": true,
            "version": "0.1.91",
            "ecosystem": "crates"
          },
          {
            "name": "axum",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "axum",
            "direct": true,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "calamine",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "calamine",
            "direct": true,
            "version": "0.26.1",
            "ecosystem": "crates"
          },
          {
            "name": "clap",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "clap",
            "direct": true,
            "version": "4.6.4",
            "ecosystem": "crates"
          },
          {
            "name": "console_error_panic_hook",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "console_error_panic_hook",
            "direct": true,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "csv",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "csv",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "docling",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "docling-asr",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "docling-core",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "docling-pdf",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "docling-serve",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "dotenvy",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "dotenvy",
            "direct": true,
            "version": "0.15.7",
            "ecosystem": "crates"
          },
          {
            "name": "fast_image_resize",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "fast_image_resize",
            "direct": true,
            "version": "5.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "flate2",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "flate2",
            "direct": true,
            "version": "1.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "futures-lite",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "futures-lite",
            "direct": true,
            "version": "1.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "futures-lite",
            "direct": true,
            "version": "2.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "headless_chrome",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "headless_chrome",
            "direct": true,
            "version": "1.0.22",
            "ecosystem": "crates"
          },
          {
            "name": "image",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "image",
            "direct": true,
            "version": "0.25.10",
            "ecosystem": "crates"
          },
          {
            "name": "js-sys",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "js-sys",
            "direct": true,
            "version": "0.3.103",
            "ecosystem": "crates"
          },
          {
            "name": "lapin",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "lapin",
            "direct": true,
            "version": "2.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "libsqlite3-sys",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "libsqlite3-sys",
            "direct": true,
            "version": "0.30.1",
            "ecosystem": "crates"
          },
          {
            "name": "lopdf",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "lopdf",
            "direct": true,
            "version": "0.44.0",
            "ecosystem": "crates"
          },
          {
            "name": "mail-parser",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "mail-parser",
            "direct": true,
            "version": "0.11.5",
            "ecosystem": "crates"
          },
          {
            "name": "napi",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "napi",
            "direct": true,
            "version": "2.16.17",
            "ecosystem": "crates"
          },
          {
            "name": "napi-derive",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "napi-derive",
            "direct": true,
            "version": "2.16.13",
            "ecosystem": "crates"
          },
          {
            "name": "ort",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "ort",
            "direct": true,
            "version": "2.0.0-rc.12",
            "ecosystem": "crates"
          },
          {
            "name": "pdfium-render",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "pdfium-render",
            "direct": true,
            "version": "0.8.37",
            "ecosystem": "crates"
          },
          {
            "name": "pulldown-cmark",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "pulldown-cmark",
            "direct": true,
            "version": "0.13.4",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3",
            "direct": true,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "quick-xml",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "quick-xml",
            "direct": true,
            "version": "0.31.0",
            "ecosystem": "crates"
          },
          {
            "name": "quick-xml",
            "direct": true,
            "version": "0.41.0",
            "ecosystem": "crates"
          },
          {
            "name": "rayon",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "rayon",
            "direct": true,
            "version": "1.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "redis",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "redis",
            "direct": true,
            "version": "0.27.6",
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": true,
            "version": "1.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "reqwest",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "reqwest",
            "direct": true,
            "version": "0.12.28",
            "ecosystem": "crates"
          },
          {
            "name": "roxmltree",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "roxmltree",
            "direct": true,
            "version": "0.20.0",
            "ecosystem": "crates"
          },
          {
            "name": "scraper",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "scraper",
            "direct": true,
            "version": "0.27.0",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": "1.0.229",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": "1.0.151",
            "ecosystem": "crates"
          },
          {
            "name": "sha2",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "sha2",
            "direct": true,
            "version": "0.10.9",
            "ecosystem": "crates"
          },
          {
            "name": "sha2",
            "direct": true,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "sqlite-vec",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "sqlite-vec",
            "direct": true,
            "version": "0.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "sqlx",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "sqlx",
            "direct": true,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "ssh2",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "ssh2",
            "direct": true,
            "version": "0.9.6",
            "ecosystem": "crates"
          },
          {
            "name": "suppaftp",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "suppaftp",
            "direct": true,
            "version": "6.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "symphonia",
            "direct": true,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "tar",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tar",
            "direct": true,
            "version": "0.4.46",
            "ecosystem": "crates"
          },
          {
            "name": "tempfile",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tempfile",
            "direct": true,
            "version": "3.27.0",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": true,
            "version": "1.0.69",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": true,
            "version": "2.0.19",
            "ecosystem": "crates"
          },
          {
            "name": "tokenizers",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tokenizers",
            "direct": true,
            "version": "0.20.4",
            "ecosystem": "crates"
          },
          {
            "name": "tokio",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tokio",
            "direct": true,
            "version": "1.53.1",
            "ecosystem": "crates"
          },
          {
            "name": "tokio-stream",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tokio-stream",
            "direct": true,
            "version": "0.1.19",
            "ecosystem": "crates"
          },
          {
            "name": "tracing",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tracing",
            "direct": true,
            "version": "0.1.44",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-subscriber",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tracing-subscriber",
            "direct": true,
            "version": "0.3.23",
            "ecosystem": "crates"
          },
          {
            "name": "ureq",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "ureq",
            "direct": true,
            "version": "3.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "url",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "url",
            "direct": true,
            "version": "2.5.8",
            "ecosystem": "crates"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "1.24.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen",
            "direct": true,
            "version": "0.2.126",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-futures",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-futures",
            "direct": true,
            "version": "0.4.76",
            "ecosystem": "crates"
          },
          {
            "name": "zip",
            "direct": true,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "zip",
            "direct": true,
            "version": "2.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "docling-core",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "adler2",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "aes",
            "direct": false,
            "version": "0.8.4",
            "ecosystem": "crates"
          },
          {
            "name": "aes",
            "direct": false,
            "version": "0.9.2",
            "ecosystem": "crates"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "aligned",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "aligned-vec",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "crates"
          },
          {
            "name": "allocator-api2",
            "direct": false,
            "version": "0.2.21",
            "ecosystem": "crates"
          },
          {
            "name": "amq-protocol",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "amq-protocol-tcp",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "amq-protocol-types",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "amq-protocol-uri",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "android_system_properties",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "anes",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "anstream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle",
            "direct": false,
            "version": "1.0.14",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle-parse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle-query",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle-wincon",
            "direct": false,
            "version": "3.0.11",
            "ecosystem": "crates"
          },
          {
            "name": "anyhow",
            "direct": false,
            "version": "1.0.104",
            "ecosystem": "crates"
          },
          {
            "name": "arbitrary",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "arc-swap",
            "direct": false,
            "version": "1.9.2",
            "ecosystem": "crates"
          },
          {
            "name": "arg_enum_proc_macro",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "arrayvec",
            "direct": false,
            "version": "0.7.8",
            "ecosystem": "crates"
          },
          {
            "name": "as-slice",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "asn1-rs",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "asn1-rs-derive",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "asn1-rs-impl",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-channel",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-executor",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-global-executor",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-global-executor-trait",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-io",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-io",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-lock",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-lock",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "async-reactor-trait",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "async-task",
            "direct": false,
            "version": "4.7.1",
            "ecosystem": "crates"
          },
          {
            "name": "atoi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "atomic-waker",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "auto_generate_cdp",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "crates"
          },
          {
            "name": "autocfg",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "av-scenechange",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "crates"
          },
          {
            "name": "av1-grain",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "avif-serialize",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "axum-core",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "crates"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "crates"
          },
          {
            "name": "base64ct",
            "direct": false,
            "version": "1.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "bit_field",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "2.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "bitstream-io",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "crates"
          },
          {
            "name": "block-buffer",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "crates"
          },
          {
            "name": "block-buffer",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "block-padding",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "block-padding",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "blocking",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "built",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "bumpalo",
            "direct": false,
            "version": "3.20.3",
            "ecosystem": "crates"
          },
          {
            "name": "bytemuck",
            "direct": false,
            "version": "1.25.2",
            "ecosystem": "crates"
          },
          {
            "name": "byteorder",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "byteorder-lite",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "1.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "cast",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "cbc",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "cbc",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-if",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "cfg_aliases",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "chacha20",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "chrono",
            "direct": false,
            "version": "0.4.45",
            "ecosystem": "crates"
          },
          {
            "name": "ciborium",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "ciborium-io",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "ciborium-ll",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "cipher",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "crates"
          },
          {
            "name": "cipher",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "crates"
          },
          {
            "name": "clap_builder",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "clap_derive",
            "direct": false,
            "version": "4.6.4",
            "ecosystem": "crates"
          },
          {
            "name": "clap_lex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "cms",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "codepage",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "color_quant",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "colorchoice",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "crates"
          },
          {
            "name": "combine",
            "direct": false,
            "version": "4.6.7",
            "ecosystem": "crates"
          },
          {
            "name": "concurrent-queue",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "console_log",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "const-oid",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "crates"
          },
          {
            "name": "const-oid",
            "direct": false,
            "version": "0.9.6",
            "ecosystem": "crates"
          },
          {
            "name": "convert_case",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "convert_case",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "cookie-factory",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "core-foundation",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "crates"
          },
          {
            "name": "core-foundation-sys",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "crates"
          },
          {
            "name": "cpubits",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "cpufeatures",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "cpufeatures",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "crc",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "crc-catalog",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "crc32fast",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "criterion",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "criterion",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "criterion-plot",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-deque",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-epoch",
            "direct": false,
            "version": "0.9.20",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-queue",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "crates"
          },
          {
            "name": "crossbeam-utils",
            "direct": false,
            "version": "0.8.22",
            "ecosystem": "crates"
          },
          {
            "name": "crunchy",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "crypto-common",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "crypto-common",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "cssparser",
            "direct": false,
            "version": "0.37.0",
            "ecosystem": "crates"
          },
          {
            "name": "cssparser-macros",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "csv-core",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "crates"
          },
          {
            "name": "ctor",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "crates"
          },
          {
            "name": "darling",
            "direct": false,
            "version": "0.20.11",
            "ecosystem": "crates"
          },
          {
            "name": "darling_core",
            "direct": false,
            "version": "0.20.11",
            "ecosystem": "crates"
          },
          {
            "name": "darling_macro",
            "direct": false,
            "version": "0.20.11",
            "ecosystem": "crates"
          },
          {
            "name": "data-encoding",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "defmt",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "defmt-macros",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "defmt-parser",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "der",
            "direct": false,
            "version": "0.7.10",
            "ecosystem": "crates"
          },
          {
            "name": "der-parser",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "der_derive",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "crates"
          },
          {
            "name": "deranged",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "crates"
          },
          {
            "name": "derive_arbitrary",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "derive_builder",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "crates"
          },
          {
            "name": "derive_builder_core",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "crates"
          },
          {
            "name": "derive_builder_macro",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "crates"
          },
          {
            "name": "derive_more",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "derive_more-impl",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "des",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "digest",
            "direct": false,
            "version": "0.10.7",
            "ecosystem": "crates"
          },
          {
            "name": "digest",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "displaydoc",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "crates"
          },
          {
            "name": "doc-comment",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "document-features",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "crates"
          },
          {
            "name": "dtoa",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "crates"
          },
          {
            "name": "dtoa-short",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "crates"
          },
          {
            "name": "ecb",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "ego-tree",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "either",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "crates"
          },
          {
            "name": "encoding_rs",
            "direct": false,
            "version": "0.8.35",
            "ecosystem": "crates"
          },
          {
            "name": "equator",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "equator-macro",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "errno",
            "direct": false,
            "version": "0.3.14",
            "ecosystem": "crates"
          },
          {
            "name": "esaxx-rs",
            "direct": false,
            "version": "0.1.10",
            "ecosystem": "crates"
          },
          {
            "name": "etcetera",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "event-listener",
            "direct": false,
            "version": "2.5.3",
            "ecosystem": "crates"
          },
          {
            "name": "event-listener",
            "direct": false,
            "version": "5.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "event-listener-strategy",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "crates"
          },
          {
            "name": "executor-trait",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "exr",
            "direct": false,
            "version": "1.74.2",
            "ecosystem": "crates"
          },
          {
            "name": "extended",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "fastrand",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "fastrand",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "fax",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "crates"
          },
          {
            "name": "fdeflate",
            "direct": false,
            "version": "0.3.7",
            "ecosystem": "crates"
          },
          {
            "name": "filetime",
            "direct": false,
            "version": "0.2.29",
            "ecosystem": "crates"
          },
          {
            "name": "find-msvc-tools",
            "direct": false,
            "version": "0.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "flagset",
            "direct": false,
            "version": "0.4.7",
            "ecosystem": "crates"
          },
          {
            "name": "flume",
            "direct": false,
            "version": "0.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "fnv",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "crates"
          },
          {
            "name": "foldhash",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "form_urlencoded",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "futures-channel",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "futures-core",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "futures-executor",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "futures-intrusive",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "futures-io",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "futures-sink",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "futures-task",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "futures-util",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "generic-array",
            "direct": false,
            "version": "0.14.7",
            "ecosystem": "crates"
          },
          {
            "name": "getopts",
            "direct": false,
            "version": "0.2.24",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "gif",
            "direct": false,
            "version": "0.14.2",
            "ecosystem": "crates"
          },
          {
            "name": "half",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.15.5",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.17.1",
            "ecosystem": "crates"
          },
          {
            "name": "hashify",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "crates"
          },
          {
            "name": "hashlink",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "crates"
          },
          {
            "name": "heck",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "hermit-abi",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "hermit-abi",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "crates"
          },
          {
            "name": "hex",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "hkdf",
            "direct": false,
            "version": "0.12.4",
            "ecosystem": "crates"
          },
          {
            "name": "hmac",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "hmac-sha256",
            "direct": false,
            "version": "1.1.14",
            "ecosystem": "crates"
          },
          {
            "name": "home",
            "direct": false,
            "version": "0.5.12",
            "ecosystem": "crates"
          },
          {
            "name": "html5ever",
            "direct": false,
            "version": "0.39.0",
            "ecosystem": "crates"
          },
          {
            "name": "http",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "http-body",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "http-body-util",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "http-body-util",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "httparse",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "httpdate",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "crates"
          },
          {
            "name": "hybrid-array",
            "direct": false,
            "version": "0.4.13",
            "ecosystem": "crates"
          },
          {
            "name": "hyper",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "hyper-rustls",
            "direct": false,
            "version": "0.27.9",
            "ecosystem": "crates"
          },
          {
            "name": "hyper-util",
            "direct": false,
            "version": "0.1.20",
            "ecosystem": "crates"
          },
          {
            "name": "iana-time-zone",
            "direct": false,
            "version": "0.1.65",
            "ecosystem": "crates"
          },
          {
            "name": "iana-time-zone-haiku",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "icu_collections",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "icu_locale_core",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "icu_normalizer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "icu_normalizer_data",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "icu_properties",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "icu_properties_data",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "icu_provider",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "ident_case",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "idna_adapter",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "image-webp",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "imgref",
            "direct": false,
            "version": "1.12.2",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "inout",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "inout",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "instant",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "crates"
          },
          {
            "name": "interpolate_name",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "io-lifetimes",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "crates"
          },
          {
            "name": "ipnet",
            "direct": false,
            "version": "2.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "is-terminal",
            "direct": false,
            "version": "0.4.17",
            "ecosystem": "crates"
          },
          {
            "name": "is_terminal_polyfill",
            "direct": false,
            "version": "1.70.2",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.10.5",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "jiff",
            "direct": false,
            "version": "0.2.35",
            "ecosystem": "crates"
          },
          {
            "name": "jiff-core",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "jiff-static",
            "direct": false,
            "version": "0.2.35",
            "ecosystem": "crates"
          },
          {
            "name": "jiff-tzdb",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "jiff-tzdb-platform",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "jobserver",
            "direct": false,
            "version": "0.1.35",
            "ecosystem": "crates"
          },
          {
            "name": "lazy-regex",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "lazy-regex-proc_macros",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "lazy_static",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "lebe",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": false,
            "version": "0.2.189",
            "ecosystem": "crates"
          },
          {
            "name": "libfuzzer-sys",
            "direct": false,
            "version": "0.4.13",
            "ecosystem": "crates"
          },
          {
            "name": "libloading",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "libloading",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "libm",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "crates"
          },
          {
            "name": "libredox",
            "direct": false,
            "version": "0.1.18",
            "ecosystem": "crates"
          },
          {
            "name": "libssh2-sys",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "libz-sys",
            "direct": false,
            "version": "1.1.29",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.3.8",
            "ecosystem": "crates"
          },
          {
            "name": "litemap",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "litrs",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "lock_api",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": "0.4.33",
            "ecosystem": "crates"
          },
          {
            "name": "loop9",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "lru-slab",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "lzma-rust2",
            "direct": false,
            "version": "0.15.8",
            "ecosystem": "crates"
          },
          {
            "name": "macro_rules_attribute",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "macro_rules_attribute-proc_macro",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "markup5ever",
            "direct": false,
            "version": "0.39.0",
            "ecosystem": "crates"
          },
          {
            "name": "matchers",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "matchit",
            "direct": false,
            "version": "0.8.4",
            "ecosystem": "crates"
          },
          {
            "name": "matrixmultiply",
            "direct": false,
            "version": "0.3.11",
            "ecosystem": "crates"
          },
          {
            "name": "maybe-owned",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "maybe-rayon",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "md-5",
            "direct": false,
            "version": "0.10.6",
            "ecosystem": "crates"
          },
          {
            "name": "md-5",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "0.3.17",
            "ecosystem": "crates"
          },
          {
            "name": "minimal-lexical",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "miniz_oxide",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "mio",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "monostate",
            "direct": false,
            "version": "0.1.18",
            "ecosystem": "crates"
          },
          {
            "name": "monostate-impl",
            "direct": false,
            "version": "0.1.18",
            "ecosystem": "crates"
          },
          {
            "name": "moxcms",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "multer",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "napi-build",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "napi-build",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "napi-derive-backend",
            "direct": false,
            "version": "1.0.75",
            "ecosystem": "crates"
          },
          {
            "name": "napi-sys",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "ndarray",
            "direct": false,
            "version": "0.17.2",
            "ecosystem": "crates"
          },
          {
            "name": "new_debug_unreachable",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "crates"
          },
          {
            "name": "no_std_io2",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "crates"
          },
          {
            "name": "nom",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "nom",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "noop_proc_macro",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "nu-ansi-term",
            "direct": false,
            "version": "0.50.3",
            "ecosystem": "crates"
          },
          {
            "name": "num-bigint",
            "direct": false,
            "version": "0.4.8",
            "ecosystem": "crates"
          },
          {
            "name": "num-complex",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "crates"
          },
          {
            "name": "num-conv",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "num-derive",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "num-integer",
            "direct": false,
            "version": "0.1.46",
            "ecosystem": "crates"
          },
          {
            "name": "num-rational",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "num-traits",
            "direct": false,
            "version": "0.2.19",
            "ecosystem": "crates"
          },
          {
            "name": "oid-registry",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.21.4",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell_polyfill",
            "direct": false,
            "version": "1.70.2",
            "ecosystem": "crates"
          },
          {
            "name": "onig",
            "direct": false,
            "version": "6.5.3",
            "ecosystem": "crates"
          },
          {
            "name": "onig_sys",
            "direct": false,
            "version": "69.9.3",
            "ecosystem": "crates"
          },
          {
            "name": "oorandom",
            "direct": false,
            "version": "11.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "openssl-probe",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "openssl-sys",
            "direct": false,
            "version": "0.9.117",
            "ecosystem": "crates"
          },
          {
            "name": "ort-sys",
            "direct": false,
            "version": "2.0.0-rc.12",
            "ecosystem": "crates"
          },
          {
            "name": "p12-keystore",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "parking",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot",
            "direct": false,
            "version": "0.12.5",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot_core",
            "direct": false,
            "version": "0.9.12",
            "ecosystem": "crates"
          },
          {
            "name": "paste",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "crates"
          },
          {
            "name": "pastey",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "pbkdf2",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "crates"
          },
          {
            "name": "pem-rfc7468",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "percent-encoding",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "phf",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "phf_codegen",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "phf_generator",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "phf_macros",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "phf_shared",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "pin-project-lite",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "pinky-swear",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "piper",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "piston-float",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "pkcs12",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "pkcs5",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "crates"
          },
          {
            "name": "pkg-config",
            "direct": false,
            "version": "0.3.33",
            "ecosystem": "crates"
          },
          {
            "name": "plain",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "plotters",
            "direct": false,
            "version": "0.3.7",
            "ecosystem": "crates"
          },
          {
            "name": "plotters-backend",
            "direct": false,
            "version": "0.3.7",
            "ecosystem": "crates"
          },
          {
            "name": "plotters-svg",
            "direct": false,
            "version": "0.3.7",
            "ecosystem": "crates"
          },
          {
            "name": "png",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "crates"
          },
          {
            "name": "polling",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "polling",
            "direct": false,
            "version": "3.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "portable-atomic",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "portable-atomic-util",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "crates"
          },
          {
            "name": "potential_utf",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "powerfmt",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "ppv-lite86",
            "direct": false,
            "version": "0.2.21",
            "ecosystem": "crates"
          },
          {
            "name": "precomputed-hash",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.107",
            "ecosystem": "crates"
          },
          {
            "name": "profiling",
            "direct": false,
            "version": "1.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "profiling-procmacros",
            "direct": false,
            "version": "1.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "pulp",
            "direct": false,
            "version": "0.22.3",
            "ecosystem": "crates"
          },
          {
            "name": "pulp-wasm-simd-flag",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "pxfm",
            "direct": false,
            "version": "0.1.30",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-build-config",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-ffi",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-macros",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "pyo3-macros-backend",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "qoi",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "quick-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "quinn",
            "direct": false,
            "version": "0.11.11",
            "ecosystem": "crates"
          },
          {
            "name": "quinn-proto",
            "direct": false,
            "version": "0.11.16",
            "ecosystem": "crates"
          },
          {
            "name": "quinn-udp",
            "direct": false,
            "version": "0.5.15",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.47",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "rand",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "crates"
          },
          {
            "name": "rand",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "crates"
          },
          {
            "name": "rand",
            "direct": false,
            "version": "0.9.5",
            "ecosystem": "crates"
          },
          {
            "name": "rand_chacha",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "crates"
          },
          {
            "name": "rand_chacha",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "rand_core",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "rand_core",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "crates"
          },
          {
            "name": "rand_core",
            "direct": false,
            "version": "0.9.5",
            "ecosystem": "crates"
          },
          {
            "name": "rand_pcg",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "crates"
          },
          {
            "name": "rangemap",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "crates"
          },
          {
            "name": "rav1e",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "ravif",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "raw-cpuid",
            "direct": false,
            "version": "11.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "rawpointer",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "rayon-cond",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "rayon-core",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "rc2",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "reactor-trait",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "reborrow",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "redox_syscall",
            "direct": false,
            "version": "0.5.18",
            "ecosystem": "crates"
          },
          {
            "name": "redox_syscall",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.16",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.11",
            "ecosystem": "crates"
          },
          {
            "name": "rgb",
            "direct": false,
            "version": "0.8.53",
            "ecosystem": "crates"
          },
          {
            "name": "ring",
            "direct": false,
            "version": "0.17.14",
            "ecosystem": "crates"
          },
          {
            "name": "rustc-hash",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "rustc_version",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "rusticata-macros",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "0.37.28",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "rustls",
            "direct": false,
            "version": "0.23.42",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-connector",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-native-certs",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-pemfile",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-pki-types",
            "direct": false,
            "version": "1.15.1",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-webpki",
            "direct": false,
            "version": "0.103.13",
            "ecosystem": "crates"
          },
          {
            "name": "rustversion",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "salsa20",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "crates"
          },
          {
            "name": "same-file",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "crates"
          },
          {
            "name": "schannel",
            "direct": false,
            "version": "0.1.29",
            "ecosystem": "crates"
          },
          {
            "name": "scopeguard",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "scrypt",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "security-framework",
            "direct": false,
            "version": "2.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "security-framework-sys",
            "direct": false,
            "version": "2.17.0",
            "ecosystem": "crates"
          },
          {
            "name": "selectors",
            "direct": false,
            "version": "0.38.0",
            "ecosystem": "crates"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "1.0.28",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.229",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.229",
            "ecosystem": "crates"
          },
          {
            "name": "serde_path_to_error",
            "direct": false,
            "version": "0.1.20",
            "ecosystem": "crates"
          },
          {
            "name": "serde_urlencoded",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "crates"
          },
          {
            "name": "servo_arc",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "sha1",
            "direct": false,
            "version": "0.10.7",
            "ecosystem": "crates"
          },
          {
            "name": "sharded-slab",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "shlex",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "signal-hook-registry",
            "direct": false,
            "version": "1.4.8",
            "ecosystem": "crates"
          },
          {
            "name": "simd-adler32",
            "direct": false,
            "version": "0.3.10",
            "ecosystem": "crates"
          },
          {
            "name": "simd_helpers",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "siphasher",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "crates"
          },
          {
            "name": "slab",
            "direct": false,
            "version": "0.4.12",
            "ecosystem": "crates"
          },
          {
            "name": "smallvec",
            "direct": false,
            "version": "1.15.2",
            "ecosystem": "crates"
          },
          {
            "name": "socket2",
            "direct": false,
            "version": "0.4.10",
            "ecosystem": "crates"
          },
          {
            "name": "socket2",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "crates"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "spin",
            "direct": false,
            "version": "0.9.9",
            "ecosystem": "crates"
          },
          {
            "name": "spki",
            "direct": false,
            "version": "0.7.3",
            "ecosystem": "crates"
          },
          {
            "name": "spm_precompiled",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "sqlx-core",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "sqlx-macros",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "sqlx-macros-core",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "sqlx-postgres",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "sqlx-sqlite",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "stable_deref_trait",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "string_cache",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "string_cache_codegen",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "stringprep",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "strsim",
            "direct": false,
            "version": "0.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "subtle",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-bundle-flac",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-bundle-mp3",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-codec-aac",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-codec-pcm",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-codec-vorbis",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-core",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-format-isomp4",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-format-mkv",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-format-ogg",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-format-riff",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-metadata",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "symphonia-utils-xiph",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.119",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "crates"
          },
          {
            "name": "sync_wrapper",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "synstructure",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "crates"
          },
          {
            "name": "target-lexicon",
            "direct": false,
            "version": "0.13.5",
            "ecosystem": "crates"
          },
          {
            "name": "tcp-stream",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "crates"
          },
          {
            "name": "tendril",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "1.0.69",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "2.0.19",
            "ecosystem": "crates"
          },
          {
            "name": "thread_local",
            "direct": false,
            "version": "1.1.10",
            "ecosystem": "crates"
          },
          {
            "name": "tiff",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "time",
            "direct": false,
            "version": "0.3.54",
            "ecosystem": "crates"
          },
          {
            "name": "time-core",
            "direct": false,
            "version": "0.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "time-macros",
            "direct": false,
            "version": "0.2.32",
            "ecosystem": "crates"
          },
          {
            "name": "tinystr",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "tinytemplate",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "tinyvec",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "tinyvec_macros",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "tokio-macros",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "crates"
          },
          {
            "name": "tokio-rustls",
            "direct": false,
            "version": "0.26.4",
            "ecosystem": "crates"
          },
          {
            "name": "tokio-util",
            "direct": false,
            "version": "0.7.19",
            "ecosystem": "crates"
          },
          {
            "name": "tower",
            "direct": false,
            "version": null,
            "ecosystem": "crates"
          },
          {
            "name": "tower",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "crates"
          },
          {
            "name": "tower-http",
            "direct": false,
            "version": "0.6.11",
            "ecosystem": "crates"
          },
          {
            "name": "tower-layer",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "tower-service",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-attributes",
            "direct": false,
            "version": "0.1.31",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-core",
            "direct": false,
            "version": "0.1.36",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-log",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "try-lock",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "tungstenite",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "typenum",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "crates"
          },
          {
            "name": "unicase",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-bidi",
            "direct": false,
            "version": "0.3.18",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-normalization",
            "direct": false,
            "version": "0.1.25",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-normalization-alignments",
            "direct": false,
            "version": "0.1.12",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-properties",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-segmentation",
            "direct": false,
            "version": "1.13.3",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-width",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "unicode_categories",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "untrusted",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "ureq-proto",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "utf16string",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "utf8-zero",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "utf8_iter",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "utf8parse",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "v_frame",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "valuable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "vcpkg",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "crates"
          },
          {
            "name": "vecmath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "version_check",
            "direct": false,
            "version": "0.9.5",
            "ecosystem": "crates"
          },
          {
            "name": "waker-fn",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "walkdir",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "want",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "crates"
          },
          {
            "name": "wasi",
            "direct": false,
            "version": "0.11.1+wasi-snapshot-preview1",
            "ecosystem": "crates"
          },
          {
            "name": "wasip2",
            "direct": false,
            "version": "1.0.4+wasi-0.2.12",
            "ecosystem": "crates"
          },
          {
            "name": "wasite",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-macro",
            "direct": false,
            "version": "0.2.126",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-macro-support",
            "direct": false,
            "version": "0.2.126",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-shared",
            "direct": false,
            "version": "0.2.126",
            "ecosystem": "crates"
          },
          {
            "name": "web-sys",
            "direct": false,
            "version": "0.3.103",
            "ecosystem": "crates"
          },
          {
            "name": "web-time",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "web_atoms",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "webpki-roots",
            "direct": false,
            "version": "0.26.11",
            "ecosystem": "crates"
          },
          {
            "name": "webpki-roots",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "crates"
          },
          {
            "name": "weezl",
            "direct": false,
            "version": "0.1.12",
            "ecosystem": "crates"
          },
          {
            "name": "weezl",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "which",
            "direct": false,
            "version": "8.0.5",
            "ecosystem": "crates"
          },
          {
            "name": "whoami",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "winapi",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-i686-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-util",
            "direct": false,
            "version": "0.1.11",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-x86_64-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-core",
            "direct": false,
            "version": "0.62.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-implement",
            "direct": false,
            "version": "0.60.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-interface",
            "direct": false,
            "version": "0.59.3",
            "ecosystem": "crates"
          },
          {
            "name": "windows-link",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-result",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-strings",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.48.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.61.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-targets",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows-targets",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_gnullvm",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_msvc",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnu",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_msvc",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnu",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnullvm",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_msvc",
            "direct": false,
            "version": "0.48.5",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "winreg",
            "direct": false,
            "version": "0.56.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen",
            "direct": false,
            "version": "0.57.1",
            "ecosystem": "crates"
          },
          {
            "name": "writeable",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "crates"
          },
          {
            "name": "x509-cert",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "x509-parser",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "crates"
          },
          {
            "name": "xattr",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "y4m",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "yoke",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "yoke-derive",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "zerocopy",
            "direct": false,
            "version": "0.8.55",
            "ecosystem": "crates"
          },
          {
            "name": "zerocopy-derive",
            "direct": false,
            "version": "0.8.55",
            "ecosystem": "crates"
          },
          {
            "name": "zerofrom",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "zerofrom-derive",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "zeroize",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "zerotrie",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "zerovec",
            "direct": false,
            "version": "0.11.6",
            "ecosystem": "crates"
          },
          {
            "name": "zerovec-derive",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "zmij",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "zopfli",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "zune-core",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "zune-inflate",
            "direct": false,
            "version": "0.2.54",
            "ecosystem": "crates"
          },
          {
            "name": "zune-jpeg",
            "direct": false,
            "version": "0.5.15",
            "ecosystem": "crates"
          },
          {
            "name": "@napi-rs/cli",
            "direct": false,
            "version": "^2.18.4",
            "ecosystem": "npm"
          },
          {
            "name": "docling.rs",
            "direct": false,
            "version": "^0.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "maturin",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 686,
        "direct_count": 113,
        "indirect_count": 573
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 126,
        "open_issues": 2,
        "closed_ratio": 0.957,
        "closed_issues": 45,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "artiz",
          "commits": 485,
          "avatar_url": "https://avatars.githubusercontent.com/u/171757?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 137,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 2,
      "top_contributor_share": 0.78
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "deps-update.yml",
        "npm-publish.yml",
        "pages.yml",
        "publish-models.yml",
        "pypi-publish.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/14 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 4,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 5,
            "reason": "5 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ca9fe7a543b55a540dfa18b88f4f44591b5a928e",
        "ran_at": "2026-07-30T06:02:07Z",
        "aggregate_score": 4.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-30T05:52:42Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-07-30T05:47:58Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 34,
          "created_at": "2026-07-08T16:09:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 139,
          "created_at": "2026-07-22T08:13:53Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/docling-project/docling.rs",
    "host": "github.com",
    "name": "docling.rs",
    "owner": "docling-project"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 62,
            "calibrated": 69,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 69,
      "inputs": {
        "security": 48,
        "vitality": 71,
        "community": 47,
        "governance": 63,
        "calibration": "2026-08-02",
        "engineering": 71,
        "ai_readiness": 78,
        "weighted_overall_raw": 62
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 71,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 690,
              "human_commit_share": 0.94,
              "days_since_last_push": 0,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "690 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 690
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 63,
              "latest_release_tag": "npm-cuda-v0.52.1",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 0.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "63 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 63
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "weak",
        "name": "Community & Adoption",
        "value": 47,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "forks": 3,
              "stars": 20,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "20 stars",
                "points": 20.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "3 forks",
                "points": 2.5,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 55,
            "inputs": {
              "packages": [
                "docling",
                "docling-asr",
                "docling-cli",
                "docling-pdf",
                "docling-rag",
                "docling-core"
              ],
              "dependents": null,
              "ecosystems": "crates",
              "total_downloads": 6108,
              "monthly_downloads": 2037
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,037 downloads/month across crates",
                "points": 44.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2037,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 63,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 2,
              "top_contributor_share": 0.78
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 78% of commits",
                "points": 4.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 78
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "2 contributors",
                "points": 2.7,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "merged_prs": 126,
              "open_issues": 2,
              "closed_issues": 45,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.957,
              "closed_unmerged_prs": 1,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "96% of issues closed",
                "points": 40.2,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 96
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "126/127 decided PRs merged",
                "points": 29.8,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 126,
                      "decided": 127
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/14 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "followers": 1206,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "docling-project",
              "public_repos": 26,
              "account_age_days": 622
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "1,206 followers of docling-project",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1206,
                      "login": "docling-project"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "26 public repos, account ~1 yr old",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 26
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "docling",
                "docling-asr",
                "docling-cli",
                "docling-pdf",
                "docling-rag",
                "docling-core"
              ],
              "ecosystems": "crates",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "6 package(s) on crates",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 6,
                      "ecosystems": "crates"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "46 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 46
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 71,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "weak",
        "name": "Security",
        "value": 48,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "weak",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 4.2
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/14 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "5 existing vulnerabilities detected",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 622 resolved dependencies against OSV; 64 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 622
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 64
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "source": "osv",
              "advisories": 5,
              "affected_packages": 4,
              "assessed_packages": 622,
              "unassessed_packages": 64,
              "affected_by_severity": "high 1, unknown 3",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: quick-xml 0.31.0 (high 7.5)",
                "points": 14,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "quick-xml 0.31.0 (high 7.5)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 622,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 78,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.979,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 6621
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "92 of 94 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 92,
                      "sampled": 94
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.75,
              "toolchain_manifests": [
                "Cargo.toml",
                "crates/docling-asr/Cargo.toml",
                "crates/docling-cli/Cargo.toml",
                "crates/docling-core/Cargo.toml",
                "crates/docling-node/Cargo.toml",
                "crates/docling-pdf/Cargo.toml",
                "crates/docling-py/Cargo.toml",
                "crates/docling-rag/Cargo.toml",
                "crates/docling-serve/Cargo.toml",
                "crates/docling-wasm/Cargo.toml",
                "crates/docling/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Cargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "Cargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Rust (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "75 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 75,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "primary_language": "Rust",
              "largest_source_bytes": 107873,
              "source_files_sampled": 188,
              "oversized_source_files": 9
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Rust (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Rust"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "9/188 source files over 60KB",
                "points": 52.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 188,
                      "oversized": 9
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "excellent",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": [
                "crates/docling-serve/src/openapi.yaml"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "crates/docling-serve/src/openapi.yaml",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "crates/docling-serve/src/openapi.yaml"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "network-service",
        "library",
        "cli"
      ],
      "scores": {
        "cli": 4,
        "library": 6,
        "network-service": 7
      },
      "primary": "network-service",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:crates",
          "weight": 6
        },
        {
          "tier": "dependencies",
          "label": "cli",
          "source": "dep:clap",
          "weight": 4
        },
        {
          "tier": "dependencies",
          "label": "network-service",
          "source": "dep:axum",
          "weight": 4
        },
        {
          "tier": "structure",
          "label": "network-service",
          "source": "api_schema",
          "weight": 3
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch crates package 'docling-py' from its registry",
    "Could not fetch crates package 'docling-node' from its registry",
    "deps.dev does not index crates:docling@0.52.2; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-30T06:02:34.499021Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/docling-project/docling.rs.svg",
  "full_name": "docling-project/docling.rs",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v2.3.1、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计crates.io.