Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 2.3.1 · 2026-07-30 06:02 UTC

docling-project / docling.rs

Full Rust port of Python docling

RustMIT★ 20 estrellas⑂ 3 forksdesde jun 2026Ver en GitHub ↗
TipoServicio de redBibliotecaHerramienta de línea de comandoscómo se determina

docling-project/docling.rs tiene un índice de salud de 69 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es AI Readiness (78/100) y la más baja, Community & Adoption (47/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

69
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

69
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

El resultado global ponderado 62 se calibra a 69 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

Docling ProjectOrganización
1206 seguidores26 repositorios públicosdesde nov 2024

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

71Bueno · 21% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
3.5/36Cadencia de commits — 5/52 semanas con commits
18/18Volumen de commits — 690 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year690
human_commit_share0,94
days_since_last_push0
active_weeks_last_year5
Cómo se puntúa
27/27Publica versiones — 63 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~0,9 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count63
latest_release_tagnpm-cuda-v0.52.1
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases0,9

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

47Débil · 17% del índice global
Cómo se puntúa
20.7/60Estrellas — 20 estrellas
2.5/25Forks — 3 forks
0/15Observadores — 1 observadores
Datos de entrada utilizados
forks3
stars20
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges
has_contributing
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno
Cómo se puntúa
44.1/80Descargas mensuales — 2037 descargas/mes en crates
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesdocling, docling-asr, docling-cli, docling-pdf, docling-rag, docling-core
dependents
ecosystemscrates
total_downloads6108
monthly_downloads2037
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

63Moderado · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
4.9/22.5Distribución de commits — el principal contribuyente firma el 78% de los commits
2.7/13.5Amplitud de contribuyentes — 2 contribuyentes
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Datos de entrada utilizados
bus_factor1
contributors_sampled2
top_contributor_share0,78
Cómo se puntúa
40.2/42Resolución de issues — 96% de issues cerradas
29.8/30Aceptación de PR — 126/127 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
0/15OpenSSF Scorecard: Code-Review — Found 0/14 approved changesets -- score normalized to 0
Datos de entrada utilizados
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
Excluidos de la puntuación (sin datos o no aplicable): newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
22.2/25Alcance del propietario — 1206 seguidores de docling-project
13.8/25Trayectoria — 26 repos públicos, cuenta de ~1 años
Datos de entrada utilizados
followers1206
owner_typeOrganization
is_verified
owner_logindocling-project
public_repos26
account_age_days622
Cómo se puntúa
25/25Publicado y resoluble — 6 paquete(s) en crates
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 46 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesdocling, docling-asr, docling-cli, docling-pdf, docling-rag, docling-core
ecosystemscrates
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

71Bueno · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 6 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-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
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

48Débil · 16% del índice global
Cómo se puntúa
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.5Licencia — 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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate4,2
Cómo se puntúa
14/35Dependencias directas libres de avisos conocidos — 1 afectados: quick-xml 0.31.0 (high 7.5)
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
40/40Sin avisos pendientes — ningún aviso lleva público más de 90 días
Datos de entrada utilizados
sourceosv
advisories5
affected_packages4
assessed_packages622
unassessed_packages64
affected_by_severityhigh 1, unknown 3
direct_affected_packages1
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos. Los pesos restantes se han renormalizado. Se cotejaron 622 dependencias resueltas con OSV. 64 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

78Bueno · 4% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 92 de 94 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,979
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes6621
Cómo se puntúa
12.6/18Arranque con un solo comando — Cargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Rust (tipado estático)
10/10Entorno reproducible — Dockerfile, lockfile
10/10Práctica demostrada con agentes — 75 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
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
Cómo se puntúa
45/45Código verificable por tipos — Rust (tipado estático)
52.4/55Tamaños de archivo manejables — 9/188 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageRust
largest_source_bytes107.873
source_files_sampled188
oversized_source_files9
Cómo se puntúa
40/40Esquema de API (OpenAPI/GraphQL/proto) — crates/docling-serve/src/openapi.yaml
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_filescrates/docling-serve/src/openapi.yaml

Datos clave

20estrellas de GitHub
2contribuidores
690commits en los últimos 12 meses
0días desde el último push
63versiones publicadas
1factor bus
2issues abiertas
crates.ioecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

Historial de estrellas y forks 0 ★ / 3 ⇿
0Estrellas
3Forks
26Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

12233312026-062026-072026-07
Mayor 0Menor 20Parche 5
OpenSSF Scorecard 4.2 / 10
4.2agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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
Dependencias directas 92
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias 686

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 113 paquetes directos y 573 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

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

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 622 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 4 tienen avisos conocidos, de los cuales 1 son directas. 64 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
quick-xml0.31.0directaalta20.41.0
instant0.1.13indirectadesconocida1
paste1.0.15indirectadesconocida1
rustls-pemfile2.2.0indirectadesconocida1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v2.3.1, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadascrates.io.