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

Apriorhythm / apriori-spec-development

A tool-agnostic handbook for spec-driven development with AI coding agents

JavaScriptMIT★ 3 estrellas⑂ 0 forksdesde jun 2026Ver en GitHub ↗

Apriorhythm/apriori-spec-development tiene un índice de salud de 48 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (70/100) y la más baja, Security (33/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

48
global / 100
En riesgo

Í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.

48
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.

Titularidad

ApriorhythmCuenta personal
0 seguidores50 repositorios públicosdesde oct 2014

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmapriori-cli4.0.7474731hace 5 díasspec-driven-developmentsddexecutable-specsspecai-codingagent-workflowclaude-codecodexcursorcli

Métricas por categoría

Vitalidad

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

70Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
3.5/36Cadencia de commits — 5/52 semanas con commits
18/18Volumen de commits — 121 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year121
human_commit_share1
days_since_last_push5
active_weeks_last_year5
Cómo se puntúa
16.2/27Publica versiones — 16 etiquetas de versión (sin releases de GitHub)
36/36Recencia de las versiones — última versión hace 5 días
27/27Cadencia de publicación — una versión cada ~0,9 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count16
latest_release_tagv4.0.7
releases_from_tags
days_since_latest_release5
mean_days_between_releases0,9
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

35En riesgo · 18% del índice global
Cómo se puntúa
4.9/60Estrellas — 3 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars3
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
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_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
49/80Descargas mensuales — 4747 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesapriori-cli
dependents
ecosystemsnpm
total_downloads
monthly_downloads4747
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

34En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
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
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
0/25Alcance del propietario — 0 seguidores de Apriorhythm
24.4/25Trayectoria — 50 repos públicos, cuenta de ~11 años
Datos de entrada utilizados
followers0
owner_typeUser
is_verified
owner_loginApriorhythm
public_repos50
account_age_days4310
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 31 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesapriori-cli
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

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

66Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
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_ci
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.
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

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

33En riesgo · 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
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
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 was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
2/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,3
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging, signed_releases. Los pesos restantes se han renormalizado.

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.

36En 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)
40/40Historial de commits legible — 99 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,99
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
0/10Entorno reproducible
2/10Práctica demostrada con agentes — 1 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,01
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
0/45Código verificable por tipos — JavaScript sin configuración de verificación de tipos
55/55Tamaños de archivo manejables — 0/110 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJavaScript
largest_source_bytes37.306
source_files_sampled110
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

