Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-28 15:08 UTC

daisy / epubcheck

Validation tool for EPUB

HTML · JavaMIT★ 0 estrellas⑂ 0 forksdesde nov 2016archivadoforkVer en GitHub ↗

daisy/epubcheck tiene un índice de salud de 10 sobre 100, lo que lo sitúa en la banda Crítico. Su puntuación más alta es Sustainability & Governance (37/100) y la más baja, Community & Adoption (13/100). El repositorio está archivado, por lo que no cabe esperar más mantenimiento.

10
global / 100
Crítico

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

10
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas 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.

Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 29.

Titularidad

DAISY ConsortiumOrganización
58 seguidores97 repositorios públicosdesde abr 2011

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Mavenorg.daisy:epubcheckapunta a otro repositorio; no se puntúa4.0.2-a11y-1-1hace 3526 días

Métricas por categoría

Vitalidad

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

17Crítico · 22% del índice global
Cómo se puntúa
0/36Recencia de push — último push hace 2721 días
0/36Cadencia de commits — 0/52 semanas con commits
0/18Volumen de commits — 0 commits en el último año
0/10OpenSSF Scorecard: Maintained — project is archived
Datos de entrada utilizados
commits_last_year0
human_commit_share1
days_since_last_push2721
active_weeks_last_year0
Cómo se puntúa
27/27Publica versiones — 1 versiones publicadas
0/36Recencia de las versiones — última versión hace 3526 días
12.6/27Cadencia de publicación — cadencia desconocida (una sola versión)
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count1
latest_release_tagv4.0.2-a11y-1
releases_from_tagsno
days_since_latest_release3526
mean_days_between_releases

Comunidad y Adopción

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

13Crítico · 18% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 0 forks
1.7/15Observadores — 3 observadores
Datos de entrada utilizados
forks0
stars0
watchers3
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
0/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readmeno
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

37En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
9.2/22.5Distribución de commits — el principal contribuyente firma el 59% de los commits
13.5/13.5Amplitud de contribuyentes — 17 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 13 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled17
top_contributor_share0,592
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
12.7/25Alcance del propietario — 58 seguidores de daisy
25/25Trayectoria — 97 repos públicos, cuenta de ~15 años
Datos de entrada utilizados
followers58
owner_typeOrganization
is_verified
owner_logindaisy
public_repos97
account_age_days5569

Calidad de Ingeniería

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

32En riesgo · 20% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_cino
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

35En riesgo
Cómo se puntúa
0/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
0/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readmeno
has_docs_dir
has_descriptionno

Seguridad

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

20Crítico · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 13 contributing companies or organizations
0/10Dangerous-Workflow — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project is archived
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — sin datos
0/7.5Vulnerabilities — 12 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate1,7
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, token_permissions. Los pesos restantes se han renormalizado.
Cómo se puntúa
5.7/35Dependencias directas libres de avisos conocidos — 3 afectados: org.codehaus.jackson:jackson-mapper-asl 1.9.12 (critical 9.8), org.apache.commons:commons-compress 1.5 (high 7.5), com.google.guava:guava 14.0.1 (moderate 5.9)
5.4/25Dependencias indirectas libres de avisos conocidos — 1 afectados: com.twelvemonkeys.imageio:imageio-metadata 3.1.2 (critical 9.8)
21.9/40Sin avisos pendientes — 4 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 2365 días
Datos de entrada utilizados
sourceosv
advisories11
affected_packages4
assessed_packages13
unassessed_packages0
affected_by_severitycritical 2, high 1, moderate 1
direct_affected_packages3
Se cotejó el cierre de dependencias en tiempo de ejecución de maven:org.daisy:epubcheck@4.0.2-a11y-1 —lo que arrastra la instalación del paquete publicado—: 13 paquetes. 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? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

37En riesgo · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
26.1/40Historial de commits legible — 49 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,49
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — pom.xml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
0/10Entorno reproducible
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifestspom.xml
dependency_bot_commit_share0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
0/45Código verificable por tipos — HTML sin configuración de verificación de tipos
54.8/55Tamaños de archivo manejables — 1/265 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageHTML
largest_source_bytes60.332
source_files_sampled265
oversized_source_files1

Datos clave

0estrellas de GitHub
17contribuidores
0commits en los últimos 12 meses
2721días desde el último push
1versiones publicadas
1factor bus
0issues abiertas
Mavenecosistemas de paquetes