3estrellas de GitHub
1contribuidores
121commits en los últimos 12 meses
5días desde el último push
16versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 3.3 / 10
3.3agregado

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-25 10:24 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
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
4Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 8741,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 5144,
        "HTML": 20496,
        "Python": 15122,
        "JavaScript": 705306
      },
      "pushed_at": "2026-07-19T12:56:49Z",
      "created_at": "2026-06-03T03:58:07Z",
      "owner_type": "User",
      "updated_at": "2026-07-19T12:56:55Z",
      "description": "A tool-agnostic handbook for spec-driven development with AI coding agents",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Apriorhythm",
      "type": "User",
      "login": "Apriorhythm",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/9026095?v=4",
      "created_at": "2014-10-05T13:34:12Z",
      "is_verified": null,
      "public_repos": 50,
      "account_age_days": 4310
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v4.0.7",
          "kind": "patch",
          "published_at": "2026-07-19T12:56:41Z"
        },
        {
          "tag": "v4.0.6",
          "kind": "patch",
          "published_at": "2026-07-18T11:41:05Z"
        },
        {
          "tag": "v4.0.5",
          "kind": "patch",
          "published_at": "2026-07-17T06:53:17Z"
        },
        {
          "tag": "v4.0.4",
          "kind": "patch",
          "published_at": "2026-07-16T04:26:16Z"
        },
        {
          "tag": "v4.0.3",
          "kind": "patch",
          "published_at": "2026-07-12T09:13:38Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2026-07-12T05:05:16Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2026-07-11T22:04:27Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2026-07-11T19:53:33Z"
        },
        {
          "tag": "v3.4.1",
          "kind": "patch",
          "published_at": "2026-07-11T17:27:57Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2026-07-11T16:03:51Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2026-07-11T02:15:04Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2026-07-10T17:22:38Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2026-07-10T13:05:31Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2026-07-10T05:08:06Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2026-07-09T10:28:09Z"
        },
        {
          "tag": "v3.0.0-alpha.0",
          "kind": "prerelease",
          "published_at": "2026-07-06T09:34:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "10aef212dfa4b060eabc4824717108ba5e57afb9",
          "body": "…n badge rendered as a broken image on the npm package page, so both READMEs now open on the language switcher; docs only, no CLI/flag/behavior change (254 tests)",
          "is_bot": false,
          "headline": "release: 4.0.7 — drop the broken npm badge: the shields.io npm versio…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-19T12:56:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33f86a4cbff06f8eb26be39cf5b3640456aae3e2",
          "body": "The shields.io npm badge rendered as a broken image on the npm package\npage; remove the block so both READMEs open on the language switcher.",
          "is_bot": false,
          "headline": "docs: drop the broken npm version badge from both READMEs",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-19T12:54:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90890ee50b49887b956c255da9daf4390f8e1af8",
          "body": "…emo GIFs (hero CLI loop; Route A full Claude Code onboarding; README_cn the CN run); GIFs stay out of the npm tarball, npm renders them from main via relative paths; docs only, no CLI/flag/behavior change (254 tests)",
          "is_bot": false,
          "headline": "release: 4.0.6 — the READMEs show the demos: both READMEs embed the d…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-18T11:41:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83adbf508f69b3b07ae2ea2df13f321ef7f48d83",
          "body": "- CLI loop (verify red -> green -> gate -> archive) as the hero in README.md + README_cn.md\n- full Claude Code flow (install -> /apriori a change -> /goal builds & archives it -> run the result) in Route A: onboard-goal-demo.gif (EN) and onboard-goal-demo-cn.gif (the agent converses in Chinese, with\n[…]\nlanguage 中文)\n- assets live in docs/ and are referenced by relative path; docs/ is not in package.json files, so they stay out of the npm tarball\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: embed demo GIFs in the READMEs",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-18T10:54:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3af2a63c67c999e40dc4a2a3ee000f80fdbe62da",
          "body": "…oints at repo root (no branch), MIGRATING pointer URLs blob/v4→blob/main (doctor D8 + update), PR-22/PR-23 spec+test realigned; docs/plumbing only, no behavior change",
          "is_bot": false,
          "headline": "release: 4.0.5 — promote v4 to trunk: CI triggers v4→main, homepage p…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-17T06:53:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d2bd723d4f36936cccdeb7116d02460f8827f11",
          "body": "…ude Code via /apriori; Route B = the deterministic by-hand walk the golden-path executes); docs only, both EN/CN, no CLI change",
          "is_bot": false,
          "headline": "release: 4.0.4 — Quickstart leads with the agent (Route A = drive Cla…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-16T04:26:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98909feb364106638545559ac6159d817ede4f87",
          "body": "…binding, runbook-version-sync deltas merged; gate C6 index-driven, check gains CK-11)",
          "is_bot": false,
          "headline": "release: 4.0.3 — archive the two dogfooding-driven changes (c6-truth-…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T09:13:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2a6b5ab8e36f59110b6125ad000f320a5c38e96",
          "body": "…ement rewritten to index-driven, GT-18..21 added); truth/gate.md source-commit refreshed to 83fd13e; post-archive gate PASS (C6 now checks its own module through the new index) (Change: c6-truth-binding)",
          "is_bot": false,
          "headline": "archive: c6-truth-binding merged into the living spec (gate C6 requir…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T09:13:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83fd13ef09924412a506493f2056d3e97f4cbfcb",
          "body": "…a filename assumption: truth docs may declare store-module (default basename) and source-files (default lib/<module>.js) in the header region, a covered module with a valid stamp is always checked (never a silent skip), two docs on one module conflict-block, the canonical source-commit is a fence-o\n[…]\ndirectory is valid); field-less docs fall back to the pre-change default byte-identically; runbook EN/CN document the fields (Change: c6-truth-binding; credit: 4.0.2 sub-agent experiments, GPT-5.6 P2)",
          "is_bot": false,
          "headline": "fix(v4): c6-truth-binding — gate C6 binds through a truth index, not …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T09:12:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b52797305e9f5ab6684bc1ff1322bc7a61b08882",
          "body": "…e gains CK-11); truth/check.md source-commit refreshed to f6a0a13; post-archive gate PASS (Change: runbook-version-sync)",
          "is_bot": false,
          "headline": "archive: runbook-version-sync merged into the living spec (check stor…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T09:02:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f6a0a135d958a617f4b4ccb23a66264bb3540fe1",
          "body": "… with the CLI major: apriori check --self asserts the canonical RUNBOOK.md (required) and RUNBOOK_cn.md (optional) each carry exactly one header-region blockquote runbook-version entry whose major equals package.json's, failing on missing/duplicate/malformed/mismatch; body-text and fenced occurrences never match; RUNBOOK headers bumped 3.0->4.0 so the string no longer drifts from the 4.x CLI (Change: runbook-version-sync; credit: 4.0.2 sub-agent experiment friction)",
          "is_bot": false,
          "headline": "fix(v4): runbook-version-sync — CK-11 keeps the runbook major aligned…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T09:01:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "469106b27591454ad3e3cbb5cf78a220322993b4",
          "body": "…t, config-contract, resolver-trust deltas merged into the living store; spec-runner gains the version-aware-protocol requirement, config module born, resolve module born, archive-merge/gate/status/doctor/protocol stores extended)",
          "is_bot": false,
          "headline": "release: 4.0.2 — archive the three fourth-review changes (tap-contrac…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T05:05:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfadb1297f3020cfdd2ec10f5ba09ca351ae3905",
          "body": "…es, and names: changes/ and archive/ roots lstat-checked (symlink/non-dir/file structural, archive root contained), active candidates accept only real directories (any symlink structural, never a fallback), archived candidates reject symlinks and Gregorian-round-trip their stamps (2026-02-31 and 99\n[…]\ny check; MIGRATING.md ships in npm with dual-form D8/update pointers; AM-25 narrowed, doctor header D1-D8/Node>=22 (Change: resolver-trust; credit: GPT-5.6 fourth review P0-3/P0-4/P1-3/P1-4/P2-1/P2-2)",
          "is_bot": false,
          "headline": "fix(v4): resolver-trust — resolution validates its trust roots, entri…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T05:03:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d7d65d3410af8067af6f842b9be2089308586e55",
          "body": "…b/config.js: fence/HTML-comment state machines with unterminated-inert and inline comment spans, first-two-cells rows, same-value dups tolerated, conflicts fail-closed at consumption); the reviewer's fenced-waiver bypass is dead — fenced/commented rows grant nothing, a cas conflict or illegal value\n[…]\nlicted test-cmd refuses to run on verify/gate/doctor; --no-cas stays supreme and is now discoverable (usage texts + template cas row) (Change: config-contract; credit: GPT-5.6 fourth review P0-2/P2-4)",
          "is_bot": false,
          "headline": "fix(v4): config-contract — process-config parses as structure (new li…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T04:52:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b7c172882c08563514b8f280a93ccaeae381b9c4",
          "body": "… replaces the regex pile (closed version matrix 12/13/14/absent with single-and-leading discipline; first-unescaped-# directive split with \\\\/\\# decode so \\# never opens a directive; case-insensitive indentation-blind bail-out; lone-CR normalization; top-level YAML blocks opaque and fail-closed whe\n[…]\n(JSON stderr field in every outcome class), misrouted TAP incl. bail-out gets the 2>&1 remedy; doctor D5 speaks the same lexer (Change: tap-contract; credit: GPT-5.6 fourth review P0-1/P1-1/P1-2/P2-3)",
          "is_bot": false,
          "headline": "fix(v4): tap-contract — TAP is a version-aware protocol: a line lexer…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-12T04:38:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "60718cf0562cc521fe57d5bf707803152f411c4d",
          "body": "…ail + cas-mandatory deltas merged into the living store; spec-runner gains the unattributed-failures requirement, archive-merge's CAS requirement renamed to deny-by-default, status/doctor/update/protocol stores extended)",
          "is_bot": false,
          "headline": "release: 4.0.1 — archive both review-response changes (unattributed-f…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T22:04:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcbd3c977213c425c4591d8b1531c18aa797d2b9",
          "body": "…ks GREEN regardless of shape (POINT_LINE_RE-shaped classifier, directives/nesting/colon-prefixes exempt); unattributed failures are GAPS even on exit 0, never downgrade an infra ERROR, and exec.status!==0 never exits 0; report caps 20 lines at 120 chars, --json gains unattributedFailures {count,lin\n[…]\nclass; zeroTapParsed recognizes unattributed-only streams; gate C1 names the class; kills the reviewer-reproduced teardown false-green (Change: unattributed-fail; credit: GPT-5.6 external review P0-1)",
          "is_bot": false,
          "headline": "fix(v4)!: unattributed-fail — any top-level non-SKIP/TODO not-ok bloc…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T22:03:25Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bee26537009d9c33ec45797bf68999f4a16083f4",
          "body": "…default on both forms (preflight-set diagnostics, nothing written; --no-cas flag or | cas | optional | row waive visibly, flag wins); status resolves archived changes via the shared resolver with file-level containment guards (stage/path in output+JSON, bad names/missing/escaping exit 2); doctor D8\n[…]\nd module (no gate<->status cycle); runbook EN/CN CAS wording present-tense, MIGRATING gains the 4.0 section, homepage -> v4 (Change: cas-mandatory; credit: GPT-5.6 external review P0-2/P1-6/P0-3/P1-8)",
          "is_bot": false,
          "headline": "fix(v4): cas-mandatory — archive denies unstamped mutation deltas by …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T21:57:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87624ece792654192a43c29013ef0c09343ac0c9",
          "body": "…equirement (PR-21), gate C4/C5 + check CK-10 + new NW-05 rewritten to bundle paths, archive-merge staging requirement REMOVED and the atomic-move-carries-the-bundle requirement ADDED (AM-36..39 reused); change archived as a complete bundle at apriori/changes/archive/2026-07-12T0352-change-bundle (Change: change-bundle)",
          "is_bot": false,
          "headline": "archive(v4): merge change-bundle deltas — protocol gains the bundle r…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T19:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36e16cafd455cb04b6aabd986171fa895d0a8ed5",
          "body": "…k is a defect, not absence (gate lstats before absence; C4+C5 block at both stages); CK-10 discovery lstats change dirs (symlinked dirs warn-skipped by name, never followed) and warns on dangling review/ symlinks; AM-37 asserts the archived requirement history is the bundle's own content (Change: change-bundle; P8 r2: no spec-vs-code gaps)",
          "is_bot": false,
          "headline": "fix(v4): P8 round-1 symlink guards — a dangling bundle review/ symlin…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T19:50:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ce47d71d867804d347a7875222f2a89826e77e5",
          "body": "…iori/changes/<name>/ (requirement/ history, review/ evidence incl. ledger+raws, gap-report.md, specs/, spike/); the archive move carries the whole bundle, staging phase deleted; gate C4/C5 + status + check CK-10 + new + init flipped to bundle paths with containment-guarded discovery; P5 docs → spec\n[…]\nive legacy roots cease to exist, this repo self-migrated (302 moves, 6 dedups); Node floor 18→22 (engines, doctor D1, CI 22/24); version 4.0.0 (Change: change-bundle; owner: 可以,我决定做B + 直接切 4.0.0 版本算了)",
          "is_bot": false,
          "headline": "feat(v4)!: the change bundle — every per-change artifact lives in apr…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T19:38:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59289ce4b8e2a355c8928b1fdd9ca2c814fb0dc3",
          "body": "…stages requirement/<change>-{req-v*,req-final,intent-card}.md into the change dir before the atomic move (three anchored patterns, regular-files-only with named cures, containment on both ends, per-file rerunnable failures BEFORE the move); the STEP6 preservation clause becomes command behavior and the executor-copy instruction is gone from both editions; AM-36..39 + PR-20 bindings (Change: req-sweep; owner verdict: no manual steps — 归档必须命令执行)",
          "is_bot": false,
          "headline": "feat(v3): archive carries the requirement history itself — phase 3.5 …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T18:08:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbc82d7f478437106e64483db6a903a496b6af2b",
          "body": null,
          "is_bot": false,
          "headline": "release: 3.4.1",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T17:27:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47082019191937b5d3b03bae898766caa395a6e5",
          "body": "…hange>-req-v{N}.md / <change>-req-final.md / <change>-intent-card.md across both runbooks, concepts, and the new-scaffold next-action; STEP6 gains the preservation clause (requirement history travels into the archived change dir); old archives grandfathered; PR-19+NW-05 bindings incl. an occurrence-level bare-basename guard (Change: req-prefix; V1.4 stopgap ported per owner order)",
          "is_bot": false,
          "headline": "feat(v3): requirement-stage paths carry their change — requirement/<c…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T17:27:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5b521577ffd8c9bed76e7288d39aded8f0e637c",
          "body": null,
          "is_bot": false,
          "headline": "release: 3.4.0",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T16:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f97006013e83af8c07598d8d8405b730add2b3b4",
          "body": "…on every surface (both archive forms + verify --change, projection.unstampedMutations in --json) and gate C7 denies them by default with visible waivers (--no-cas / process-config cas: optional); MODIFIED gains the trim-equality unchanged signature (D-AM-8) and a stamped delta already fully applied re-runs cleanly, fixing the dogfooded post-commit move dead-end; stamps become mandatory in 4.0 (Change: cas-enforcement; credit: GPT-5.6 external review CAS-optionality claim + dogfood finding)",
          "is_bot": false,
          "headline": "feat(v3): CAS enforcement is graded — unstamped mutation deltas warn …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T13:16:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b64120f1c9af8d1a0f8141cc630fd7a850ca1165",
          "body": "…ied / rejected-verified (reviewer concurred, original reason preserved) / waived (human-only, gate-checked against a same-entry gates: record with exact ID tokens) / advisory-acked; gate C4 blocks unknown statuses everywhere and demands all-terminal ledgers at the archived stage; STEP6 requires a post-archive gate run in the gate④ packet; runbook P0/STEP6 EN/CN + concepts + PR-18/GT-13..15 bindings (Change: ledger-states; credit: GPT-5.6 external review C4 claim)",
          "is_bot": false,
          "headline": "feat(v3): the issue ledger speaks a terminal-state vocabulary — verif…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T12:53:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c8978f71fad9c0a9f6b38a42caf23af839654c1",
          "body": "…peration mutating state outside the local repo/workspace needs the principal's explicit one-shot or class/scope/expiry-scoped authorization, recorded verbatim in gates:; gate consolidation never covers them; untrusted data may drive internal transitions but never authorizes crossing the boundary; runbook EN/CN + concepts mirror + PR-17 scoped binding (Change: authz-boundary; credit: GPT-5.6 external reviews, authorization-boundary claim)",
          "is_bot": false,
          "headline": "feat(v3): external side effects are a hard authorization rule — any o…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T12:27:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "415d7f374907e98fd2bd89d01474a8933efc4605",
          "body": "…veBash() with APRIORI_GIT_BASH override, where-git root derivation (four layouts, lazy match + usr/mingw root guard), conventional-install probes, named cure when absent; the System32 WSL shim is never a candidate; POSIX unchanged (Change: win-bash; credit: GPT-5.6 external review Windows-bash claim)",
          "is_bot": false,
          "headline": "fix(v3): golden-path resolves an explicit Git Bash on Windows — resol…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T08:51:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c918470336ee082fe2ae51cbcedcfe8c26eaf1d7",
          "body": "…t records what it creates in apriori/managed.json (exact-byte sha256); modified/unmanaged/missing files are reported and left byte-identical; pre-manifest projects adopted on template-generation proof; manifest hygiene + realpath containment fail closed before any read (Change: update-manifest; credit: GPT-5.6 external review defect #5)",
          "is_bot": false,
          "headline": "fix(v3): update refreshes only manifest-proven tool-owned files — ini…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T08:34:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26b66d907759bf133d2122553235ad943a4034f6",
          "body": "…an allowed; plan-vs-parsed-points mismatch and duplicate test-point numbers are infra errors (verify exit 2 / gate ERROR); plan-less, skip-all, and nested node TAP unchanged (Change: tap-plan; credit: GPT-5.6 external review defect #2)",
          "is_bot": false,
          "headline": "fix(v3): the TAP plan is a checked promise — exactly one top-level pl…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T08:09:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2935bdc2350b29498db124798a645a574f933779",
          "body": "…lker — misspelled/unknown h2 headings, misplaced requirement/scenario markers, and stray stamps are line-numbered problems instead of being silently re-homed; fences opaque; CRLF-identical; well-formed deltas parse byte-identically (corpus-verified); README archive row wording rider (Change: delta-consumption; credit: GPT-5.6 external review defect #1)",
          "is_bot": false,
          "headline": "fix(v3): parseDeltaStrict is now a sequential fully-consuming line wa…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T07:36:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "424f3597f15847954f68a2dcd47664f37fac12cb",
          "body": null,
          "is_bot": false,
          "headline": "release: 3.3.0",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T02:15:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c448e78cd2b3cddfaf91dbc30b63939934bd57e",
          "body": "…URL (D:/ is not a valid ESM URL scheme), walk.sh invoked by relative name with cwd (an absolute C:\\ path loses its backslashes crossing into bash)",
          "is_bot": false,
          "headline": "fix(v3): golden-path tests on Windows — dynamic import via pathToFile…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T02:08:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bbb11e7b6bf06dd36516b4179e650db042c3c46",
          "body": "…*.test.js explicitly (glob patterns need node>=21, directory args regressed on newer majors, bare --test recurses into validation/); package.json scripts + CI unit job use it; Node>=18 floor unchanged",
          "is_bot": false,
          "headline": "fix(v3): portable test entry — scripts/run-tests.mjs enumerates test/…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-11T02:02:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "168896fa053103993ff8635b98ddf7c7e39518e3",
          "body": "… validation/ (persona/gauntlet scripts, per-variant working trees sans deps/VCS, evaluations, audit transcripts; secret-scanned) with an honest evidence-grade README (single-operator, no external replication yet); test discovery scoped to test/*.test.js so imported lab trees never leak into our suite (Change: validation-publication)",
          "is_bot": false,
          "headline": "feat(v3): validation — publish the four labs' primary materials under…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T20:22:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffe915e9d22b8e7051d954047b85fec63c282c24",
          "body": "…literal — the test now assembles the pattern at runtime (source and future raws never carry the full literal); the raw sanitized per the new retention rule (Change: evidence-governance, post-archive fix)",
          "is_bot": false,
          "headline": "fix(v3): CK-10 tripped on its own P8 raw transcribing the test's PEM …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T20:17:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "681a6e12c7fb94af6f5bf3ac1a25301bf92f0e71",
          "body": "…-07 amended (Change: evidence-governance)",
          "is_bot": false,
          "headline": "archive(v3): merge evidence-governance delta — check store +CK-10, CK…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T20:16:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edf239c8f83e83dc99744016d1ecf0a9d9237efe",
          "body": "…ck (three airtight literal patterns over apriori/review/, per-line substring, symlink warn-skip; findings name file:line+class with a remedy pointer, never echo the value); R2 gains the one-line provenance header convention; §4 gains the review-evidence retention bullet (EN/CN) (Change: evidence-governance)",
          "is_bot": false,
          "headline": "feat(v3): evidence-governance — CK-10 secret tripwire in consumer che…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T20:15:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a9a41c58a6b90e47745fc6208850a1420b4b5a0",
          "body": "…uage TAP coupling: slug.py + spec PY-01..03 + pytest tests + a small run_tap.py adapter (pytest-tap's dialect lacks the ' - ' separator and hyphens in IDs — predicted in planning, hit on the first run, normalized); verify GREEN locally and in a new CI job (ubuntu+windows, py3.12) (Change: python-example)",
          "is_bot": false,
          "headline": "feat(v3): python-example — examples/python-pytest proves the any-lang…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T19:08:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79cb53e9a73a1aa79f92ee7eb7c3621c5a06f3c5",
          "body": "…leased), MIGRATING.md (strict-args table, deprecated-block change, 2.x note), SECURITY.md (reporting channel + fact-checked posture); the security fact-check drove a real hardening: doctor now containment-checks EVERY flow-state read (active + archived) so a symlinked flow-state is diagnosed, never read — leak test included (Change: release-docs)",
          "is_bot": false,
          "headline": "feat(v3): release-docs — CHANGELOG.md (backfilled 3.0.0..3.2.0 + Unre…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T19:03:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "467803e9fdc928001bca80d0d1de55c4a56eaa5f",
          "body": "…Change: golden-path)",
          "is_bot": false,
          "headline": "archive(v3): merge golden-path delta — new golden store (GP-01..05) (…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T18:52:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "967d9b846d0178fd37b0546152c3e9f315c927a4",
          "body": "…uickstart's shell blocks (fence-aware) and walks them in a fresh dir with one binDir resolver for walk AND final assertions (--local shim / --packed isolated npm prefix with bash-native preflight); per-block exit sentinels vs the [0,1,0,0] contract via an exported assertSentinels seam; env sanitized against nested node:test inheritance; CI gains a pack→install→walk job on ubuntu+windows; GP-01..05, 157 tests; packed smoke OK locally (Change: golden-path)",
          "is_bot": false,
          "headline": "feat(v3): golden-path — scripts/golden-path.mjs extracts the README Q…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T18:52:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27b9b64045b0391ce110174d5c6796ab4f74a1ef",
          "body": "…t self-mode requirement (CK-08/09) (Change: readme-split)",
          "is_bot": false,
          "headline": "archive(v3): merge readme-split delta — check store gains the docs-se…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T18:30:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e593427106731dfd2df0709d92b5c3834f063212",
          "body": "…a hand-verified executable Quickstart (blocks extracted verbatim, exit sequence recorded); deep content moves to docs/{concepts,legacy,ci,cli,troubleshooting}(.md/_cn.md) per an H2-level migration map with a heading-preservation rule; check --self grows docs-pair coverage (one-sided pair fails) and per-file link resolution with cross-file fragment validation (CK-08/09) — which caught 24 link breaks during the work; 152 tests (Change: readme-split)",
          "is_bot": false,
          "headline": "feat(v3): readme-split — README becomes a 117-line first screen with …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T18:30:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "487d5e719118e2be826a4109cbc0a5ff1882be3c",
          "body": "…-argument-strictness requirement (CL-11..17) (Change: cli-strictness)",
          "is_bot": false,
          "headline": "archive(v3): merge cli-strictness delta — cli store gains the uniform…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T17:59:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20bee2b9e1673fb70b078fb6582e68ea08c1a083",
          "body": "…ands: --help/-h exits 0 with usage (wins over any other validation), unknown flags exit 2 naming themselves (a typo can no longer verify the wrong thing green), positional arity enforced, value/multi/boolean semantics declared (repeats, aliases, dash-stop); gate/doctor keep pure-JSON output on parse errors under --json; 7 new scenarios CL-11..17, 150 tests (Change: cli-strictness)",
          "is_bot": false,
          "headline": "feat(v3): cli-strictness — one strict argv parser for all ten subcomm…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T17:59:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d70ad29fde041e68147e744891160bde38ce296c",
          "body": null,
          "is_bot": false,
          "headline": "release: 3.2.0",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T17:22:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4bf99db72ca5f194ac9bfcbfd422d593469a9486",
          "body": "…re (DR-01..12), cli block modified (doctor subcommand, CL-10); plain verify GREEN post-archive (Change: doctor-command)",
          "is_bot": false,
          "headline": "archive(v3): merge doctor-command delta specs — new doctor module sto…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T17:17:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c73156bc3fe63159ba2d147b6eba2868abc75eb",
          "body": "…ri seam with seven checks (Node floor, init scaffold, runbook freshness, tool pointers, TAP plumbing probe with a full failure taxonomy, store health, changes overview incl. pending-gate hints); findings name their fixer; read-only except the declared --no-run-skippable probe; type-honest path checks (files impersonating dirs are findings, never crashes); 13 new scenarios DR-01..12/CL-10, 142 tests (Change: doctor-command)",
          "is_bot": false,
          "headline": "feat(v3): doctor-command — apriori doctor diagnoses the project↔aprio…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T17:16:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fb3ed60af889f00286f24f0a45d7f0b41001e189",
          "body": "…store files are tracked (the gate module store was silently ignored by the blanket apriori/ rule); adds apriori/specs/gate/spec.md",
          "is_bot": false,
          "headline": "fix(v3): .gitignore — apriori/* with !apriori/specs/ negation so NEW …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T16:22:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de5e0ec5998524455bd02829cfb6a33ffaee080f",
          "body": "…GT-01..12), cli block modified (gate subcommand, CL-09); plain verify GREEN post-archive (Change: gate-command)",
          "is_bot": false,
          "headline": "archive(v3): merge gate-command delta specs — new gate module store (…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T16:22:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "363bc797997f52230ef3292bf0725db7a0706ca7",
          "body": "…cal exit conditions into one exit code (0 PASS / 1 BLOCKED / 2 untrustworthy): stage-aware binding verify (projected in-flight, plain archived), tasks, flow-state legality, ledger (open + reasonless-rejected block), verdict-evidence backstop (S-raw.* naming rule, now normative in runbook), KB freshness via git (degrades to n/a, never false-blocks); read-only; tier-aware; archived-change resolution with realpath containment; 13 new scenarios GT-01..12/CL-09, 129 tests (Change: gate-command)",
          "is_bot": false,
          "headline": "feat(v3): gate-command — apriori gate --change aggregates the mechani…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T16:09:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd8aaec34084477ee89a635b25406a84a7ca8307",
          "body": null,
          "is_bot": false,
          "headline": "release: 3.1.0",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T13:05:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c2d6a8a3f565c4cb3add10e745cc22b7c55edb6",
          "body": "…e — spec-runner +2 requirements (SR-16..25), archive-merge +2 requirements (AM-13..27) + AM-01..12 block modified (AM-10 rerun signatures), cli block modified (stamp subcommand, CL-08); plain verify GREEN post-archive (Change: change-projection)",
          "is_bot": false,
          "headline": "archive(v3): merge change-projection delta specs into the living stor…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T09:41:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "024ee2c96bd6898d4348a2a3f7fe21d35d65fe70",
          "body": "…ore via archive's merge()), archive --change (whole-change discovery, dry-run, four-phase failure-atomic commit), CAS base stamps + apriori stamp, deprecated blocks excluded from all verify forms, realpath containment incl. symlinked specs/subdir/destination, strict stamp/delta hygiene; 26 new scenarios SR-16..25/AM-13..27/CL-08, 116 tests (Change: change-projection)",
          "is_bot": false,
          "headline": "feat(v3): change-projection — verify --change (in-memory projected st…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T09:38:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30fa38e7d3fc8ae8a068d9d147d69048fccb16d4",
          "body": "…LAUDE.md, AGENTS.md, requirement/, spike/); tracked apriori/specs/ unaffected",
          "is_bot": false,
          "headline": "chore: gitignore local dogfooding artifacts (apriori/ process dirs, C…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T08:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b59259e7a9d7da1b21883185cd02be99f0bc998",
          "body": "…s (exit codes 0/1/2, SKIP/dup-ID/fence/boundary rules), check consumer-vs-self split, archive path guard + transactional commit, new/init schema drift, cross-platform fixtures (Change: fail-closed; credit: external review by GPT-5.6)",
          "is_bot": false,
          "headline": "fix(v3): 3.0.1 fail-closed — verify never GREEN on broken/vacuous run…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-10T05:08:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "057bea3780e3aefdbd894b1aad4eb8a77734c3ce",
          "body": null,
          "is_bot": false,
          "headline": "release: 3.0.0",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-09T10:28:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7ca3782ec23f04ca906d834c8c3793c38bec460e",
          "body": "…ff label, P10 sizing + not-an-audit, one-action next-action, review-doc transcription, root-chmod gotcha, archive --changes-dir/gate④ sequencing; CLI: zero-TAP hint, store auto-create, idempotent archive rerun (Change: legacy-lessons)",
          "is_bot": false,
          "headline": "feat(v3): legacy-project lab lessons — KB pre-check timing, KB sign-o…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-09T04:47:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "deaf76c078efa16c8fb1ba00445b99d8c6adf0ec",
          "body": "…D legal on harden track, PowerShell stdin rider (Change: front-door)",
          "is_bot": false,
          "headline": "feat(v3): front door — bare /apriori opens Brainstorm (P13), ABANDONE…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-08T09:44:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "835b6652c28fbaf6b2c427b18208f22dbb920fc4",
          "body": "…s to zero operations (no more silent no-op) (Change: archive-guard)",
          "is_bot": false,
          "headline": "fix(v3): apriori archive errors on a content-bearing delta that parse…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-08T05:04:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ebcc0693e7b18cc2941a682f24acb546718c87da",
          "body": "…h the app after restart; UI must surface (not swallow) server-rejected input (Change: round3-lessons)",
          "is_bot": false,
          "headline": "feat(v3): round-3 lab lessons — durability test must read back throug…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-08T04:37:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21b96850ac1a30ea1461f8b06284d74ac15911ec",
          "body": "…guarantee-claim discipline, P7 UI must drive spec boundaries (Change: round2-lessons)",
          "is_bot": false,
          "headline": "feat(v3): round-2 lab lessons — success-path/fsync-dir sharpening of …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-08T01:06:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6535a568932dad2523de3014fec1e5c4a251a6c5",
          "body": "…, reviewer-session persistence, tasks.md provenance, ledger clarity (Change: round1-lessons)",
          "is_bot": false,
          "headline": "feat(v3): round-1 full-build lab lessons — guarantee-claim discipline…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T23:51:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "022908ba17aa7149a1d79714450923ac2549cb04",
          "body": "… apriori/tmp scratch, TAP-binding vs E2E layering clarified (Change: ui-verification)",
          "is_bot": false,
          "headline": "feat(v3): UI verification — P7 render-and-look self-check, gitignored…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T17:51:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0976b2bb3fed43e8a96ce5c66bb1cebce2b10049",
          "body": "…e, P13, lab-validated vs OpenSpec/Superpowers (Change: brainstorm-depth)",
          "is_bot": false,
          "headline": "feat(v3): brainstorm depth — diverge/converge/funnel stance, hard gat…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T17:22:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "542f4342a323c1672050895e08feec984be8a5ee",
          "body": "…etadata, CI, single-source runbook (Change: release-hygiene)",
          "is_bot": false,
          "headline": "feat(v3): release hygiene — apriori update, --version, LICENSE, pkg m…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T15:20:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0f2600e613582eeba50c5178a9cb77cc4df9f8d",
          "body": "…sidual CN empty parens",
          "is_bot": false,
          "headline": "chore(v3): bump to 3.0.0-alpha.6 (lab-run protocol patches); clean re…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T11:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cc3b51f69de5703a973a7912a558e0bafc38521",
          "body": "- R2: reviewer dies before its verdict line → resume the same session, never fill in the verdict\n- R2 + P8 scope: a read-only reviewer's dynamic observations are sandbox artifacts — only static reads count; producer rejects with real-environment evidence\n- STEP6: commit before P9 — source-commit must reference a real commit (greenfield included)\n- CN STEP6: clean a stray empty () left by the adapter removal\n- bundled templates/runbook.md regenerated; 51 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "feat(v3): universal protocol patches from the clamp-kit lab run",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T11:30:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "517c27b45083bc7331f0c9d639b7ca2d04ac17c0",
          "body": null,
          "is_bot": false,
          "headline": "chore(v3): bump to 3.0.0-alpha.5 (status/verify --json, apriori new)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T05:14:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1972092c886e02ec74cfaaf8ccf3700c307b3dad",
          "body": "…nts/trailing hyphen); strengthen ST-04/SR-09 assertions",
          "is_bot": false,
          "headline": "fix(v3): P8 — proper kebab-case regex for apriori new (no empty segme…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T05:12:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad517f80011c8f3e9908b1ecafa5dc2ba08e48c8",
          "body": "- apriori status [--change X] --json: pure-JSON report (step/tier/track/lineage/nextAction/lastGate/openLedger) for agent consumption (ST-04)\n- apriori verify --json: clean/result/boundGreen(+counts)/boundRed/unbound/orphan/unidentified; exit code unchanged (SR-09)\n- apriori new <name>: scaffolds ap\n[…]\nleton + specs/; refuses existing/reserved/date-prefixed names — in-flight names are bare, dates stamp at archive (NW-01..03)\n- CL-01 subcommand list + usage updated; 51 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "feat(v3): --json for status/verify + apriori new (Change: machine-io)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T05:08:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ecc78256af60fa4baafee9762ac99ec9c5df2309",
          "body": "… color)",
          "is_bot": false,
          "headline": "chore(v3): bump to 3.0.0-alpha.4 (init multiselect: selected footer +…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T03:19:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aa45248b8e30014891ed8884db8d30acb59a688",
          "body": "…ally (not just any ANSI)",
          "is_bot": false,
          "headline": "test(v3): P8 — assert the 'selected:' footer names are green specific…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T03:16:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d62262352fee486bb94ae0bb865fde98dde269c3",
          "body": "…on a TTY\n\n- renderMenu always appends a 'selected: <names>' footer ('(none)' when empty) — stable line count for in-place redraw\n- selected checkboxes + the footer names are green (ANSI) only when output is a real TTY; plain otherwise (tests/pipes)\n- IN-10 covers the footer (names in order, (none), no-ANSI-off / green-on); 46 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "feat(v3): show 'selected: <names>' footer in init multiselect, green …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T03:14:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3f645ad61e2102450f533135c90cbe91c185abc0",
          "body": null,
          "is_bot": false,
          "headline": "chore(v3): bump to 3.0.0-alpha.3 (real arrow-key multiselect for init)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:59:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e1e2db23bb235b8f93dc94cc679e970ec96d34a",
          "body": "…y took numbers)\n\n- interactive prompt now honors ↑/↓ move, space toggle, a all, enter confirm (raw-mode, zero deps); numbered comma input removed\n- logic split into pure parseKey/reduceKey/renderMenu/selectedKeys + an injectable-stream multiselect() driver so it's end-to-end testable without a TTY\n- IN-02 spec updated; IN-10 covers parseKey/reducer/render(no numbers)/driver e2e\n- 46 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "fix(v3): real arrow-key multiselect for apriori init (was a lie — onl…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:54:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77821c1cbad99b340cfdf6c15f9a48f594591f2c",
          "body": "…ainstorm stance, proposal.md)",
          "is_bot": false,
          "headline": "chore(v3): bump to 3.0.0-alpha.2 (apriori status, archive RENAMED, br…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:44:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a81f7234686c74cabd1569a7aa9ebfba5e15193",
          "body": "…rengthen PR-07/PR-08 tests, README artifact table\n\n- P8-FE-1: brainstorm funnels on goal-stateability only (STEP0 vs explore intent card), 'no third resting place' — aligned with §2\n- P8-FE-2: PR-07 asserts no-output/no-flow-state/not-tracked + both funnel branches (EN+CN), section-scoped\n- P8-FE-3: PR-08 section-scopes table/P4/STEP3 assertions in both languages\n- P8-FE-A: README artifact table now lists proposal.md\n- 45 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "fix(v3): P8 round 1 — tighten brainstorm funnel to a clean binary, st…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:40:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77b9dbf7493495a7d80cd24d98e7d46176d06412",
          "body": "…B: front-end)\n\n- RUNBOOK EN/CN: optional 'Brainstorm' stance before STEP0 (thinking partner, no code, no required output) that funnels into STEP0 or the explore-track intent card — closes the fuzzy-front-end gap vs OpenSpec's explore\n- proposal.md as a STEP2 artifact: §4 artifact table + P4 (why/what/out-of-scope one-pager) + STEP3 packet; README EN/CN documented\n- specs PR-07/PR-08; 45 tests, verify GREEN, check PASS, RUNBOOK 31/31 + README 58/58 aligned",
          "is_bot": false,
          "headline": "feat(v3): pre-STEP0 brainstorm stance + proposal.md artifact (Change …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:35:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "209f1573b8e0ab50a5ea3eeee83d8d96d22b4939",
          "body": "…7 CLI tests (P8 advisories)\n\n- RUNBOOK EN/CN archive algorithm + P9 + archive-merge spec now document RENAMED\n- ST-01 asserts last-gate output; ST-02 asserts no-args CLI listing (step+open, archive excluded)\n- AM-07 covers CLI --write conflict (exit 1, nothing written) + printed 'renamed (RENAMED)'\n- 43 tests, verify GREEN, check PASS — codex P8: no spec-vs-code gaps",
          "is_bot": false,
          "headline": "docs+test(v3): sync RENAMED into runbook/spec, strengthen status/AM-0…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:30:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a4911ea118958df8ef15eb126fb5ede97cd5838",
          "body": "…dances)\n\n- apriori status [--change X]: reads flow-state + ledger → current step, next-action, open items; no args lists active changes (ST-01..03)\n- archive: '## RENAMED Requirements' (- Old -> New) renames a requirement in place, content preserved; missing source / colliding target = conflict (AM-07)\n- cli spec: package name corrected to apriori-cli; subcommands add status\n- 43 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "feat(v3): apriori status + archive-merge RENAMED (Change A: cli-affor…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T02:25:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc122553f7125d2632ae016723b079327a48a73d",
          "body": "… options, language config)",
          "is_bot": false,
          "headline": "chore(v3): bump version to 3.0.0-alpha.1 (README quick-intro, install…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-07T01:42:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c7de38faf277c5bc2e4e23dc71a032fde573925",
          "body": "- PR-06 itemizes each English-only machine token (ADDED/MODIFIED/REMOVED, scenario IDs, verdict lines, file paths)\n- IN-03 asserts --language parsing (and null default)\n- codex P8: no spec-vs-code gaps; 39 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "test(v3): strengthen language-config coverage per P8 advisories",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T18:16:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f55257290d474b714c127de6fdeb5be92584c6e6",
          "body": "- RUNBOOK EN/CN: 'Language' rule — human-facing prose + communication use process-config's 'language'; unset/auto → match the human; machine tokens (verdict lines, scenario IDs, ADDED/MODIFIED/REMOVED, paths) always English\n- templates/process-config.md: new 'language' field (default auto)\n- apriori\n[…]\nanguage <lang> pins it in the scaffolded config\n- README EN/CN: document the default rule + how to change it\n- specs: IN-09 (init --language), PR-06 (language rule); 39 tests, verify GREEN, check PASS",
          "is_bot": false,
          "headline": "feat(v3): configurable output language (default: match the human)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T18:10:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "98ee1f40d07ab633df2563e76deace400b5598fd",
          "body": "…(EN+CN)\n\n- new '## What is this & how to use it' section at the top: what apriori is, the 2-command quick start, the three CLI gates\n- §3.3 install: npm (recommended) + GitHub-direct, with a git-cache note\n- heading alignment 58/58; apriori check PASS; 37 tests pass",
          "is_bot": false,
          "headline": "docs(v3): add top-of-README quick intro + npm/GitHub install options …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T17:46:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d6ee4c06f3b0fd389db35b6670b67526e3bfec2",
          "body": "The @apriori scope was unavailable; use the unscoped apriori-cli (bin stays 'apriori').\nUpdated package.json name + install commands in README/RUNBOOK (EN+CN) + bundled templates/runbook.md.\n37 tests pass; apriori verify GREEN; apriori check PASS.",
          "is_bot": false,
          "headline": "chore(v3): rename npm package @apriori/spec-dev → apriori-cli",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T17:19:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0799dadd86b701224bf45057c2c1cf57eb3b819f",
          "body": "…terface\n\nV3 removed OpenSpec as a dependency but reimplements its interface (delta specs, Requirement/Scenario blocks, archive-merge, multi-tool init) natively — credit the design debt in README EN/CN. Passes check (CK-05 targets functional openspec/ /opsx: refs, not the name) and PR-04.",
          "is_bot": false,
          "headline": "docs(v3): acknowledge OpenSpec as the inspiration for the artifact in…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T11:18:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f852534ee971ad09567d2ef816c8afd9d9cf56b",
          "body": "…R-04 handbook coverage\n\n- P8-R2-6: assert archive CLI prints merged/modified/deprecated IDs by category\n- P8-R3-1: CL-01 covers init subcommand dispatch\n- P8-R3-2: PR-04 asserts single-path over RUNBOOK + README (both languages)\n- 37 tests pass; verify GREEN; check PASS",
          "is_bot": false,
          "headline": "fix(v3): P8 review round 2 — AM-05 CLI stdout, CL-01 init dispatch, P…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T09:34:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d14164e137b4239f1d571faf6e47c9d0af486364",
          "body": "- P8-R2-1: cli/protocol specs into living store + test/cli.test.js (CL-01..05), test/protocol.test.js (PR-01..05, runbook-text assertions)\n- P8-R2-2: bundle the real RUNBOOK as templates/runbook.md (was a stub)\n- P8-R2-3: Copilot is rule-level, not command-level\n- P8-R2-4: port v2 checker 8 (codex k\n[…]\nrrowed to semantic faithfulness (EN+CN)\n- A1: drop obsolete templates (openspec config.yaml, old claude command)\n- 37 tests pass; apriori verify GREEN (SR/AM/CK/IN/CL/PR all bound); apriori check PASS",
          "is_bot": false,
          "headline": "fix(v3): P8 review round 1 — 7 findings + advisory (codex)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T09:28:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d142792e7bce523df6ceee6e59140e3fa6ba7237",
          "body": "- README: drop OpenSpec tutorial entirely — tool table, §3.3 install, cheat-sheet, mermaid diagrams, STEP headings, §8.1 config, worked example all migrated to the apriori CLI model\n- §3.3: npm i -g @apriori/spec-dev + apriori init; §3.4 command cheat sheet (init/verify/archive/check)\n- §8.1: 'opens\n[…]\nnchors updated for renamed STEP headings\n- VISION: trigger fired via the self-built equivalent tool; V3 realizes the weak form\n- apriori check PASS; README 56/56, RUNBOOK 30/30, VISION heading-aligned",
          "is_bot": false,
          "headline": "feat(v3): phase 4b — README EN/CN + VISION rewritten to v3",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T09:11:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dedbce1b83158fdd82b43bf2cedbfaf0e444060e",
          "body": "- drop OpenSpec adapter entirely: no /opsx: commands, no openspec/ paths, no adapter runtime policy/classification; single plain-files interface\n- paths doc/ + docs/truth → apriori/ root\n- install section → npm CLI (npm i -g @apriori/spec-dev + apriori init)\n- STEP5: apriori verify GREEN as the dete\n[…]\nwed to semantic faithfulness (binding is now mechanical)\n- enforcement layers + recipes: scripts/check_docs.py → apriori check/verify\n- 30/30 heading alignment, verdict phrases + codex commands intact",
          "is_bot": false,
          "headline": "feat(v3): phase 4a — RUNBOOK EN/CN rewritten to v3",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T08:58:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c4757aff8f28ca747e41b4defadf04d82a82f76",
          "body": "- one adapter table for 6 tools (Claude Code/Codex/Cursor/GitHub Copilot/OpenCode/Windsurf)\n- protocol written once (apriori/runbook.md); each tool gets a thin pointer in its native path/format (Cursor MDC frontmatter, AGENTS.md shared by Codex/OpenCode, etc.)\n- detect + interactive multi-select + non-interactive --tools/--yes + dry-run preview + additive non-clobbering\n- honest command-level vs rule-level reporting; bin made async; 8 tests bound to IN scenario IDs",
          "is_bot": false,
          "headline": "feat(v3): phase 3 — apriori init multi-tool scaffolding (IN-01..08)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T08:45:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20e79b1d427ab502df22241a6d6116179697ecb2",
          "body": "- anchors/file-links, EN/CN heading alignment, verdict-phrase table, codex-command parity (ported from v2, behaviour-equivalent)\n- CK-04 new: every spec scenario must carry a bindable ID\n- CK-05 new: no residual OpenSpec references (v2 adapter-wording assertions inverted for single plain-files V3)\n- 5 fixture-based tests bound to CK scenario IDs; handbook checks wire up in phase 4 after the doc rewrite",
          "is_bot": false,
          "headline": "feat(v3): phase 2 — check_docs.py ported to lib/check.js (CK-01..05)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T08:42:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b22e08516c883aec76ea8d62df4c795800eec9fe",
          "body": "…merge as zero-dep JS package\n\n- @apriori/spec-dev npm package, bin apriori (verify/archive/check/init dispatch)\n- lib/spec-runner.js: scenario-ID ↔ TAP binding (SR-01..08)\n- lib/archive-merge.js: §4 archive native impl + date-time archive dir (AM-01..06)\n- 14 tests bound to scenario IDs; apriori verify dogfoods GREEN on its own specs\n- check/init stubbed for later phases",
          "is_bot": false,
          "headline": "feat(v3): executable-specs toolchain phase 1 — spec-runner + archive-…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T08:33:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7c3941da2a334446b50f825c283e7a717457ee0",
          "body": "…artifact + EXT-n, gates format, lineage field, codex command checks",
          "is_bot": false,
          "headline": "Merge change/retro-sweep: verdict phrase table, explore-track single …",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T03:56:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ca7ab5394b3bb6765842da142dfb6d315b0477f8",
          "body": "… with EXT-n, gates log format, lineage field, nested-gate proxy rule, codex command checks",
          "is_bot": false,
          "headline": "feat(handbook): verdict-line phrase table, P11 single intent artifact…",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-06T03:51:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4650e33561c2599c9c3a7c4eded620693176b0e9",
          "body": "Advisory review discipline (scope clauses + ledger lifecycle), lint/static\nanalysis in the verification matrix (6 sync points), context economy (session\nhygiene, tiered loading with single-source minimal set), judge-bias honesty\ncaveat, enforcement layers, flow-state timestamps + cost dimension in t\n[…]\nEvidence: research/ai-coding-best-practices-2026\n(12 claims 3-0 verified, 0 refuted). Reviewed: STEP0 x3, design x1, P8 x1 —\nledger 0 open (reviewer degraded to fresh-Claude per R2 policy; codex 401).",
          "is_bot": false,
          "headline": "Merge change/best-practices-alignment: external best-practices alignment",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-04T19:04:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cf1c18a5b53ad8c44c0a149e55aabfa21b42b20d",
          "body": null,
          "is_bot": false,
          "headline": "fix: hook example labeled as illustrative pseudo-config (IMPL-C1)",
          "author_name": "Apriorhythm",
          "author_login": "Apriorhythm",
          "committed_at": "2026-07-04T19:03:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 16,
      "commits_last_year": 121,
      "latest_release_at": "2026-07-19T12:56:41Z",
      "latest_release_tag": "v4.0.7",
      "releases_from_tags": true,
      "days_since_last_push": 5,
      "active_weeks_last_year": 5,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 0.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "apriori-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "spec-driven-development",
            "sdd",
            "executable-specs",
            "spec",
            "ai-coding",
            "agent-workflow",
            "claude-code",
            "codex",
            "cursor",
            "cli"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/apriori-cli",
          "is_deprecated": false,
          "latest_version": "4.0.7",
          "repository_url": "https://github.com/Apriorhythm/apriori-spec-development",
          "versions_count": 31,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 4747,
          "first_published_at": "2026-07-06T17:37:08.424000Z",
          "latest_published_at": "2026-07-19T12:57:01.779000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 3,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 37306,
      "source_files_sampled": 110,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "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": "Apriorhythm",
          "commits": 121,
          "avatar_url": "https://avatars.githubusercontent.com/u/9026095?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "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": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 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 was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 4,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "10aef212dfa4b060eabc4824717108ba5e57afb9",
        "ran_at": "2026-07-25T10:24:57Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-19T12:57:55Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Apriorhythm/apriori-spec-development",
    "host": "github.com",
    "name": "apriori-spec-development",
    "owner": "Apriorhythm"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 48,
      "inputs": {
        "security": 33,
        "vitality": 70,
        "community": 35,
        "governance": 34,
        "engineering": 66
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 121,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "121 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 121
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 16,
              "latest_release_tag": "v4.0.7",
              "releases_from_tags": true,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 0.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "16 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 35,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 5,
            "inputs": {
              "forks": 0,
              "stars": 3,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "3 stars",
                "points": 4.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "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": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 61,
            "inputs": {
              "packages": [
                "apriori-cli"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 4747
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "4,747 downloads/month across npm",
                "points": 49,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 4747,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 34,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "Apriorhythm",
              "public_repos": 50,
              "account_age_days": 4310
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of Apriorhythm",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "Apriorhythm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "50 public repos, account ~11 yr old",
                "points": 24.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 50
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "apriori-cli"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "31 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 31
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 66,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "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": 60,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 33,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.3
            },
            "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 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "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 was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "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": 36,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.99,
              "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": "99 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "critical",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 24,
            "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.01,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 37306,
              "source_files_sampled": 110,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/110 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 110,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? 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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T10:25:02.299071Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/Apriorhythm/apriori-spec-development.svg",
  "full_name": "Apriorhythm/apriori-spec-development",
  "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 agregadasnpm.