Advertencias de recopilación de datos

  • Community profile unavailable
  • maven package 'org.daisy:epubcheck' points at a different repository (https://github.com/IDPF/epubcheck); excluded from ecosystem scoring
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 1.7 / 10
1.7agregado

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-28 15:08 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 13 contributing companies or organizations
n/dDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject is archived
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
n/dToken-PermissionsNo tokens found
0Vulnerabilities12 existing vulnerabilities detected
Dependencias directas 10
RegistroPaqueteRestricción de versiónManifiesto
Mavennet.sf.saxon:Saxon-HE9.5.1-5pom.xml
Mavenorg.apache.commons:commons-compress1.5pom.xml
Mavenorg.daisy.libs:jing20120724.0.0pom.xml
Mavenorg.w3c.css:sac1.3pom.xml
Mavencom.google.guava:guava14.0.1pom.xml
Mavencom.twelvemonkeys.imageio:imageio-jpeg3.1.2pom.xml
Mavenorg.codehaus.jackson:jackson-core-asl1.9.12pom.xml
Mavenorg.codehaus.jackson:jackson-mapper-asl1.9.12pom.xml
Mavennet.sf.saxon:Saxon-HE9.4pom.xml
Mavenorg.apache.maven.scm:maven-scm-provider-gitexe1.8.1pom.xml
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Avisos de dependencias 4

Instalar maven:org.daisy:epubcheck@4.0.2-a11y-1 arrastra 13 paquetes, directos y transitivos: 4 tienen avisos conocidos, de los cuales 3 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
org.codehaus.jackson:jackson-mapper-asl1.9.12directacrítica2
com.twelvemonkeys.imageio:imageio-metadata3.1.2indirectacrítica13.7.1
org.apache.commons:commons-compress1.5directaalta51.26.0
com.google.guava:guava14.0.1directamoderada332.0.0-android

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": true,
      "size_kb": 56631,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 293493,
        "HTML": 2812713,
        "Java": 1414486,
        "XSLT": 17075,
        "Shell": 3364,
        "Python": 63880,
        "Batchfile": 385,
        "FreeMarker": 1163,
        "JavaScript": 4251
      },
      "pushed_at": "2019-02-13T19:51:45Z",
      "created_at": "2016-11-30T14:23:53Z",
      "owner_type": "Organization",
      "updated_at": "2024-07-01T17:22:58Z",
      "description": "Validation tool for EPUB",
      "is_archived": true,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "HTML",
      "significant_languages": [
        "HTML",
        "Java"
      ]
    },
    "owner": {
      "blog": "http://www.daisy.org",
      "name": "DAISY Consortium",
      "type": "Organization",
      "login": "daisy",
      "company": null,
      "location": null,
      "followers": 58,
      "avatar_url": "https://avatars.githubusercontent.com/u/757383?v=4",
      "created_at": "2011-04-28T17:27:52Z",
      "is_verified": null,
      "public_repos": 97,
      "account_age_days": 5569
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v4.0.2-a11y-1",
          "kind": "prerelease",
          "published_at": "2016-11-30T16:01:41Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "dc9637e80a46ff8f50216278b9e38eb73cadadca",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare for next development iteration",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-30T15:48:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa54c36efdc13f2fe9c57b6e99b7ca48efac2fdb",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare release v4.0.2-a11y-1",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-30T15:48:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c186405d2037c5b0a35739d7c48c5d3bd2e78c36",
          "body": null,
          "is_bot": false,
          "headline": "Update README for this fork",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-30T15:46:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46215a13991d0b366b281c9c12d0cbc6336121fb",
          "body": "* New `A11yReporter` class\n  * runs an XSLT to create the a11y report\n* New `Option` class\n  * to store EpubCheck runtime options\n* New `OptionSet` class\n  * to store a set of EpubCheck options\n  * comes with a builder class\n  * an instance of `OptionSet` is added to the `ValidationContext`\n  * the \n[…]\nructor\n* New `--a11y` CLI argument\n  * enables the creation of the a11y report\n  * the path of the a11y report is given as argument to the `--a11y` option\n* Added a sample EPUB to test the a11y report",
          "is_bot": false,
          "headline": "Enable the creation of an a11y report",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-30T15:46:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eec841dd746e4be6e2105fd53d902a937d16000a",
          "body": null,
          "is_bot": false,
          "headline": "Change POM groupId and version for this fork",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-30T14:32:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe0ed424a1fce61d6e40d1dd903a1a75d2241566",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare for next development iteration",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-29T13:08:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3de6ddb86dedf6c8f09c3f2211d158cbb27bfc4a",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare release v4.0.2",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-29T13:08:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcb1f625b6dd82ad3fb016b6e72268e574b53523",
          "body": null,
          "is_bot": false,
          "headline": "Set version to maven-javadoc-plugin",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-29T13:05:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66e88e46b4f2cf44ee9607c05f2eccb6254c4101",
          "body": null,
          "is_bot": false,
          "headline": "Tweak configuration of XML parsers",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-29T13:01:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70e990d113f3011c1b33bce06a398ac5d561412c",
          "body": "Fix issue #711",
          "is_bot": false,
          "headline": "Make case conversions locale-independent",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2016-11-07T10:24:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f19a8dcb4f5e75b0cb9abb810ee9bce4846de8f",
          "body": "Generate XML with JVM libraries in javax.xml",
          "is_bot": false,
          "headline": "Merge pull request #673 from tledoux/issue517",
          "author_name": "tledoux",
          "author_login": "tledoux",
          "committed_at": "2016-10-04T17:28:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57a6aae1adf0a7308f8a605b8d848437ca804a33",
          "body": "This reverts commit feb94268da013737af3ffab485aadb00c16bb751.\n\nWhy: Those files have been part of issue #256 but aren’t covered by any unit tests…",
          "is_bot": false,
          "headline": "Revert \"delete unnecessary Mac DS_Store files\" / refs #709 #256",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-10-04T13:46:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4cc534fe9e6c7ae3a59f756f52eab0080bbfa82",
          "body": null,
          "is_bot": false,
          "headline": "add Archive.createArchive(File) method",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-10-04T13:30:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fddb489e4dcef152b5b5fec011808fb7eea8ef7",
          "body": null,
          "is_bot": false,
          "headline": "tiny code fixes for lint4j warnings",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-10-04T13:27:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e7258d4e528783004f7f6d39713ca1ad8836a1b",
          "body": null,
          "is_bot": false,
          "headline": "fix lint4j warning: unused imports",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-10-04T13:27:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "955fee9eb06cac46069af5f4e11c828d5f96ea96",
          "body": null,
          "is_bot": false,
          "headline": "fix lint4j warning: Resource leak: 'in' is never closed",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-10-04T13:27:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "feb94268da013737af3ffab485aadb00c16bb751",
          "body": null,
          "is_bot": false,
          "headline": "delete unnecessary Mac DS_Store files / fixes #709",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-10-04T13:23:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38a2d5c2ab33cd50f345d2028d124948682d8acc",
          "body": null,
          "is_bot": false,
          "headline": "make class BitmapChecker.ImageHeuristics public / fixes #686",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-05-16T17:47:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98f60f369c1fb11bfb480f0f133da045f7e00b30",
          "body": "note: other translations will be added through transifex",
          "is_bot": false,
          "headline": "clarify ACC-009 message: 'alt' -> 'alttext' attribute / fixes #678",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-05-16T12:27:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a563fc28b397d5c0203caf3d50186bc62969484b",
          "body": null,
          "is_bot": false,
          "headline": "properly close ImageInputStream in BitmapChecker / fixes #689",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-05-15T22:54:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "989595ba3aaf84a1735d46f248e98eb37944d12d",
          "body": null,
          "is_bot": false,
          "headline": "update release information and add release badge",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2016-03-15T21:44:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "981aa18b0fea40aab8962d9330c14abb0fead3a9",
          "body": "As per suggestion of @tofi86, we add the subMessage and severity\nattributes to message to get the exact code.\nRefactor the unit tests to check the error code instead of the message\nto be more robust on locales.\n\nFixes #486.",
          "is_bot": false,
          "headline": "Add subMessage and severity to XML output.",
          "author_name": "Thomas Ledoux",
          "author_login": "tledoux",
          "committed_at": "2016-02-19T10:45:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5aa6beb5ec91673fade7bb7585fbdea0506d1ddd",
          "body": null,
          "is_bot": false,
          "headline": "Column of bad entities vary among OSes",
          "author_name": "Thomas Ledoux",
          "author_login": "tledoux",
          "committed_at": "2016-02-13T19:11:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fcfc7991c268bd3493bad84e667a3132fb2331e",
          "body": null,
          "is_bot": false,
          "headline": "Generate correct outputPath when testing epubs",
          "author_name": "Thomas Ledoux",
          "author_login": "tledoux",
          "committed_at": "2016-02-13T18:50:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c345e8d9ff1dd6a982fd439d0723f0b59684838b",
          "body": "This commits changes the generation of XML reports to use regular Java\nlibraries avoiding bad output.\nIt also checks for not UTF-8 characters and escapes them.\nFinally, it adds the list of media-types included in the epub.\n\nThe tests have been enhanced to better compare the actual and\nexpected results.\nSome tests cases have been added to test for encrypted or obfuscated\nepubs.\n\nFixes #670.\nFixes #517.",
          "is_bot": false,
          "headline": "Generate XML with JVM libraries in javax.xml",
          "author_name": "Thomas Ledoux",
          "author_login": "tledoux",
          "committed_at": "2016-02-13T18:00:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "842648674aa59c3330ac06a420a503a47baef706",
          "body": null,
          "is_bot": false,
          "headline": "Update the README link to 4.0.1",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-26T08:14:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcf6b4f661bc271c7e98ec14f95934f9759d7642",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare for next development iteration",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-23T13:28:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dfb815083f6e33693bf078fccd48e4ce28365a4",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare release v4.0.1",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-23T13:28:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "406a200955bd5ce45aba64eb25093719d7ab4f10",
          "body": "Pulled from Transifex and automatically processed with ./src/build/transifex-pull.sh --all",
          "is_bot": false,
          "headline": "Translation updates for epubcheck 4.0.1",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-23T12:50:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a25f6346a28b8fb579f4d24f07712b7b23b640b",
          "body": "See http://blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html",
          "is_bot": false,
          "headline": "Disable Javadoc doclint",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-22T08:32:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9993d4c0b1cc3c1b60a9983e19cd91ba23c833b8",
          "body": "The attribute has been removed from the final draft of ARIA 1.1 spec.\n\nThis commit adds a Schematron rule to check for uses of 'aria-describedat'\nand will report warnings if any.\nIn a later version (e.g. when EPUB 3.1 is published), the attribute\nwill be removed from the RelaxNG schema and consequently reported as an\nerror.\n\nFixes #624.",
          "is_bot": false,
          "headline": "Deprecate the 'aria-describedat' attribute",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-22T07:21:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "39c93b23b9d31d68dfeb36768224d1f92a5edfa4",
          "body": "ACC_011 warning was raised whenever an SVG `a` element was missing\nan `xlink:title` attribute, only in XHTML Content Docs.\n\nThis commit improves the situation by:\n\n- accepting a `title` child element as an alternative for the\n `xlink:title` attribute, as it is the new recommendation.\n- checking standalone SVG content too.\n- adding new test cases\n- slightly rewording the error message\n\nFixes #629",
          "is_bot": false,
          "headline": "Improve checking of hyperlink titles in SVG",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T12:55:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcb515808930b2b2c75b558880e4b046df46e6a6",
          "body": "The HTML specification says:\n\n> A string containing a set of space-separated tokens may have leading\n or trailing space characters.\n\nThis commit normalizes whitespace of attributes for which every token\nis checked (like \"unordered set of unique space-separated tokens\"\naka IDREFS).\n\nFixes #622.",
          "is_bot": false,
          "headline": "Fix tokenization of sets of space-separated tokens in Schematron",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T12:22:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2872e36d80e5c62b03f1e80c8779933f78b251e",
          "body": "Proper language tag parsing as defined in RFC 5646 is a bit more\ncomplex than what is listed in `EpubLangCheck`. In addition, the\ncurrent listing contains some errors and omissions.\n\nReverting the severity of HTM-018 and HTM-019 to USAGE is safer until\nmore correct language subtag parsing is implemented.\n\nFix #615. See also #614.",
          "is_bot": false,
          "headline": "Lowered primary lang subtag check to USAGE",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T12:21:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "421c854c756b5c857ae2b35d20bf467a9603dc8e",
          "body": "Only check the presence of a `viewBox` attribute for in-spine SVG\ndocuments.\nSVG docs that are not in spine may not be considered Content Documents\n(e.g. font files) and FXL criterias do not apply to them.\n\nFix #605",
          "is_bot": false,
          "headline": "Do not check viewbox on FXL SVG that is not Content Doc",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T10:00:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3faccd8aa44d8bdae81accc88b15d667d8ddfcb5",
          "body": "The XML parsers triggered in the `ctc` package where sometimes\nreporting PKG-008 (on IOException) or RSC-005 (on SAXException).\nThese were duplicates, such parsing errors are caught earlier (if\nthey're not, it's a bug).\n\nAlso added a simple test case for an encrypted EPUB with unknown\nencryption algorithm.\n\nFixes #593.",
          "is_bot": false,
          "headline": "Avoid duplicate PKG-008 or RSC-005 XML parsing errors",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T10:00:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81af263f38abdcee8cc2ee66de07e1d709830e56",
          "body": "An image file was not declared in the OPF and not present in the\npackage but referenced in an XHTML document was reported twice,\nas RSC-001 and RSC-007.\nThe duplicated report (from the extra link checker in the `ctc`\npackage) has been removed, in favor of the existing RSC-007.\n\nFixes #588",
          "is_bot": false,
          "headline": "Remove duplicate reporting of missing images",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T09:59:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e18db2c1a9680b0c3419b6d8e19db22443caecbd",
          "body": "Reporting fonts that are not core media type as a WARNING is too\nstrict since the font that will be picked by CSS font selection\nmecanism can be considered a native fallback.\n\nThis commit changes the severity of CSS-007 to INFO, removing warnings\nlike:\n\n`Font-face reference myfont.ttf refers to non-standard font type\napplication/x-font-ttf.`\n\nFixes #586.",
          "is_bot": false,
          "headline": "Lower font media type message severity to INFO",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T09:57:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebc1c7588f8ce8ea5bb057911e7596b7ac9d527c",
          "body": "- added a new method to `Vocab` to get the base URI of a vocabulary\n- In the prefix parsing utility of `VocabUtil`, check the URI associated\n  with re-declared reserved prefix: an error is reported only if this\n  URI is **not** the URI of the known vocabulary associated to the\n  reserved prefix. In other words, explicit declaration of reserved\n  prefixes is now allowed; trying to override a reserved prefix still\n  raises an error.\n\nFixes #585",
          "is_bot": false,
          "headline": "Ignore explicit declarations of reserved prefixes",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T09:53:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8dccacad79a970bcbb8e61816d3315bdd2181614",
          "body": "…ve filling up when launched as an internal library.",
          "is_bot": false,
          "headline": "BitmapChecker removes each temporary file after use. Prevent hard dri…",
          "author_name": "Francisco Sanchez",
          "author_login": null,
          "committed_at": "2015-10-21T09:50:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "140b771bb20de71a11da128b5a737306e505fe0b",
          "body": "Close #618",
          "is_bot": false,
          "headline": "Merge PR #618 from branch 'fix-584'",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T09:47:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c916f35b27df949823689bce60a2316baa1cde0",
          "body": "HTM-016 was reporting a warning when the HTML5 doctype was used\nin XHTML 1.1 documents in EPUB 2.\nThis was an error anyway, that should have beem reported as HTM-004\n(irregular doctype) instead.\n\nThis commit:\n- removes HTM-016\n- fix checks of HTM-004 to property reports XHTML Content Documents\n  with empty public ID in EPUB 2 (the public ID must be the one\n  of XHTML 1.1).",
          "is_bot": false,
          "headline": "Remove HTM-016 (XHTML doctype warning), dupe of HTM-004",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T09:46:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "223accca5643ea9ad68bd501f74f9b1e1d7bc31c",
          "body": "HTM-015 was a WARNING raised when an HTML4 doctype was found in an\nEPUB 3 XHTML document.\n\nSuch a doctype systematically triggers HTM-004  anyway (\"irregular\n\"doctype found\"), which is a legit ERROR (not because W3C HTML 5.0\nforbids it –any doctype is allowed in the XHTML syntax–, but because\nEPUB 3 forbids external entities).\n\nHTM-015 is a weaker and systematic duplicate of HTM-004, so it can be\nsafely removed.",
          "is_bot": false,
          "headline": "Remove HTM-015 (XHTML doctype warning), dupe of HTM-004",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-21T09:46:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8bc2e310b2058c27b25a232de4d2fcc9d7aae169",
          "body": "partial fix for #584",
          "is_bot": false,
          "headline": "Fixes path names in HTM-014, HTM-015, HTM-016",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-21T09:46:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b4a49f386fa76656ffc8464981c65f3c1173f20",
          "body": "Thanks to @rdeltour and @vincent-gros who worked on this translation on Transifex!\n\n# Pulled from Transifex by @tofi86 with no changes to the properties files.",
          "is_bot": false,
          "headline": "Updated french translation for epubcheck 4.0",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-13T23:40:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8b011450aaed25c7fc9aae97a6616ae3c5ebe92",
          "body": "Localization normalization",
          "is_bot": false,
          "headline": "Merge pull request #627 from IDPF/localization-normalization",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-12T19:40:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c294b4a5e51c2ebd88d6bb33fa1c677998616e98",
          "body": "Added dutch translation for epubcheck 4.0",
          "is_bot": false,
          "headline": "Merge pull request #626 from IDPF/nl-localization-for-4.0",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-12T19:29:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d7ab53dccd02cd16a47d943e9edf699a0c32169",
          "body": null,
          "is_bot": false,
          "headline": "add translation hint to english jing files",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-12T19:28:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "71ade8e4e8c24b15d2e96b5d45d34cd3d062135a",
          "body": null,
          "is_bot": false,
          "headline": "Normalize all current translation files with transifex-pull.sh",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-12T19:28:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "601a275ef1cb6648db886bb0ef0f964ee707ab9b",
          "body": "Thanks to Merijn de Haen who contributed this translation on Transifex!\n\n# Pulled from Transifex by @tofi86 with no changes to the properties files.",
          "is_bot": false,
          "headline": "Added dutch translation for epubcheck 4.0",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-12T19:08:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a23c831265fca9ba6cae176f81d97b3403027c4f",
          "body": "Merges unmerged commits from PR #479",
          "is_bot": false,
          "headline": "Merge branch 'feature/transifex-integration'",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-12T18:49:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "807ce8c4f32e6bd56aa38d11da912c7cd8d190e9",
          "body": "Close #479",
          "is_bot": false,
          "headline": "Merge pull request #479 from 'feature/transifex-integration'",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-09T21:58:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4a879b13d0027f828f028965047a07960a7d6c2",
          "body": "as they're already part of the Jing Library (jar)",
          "is_bot": false,
          "headline": "exclude original Jing messages.properties files in maven build",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-09T21:58:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb42c3647a462ade4365a7b0f93f13179d5c2b2b",
          "body": "extracted from jing-20120724.0.0.jar",
          "is_bot": false,
          "headline": "add original Jing messages.properties files for better transifex support",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-09T21:58:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efae0cff4a26c7b3783c6e9599f7914ff942a4da",
          "body": null,
          "is_bot": false,
          "headline": "initial transifex config for epubcheck project",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-09T21:58:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f57e7a09bf1203cf19b51c355afc687f252af128",
          "body": "just in case someone wants to commit its personal `.transifexrc` file with login credentials to transifex.com",
          "is_bot": false,
          "headline": "update gitignore",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-09T21:58:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3c67b4ba3e567940572a1de8e2df8d2140b9211",
          "body": "To run this script you need to have a Transifex account and install the Transifex Commandline Client! Instructions: http://docs.transifex.com/client/\n\nYou need to run this script from the repository's root directory!\ne.g. ./src/build/transifex-pull.sh --all\n\nusage: transifex-pull.sh [--all | <2-digit-country-code>]\nexamples:\n  transifex-pull.sh --all\n  transifex-pull.sh de\n\nNote: tested on Mac OS X only!",
          "is_bot": false,
          "headline": "bash script to pull + normalize Transifex translations",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-09T21:46:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "178de903478e72029bce72ab0abce46c819fe93e",
          "body": "Closes #587",
          "is_bot": false,
          "headline": "Allow new comics-related SSV terms",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-10-08T10:03:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1a9eb589b23c94375cd6a5c57b1bfdc146aff9b",
          "body": "Clarification of message RSC_018 // fixes #597",
          "is_bot": false,
          "headline": "Merge pull request #617 from IDPF/fix-597",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-03T11:38:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e5f499af7d3af30215b1d7c9fa2310c086ae5d5",
          "body": null,
          "is_bot": false,
          "headline": "Clarification of message RSC_018",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-03T11:23:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6212195ccbaa7cb4809eba1ec7610644e32b84a5",
          "body": "use default variable format in messages",
          "is_bot": false,
          "headline": "Merge pull request #616 from IDPF/use-default-formatting-variables",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-02T15:58:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98d65184bd8d63c831e1b6f6655a43ffb2b5354c",
          "body": null,
          "is_bot": false,
          "headline": "use default variable format in messages",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-02T15:51:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "466ad610ebe7b30b924681d19c639d9903ed449f",
          "body": "updated spanish message strings for 4.0.0",
          "is_bot": false,
          "headline": "Merge pull request #612 from IDPF/es-localization-for-4.0",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-10-02T08:37:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f90b6b08aea886396c96a60e32158f9255fc71b",
          "body": null,
          "is_bot": false,
          "headline": "updated spanish message strings // refs #592",
          "author_name": "Emiliano Molina",
          "author_login": "Cuadratin",
          "committed_at": "2015-10-02T08:28:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c253962d36c5b5fa55388c455469d1b57fd766c",
          "body": "accidentally deleted in 8659d753",
          "is_bot": false,
          "headline": "updated transifex config file",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-26T10:46:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c32d1b93ca5ca8c4841440a9a44dac2f3b02005",
          "body": "Merge pull request #598. Commits were squashed and rebased. Closes #598.",
          "is_bot": false,
          "headline": "update messages (JA)",
          "author_name": "takahashim",
          "author_login": "takahashim",
          "committed_at": "2015-09-23T16:02:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4ab6603b8f101c289276aea2c08ae2c08c05fa5b",
          "body": "An HTML meta element with `http-equiv` in character encoding declaration\nstate must be parsed in a case insensitive manner.\nThis commit fixes a Schematron typo (the `'i` parameter of the `matches`\nfunction was unquoted, hence evaluated as an empty sequence instead\nof a string, which was consequently ignored) to propertly enable a\ncase-insenstive comparison.\n\nFixes #603",
          "is_bot": false,
          "headline": "Fix case insensitive check of encoding declaration",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-15T08:04:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c12428da63e2c75c8f09c272ec84fd9359bd820d",
          "body": "See issue #601 for details.\n\nNote: NVDL schemas are currently not used by EpubCheck, but this fix\nat least make them usable by 3d party tools.\n\nFixes #601.",
          "is_bot": false,
          "headline": "Fix ns validation issue in NVDLs",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-14T13:21:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1da38334827a69345c6e40b78d5e52e6a1ff2a4b",
          "body": null,
          "is_bot": false,
          "headline": "Rename package s/dict/com.adobe.epubcheck.dict",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-14T13:03:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6af5d79826122831f6a1804fc244e83211316dc5",
          "body": "See https://github.com/IDPF/epubcheck/wiki/Translating",
          "is_bot": false,
          "headline": "Moved 'Translating EpubCheck' to the wiki",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-13T22:29:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e79d1650378ca8b13900b829cfe8541ae04df9ad",
          "body": "Updated german messages for epubcheck 4.0",
          "is_bot": false,
          "headline": "Merge pull request #599 from IDPF/de-localization-for-4.0",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-13T12:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2796b240b4cd91ce0256a723c9ebe78cbdd5ace",
          "body": "as they're already part of the Jing Library (jar)",
          "is_bot": false,
          "headline": "exclude original Jing messages.properties files in maven build",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-10T10:02:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8659d7537798d7c269b61d1c88cc385bb3dd10fc",
          "body": "extracted from jing-20120724.0.0.jar",
          "is_bot": false,
          "headline": "add original Jing messages.properties files for better transifex support",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-10T10:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d930f46176eebcf588ef2e241f4e62935df41a3",
          "body": null,
          "is_bot": false,
          "headline": "initial transifex config for epubcheck project",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-10T10:02:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c6b158ce25fcdaa08def37f9c37a733e6749fba",
          "body": "just in case someone wants to commit its personal `.transifexrc` file with login credentials to transifex.com",
          "is_bot": false,
          "headline": "update gitignore",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-10T10:02:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "263bda36ed3f1be02dab7e6bf1384a3c250e5978",
          "body": null,
          "is_bot": false,
          "headline": "update .gitignore and ignore /bin/ folder when working with Eclipse",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-10T09:54:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89702ea727592b2793d1aa0c6a7fbb29c2ce0a04",
          "body": null,
          "is_bot": false,
          "headline": "updated german messages for epubcheck 4.0",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-10T09:23:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45820b39975fcb6a1ef430b42e491b12b89e9d4a",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo of error messages for listings",
          "author_name": "takahashim",
          "author_login": "takahashim",
          "committed_at": "2015-09-10T07:16:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ad2ccc13e30ecff02bdedcfc036d6cb53b63387",
          "body": "Introduced in 6980967d1153044112ade2ff4a4eda6d36cc9649",
          "is_bot": false,
          "headline": "Fix typo in messages.properties",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-09T20:01:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8b794b9e3d9f35467bf3e14e9d9d06de472f83e",
          "body": null,
          "is_bot": false,
          "headline": "fixed typos and re-enabled build status badge",
          "author_name": "Tobias Fischer",
          "author_login": "tofi86",
          "committed_at": "2015-09-02T09:37:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00acaa882f3fd8a2afaef13c0a0e0e3b7c8fe5c6",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare for next development iteration",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T22:18:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9283289ad148356b60decb02c955f939f8562619",
          "body": null,
          "is_bot": false,
          "headline": "[maven-release-plugin] prepare release v4.0.0",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T22:18:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb5ee81125076ed236ee5c2e79d19aecf235cef1",
          "body": "Before it said:\n\n> Validating using EPUB version 3.0 rules.\n\nNow says:\n\n> Validating using EPUB version 3.0.1 rules.",
          "is_bot": false,
          "headline": "Report proper EPUB version in CLI output",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T22:14:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe7e1191743f66d0e2525664d1a473496a165a42",
          "body": null,
          "is_bot": false,
          "headline": "Do not attach Maven assemblies to the project",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T21:26:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad5436bc716c3d691370355f83b50f8526c2c5a0",
          "body": "When running Java 6, any `LinkageError` thrown at runtime due to\nincompatibility of the TwelveMonkeys ImageIO plugin is caught and\nan info message is displayed.\n\nNote: building on Java 6 remains unsupported (some tests fail due to\nlesser image checking).",
          "is_bot": false,
          "headline": "Re-enable runtime support for Java 6",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T20:06:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85f1f7c14cc24d0913f05c9d1f8e4319dcbbae07",
          "body": "Specification section 4.2 \"Sectioning\" says:\n\n> Due to the paginated nature of fixed layouts, Fixed-Layout\n> Publications are exempt from the requirements in this section.\n\nFixes #580",
          "is_bot": false,
          "headline": "Disable EDUPUB structure test for FXL",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T15:24:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad85f49dfd02f2f64ee2e47d3d7ff783961cf63c",
          "body": "Fixes #579",
          "is_bot": false,
          "headline": "Check EDUPUB aria-label is not equal to heading",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-09-01T13:12:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44c14dffd7085e1fc76eb6360e731ddea0574e87",
          "body": "When the media type is undefined, a default value of \"undefined\" is\nset to the OPFItem.\n\nThe validation error caught by the schema can then be properly\nreported.\n\nFixes #575.",
          "is_bot": false,
          "headline": "Fix precondition NPE whem OPF item has no media-type",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T18:20:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "38501281004fcd0145e9babb822285407f5092a8",
          "body": null,
          "is_bot": false,
          "headline": "Document the -profile switch in help text",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T14:05:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f6c7193de1d4d17df121febfddfa488b3d87467",
          "body": "- Update version to 4.0.0-SNAPSHOT\n- Clean the README file\n- Disable the prototype Python tools and associated doc",
          "is_bot": false,
          "headline": "Preparing dist of 4.0",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:47:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35b84eea81413f0e9a9a1d070e9af2ce055bd42b",
          "body": "From now on, EpubCheck no longer officially supports Java 6. This\ncommit removes Java 6 from the CI-tested environments.\n\nNote:\n\nThis decision is due to the recent inclusion of the Twelve Monkeys [1]\nImageIO library, which is incompatible with Java 6 in its latest\nversion.\n\nIt is still possible to run EpubCheck on Java 6 by replacing the\nTwelveMonkeys libraries with their earlier version `3.0.x`, but with\nlower JPEG support on Java 8.\n\n[1] https://github.com/haraldk/TwelveMonkeys",
          "is_bot": false,
          "headline": "Remove support for Java 6",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:47:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "412153520fa6e5da375db537661b785861601090",
          "body": "The NPE was raised when an item was not found in manifest (bad idref).",
          "is_bot": false,
          "headline": "Avoid an NPE",
          "author_name": "Jostein Austvik Jacobsen",
          "author_login": "josteinaj",
          "committed_at": "2015-08-31T07:01:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b729074b49ea51ade6ded457cee5b287ef61a03",
          "body": "RSC_001 was reported in many checkers of the `ctc` package, resulting\nin duplicate messages (up to 10 times for missing XHTML documents!).\nI commented-out the code where it seemed to make sense.\n\nFixes #516, closes #535",
          "is_bot": false,
          "headline": "Remove duplicate report of missing resource",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:01:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58b0aa85b4220c26fd5eeda3ffedd4d61dc5db38",
          "body": null,
          "is_bot": false,
          "headline": "Fix typo in the `&brvbar;` entity.",
          "author_name": "skreutzer",
          "author_login": "skreutzer",
          "committed_at": "2015-08-31T07:01:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66508ec3b4098621e5eac1c4ed07180d25c8fc88",
          "body": "This should make the build consistently reproducible and fix #570.",
          "is_bot": false,
          "headline": "Remove user-specfic bits from the jar manifest",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:01:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1f963300f1a0b6b1e9630830ca04941a104da7f",
          "body": "`link` elements in the OPF can point to local resources, e.g. local\nmetadata records. EpubCheck now reports a warning when such local\nresources are missing.\n\nWhile the spec is confusing, the current consensus is that the original\nintent was to disallow it.\n\nFixes #499.\nSee also IDPF/epub-revision#559",
          "is_bot": false,
          "headline": "Warn about missing \"linked\" local resources",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:01:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a4ea52f1ad4f2d72eb07dbe719262c28f3adb922",
          "body": "All conformance criterias s/b checked.\nEPUB Glossaries-specific rules are not implemented.",
          "is_bot": false,
          "headline": "Add support for EPUB Dictionaries 1.0",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:01:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9c5d6e582657d2adfa41c02a3ac0b2370d1b4de",
          "body": "While waiting for a decision on the spec issue:\n  https://github.com/IDPF/epub-revision/issues/564\n\nSee #507.",
          "is_bot": false,
          "headline": "Lower EDUPUB complete nav check to USAGE",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-31T07:01:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e97e5bdeed98b7ae4c56ce4e182a711f157f9d31",
          "body": "Adds a dependency to com.twelvemonkeys.imageio to broader JPEG support.\nSee: https://github.com/haraldk/TwelveMonkeys\n\nAlso adds a third-party license file to generate the `THIRD-PARTY.txt`\nfile with proper info on TwelveMonkeys libs.\n\nCloses #465.\nFixes #464.\nFixes #567.\n\nThanks @robfrawley for the patch! (better late than never ;)\nThanks @Matt-1 for the sample!",
          "is_bot": false,
          "headline": "Improve JPEG support",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-29T00:37:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4e1f5671a4dbd608cb2f178677a2ab3a86527e2",
          "body": "- check identification conformance in META-INF/container.xml\n  - no more than one rendition mapping\n  - must have the XHTML media type\n- the path to the Rendition Mapping Document is stored as an Optional\n  in OCFData\n- when present, the Rendition Mapping Document is set the EpubCheck\n  property REN\n[…]\ntional typed navs\n\nLimitations:\n\n- href integrity is not checked (e.g. existence of the content\n  pointed-to, use of EPUB CFI or epub:rendition attribute, etc).\n\nFixes issue #557.\nSee also issue #503.",
          "is_bot": false,
          "headline": "Enable checks for Rendition Mapping Documents",
          "author_name": "Romain Deltour",
          "author_login": "rdeltour",
          "committed_at": "2015-08-28T22:02:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 1,
      "commits_last_year": 0,
      "latest_release_at": "2016-11-30T16:01:41Z",
      "latest_release_tag": "v4.0.2-a11y-1",
      "releases_from_tags": false,
      "days_since_last_push": 2721,
      "active_weeks_last_year": 0,
      "days_since_latest_release": 3526,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "org.daisy:epubcheck",
          "exists": true,
          "license": "New BSD License",
          "keywords": [],
          "ecosystem": "maven",
          "matches_repo": false,
          "registry_url": "https://central.sonatype.com/artifact/org.daisy/epubcheck",
          "is_deprecated": false,
          "latest_version": "4.0.2-a11y-1",
          "repository_url": "https://github.com/IDPF/epubcheck",
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2016-11-30T15:56:30Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 3526
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 3,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "pom.xml"
      ],
      "largest_source_bytes": 60332,
      "source_files_sampled": 265,
      "oversized_source_files": 1,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "pom.xml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "org.codehaus.jackson:jackson-mapper-asl",
            "direct": true,
            "version": "1.9.12",
            "severity": "critical",
            "ecosystem": "maven",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-c27h-mcmw-48hv",
              "GHSA-r6j9-8759-g62w"
            ],
            "fixed_version": null,
            "advisory_count": 2,
            "oldest_advisory_days": 2365
          },
          {
            "name": "com.twelvemonkeys.imageio:imageio-metadata",
            "direct": false,
            "version": "3.1.2",
            "severity": "critical",
            "ecosystem": "maven",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-pjch-4g28-fxx7"
            ],
            "fixed_version": "3.7.1",
            "advisory_count": 1,
            "oldest_advisory_days": 1543
          },
          {
            "name": "org.apache.commons:commons-compress",
            "direct": true,
            "version": "1.5",
            "severity": "high",
            "ecosystem": "maven",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4g9r-vxhx-9pgx",
              "GHSA-7hfm-57qf-j43q",
              "GHSA-crv7-7245-f45f",
              "GHSA-mc84-pj99-q6hh",
              "GHSA-xqfj-vm6h-2x34"
            ],
            "fixed_version": "1.26.0",
            "advisory_count": 5,
            "oldest_advisory_days": 1820
          },
          {
            "name": "com.google.guava:guava",
            "direct": true,
            "version": "14.0.1",
            "severity": "moderate",
            "ecosystem": "maven",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-5mg8-w23w-74h3",
              "GHSA-7g45-4rm6-3mm3",
              "GHSA-mvr2-9pj6-7w5j"
            ],
            "fixed_version": "32.0.0-android",
            "advisory_count": 3,
            "oldest_advisory_days": 2233
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 1,
          "critical": 2,
          "moderate": 1
        },
        "advisory_count": 11,
        "affected_count": 4,
        "assessed_count": 13,
        "malicious_count": 0,
        "assessed_package": "maven:org.daisy:epubcheck@4.0.2-a11y-1",
        "unassessed_count": 0,
        "direct_affected_count": 3
      },
      "ecosystems": [
        "maven"
      ],
      "dependencies": [
        {
          "name": "net.sf.saxon:Saxon-HE",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "9.5.1-5"
        },
        {
          "name": "org.apache.commons:commons-compress",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.5"
        },
        {
          "name": "org.daisy.libs:jing",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "20120724.0.0"
        },
        {
          "name": "org.w3c.css:sac",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.3"
        },
        {
          "name": "com.google.guava:guava",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "14.0.1"
        },
        {
          "name": "com.twelvemonkeys.imageio:imageio-jpeg",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "3.1.2"
        },
        {
          "name": "org.codehaus.jackson:jackson-core-asl",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.9.12"
        },
        {
          "name": "org.codehaus.jackson:jackson-mapper-asl",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.9.12"
        },
        {
          "name": "net.sf.saxon:Saxon-HE",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "9.4"
        },
        {
          "name": "org.apache.maven.scm:maven-scm-provider-gitexe",
          "manifest": "pom.xml",
          "ecosystem": "maven",
          "version_constraint": "1.8.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "rdeltour",
          "commits": 306,
          "avatar_url": "https://avatars.githubusercontent.com/u/520889?v=4"
        },
        {
          "type": "User",
          "login": "tofi86",
          "commits": 90,
          "avatar_url": "https://avatars.githubusercontent.com/u/365118?v=4"
        },
        {
          "type": "User",
          "login": "sorotokin",
          "commits": 34,
          "avatar_url": "https://avatars.githubusercontent.com/u/11699780?v=4"
        },
        {
          "type": "User",
          "login": "tledoux",
          "commits": 34,
          "avatar_url": "https://avatars.githubusercontent.com/u/1032491?v=4"
        },
        {
          "type": "User",
          "login": "takahashim",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/10401?v=4"
        },
        {
          "type": "User",
          "login": "lizadaly",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/19571?v=4"
        },
        {
          "type": "User",
          "login": "GarthConboy",
          "commits": 6,
          "avatar_url": "https://avatars.githubusercontent.com/u/7926020?v=4"
        },
        {
          "type": "User",
          "login": "georgebina",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/1246612?v=4"
        },
        {
          "type": "User",
          "login": "skoji",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/119629?v=4"
        },
        {
          "type": "User",
          "login": "josteinaj",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/295481?v=4"
        }
      ],
      "contributors_sampled": 17,
      "top_contributor_share": 0.592
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "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": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "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/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 13 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no 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 is archived",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not 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": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "12 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "dc9637e80a46ff8f50216278b9e38eb73cadadca",
        "ran_at": "2026-07-28T15:08:15Z",
        "aggregate_score": 1.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/daisy/epubcheck",
    "host": "github.com",
    "name": "epubcheck",
    "owner": "daisy"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "critical",
      "name": "Overall health",
      "note": "Abandonment Policy applies a 40% multiplier to weighted overall health and gives it a ceiling of 29.",
      "notes": [
        {
          "code": "abandonment_overall_adjustment",
          "params": {
            "cap": 29,
            "pct": 40
          }
        }
      ],
      "value": 10,
      "inputs": {
        "security": 20,
        "vitality": 17,
        "community": 13,
        "governance": 37,
        "engineering": 32,
        "abandonment_cap": 29,
        "abandonment_state": "declared",
        "abandonment_multiplier": 40,
        "weighted_overall_before_abandonment": 25,
        "overall_after_abandonment_multiplier": 10
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "critical",
        "name": "Vitality",
        "value": 17,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "critical",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "commits_last_year": 0,
              "human_commit_share": 1,
              "days_since_last_push": 2721,
              "active_weeks_last_year": 0
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2721 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2721
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "0/52 weeks with commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "0 commits in the last year",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "at_risk",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "releases_count": 1,
              "latest_release_tag": "v4.0.2-a11y-1",
              "releases_from_tags": false,
              "days_since_latest_release": 3526,
              "mean_days_between_releases": null
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "1 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 3526 days ago",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 3526
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "cadence unknown (single release)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence_unknown",
                    "params": {}
                  }
                ],
                "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": "at_risk",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "cap": 29,
              "state": "declared",
              "guards": [],
              "signals": [],
              "red_flag": true,
              "multiplier_pct": 40,
              "declared_reason": "archived",
              "unverified_reason": null,
              "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": "the repository is archived on GitHub",
                "points": 40,
                "status": "partial",
                "details": [
                  {
                    "code": "abandonment_archived",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 13,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 2,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 3,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "3 watchers",
                "points": 1.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": false,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "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
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 37,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 17,
              "top_contributor_share": 0.592
            },
            "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 59% of commits",
                "points": 9.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 59
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "17 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 13 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 58,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "daisy",
              "public_repos": 97,
              "account_age_days": 5569
            },
            "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": "58 followers of daisy",
                "points": 12.7,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 58,
                      "login": "daisy"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "97 public repos, account ~15 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 97
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 15
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "at_risk",
        "name": "Engineering Quality",
        "value": 32,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "at_risk",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": false,
              "has_docs_dir": true,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": 0,
                "status": "missed",
                "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": "critical",
        "name": "Security",
        "value": 20,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 17,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 1.7
            },
            "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 not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 13 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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 is archived",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "12 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Matched the maven:org.daisy:epubcheck@4.0.2-a11y-1 runtime dependency closure — what installing the published package pulls in — 13 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "maven:org.daisy:epubcheck@4.0.2-a11y-1",
                  "assessed": 13
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "osv",
              "advisories": 11,
              "affected_packages": 4,
              "assessed_packages": 13,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 2, high 1, moderate 1",
              "direct_affected_packages": 3
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "3 affected: org.codehaus.jackson:jackson-mapper-asl 1.9.12 (critical 9.8), org.apache.commons:commons-compress 1.5 (high 7.5), com.google.guava:guava 14.0.1 (moderate 5.9)",
                "points": 5.7,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 3,
                      "packages": "org.codehaus.jackson:jackson-mapper-asl 1.9.12 (critical 9.8), org.apache.commons:commons-compress 1.5 (high 7.5), com.google.guava:guava 14.0.1 (moderate 5.9)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: com.twelvemonkeys.imageio:imageio-metadata 3.1.2 (critical 9.8)",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "com.twelvemonkeys.imageio:imageio-metadata 3.1.2 (critical 9.8)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "4 advisory-carrying package(s) unaddressed past 90 days; oldest published 2365 days ago",
                "points": 21.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 4,
                      "oldest": 2365
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "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": 13,
              "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": "excellent",
            "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"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 13
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 37,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.49,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "49 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 26.1,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 49,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 38,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "pom.xml"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "pom.xml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "pom.xml"
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "HTML",
              "largest_source_bytes": 60332,
              "source_files_sampled": 265,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "HTML without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "HTML"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/265 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 265,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Community profile unavailable",
    "maven package 'org.daisy:epubcheck' points at a different repository (https://github.com/IDPF/epubcheck); excluded from ecosystem scoring",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-28T15:08:32.007631Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/daisy/epubcheck.svg",
  "full_name": "daisy/epubcheck",
  "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 v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

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