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

junpei-9898 / phasegate

AIエージェントの設計意図を無視した暴走を0.5秒で止める、AI非依存の品質防御ツールキット。5レイヤーで「No Design / No Code」を強制し、構造的整合性を守ります。

TypeScriptMIT★ 2 estrellas⑂ 0 forksdesde mar 2026Ver en GitHub ↗

junpei-9898/phasegate tiene un índice de salud de 57 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (79/100) y la más baja, Security (36/100). Se actualizó por última vez hace 1 día. Una sola persona concentra la mayor parte del trabajo reciente.

57
global / 100
Moderado

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

57
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

junpei-9898Cuenta personal
0 seguidores12 repositorios públicosdesde may 2021

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
npmphasegate0.283.03931128hace 5 díasqualityclean-architecturedddai-agentgovernancephase-gatephasegate

Métricas por categoría

Vitalidad

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

79Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 1 días
9/36Cadencia de commits — 13/52 semanas con commits
18/18Volumen de commits — 443 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year443
human_commit_share1
days_since_last_push1
active_weeks_last_year13
Cómo se puntúa
16.2/27Publica versiones — 100 etiquetas de versión (sin releases de GitHub)
36/36Recencia de las versiones — última versión hace 1 días
27/27Cadencia de publicación — una versión cada ~0,4 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tagv0.301.0
releases_from_tags
days_since_latest_release1
mean_days_between_releases0,4
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?

38En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 2 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars2
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
13.5/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_conduct
has_pull_request_templateno
Cómo se puntúa
47.9/80Descargas mensuales — 3931 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesphasegate
dependents
ecosystemsnpm
total_downloads
monthly_downloads3931
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?

50Moderado · 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
44.4/46.8Resolución de issues — 95% de issues cerradas
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_issues2
closed_issues38
issue_closed_ratio0,95
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): 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 junpei-9898
18.5/25Trayectoria — 12 repos públicos, cuenta de ~5 años
Datos de entrada utilizados
followers0
owner_typeUser
is_verified
owner_loginjunpei-9898
public_repos12
account_age_days1906
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 — 128 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesphasegate
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

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

74Bueno · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — biome.json
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_config
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

65Moderado
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
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
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?

36En 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
7.5/7.5Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,6
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.

77Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 100 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes6751
Cómo se puntúa
12.6/18Arranque con un solo comando — scripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato — biome.json
11/11Verificación estática de tipos — tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 100 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
lockfilespnpm-lock.yaml
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configstsconfig.json
agent_commit_share1
toolchain_manifestsscripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
54.9/55Tamaños de archivo manejables — 3/1859 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes149.770
source_files_sampled1859
oversized_source_files3
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — sample
Datos de entrada utilizados
example_dirssample
has_mcp_signalno
api_schema_files

Datos clave

2estrellas de GitHub
1contribuidores
443commits en los últimos 12 meses
1días desde el último push
100versiones publicadas
1factor bus
2issues 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
  • deps.dev does not index npm:phasegate@0.283.0; advisories assessed against the repository dependency graph instead

Más detalle

OpenSSF Scorecard 3.6 / 10
3.6agregado

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-23 07:39 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
10Maintained30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
Dependencias directas 4
RegistroPaqueteRestricción de versiónManifiesto
npmajv^8.18.0package.json
npmpicomatch^4.0.4package.json
npmtinyglobby^0.2.15package.json
npmtsx^4.0.0package.json
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": 13193,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "Go": 350,
        "Shell": 50054,
        "Python": 20596,
        "TypeScript": 6825250
      },
      "pushed_at": "2026-07-21T12:20:53Z",
      "created_at": "2026-03-10T04:09:40Z",
      "owner_type": "User",
      "updated_at": "2026-07-21T12:22:31Z",
      "description": "AIエージェントの設計意図を無視した暴走を0.5秒で止める、AI非依存の品質防御ツールキット。5レイヤーで「No Design / No Code」を強制し、構造的整合性を守ります。",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "User",
      "login": "junpei-9898",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/83627275?v=4",
      "created_at": "2021-05-04T03:56:56Z",
      "is_verified": null,
      "public_repos": 12,
      "account_age_days": 1906
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.301.0",
          "kind": "minor",
          "published_at": "2026-07-21T12:20:35Z"
        },
        {
          "tag": "v0.300.0",
          "kind": "minor",
          "published_at": "2026-07-21T12:20:08Z"
        },
        {
          "tag": "v0.299.0",
          "kind": "minor",
          "published_at": "2026-07-21T10:50:58Z"
        },
        {
          "tag": "v0.298.0",
          "kind": "minor",
          "published_at": "2026-07-21T10:50:37Z"
        },
        {
          "tag": "v0.297.0",
          "kind": "minor",
          "published_at": "2026-07-21T10:50:12Z"
        },
        {
          "tag": "v0.296.0",
          "kind": "minor",
          "published_at": "2026-07-21T10:49:50Z"
        },
        {
          "tag": "v0.295.0",
          "kind": "minor",
          "published_at": "2026-07-21T09:55:08Z"
        },
        {
          "tag": "v0.294.0",
          "kind": "minor",
          "published_at": "2026-07-21T09:54:44Z"
        },
        {
          "tag": "v0.293.0",
          "kind": "minor",
          "published_at": "2026-07-21T09:54:20Z"
        },
        {
          "tag": "v0.292.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:41:15Z"
        },
        {
          "tag": "v0.291.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:21:32Z"
        },
        {
          "tag": "v0.290.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:05:06Z"
        },
        {
          "tag": "v0.289.0",
          "kind": "minor",
          "published_at": "2026-07-18T00:04:20Z"
        },
        {
          "tag": "v0.288.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:57:45Z"
        },
        {
          "tag": "v0.287.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:47:19Z"
        },
        {
          "tag": "v0.286.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:42:50Z"
        },
        {
          "tag": "v0.285.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:42:13Z"
        },
        {
          "tag": "v0.284.0",
          "kind": "minor",
          "published_at": "2026-07-17T23:41:26Z"
        },
        {
          "tag": "v0.283.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:16:57Z"
        },
        {
          "tag": "v0.282.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:13:11Z"
        },
        {
          "tag": "v0.281.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:12:33Z"
        },
        {
          "tag": "v0.280.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:09:44Z"
        },
        {
          "tag": "v0.279.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:03:38Z"
        },
        {
          "tag": "v0.278.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:03:02Z"
        },
        {
          "tag": "v0.277.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:02:28Z"
        },
        {
          "tag": "v0.276.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:00:55Z"
        },
        {
          "tag": "v0.275.0",
          "kind": "minor",
          "published_at": "2026-07-17T10:53:21Z"
        },
        {
          "tag": "v0.274.0",
          "kind": "minor",
          "published_at": "2026-07-17T10:18:47Z"
        },
        {
          "tag": "v0.273.0",
          "kind": "minor",
          "published_at": "2026-07-17T10:18:13Z"
        },
        {
          "tag": "v0.272.0",
          "kind": "minor",
          "published_at": "2026-07-17T10:17:44Z"
        },
        {
          "tag": "v0.271.0",
          "kind": "minor",
          "published_at": "2026-07-17T10:17:13Z"
        },
        {
          "tag": "v0.270.0",
          "kind": "minor",
          "published_at": "2026-07-17T10:16:46Z"
        },
        {
          "tag": "v0.269.0",
          "kind": "minor",
          "published_at": "2026-07-17T09:43:40Z"
        },
        {
          "tag": "v0.268.0",
          "kind": "minor",
          "published_at": "2026-07-17T09:35:39Z"
        },
        {
          "tag": "v0.267.0",
          "kind": "minor",
          "published_at": "2026-07-17T05:58:50Z"
        },
        {
          "tag": "v0.266.0",
          "kind": "minor",
          "published_at": "2026-07-17T04:46:11Z"
        },
        {
          "tag": "v0.265.0",
          "kind": "minor",
          "published_at": "2026-07-17T04:39:34Z"
        },
        {
          "tag": "v0.264.0",
          "kind": "minor",
          "published_at": "2026-07-17T02:33:38Z"
        },
        {
          "tag": "v0.263.0",
          "kind": "minor",
          "published_at": "2026-07-17T02:33:23Z"
        },
        {
          "tag": "v0.262.0",
          "kind": "minor",
          "published_at": "2026-07-17T01:30:17Z"
        },
        {
          "tag": "v0.261.0",
          "kind": "minor",
          "published_at": "2026-07-17T00:50:34Z"
        },
        {
          "tag": "v0.260.0",
          "kind": "minor",
          "published_at": "2026-07-17T00:29:57Z"
        },
        {
          "tag": "v0.259.0",
          "kind": "minor",
          "published_at": "2026-07-16T23:57:41Z"
        },
        {
          "tag": "v0.258.0",
          "kind": "minor",
          "published_at": "2026-07-16T23:30:16Z"
        },
        {
          "tag": "v0.257.0",
          "kind": "minor",
          "published_at": "2026-07-16T23:21:13Z"
        },
        {
          "tag": "v0.256.0",
          "kind": "minor",
          "published_at": "2026-07-16T22:50:24Z"
        },
        {
          "tag": "v0.255.0",
          "kind": "minor",
          "published_at": "2026-07-16T22:25:39Z"
        },
        {
          "tag": "v0.254.0",
          "kind": "minor",
          "published_at": "2026-07-16T21:24:02Z"
        },
        {
          "tag": "v0.253.0",
          "kind": "minor",
          "published_at": "2026-07-16T16:46:01Z"
        },
        {
          "tag": "v0.252.0",
          "kind": "minor",
          "published_at": "2026-07-16T16:29:36Z"
        },
        {
          "tag": "v0.251.0",
          "kind": "minor",
          "published_at": "2026-07-16T16:11:51Z"
        },
        {
          "tag": "v0.250.0",
          "kind": "minor",
          "published_at": "2026-07-16T15:46:53Z"
        },
        {
          "tag": "v0.249.0",
          "kind": "minor",
          "published_at": "2026-07-16T15:25:18Z"
        },
        {
          "tag": "v0.248.0",
          "kind": "minor",
          "published_at": "2026-07-16T15:04:03Z"
        },
        {
          "tag": "v0.247.0",
          "kind": "minor",
          "published_at": "2026-07-16T14:41:07Z"
        },
        {
          "tag": "v0.246.0",
          "kind": "minor",
          "published_at": "2026-07-16T14:14:51Z"
        },
        {
          "tag": "v0.245.0",
          "kind": "minor",
          "published_at": "2026-07-16T13:36:23Z"
        },
        {
          "tag": "v0.244.0",
          "kind": "minor",
          "published_at": "2026-07-16T13:14:26Z"
        },
        {
          "tag": "v0.243.0",
          "kind": "minor",
          "published_at": "2026-07-16T12:48:59Z"
        },
        {
          "tag": "v0.242.0",
          "kind": "minor",
          "published_at": "2026-07-16T12:28:37Z"
        },
        {
          "tag": "v0.241.0",
          "kind": "minor",
          "published_at": "2026-07-16T12:07:07Z"
        },
        {
          "tag": "v0.240.0",
          "kind": "minor",
          "published_at": "2026-07-16T11:55:05Z"
        },
        {
          "tag": "v0.239.0",
          "kind": "minor",
          "published_at": "2026-07-16T11:30:34Z"
        },
        {
          "tag": "v0.238.0",
          "kind": "minor",
          "published_at": "2026-07-16T11:06:39Z"
        },
        {
          "tag": "v0.237.0",
          "kind": "minor",
          "published_at": "2026-07-16T10:51:35Z"
        },
        {
          "tag": "v0.236.0",
          "kind": "minor",
          "published_at": "2026-07-16T10:40:21Z"
        },
        {
          "tag": "v0.235.0",
          "kind": "minor",
          "published_at": "2026-07-16T10:33:24Z"
        },
        {
          "tag": "v0.234.0",
          "kind": "minor",
          "published_at": "2026-07-16T10:21:31Z"
        },
        {
          "tag": "v0.233.0",
          "kind": "minor",
          "published_at": "2026-07-16T10:09:48Z"
        },
        {
          "tag": "v0.232.0",
          "kind": "minor",
          "published_at": "2026-07-16T09:55:16Z"
        },
        {
          "tag": "v0.231.0",
          "kind": "minor",
          "published_at": "2026-07-16T09:38:41Z"
        },
        {
          "tag": "v0.230.0",
          "kind": "minor",
          "published_at": "2026-07-16T09:13:23Z"
        },
        {
          "tag": "v0.229.0",
          "kind": "minor",
          "published_at": "2026-07-16T06:47:24Z"
        },
        {
          "tag": "v0.228.0",
          "kind": "minor",
          "published_at": "2026-07-16T06:46:28Z"
        },
        {
          "tag": "v0.227.0",
          "kind": "minor",
          "published_at": "2026-07-16T06:45:20Z"
        },
        {
          "tag": "v0.226.0",
          "kind": "minor",
          "published_at": "2026-07-16T06:38:51Z"
        },
        {
          "tag": "v0.225.0",
          "kind": "minor",
          "published_at": "2026-07-16T06:23:30Z"
        },
        {
          "tag": "v0.224.0",
          "kind": "minor",
          "published_at": "2026-07-16T05:50:30Z"
        },
        {
          "tag": "v0.223.0",
          "kind": "minor",
          "published_at": "2026-07-16T05:48:37Z"
        },
        {
          "tag": "v0.222.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:53:16Z"
        },
        {
          "tag": "v0.221.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:52:22Z"
        },
        {
          "tag": "v0.220.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:51:37Z"
        },
        {
          "tag": "v0.219.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:44:20Z"
        },
        {
          "tag": "v0.218.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:34:56Z"
        },
        {
          "tag": "v0.217.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:33:58Z"
        },
        {
          "tag": "v0.216.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:27:56Z"
        },
        {
          "tag": "v0.215.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:26:46Z"
        },
        {
          "tag": "v0.214.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:22:10Z"
        },
        {
          "tag": "v0.213.0",
          "kind": "minor",
          "published_at": "2026-07-16T04:18:25Z"
        },
        {
          "tag": "v0.212.0",
          "kind": "minor",
          "published_at": "2026-07-15T10:34:32Z"
        },
        {
          "tag": "v0.211.0",
          "kind": "minor",
          "published_at": "2026-07-15T10:25:33Z"
        },
        {
          "tag": "v0.210.0",
          "kind": "minor",
          "published_at": "2026-07-15T10:24:50Z"
        },
        {
          "tag": "v0.209.0",
          "kind": "minor",
          "published_at": "2026-07-15T10:24:03Z"
        },
        {
          "tag": "v0.208.0",
          "kind": "minor",
          "published_at": "2026-07-15T10:11:57Z"
        },
        {
          "tag": "v0.207.0",
          "kind": "minor",
          "published_at": "2026-07-15T10:00:19Z"
        },
        {
          "tag": "v0.206.0",
          "kind": "minor",
          "published_at": "2026-07-10T11:07:17Z"
        },
        {
          "tag": "v0.205.0",
          "kind": "minor",
          "published_at": "2026-07-10T10:46:42Z"
        },
        {
          "tag": "v0.204.0",
          "kind": "minor",
          "published_at": "2026-07-10T10:34:00Z"
        },
        {
          "tag": "v0.203.0",
          "kind": "minor",
          "published_at": "2026-07-10T10:20:25Z"
        },
        {
          "tag": "v0.202.0",
          "kind": "minor",
          "published_at": "2026-07-10T09:50:00Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "716b90681b3aaf790cb5706241c8df155acd0258",
          "body": "… resolution, input robustness (WI-345, WI-346, WI-347)\n\nWI-345: Bash 抽出ターゲットにファイル存在推定を拡張(不在 → CREATE → feature 判定)。\n新規ソース作成が MODIFY 既定で bugfix にすり抜ける WI-334 の残穴を閉塞。\n未展開シェル変数を含むパスは推定不能につき MODIFY 既定(安全側)。\nWI-346: hook 内 quick-mode composition root へ解決済み configPath / projectRoot を注入し、\nprocess.cwd() 依存\n[…]\nnull/非 object の未捕捉 TypeError を防御し、相対 ../ エスケープを\nresolve 後判定で絶対パス外部と対称化(プロジェクト内パスのゲートは維持)。\n\nWork-Item: WI-345\nWork-Item: WI-346\nWork-Item: WI-347\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: harden pre-tool-use hook — Bash CREATE inference, config…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T12:20:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "50c9a56bd6e5c64ff9aafb92a79e48f4e39a8823",
          "body": "… (WI-344)\n\nリダイレクト抽出が fd 複製(2>&1 / 1>&2 / >&2)の & を書き込み先と誤認し、\nread-only コマンドが bugfix 非許可 config で exit 2 誤ブロック・許可 config でも\nWrite 偽装でゲート対象化されていた問題を修正。& + 数値は fd 複製として除外し、\n>& file(csh 形式)と N> file の実ファイルリダイレクトは安全側で抽出維持。\n\nWork-Item: WI-344\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: exclude fd duplication from bash write-target extraction…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T12:20:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c118b69c4437e63a3a840be57cff63901cfd43a5",
          "body": "…ly running all layers (WI-342)\n\n--layer が as cast 素通しで L9 等の不正値が黙って全レイヤー実行になる非対称を修正。\nparseValidateLayer で {L0, L2, L3, L4, all} を検証し、不正値は有効値一覧つき exit 2、\nL1 は npx phasegate lint への案内。旧挙動をピンしていた cli-harness E2E も新仕様に更新。\n\nWork-Item: WI-342\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: reject invalid validate --layer values instead of silent…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T10:50:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8c59eaf547391bc3098ee0a433d0b93edb767b9e",
          "body": "…coverage (WI-341)\n\nmatrix adapter が旧辞書スキーマのみ対応で、phasegate:generate-matrix の実出力\n{version, stories:[...]} に対し常に Story not found となる producer/consumer 分裂を修正。\nstories 配列から total/covered/uncoveredIds を導出し、旧形式は後方互換維持。\n--json 指定時のエラー出力も JSON 化。\n\nWork-Item: WI-341\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: read generate-matrix v1.2 stories format in skill:check-…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T10:50:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "63952b0d0f982d88fe74c15ff5d31f1e977817a5",
          "body": "… claude-context target (WI-340, WI-343)\n\nhusky-pre-commit-missing のパターン表に正規サブコマンド phasegate pre-commit と\n$PHASEGATE_CMD 系を追加し false positive を解消(旧エントリは後方互換維持)。\nclaude-context-missing は照合を /phasegate/i 化し、finding target を\ninstallationMode(doctor の manifest 判定を check へ供給)で実修復先に出し分け。\n\nWork-Item: WI-340\nWork-Item: WI-343\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: doctor installation checks — husky pattern staleness and…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T10:50:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "360ea6a91711a19b749e6b58ba7cf9c78dd61d77",
          "body": "…ry (WI-339)\n\nstatus の layer 集計が raw passed のみを見て warning 降格を無視し、\nvalidate/ci-check/complete-check と判定が割れる WI-332 未カバー経路を修正。\n集計前に CiCheckResult 投影で実効 passed へ正規化し、経路間一致 regression に\nstatus を第 4 経路として追加。error severity の fail 維持もテストで pin。\n\nWork-Item: WI-339\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: apply effective severity to phasegate:status layer summa…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T10:49:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d2aec940ad13e2f4b8c070ec3e237d3450ea4a9e",
          "body": "…ormat in plan documents (WI-338)\n\nQA 認識をスキル実書式(## 4. QA(...) / ### [Question] / [Answer])に対応させ、\nissue #33 の Level 2+ フェーズゲート・デッドロックを解消。本文なし [Answer] は\n未回答扱いを維持(ゲート意味論の弱体化なし)。旧書式は後方互換。\nあわせて WI-337/338 のテスト名一意化で真に解消した WCR-005 の repaid entry 25 件を\nADR-035 手順どおり world baseline から削除(adopted legacy 604→579)。\nsession-start の件数ピンは baseline 導出に変更。\n\nWork-Item: WI-338\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: recognize numbered QA headings and [Question]/[Answer] f…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T09:55:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "deb4335ee9207c1a3f7d1021a8a5e0a37dee61bb",
          "body": "…rity enum mismatch (WI-337)\n\nseverity enum を実データに合わせ 6 値(trivial/normal/medium/high/critical/major)へ拡張。\n複数 WI 走査はパース不能 WI を原因ファイルパス付き warning でスキップし全体クラッシュを廃止。\n既存 WI 文書 5 件の id: 欠落を正規化。H03-04 の重複 it 名を一意化(WCR-005 の真の返済、\nbaseline 削除は WI-338 側で同一変更セットとして実施)。\n\nWork-Item: WI-337\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: stop work-items:status / bypass:audit full crash on seve…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T09:54:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "000e42f8e8740c1edc76abd48a12dd4a83213c3e",
          "body": "…eck-repetition exit codes (WI-336)\n\nci:migrate-agents-md --validate-only が AGENTS.md を実書込する DI 注入漏れと、\nci:check-repetition --reset の silent no-op(同型の注入漏れ)を composition root で修正。\nexit code を escalated 基準(記録なし=0/エスカレーション検出=1)に正し、--code 欠落は\nusage エラー化。配線 regression は composition-root 経由テストで固定。\n\nWork-Item: WI-336\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: inject missing ci-governance handler deps and correct ch…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-21T09:54:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2113acd9ba7a0c21aadbb183cc1696ea844f459c",
          "body": "…-331)\n\nWI-331 の CLAUDE.md テンプレート構造修正は integrity pin (WI-254) の\n保護対象であり、意図的変更として digest を更新。CI の integrity:verify\nが正しく drift を検出した(ゲートの実戦検出)。\n\nWork-Item: WI-331\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: re-pin integrity manifest for WI-331 template change (WI…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-18T00:41:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "019ef7780f7868b230e0c97b10be62b2cb4a8e30",
          "body": "HarnessError に optional remediationType を導入し代表 validator を分類。\nmechanical 宣言のエラーは「案内を機械適用→再実行→pass」の往復テストで\nCI 保証し、suggestion 文言と実挙動の乖離(#37/#39 型)を機械検知する。\n\nWork-Item: WI-335\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] feat: mechanical remediation round-trip guarantee (WI-335)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-18T00:21:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2348a2c299909e3fd88ad64d9807f5c7c99b27b0",
          "body": "lockfile なしの最新依存解決で release-smoke を週次実行し、上流ドリフト\nによる新規インストール破壊を早期検知する。失敗は [canary] issue に集約\nしリリースは止めない(凍結解決の release gate との 2 層分離)。\nWI-334 の分類修正により正規経路で配置。\n\nWork-Item: WI-329\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] feat: add weekly release canary workflow (WI-329)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-18T00:05:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1e70b0827e736f1929e511d319bc6cde684e1f34",
          "body": ".github/workflows/*.yml の CREATE が feature フォールバックに落ちて\n正規解除不能なブロックになる取りこぼしを WI-261 同型の明示分類で修正。\nCLI の changeKind もファイル存在で推定し hook 判定と統一(hook の Bash\n経路は従来挙動を維持)。\n\nWork-Item: WI-334\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: classify CI workflow files as config category (WI-334)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-18T00:04:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "92508b2c1cf54880893a2acaf1974f3b5558b422",
          "body": "config 不在(ENOENT)で hook が exit 2 になり config 作成 Write まで\n遮断する自己修復デッドロックを解消。ENOENT のみ警告+既定値で fail-open、\n他の fs エラーは throw 維持。gated 書込の fail-closed は phase-gate 側の\n独立 load で維持されることをテスト固定。ADR-038 G1 解消。\n\nWork-Item: WI-333\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: fail-open hook config adapter on missing config (WI-333)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T23:57:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fc8aaccb56c4bc2f9754576849df7842b27be5b6",
          "body": "…licy (WI-330)\n\ndoctor に config-status check を追加し config 不在/不正の GREEN 誤報告を\n解消(missing=warn, invalid=red, configStatus を JSON/human に明示)。\nconfig 状態×操作クラスの許可表を ADR-038 として仕様化し、既知ギャップ\n(G1: missing 時の hook 全遮断デッドロック)を記録。G1 は WI-333 で修正。\n\nWork-Item: WI-330\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: surface config status in doctor and codify permission po…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T23:47:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4d44eb2d56df85809bf124996b58e08c609c0302",
          "body": "…WI-332)\n\nisEffectivelyPassed を effective-severity-policy.ts に一本化し、\nvalidate 集約・CiCheckResult・pre-commit の全経路で共有。pre-commit の\nwarning-only failure は ADR-017 どおり exit 0 に統一。3 経路の実効判定\n一致を assert する横断 regression で将来の乖離を機械検知する。\n\nWork-Item: WI-332\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: single-source effective severity across all gate paths (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T23:42:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a0dc2fd8239ce3dc90630cdbd3bb5352cab3893",
          "body": "#35 の根本原因(user-section が managed block 内側にある構造非対称)を\n解消し AGENTS.md と対称に。旧構造は本文保持のまま外側へ移設する冪等\nmigration を install/reconcile/refresh 全経路に実装、byte 同値で固定。\n\nWork-Item: WI-331\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: move CLAUDE.md user-section outside managed block (WI-331)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T23:42:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "17ae4ffca13f17f9516f2124a799b8a184030aa9",
          "body": "…I-329)\n\nnpm pack した tarball を純 Python / Go monorepo / docs-only fixture に\nクリーンインストールし install→doctor→validate→uninstall を実走する\nrelease-smoke E2E と CI job を追加。通常 suite では env ガードで skip。\n#34/#36/#37/#39 型の実分布欠陥をリリース前に検知する。\n\nWork-Item: WI-329\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] feat: real-distribution release gate via tarball smoke E2E (W…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T23:41:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "df96d82d8da8d090a60490e66d10f27c7bd6bbef",
          "body": "言語自動検出(WI-319/320)の結果を phasegate:status の JSON に\nlanguages: { effective, source } として表示。解決ロジックは\nresolveProjectLanguages() に一本化し validator 判定と常に一致させる。\n\nWork-Item: WI-328\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: surface effective languages and source in status (WI-328)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:16:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d5b67054abad76c1a3e2f82b515c0d567a6e0252",
          "body": "…WI-327)\n\nv2/v3 スキーマの top-level required を [\"project\"] に緩和し、省略\nセクションはプリセット解決の deepMerge が補完。セクション内検証は\n不変で、不正値 config の exit 2 は spawn E2E で固定。\n\nWork-Item: WI-327\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: accept minimal project-only config via preset defaults (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:13:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "46ad2ae11c25b60b00db019442de27025cfaf2bd",
          "body": "install 時の --with-husky/--with-ci/personal を manifest の optional\ninstallationFlags に記録し、reconcile が明示指定 > manifest > 従来挙動\nの優先順で target を構成。旧 manifest は推測なしで従来挙動を維持。\n\nWork-Item: WI-326\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: persist install flags in deployment manifest (WI-326)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:12:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cbb5f71dbd239f0310c74598dd7de61a3817bbb4",
          "body": "matrix 不在かつ StoryCatalog の story ゼロのみ skipWithReason で透過\nSKIP にし、導入直後のオンボーディング阻害を解消。story が存在する\nmatrix 不在や判定不能時は従来どおり fail-closed を維持。\n\nWork-Item: WI-324\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: skip L3-004 on fresh projects with zero stories (WI-324)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:09:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b834b6b78594dc384275950b98bb431e35ffad4",
          "body": "…-323)\n\nstop hook の session_id 欠落 exit 2 を WI-314 方針に整合させ、\nstop / post-tool-use を警告 + skip-event 記録 + exit 0 の fail-open に。\nゲートである pre-tool-use は fail-closed を維持し回帰ガードで固定。\n\nWork-Item: WI-323\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: fail-open non-gating hooks on missing payload fields (WI…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:03:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae809f1f885f9664c9488ae94f0f32faec56cf24",
          "body": "config なし環境の DEFAULT_CONFIG fallback が coverageThreshold 90 で\nカバレッジゲートを強制していた矛盾を WI-317 の opt-in 思想に整合。\nプリセット定義は不変。fallback 経由の L3-003 透過 SKIP を回帰固定。\n\nWork-Item: WI-322\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: default coverageThreshold fallback to opt-out 0 (WI-322)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:03:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0479bf99d96b7f2ed01b431bdd8558cb1b98b95d",
          "body": "…WI-321)\n\ncomplete-check の JSON 出力が warning 件数のみで内容不明だったのを、\nci-check と同じ CiCheckResult data ペイロードを pass/fail 双方で返す\n対称形に修正。判定ロジック・exit code は不変。\n\nWork-Item: WI-321\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: include warning details in complete-check data payload (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:02:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4c0af942012c18af357680691992324f0f30237e",
          "body": "… path (WI-325)\n\nload 経路の JSON パース失敗が \"Failed to persist config\" と誤表示されて\nいたのを、ConfigPersistenceError のサブクラス ConfigParseError で分離。\ninstanceof 判定による WI-314 fail-open は無変更で互換維持。\n\nWork-Item: WI-325\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: separate ConfigParseError from persistence error on load…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T13:00:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6e590be9f1878ea4a2a852592303a8f6d3c45724",
          "body": "…320)\n\nScenario verification of WI-319 showed its filesystem language\ndetection never ran through the real CLI: three upstream spots injected\n[\"typescript\"] before the validator-system adapter could see\n\"undeclared\" — preset resolution (the live wire path), the\nvalidator-system config mapper, and th\n[…]\n skips L3-003 as\nunsupported-language, and an explicit [\"typescript\"] declaration keeps\nthe coverage gate active.\n\nFixes #39.\n\nWork-Item: WI-320\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: let undeclared languages reach filesystem detection (WI-…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T10:53:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bd6364f995b390569271a80b3377525a677a51a3",
          "body": "getProjectLanguages() fell back to [\"typescript\"] whenever the config\ndid not declare project.languages, so a pure-Python repository was\ntreated as TypeScript by default: the TS-only validators (L3-002,\nL3-003, L4-003) ran, L3-003 demanded a vitest coverage report, and\nnothing pointed the user at th\n[…]\no detections keep the\nhistorical typescript fallback, so ambiguous JS-only repositories\nbehave exactly as before.\n\nFixes #39.\n\nWork-Item: WI-319\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: detect project languages from filesystem markers (WI-319)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T10:18:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fc3c16930573ee48cd116fc24a19ff40b21b7013",
          "body": "phasegate:complete-check aggregated raw validator.passed values, so a\nwarning-only failure exited 1 while validate --layer L2 exited 0 for\nthe identical state. Since the Stop hook gates on complete-check, the\nL2-016 ungated-legacy marker — whose entire purpose is downgrading\nerrors to visible warnin\n[…]\nd as failures. Lint failures still exit 1.\nvalidate, ci-check, and complete-check now share one domain predicate.\n\nFixes #38.\n\nWork-Item: WI-318\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: apply severity-aware aggregation to complete-check (WI-318)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T10:18:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f462f85b638ef6cb27c875a86c18257a33c6007",
          "body": "… (WI-317)\n\nL3-003 documented the coverage gate as opt-in and skipped on\nthreshold === null, but that branch was unreachable from real configs:\nevery preset defines coverageThreshold, omitting the key inherits the\npreset value through deepMerge, and the schema rejects null. Setting 0\ndid not help ei\n[…]\nrageThreshold: 0, or declare project.languages for\nnon-JS/TS projects so the language gate skips L3-003 entirely.\n\nFixes #37.\n\nWork-Item: WI-317\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: make the coverage gate opt-out reachable via threshold 0…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T10:17:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3456ac874fc8273adbd0c81730da9e58223beb09",
          "body": "…I-316)\n\nThe install command accepted both flags in KNOWN_INSTALL_FLAGS and\ndocumented them as \"Include ...\" targets, but never read them: the\nwiring was includeHusky/includeCi = !personal, so every non-personal\ninstall --apply wrote .husky/* and the GitHub Actions workflow\nunconditionally. init and\n[…]\n covering both the flagless and flagged paths. The\nRunInstallUseCase programmatic default (?? true) is unchanged.\n\nFixes #36.\n\nWork-Item: WI-316\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: honor --with-husky and --with-ci in phasegate install (W…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T10:17:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "62353531341a263407a683d310a54773397d258d",
          "body": "…econcile (WI-315)\n\nThe CLAUDE.md template nests the phasegate:user-section inside the\nmanaged section, so the wholesale managed-block replacement in\nmergeManagedMarkdown/reconcileManagedMarkdown silently replaced\nuser-authored instructions with the template placeholder on every\ninstall --apply or r\n[…]\nlacer function so user text containing $-sequences is not\ninterpreted as substitution patterns by String.replace.\n\nFixes #35.\n\nWork-Item: WI-315\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: preserve the CLAUDE.md user-section across install and r…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T10:16:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ac96d58da7bfdd692aa4c349c9b13ca2f80585d7",
          "body": "A schema-invalid phasegate.config.json used to exit 2 before command\ndispatch, so every command died — including `doctor` and `phasegate\nhook pre-tool-use`. With the hook wired into Claude Code that blocked\nBash/Write/Edit entirely, including the edit that would repair the\nconfig: a self-repair dead\n[…]\nnfig file, doctor surviving with the error reported,\nvalidate staying fail-closed, and broken-JSON hook survival.\n\nFixes #40.\n\nWork-Item: WI-314\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: keep hook and doctor alive under an invalid config (WI-314)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T09:43:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0452de9a00f022e5b422a5734a51c629f1f23a6e",
          "body": "npm's automatic peer installation resolves \">=5.0.0\" to typescript@7,\nwhose \".\" export exposes only the version string — the classic compiler\nAPI (ts.ScriptTarget, ts.ModuleKind) that four adapters import is gone,\nso every command crashes with \"Cannot read properties of undefined\n(reading 'ESNext')\"\n[…]\nScript\nand pin the range with a packaging contract test. Migrating to\ntypescript/unstable/* is a separate effort.\n\nFixes #34.\n\nWork-Item: WI-313\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: restrict typescript peer range below 7 (WI-313)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T09:35:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "28679e4ed66ddb10a433300d861015a1ab29f670",
          "body": "With the checkout-state-dependent tests fixed (WI-310/311), CI reached\nthe ci-check step for the first time in the current chain and exposed\nthe next latent gap: L3-003 requires a coverage report for its 90%\nthreshold, but the workflow had never generated one — it ran a plain\n`pnpm test` since its i\n[…]\nfy-attestation exit 0, integrity clean.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-312\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] ci: generate coverage before L3 validation (WI-312)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T05:58:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "227744d282e433fe3eea1e7a652cdb99f5940c0c",
          "body": "Three cli-harness/adapter tests had failed on CI since before Phase C\n(visible in the v0.254.0 run) while passing locally. The shared root\ncause was implicit fixtures: the lint-adapter test scanned whatever\nprocess.cwd() held, and the ci-check / complete-check E2Es asserted\nexit codes that assume th\n[…]\n/ 0 violations, L2 and L3 overall PASS.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-311\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] test: isolate CI harness tests from checkout state (WI-311)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T04:46:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df05fbb964328e4e4a80896bac2c54d8b5ae71a4",
          "body": "The WI-308 regression test asserted that this repo's live\n`validate --layer L2 --json` output exceeds 64 KiB — true locally only\nbecause the untracked requirement-test matrix feeds L2-017 its 604\nadopted-legacy warnings. CI runs tests before matrix generation, the\noutput shrank to 1.8 KB, and the fi\n[…]\ncases pass, full cli-harness E2E 62/62.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-310\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] test: make the large-stdout regression test hermetic (WI-310)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T04:39:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "634c92eb6d66434f542ff4c3e69e9db2bff10baf",
          "body": "…WI-309)\n\nWI-305 implemented and wired DesignChangeDeclarationPolicy into\nvalidator-system but missed the cumulative WI-305 reflection in that\nunit's domain_model.md — an honest gap the story-reflection corpus IT\ncaught as a baseline-exceeding violation during CP-5 verification.\n\nThe domain model no\n[…]\n-STORY-REFLECTION) and L3 overall PASS.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-309\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: restore the WI-305 validator-system domain reflection (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T02:33:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0c7b34d800efa1a2f2d37ebc845f50eee43353ce",
          "body": "Enabling World enforcement in the self repo (WI-303) grew\n`validate --layer L2 --json` past 64 KiB — 604 adopted-legacy warnings\nnow ride in the JSON — and exposed a latent CLI defect: process.exit()\nimmediately after console.log does not wait for the piped stdout queue,\nso consumers received JSON t\n[…]\nSS,\nstory-reflection corpus unaffected.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-308\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: drain large CLI stdout before exit (WI-308)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T02:33:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8ab63188e053c423a260a2a2320c8ef854263ac5",
          "body": "…he regression suite (WI-307)\n\nExecutes WM-24 of the WI-280 delivery plan (H17-19), the final Phase C\nwork item. The self-repo CI now runs the CP-5 order — test, matrix\ngeneration, a World derive determinism step that runs the pure command\ntwice and compares raw bytes, the L3 check (including the L3\n[…]\nests green, L2 8/8 and L3 overall PASS.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-307\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] ci: integrate the World trust chain into CI, templates, and t…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T01:30:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e1342a65227ff3468b9b605c9322aa8f56a5f7c0",
          "body": "Executes WM-23 of the WI-280 delivery plan (H17-18). Attestation\ndocuments gain a v2 envelope (`phasegate-attestation/v2`,\n`.../gate-run/v2`) whose top-level `worldSnapshotRoot` carries the\nWorld corpusRoot as a SHA-256 string inside the canonical signing\nsurface, so an attestation now commits to th\n[…]\nr E2E pass, L2 8/8 and L3 overall\nPASS.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-306\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: pin the World snapshot root in attestation v2 (WI-306)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T00:50:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3beb0b9e3e8c3a6d28614317f6162106d0c25001",
          "body": "…me (WI-305)\n\nExecutes WM-22 of the WI-280 delivery plan (H17-17), wiring design\nchange events into the existing commit-msg path. When a staged change\ntouches a design fragment that is a pinned endpoint of an explicit\nWorld constraint, the pre-commit integration now requires the commit\nto declare th\n[…]\nrall PASS with the world gates enabled.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-305\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: validate pinned design-change declarations at commit ti…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-17T00:29:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e61f7b9cb3330661ec39aa4798584c80ce87aba8",
          "body": "Executes WM-21 of the WI-280 delivery plan (H17-16). The SessionStart\nhook now prepends a World open-obligations summary built through an\nagent-integration-owned query port, plain DTO, use case, and formatter,\nwith a world-model query adapter that goes through the public facade\nand re-derives purely\n[…]\nrall PASS with the world gates enabled.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-304\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: summarize open World obligations at session start (WI-304)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T23:57:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d46c2db99a9da3efbb89f5980bdded01f7edb38f",
          "body": "CP-4 (enforceable MVP) passed on this checkout: full suite 636 files /\n4,657 tests green, mutation E2E and integrity clean, L2/L3 running 8\ncontracts each with both world gates skipping under the disabled\ndefault. With the WM-20 measurement showing both gates complete in\nunder a second each with 604\n[…]\ned: L2-017 WARN / overall\nPASS, L3-008 WARN / overall PASS, self-repo dogfood IT and validator\nusecase suites 99 tests green.\n\nWork-Item: WI-303\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: enable World enforcement in the self repo (WI-303)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T23:30:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "259532748524fb2994a53198b80333b085d78083",
          "body": "…ate (WI-302)\n\nExecutes WM-20 of the WI-280 delivery plan (H17-15), completing the\nenforcement pair that makes the World Model an enforceable MVP. L3-008\nworld-constraint-rederivation joins the validator registry and RunL3\nwiring with its own port, service, and adapter, and re-derives\nobligations pu\n[…]\nes skipping under the disabled default.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-302\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: register the L3-008 authoritative World re-derivation g…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T23:21:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b0e5a1bbe4d4e2deb7161af9c5417fddb8abb60a",
          "body": "…h (WI-301)\n\nExecutes WM-19 of the WI-280 delivery plan (H17-14). L2-017\nworld-constraint-admission joins the validator registry and RunL2\nwiring as the local fast-path over World constraint declarations,\nconsuming the WM-18 config projection: with `world.enabled: false`\n(every preset's default, inc\n[…]\nder the disabled default), L3\nall-PASS.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-301\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: register the L2-017 World constraint admission fast-pat…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T22:50:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d1562d2698ba272aa240f4d121350f2233381825",
          "body": "…g (WI-300)\n\nExecutes WM-18 of the WI-280 delivery plan (H17-13), opening Phase C.\nThe `world` key joins the config v2/v3 schemas with the ADR-037\ncontract intact: every defense preset (minimal/standard/strict)\ndefaults to `enabled: false`, and explicit `world:*` CLI commands run\nregardless of that \n[…]\nal double runs\nafter the config change.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-300\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: add the world config surface and resolved config mappin…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T22:25:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "785ceed3d11ebf07775fd1a496cff948d342df86",
          "body": "…-299)\n\nThe World Model functional MVP (WI-281..298, v0.231.0-v0.253.0) landed\nwith zero user-facing documentation: README.md, README.ja.md, and\ndocs/guide/cli-reference.md contained no mention of it. This change\ncloses that gap without touching any source or gating behavior.\n\nREADME.md and README.j\n[…]\nis caught up. Verified: validate --layer L2 green (only the declared\nL2-016 ungated-legacy warning), integrity:verify exit 0.\n\nWork-Item: WI-299\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: surface the World Model in README and CLI reference (WI…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T21:24:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "48760d98679d9dca60748e0dd4109c3fecb2e178",
          "body": "… debt (WI-298)\n\nExecutes WM-17 of the WI-280 delivery plan (H17-12), completing the\nfunctional MVP scope. The initial structural violation set was measured\nper the ADR-031 procedure — double derivation over the clean corpus\nyielding byte-identical candidate sets — landing at exactly 604\nfingerprint\n[…]\nL2 7/7, L3 all-PASS, check-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-298\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: adopt the self-repo World baseline and declare semantic…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T16:46:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c786c642b27d10487ebb94146a6b8667dc9ea24",
          "body": "…WI-297)\n\nExecutes WM-16 of the WI-280 delivery plan (H17-11), locking the CP-3\nverification surface into fixtures. A repository-shaped base corpus and\nfourteen mutation scenarios with golden fingerprints cover every CP-3\ncase: missing endpoints, content drift on either endpoint, deletion and\nrename\n[…]\nL2 7/7, L3 all-PASS,\ncheck-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-297\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] test: synthetic World mutation fixtures and determinism E2E (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T16:29:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4bc745759dc4cc4c6af50710931d335cb6c878fa",
          "body": "Executes WM-15 of the WI-280 delivery plan (H17-10), the second CLI\nhotspot landing. world:pin previews ConstraintRecord pin candidates by\ndefault and mutates phasegate.world-constraints.json atomically only\nunder --apply, refusing to write on missing, duplicate, ambiguous, or\nmalformed endpoints; w\n[…]\nL2 7/7; L3 all-PASS;\ncheck-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-296\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: world:pin and world:derive CLI integration (WI-296)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T16:11:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "33e3ec9ae46cfe373cb5f2b986104ee9a7fd347e",
          "body": "Executes WM-14 of the WI-280 delivery plan (H17-09) — the application\nintegration point of Phase B. Adds the ADR-035 violation fingerprint\nderiver (ten-field canonical preimage bound to the ruleset version,\nwith sorted candidate digest multisets for WCR-005 and no locators,\nmessages, or evaluation I\n[…]\n/7, L3 all-PASS,\ncheck-ready all green.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-295\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: deterministic World obligation derivation (WI-295)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T15:46:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "de711be252a7678cb857da216978aaa80e2373d9",
          "body": "…ories (WI-294)\n\nExecutes WM-13 of the WI-280 delivery plan (H17-08). Publishes the four\nfail-closed control schemas ruled by ADR-037 §3 —\nphasegate.world-{constraints,baseline,waivers,debts}.json with\nphasegate-world-*/v1 schema versions — under docs/contracts/, and adds\nthe application-owned repos\n[…]\nnd is left for a separate repayment WI.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-294\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: versioned World control-declaration schemas and reposit…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T15:25:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e7f58331a4ea9f13f31df4a8bb7f0222cc41f6f",
          "body": "Executes WM-12 of the WI-280 delivery plan (H17-07), opening Phase B.\nAdds the immutable ConstraintRecord entity (constraintId, fact type,\nclaimant/premise NodePins, sorted applicable rule IDs, declaration\nprovenance), the NodePin and non-causal ChangeProvenance value objects,\nand the policy-free co\n[…]\nL2 7/7, L3 all-PASS, check-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-293\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: World constraint records and the WCR evaluator (WI-293)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T15:04:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "03f9df82e7359c22a00553cc9697201949f736bd",
          "body": "…te (WI-292)\n\nCloses the CP-2 blocker discovered when the regenerated matrix exposed\n33 uncovered ACs from the not-yet-implemented Phase B stories\n(H17-07..H17-12) registered by WM-05. Investigation confirmed the repo\nhad no mechanism for registered-but-unimplemented stories — every prior\nepic lande\n[…]\nn,\nL1 clean, L2 7/7, check-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-292\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: planned/required story coverage lifecycle for the AC ga…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T14:41:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "308cc7a797bea2a5164929b191dbd88a7f055682",
          "body": "…LI (WI-291)\n\nExecutes WM-11 of the WI-280 delivery plan (H17-06) — the visualization\nmilestone. Adds the world-model application layer (BuildSnapshot and\nInspectWorld use cases over a consumer-owned fact-source port), the\ncomposition root and public index wiring all Phase A extractors\ntogether with\n[…]\ne; L1 clean, L2 7/7,\ncheck-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-291\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: assemble the World snapshot and add the world:inspect C…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T14:14:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3278ab4176bf0726cf335839221cbdc36eed2c3a",
          "body": "Executes WM-10 of the WI-280 delivery plan (H17-05), completing the\nPhase A extractor surface. Adds infrastructure extractors for\nimplementation and test source files (deriving @unit/@layer/\n@work-item-id metadata facts with missing/ambiguous-metadata\ndiagnostics), the requirement-test matrix (owner\n[…]\nall stories. CP-1\nverification is next.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-290\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: World runtime and evidence fact extractors (WI-290)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T13:36:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1c940a4dd126b0dabcaa748510b4a38890cba74b",
          "body": "Executes WM-09 of the WI-280 delivery plan (H17-04). Adds the\nworld-model infrastructure extractors for the design corpus — product,\ninception/proposal, ADR, and unit-definition facts — built on a shared\nmarkdown design-fact extractor implementing the ADR-032 rules:\n@world-fragment-id markers bound \n[…]\nith 81 diagnostics retained losslessly.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-289\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: World design corpus fact extractors (WI-289)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T13:14:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fcca51633b2c568bbda96bfc4aef53f0d5127ead",
          "body": "…(WI-288)\n\nExecutes WM-08 of the WI-280 delivery plan (H17-03). Adds\nTraceabilityWorldReadFacade with plain read DTOs for Units, Stories,\nacceptance criteria, WorkItems, and file-level test references, wired\nthrough a consumer-facing source port and a filesystem adapter plus a\nstructured story-catal\n[…]\n 87 stories / 432 ACs / 270 work items.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-288\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: traceability-model plain DTO read facade for the World …",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T12:48:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e842627f05369e08035dbe57cb55c3c674d43bb6",
          "body": "Executes WM-07 of the WI-280 delivery plan (H17-02) — the first\nworld-model source slice, domain layer only. Implements the pgw:v1\nidentity codecs for every ADR-032 node form (WorldNodeId with\nnode-type-specific parsing, PathKey, DeclaredKey, Sha256Digest,\nCorpusRole, ArtifactKind), the WorldNode/Ed\n[…]\nce; L1 lint, L2 7/7, check-ready 88/88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-287\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: World domain primitives and canonical snapshots (WI-287)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T12:28:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6a75e27ffb829cf53314c7711460ba9dd775f5e0",
          "body": "…nit designs\n\nRepairs the 24 story-reflection violations surfaced by the\nstory-reflection corpus test after the WI-281..284 ADR work items\ndeclared cross-unit affects without product reflection. Each affected\nunit's logical_design.md now carries @work-item-id annotated sections\nderiving the concrete\n[…]\n88.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator). Documents only — no source changes.\n\nWork-Item: WI-281\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: reflect the Phase 0 World ADR contracts into affected u…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T12:07:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0e3d99590380ee0b6016637989ac073fe8f98272",
          "body": "… attestation facade (WI-286)\n\nExecutes WM-06 of the WI-280 delivery plan (H17-01), implementing the\nADR-033 §8 hashing ruling. The existing node:crypto SHA-256 primitive\nmoves from NodeCryptoContentHasherAdapter into a new\nNodeCryptoSha256Capability behind the plain public contract\nSha256Capability\n[…]\nor immediate repair in the next commit.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator).\n\nWork-Item: WI-286\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: expose a Unit-independent SHA-256 capability behind the…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T11:55:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7e2d5052c8af199cdb241ce692c59ca70c369233",
          "body": "… (WI-285)\n\nStep B of WM-05, completing Phase 0 of the WI-280 delivery plan. Adds\nEpic H17 with twelve stories (H17-01..H17-12) mapping one-to-one onto\nthe WM-06..WM-17 implementation milestones, registers the world-model\nUnit as a federated read model (fact assembly, canonical snapshots,\npolicy-fre\n[…]\nss.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator). Documents only — no source changes.\n\nWork-Item: WI-285\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: World Model product catalog and construction foundation…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T11:30:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2680606127f930a8383726f2123b5b66884c3ecf",
          "body": "…ilenames (WI-285)\n\nStep A of WM-05 under the WI-280 delivery plan, executing the ADR-031\nruling. All 13 hyphen/underscore duplicate pairs in docs/product/units/\nare collapsed: unique content and traceability annotations from the\nunderscore variants (including the WI-168 annotations that existed onl\n[…]\nes.\n\nExecuted by GPT-5.6 sol (Codex CLI), reviewed and approved by Claude\n(orchestrator). Documents only — no source changes.\n\nWork-Item: WI-285\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: canonicalize the Unit definition corpus to kebab-case f…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T11:06:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a650d3cae7ca4f0f7e17c5ca54fdaab4de99c7f1",
          "body": "…-284)\n\nFourth and final ADR under WM-04 of the WI-280 delivery plan,\ncompleting Phase 0 decision-making. Fixes three top-level commands —\nworld:inspect (read-only), world:pin (preview by default, --apply\nmutates the reviewed constraints declaration), and world:derive (pure\nby default, --write persi\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-284\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-037 — World CLI and output/persistence contract (WI…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T10:51:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d6c5d5a838924ea566a6ab09b1c6f2fb7562955c",
          "body": "…oc freshness (WI-284)\n\nThird of four ADRs under WM-04 of the WI-280 delivery plan. Records the\nverified current state of L4-004 (an active validator wired through the\nregistry, composition root, and RunL4 — merely disabled by self-repo\ndogfood config, not removed) and separates responsibilities: L4\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-284\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-036 — coexistence of World constraints and L4-004 d…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T10:40:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c401fbfe502b2b2a971fa8bd19d2af4bfbbd985",
          "body": "…vers (WI-284)\n\nSecond of four ADRs under WM-04 of the WI-280 delivery plan. Separates\nconstraint identity, violation identity, and obligations: the\nviolationFingerprint (pgw:v1:violation-fingerprint:sha256:*) is built\nfrom ruleset version, WCR rule ID, constraint ID, endpoint pins, and\nrule-owned e\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-284\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-035 — World adoption baseline, obligations, and wai…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T10:33:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "255600a87b8953f22c01872b6f8653a0f3108133",
          "body": "…tric evaluation (WI-284)\n\nFirst of four ADRs under WM-04 of the WI-280 delivery plan. Keeps\nconstraint facts typed and directed (claimant -> premise) while making\nevaluation endpoint-symmetric: a change on either endpoint re-evaluates\nthe same constraint. ConstraintRecords pin both endpoints with p\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-284\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-034 — World constraint semantics and endpoint-symme…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T10:21:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "46b74d8a679c8fb22f1b3577882e259c44dc52ba",
          "body": "… hashing (WI-283)\n\nExecutes WM-03 of the WI-280 delivery plan. Defines three separate\nderived identities — corpusRoot, constraintRoot, and evaluationId — so\nthe cause of a root change is attributable to corpus facts, constraint\ndeclarations, or evaluation inputs respectively. Fixes the canonical\nJS\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-283\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-033 — canonical World snapshots, version roots, and…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T10:09:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3aff80d150c6cc07199c1f2d424ff7d55d6fab7c",
          "body": "…282)\n\nExecutes WM-02 of the WI-280 delivery plan. Defines versioned World\nnode IDs (pgw:v1:*), separates path-based file identity from explicit\nfragment identity, and establishes deterministic Markdown fragment\nmarkers (@world-fragment-id in a heading's metadata prelude), the\nwhole-file -> mixed ->\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-282\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-032 — World node identity and fragment locator (WI-…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T09:55:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2cd86678f80f3aa034e97cfbc7863d6a026c69a4",
          "body": "…I-281)\n\nExecutes WM-01 of the WI-280 delivery plan. ADR-031 positions the\nworld-model as a federated read model: it observes traceability-model\nIDs/WorkItems/Stories via plain DTOs and public facades instead of\nduplicating them, owns fact assembly and constraint evaluation, and\nleaves gate executio\n[…]\nd by GPT-5.6 sol (Codex CLI) as executor, reviewed and approved by\nClaude (orchestrator). Documents only — no source changes.\n\nWork-Item: WI-281\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] docs: ADR-031 — World Model ownership and corpus lifecycle (W…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T09:38:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1d74fe4cd71cb742432aef12e322e9d3eff9507f",
          "body": "… constraint re-evaluation environment (WI-280)\n\nRecords the delivery plan for the World Model initiative: representing the\nproject world (Units, domain models, logical designs, stories, ACs, tests,\nADRs) as typed directed facts whose constraints are re-evaluated\nsymmetrically when either endpoint c\n[…]\nLI implements sequentially through WM-17,\napprovals delegated to the orchestrator, npm publish only at checkpoint\nboundaries.\n\nWork-Item: WI-280\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: World Model delivery plan — symmetrize phasegate into a…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T09:13:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7b11c0c01fdd1b85a2f67ed5f0e0442ba06c63ca",
          "body": "…tests and rebindings (WI-276)\n\nRepays 11 of the 12 rows WI-270 demoted in the phase-dependency-model\ncoverage report. Investigation showed most demotions were severed\ncross-references rather than missing behavior: the five UseCase rows and\nseveral ACs already had real passing tests that the launder\n[…]\nn main's\nunit+integration split), all green; L2 PASS and L3-004/005/007 PASS over\nthe regenerated matrix re-verified on main.\n\nWork-Item: WI-276\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: cover phase-dependency-model's demoted rows with real …",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T06:47:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2b920cb1ab9767cc5bf3e4b59613a040f82cbf81",
          "body": "…ed test IDs (WI-278)\n\nInvestigation resolved the UT-TM-001..041 mystery behind WI-270's\ndemotions: unit_test_design.md had assigned those IDs to the five value\nobjects all along, and the VO test files existed and passed — but carried\nno ID markers or @story annotation, so the citations resolved to \n[…]\neadline moves 81.3% to 96.9% (31/32). Suite 264 to 278 green on main;\nL2 PASS, L3-004/005/007 PASS on the regenerated matrix.\n\nWork-Item: WI-278\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: bind traceability-model's five VO rows to their design…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T06:46:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "acfb7b65693033fcf9269f1254107dd9b1e2d2b8",
          "body": "…-suite's demoted rows (WI-277)\n\nRepays all 13 rows WI-270 demoted in the regression-suite coverage report\nwith 31 new integration tests across 8 files: the seven infrastructure\nadapters are now exercised against the real filesystem and real data\n(IT-ADP-*), and the four cross-layer flows run throug\n[…]\ninput — all left for a\nstory-scoped fix. Suite grows 147 to 178, all green on main;\nL2/L3 (L3-007 included) PASS; lint clean.\n\nWork-Item: WI-277\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: real adapter and flow integration tests for regression…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T06:45:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1da4804cded1494374934a48cf75d5a395c1de32",
          "body": "…h real tests (WI-279)\n\nRepays two of the three rows WI-270 demoted in the harness-error coverage\nreport. The Severity immutability invariant gains two new domain tests\n(UT-HE-129/130: a frozen instance rejects value and rank reassignment and\nkeeps its original values), and the ADR-reference-on-viol\n[…]\nger or validation\nstep, so this is a source-side feature gap, out of scope for a test-only\nchange and recorded for follow-up.\n\nWork-Item: WI-279\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: cover two of harness-error's demoted coverage rows wit…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T06:38:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9f7a66816972722ba676f5112108e0b1b269ee9a",
          "body": "…ed attestations (WI-275)\n\nWith L3-007 live, coverage-report claims can finally be backed by\nmachine-verifiable references. Every checked claim row in five reports —\nci-governance, harness-error, phase-dependency-model, regression-suite,\ntraceability-model — was independently re-verified against the\n[…]\n. On main after landing: L2 PASS with the\nsingle expected warning, L3-007 PASS over the regenerated matrix,\ncorpus tests 3/3.\n\nWork-Item: WI-275\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: repay five ungated-legacy coverage reports with verifi…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T06:23:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7f909f6c6c5427b76caa4b3b7078db27d072be43",
          "body": "…ck hook (WI-273)\n\nThe git allowlist and its read/write guards (WI-253/269/271) were verified\nonly by hand-run probes at each change; nothing would catch a future edit\nquietly reopening a hole. A new integration test now drives the live hook\ndirectly — spawning bash with PreToolUse JSON on stdin, no\n[…]\ntested — WI-272's byte-identity\ntest anchors it to this verified live version. 66/66 green re-verified on\nmain after landing.\n\nWork-Item: WI-273\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: automated behavioral regression suite for the deny-che…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T05:50:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f92b3a7621c4757c6ee8478582c01a22652ff206",
          "body": "…WI-274)\n\nSweep of the pre-WI-265 L1 rule-code drift across all documentation. The\nsurvey found current-facing docs (DEVELOPMENT.md, guides, README family,\ntemplates, skills) already canonical — the only reader-misleading remnants\nwere the rule tables in ADR-001 and ADR-015, which now carry an appen\n[…]\nte error-code\nnamespace, unrelated to biome rule codes. The full classification is\nrecorded in the WI-274 inception document.\n\nWork-Item: WI-274\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: annotate historical L1 rule-code drift in ADR-001/015 (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T05:48:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d57d35bf4369ade047fbe903d5daa99e636f3ba0",
          "body": "…ity (WI-270)\n\nThe WI-267 verification proved four coverage_report files cited\nnonexistent test-case IDs as backing for their 100% claims. Following the\nskill-quality/ci-governance self-correction precedent, every cited ID was\nexhaustively re-checked against the real test tree and each report now\nst\n[…]\nrepped). Real suites all green: 202, 147, 347, and 272 tests\nrespectively; L2 overall PASS re-verified on main after landing.\n\nWork-Item: WI-270\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: correct four laundered coverage reports to verified real…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:53:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "893a8d50f02c6ae5905e26dcceda0a20eded0941",
          "body": "…it allowlist (WI-272)\n\nThe WI-269 audit found that templates/.claude/scripts/deny-check.sh — the\ncopy phasegate distributes to consumer repositories — predates the WI-253\ndefault-deny inversion entirely: no GIT_ALLOWED_SUBCOMMANDS, no subcommand\nextraction, none of the guards. Consumer projects wer\n[…]\n in this repo, which excludes\ntemplates/**; the drift test transitively anchors the template to the\npinned live hook instead.\n\nWork-Item: WI-272\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: sync the distributed deny-check template with the live g…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:52:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cf3ff5af18b1f32da2416b56c86e26e618bb4926",
          "body": "Follow-up to the WI-269 allowlist audit: config sat in the allowlist with\nboth read and write forms permitted, and its write form can re-point\ncore.hooksPath — disabling the entire L0 defence layer, a heavier symptom\nthan the symbolic-ref HEAD loophole.\n\ndeny-check.sh now adjudicates config in a ded\n[…]\nurns rc=0. Integrity manifest re-pinned for the\nedited hook in the same change set; hooks-integration.md documents the\nsplit.\n\nWork-Item: WI-271\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: deny git config write forms in the agent allowlist (WI-271)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:51:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e07a961f74fb5e75dadc79ff572ac9e6c000cfe1",
          "body": "…nerated test matrix (WI-268)\n\nSecond stage of the L2-016 attestation gate, per ADR-030's trust model:\nL2-016 checks only the shape of an @attestation comment, so a fabricated id\nwould go undetected — the gap that blocked honest repayment in WI-267.\n\nL3-007 (coverage-attestation-verification) closes\n[…]\nemonstrated live with a ghost reference before removal. On main: new\nsuites 26/26 green, L3 overall PASS with L3-007 passing.\n\nWork-Item: WI-268\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: L3-007 verifies attestation references against the rege…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:44:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f95e5f00c9da594ac13a115f3147291e4759d266",
          "body": "…WI-264)\n\nCloses the follow-up deferred in the 0.211.0 CHANGELOG entry: after the\nWI-256 catalog reshape removed three bundled skills, reconcile left their\ndirectories and manifest entries orphaned in consumer projects, requiring\nmanual removal.\n\nreconcile now plans a \"prune\" action for manifest ent\n[…]\nverified RED\nbefore GREEN plus a live sandbox run. The CHANGELOG migration note now\npoints at reconcile instead of manual rm.\n\nWork-Item: WI-264\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: reconcile prunes bundled skills that left the catalog (…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:34:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74470da4456dcf652cc50e6e70bbbcd93c27bdf3",
          "body": "…y (WI-265)\n\nThe domain registry canonically codes no-code-duplication=L1-006,\nno-ghost-file=L1-007, no-comment-flood=L1-008, but three consumers drifted\nthree rules out of order: the CLI display mapper (RULE_TO_CODE), the\nharness-error payload mapper (RULE_CODE_BY_NAME), and harness-error's\nl1-erro\n[…]\ned on main\n(the worktree's 77 subprocess-e2e failures reproduce only where\nnode_modules is absent, unrelated to this change).\n\nWork-Item: WI-265\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: realign L1 rule-code mappings with the canonical registr…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:33:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b76bd445d6c228f8ba6256321afabcebfa309921",
          "body": "… coverage reports (WI-267)\n\nAttempted repayment of the six ungated-legacy coverage_report files ends as\nan honest stop with zero markers removed, for two independently blocking\nreasons now recorded in the WI-267 inception document:\n\n1. No legitimate attestation issuer exists yet. L2-016 checks only\n[…]\nked by real\npassing tests. The markers stay as correct visible debt; remediation of the\nfour false reports is a follow-up WI.\n\nWork-Item: WI-267\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: record honest-stop verdicts for the six ungated-legacy…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:27:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5b71099a0eaa286d731b327c65e8dad1e7f806a1",
          "body": "… allowlist (WI-269)\n\nsymbolic-ref remained in GIT_ALLOWED_SUBCOMMANDS after the WI-253\ndefault-deny inversion, so its write form re-pointed HEAD exactly like the\ndenied checkout/switch family — and a parallel agent exercised it against\nthe main repository today (repaired by hand). Same shape as the\n[…]\nass risk), and the distributed template copy of this hook\npredates the WI-253 allowlist entirely and is not integrity-pinned.\n\nWork-Item: WI-269\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: close the symbolic-ref HEAD-mutation loophole in the git…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:26:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4dcb2523d24a4f5ceaa0fe0a0e290b33d5f180a6",
          "body": "…tput (WI-266)\n\nThe plain-text lint formatter truncates the violation list to three entries,\nand its \"... and N more\" line never restated the total, so operators reading\nthe list block undercounted violations versus --json's violationCount (the\nreal \"3 vs 11\" confusion from the v0.184.0 dogfooding).\n[…]\nnamed\ndisplayLimit. Regression tests cover the truncated, exact-limit, and empty\ncases; biome-ast-engine suite 260/260 green.\n\nWork-Item: WI-266\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: state the true violation total in truncated lint text ou…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:22:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fc3e0be7109c4f870d5c80a6c27f52eb234bda76",
          "body": "ADR-030 §Decision.3.① listed the integrity-pin targets as \"SKILL.md × 30\",\na remnant from before the WI-256 catalog reshape settled the bundle at 29\nskills (verified against skills/*/SKILL.md and the 39-entry\nphasegate.integrity.json). Factual count correction only; no other content\nof the Accepted ADR is touched.\n\nWork-Item: WI-263\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: correct ADR-030 pinned-target skill count to 29 (WI-263)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-16T04:18:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b2505bc0294601b51743c109a1c9bb741668af48",
          "body": "…elease (WI-262)\n\nREADME.md gains the month's user-visible changes: L2-016 coverage-attestation\ngate and layer-aware story-reflection on the L2 row, the L3-006 advisory\ninjection scan on L3, a new Security Posture section summarizing ADR-030\n(threat model, L3-CI trust root, five components, residual\n[…]\n and every referenced skill against skills/;\ngreps confirm zero stale-count, codex_hooks, or removed-skill references\nremain.\n\nWork-Item: WI-262\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: refresh README (en) and catch up README.ja to current r…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-15T10:34:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f81787d5ba367f35b67537789f7f319526b0c2c",
          "body": "…CI trust-root step (WI-254)\n\nActivation of the WI-254 integrity pin, deliberately deferred until the skill\ncatalog reshape (WI-255/WI-256) was committed so the first pinned manifest\nmatches the committed tree:\n\n- phasegate.integrity.json pinned over 39 instruction-carrying files\n  (29 SKILL.md, .cl\n[…]\nile must be\naccompanied by a re-pin in the same change set, which makes tampering visible\nin review and un-launderable in CI.\n\nWork-Item: WI-254\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] feat: activate instruction-file integrity pin — manifest and …",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-15T10:25:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1afad89c6ee1a76861e2064b16eca5b18760d533",
          "body": "…alth merge, release-publisher (WI-256)\n\nAdopts and completes the parallel session's approved catalog reshape\n(BREAKING for skill consumers; see CHANGELOG for the manual orphan-removal\nmigration):\n\n- Removed implementation-planner (its unit-identification, domain-model\n  review, existing-implementat\n[…]\nformance 29/29 with the 8-skill advisory pin green,\ninstallation+setup 92/92, lint clean, reflection corpus regression green.\n\nWork-Item: WI-256\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] chore: reshape skill catalog 30 -> 29 — planner merge, doc-he…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-15T10:24:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "479401ba35e948f2839c9d509475c653f1363e54",
          "body": "…ions, story-mapper handoff (WI-255)\n\nAdopts the parallel session's docs-only P3 batch (applied in the working\ntree, reviewed and landed by the orchestrator):\n\n- skill-creator/SKILL.md rewritten for phasegate's own skill conventions\n  (model:/review: frontmatter, canonical headings, Japanese test ru\n[…]\ncanonical heading\nstructure, and frontmatter contracts are unchanged; the skill-quality corpus\nconformance suite stays green.\n\nWork-Item: WI-255\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] docs: P3 docs batch — skill-creator rewrite, story-ID convent…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-15T10:24:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "997fe7963bda0c0cb38654a0c96df297993cbe6d",
          "body": "…zation (WI-261)\n\nCreating a new SKILL.md had no legitimate path through the gate: skills/\ncreates fell into the feature category, quick mode's allowedCategories has no\nfeature, the full-mode session category list is hardcoded without it, and\nskills/ paths carry no unit so the design-doc bypass coul\n[…]\ngoes from EXIT=2\n(feature/MIXED_CHANGES) to EXIT=0 (Quick Mode, category=docs), while a .ts\nfile under skills/ still exits 2.\n\nWork-Item: WI-261\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: classify skills/ markdown as docs in quick-mode categori…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-15T10:11:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7391911a225387d1a990195fdd5ce82ba2f123b6",
          "body": "…idator failures (WI-260)\n\nphasegate:ci-check exited 1 whenever any validator reported a warning-only\nfailure, because CiCheckResult.fromResults/create aggregated with\nevery(passed || skipped) and never looked at error severity. WI-258's L2-016\nsurfaces a standing ungated-legacy warning set, so ci-c\n[…]\ns e2e case and T-042-01/02/03 are green; validate\n--layer L2 unchanged; lint and the reflection corpus regression stay clean.\n\nWork-Item: WI-260\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: severity-aware ci-check aggregation for warning-only val…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-15T10:00:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8062606dfe75c49af0a015492ca3fcc68ec63298",
          "body": "…ying files (WI-259)\n\nImplements ADR-030 §Decision.3.④, completing the five-component injection\ndefense. A new validator-system domain service scans instruction-carrying\nfiles (skills/**/SKILL.md, CLAUDE.md, AGENTS.md, agent-context templates,\n.claude/settings.json) for four narrow finding kinds: in\n[…]\nting noImplicitAnyLet in the L3 use case surfaced by\nthe lint hook during editing (type annotation only, no behavior change).\n\nWork-Item: WI-259\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: L3-006 advisory injection scanner over instruction-carr…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-10T11:07:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "212b6b911a6ff0f0389f76ee49315ab4e402eaf9",
          "body": "…gacy debt (WI-258)\n\nImplements ADR-030 §Decision.3.② first stage. Coverage reports were ungated\nprose: an agent could claim any AC as achieved by writing a checkmark. A new\nvalidator-system domain service (CoverageAttestationGatingService, registered\nas L2-016 and default-on through the config-foun\n[…]\ns\none ci-gate-run record and has no per-AC granularity; the reference format is\ndefined now so records can bind to it later).\n\nWork-Item: WI-258\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: L2-016 coverage-report attestation gate with visible le…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-10T10:46:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "536748318d9baec9fe92e3f43891aa702df15b29",
          "body": "Implements ADR-030 §Decision.3.③. A full inventory of the five hook outputs\nfound exactly one interpolation point that relays repo-derived free text to\nthe agent: the working-tree violation detail in the user-prompt-submit\ncontext (config-derived strings such as matched patterns). That detail is now\n[…]\nMANDS (the reflection corpus regression\ncorrectly flagged the missing note — the gate working as designed).\n\nWork-Item: WI-257\nWork-Item: WI-254\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: spotlight repo-derived text in hook output (WI-257)",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-10T10:34:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6fc6d2ca381090a58e6de1a9e11ce1a1609d5b30",
          "body": "…on-start warning (WI-254)\n\nImplements ADR-030 §Decision.3.① (integrity pin) as ci-governance domain\nlogic with CLI and hook wiring:\n\n- ci-governance: IntegrityManifest / IntegrityDrift / IntegrityTarget value\n  objects, IntegrityChecker domain service, pin/verify use cases, sha256\n  hasher + manife\n[…]\night skill catalog\nrestructure from a parallel session is committed, so the first pinned\nmanifest matches the committed tree.\n\nWork-Item: WI-254\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[story] feat: instruction-file integrity pin — CLI, domain, and sessi…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-10T10:20:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e54d238783131e09eb329cca7148c0f0e06c10f2",
          "body": "… ADR corpus (WI-248)\n\nAdrFoundationReferenceAdapter passed the project root to\ncreateAdrFoundationModule, but the adr-foundation repository expects the ADR\ndirectory itself, so exists() always returned false and getMetadata() always\nreturned null — a phantom gate that could never find a real ADR. T\n[…]\nd /\n2 passed) and GREEN after the fix (4/4, validator-system suites 417/417,\nlint clean, reflection corpus regression green).\n\nWork-Item: WI-248\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "[quick] fix: point validator-system ADR reference adapter at the real…",
          "author_name": "Jumpei_Nakata",
          "author_login": "junpei-9898",
          "committed_at": "2026-07-10T09:50:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 443,
      "latest_release_at": "2026-07-21T12:20:35Z",
      "latest_release_tag": "v0.301.0",
      "releases_from_tags": true,
      "days_since_last_push": 1,
      "active_weeks_last_year": 13,
      "days_since_latest_release": 1,
      "mean_days_between_releases": 0.4
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 71,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "phasegate",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "quality",
            "clean-architecture",
            "ddd",
            "ai-agent",
            "governance",
            "phase-gate",
            "phasegate"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/phasegate",
          "is_deprecated": false,
          "latest_version": "0.283.0",
          "repository_url": "https://github.com/junpei-9898/phasegate",
          "versions_count": 128,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3931,
          "first_published_at": "2026-04-03T08:50:00.069000Z",
          "latest_published_at": "2026-07-17T22:13:05.405000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 2,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "sample"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [
        "scripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod"
      ],
      "largest_source_bytes": 149770,
      "source_files_sampled": 1859,
      "oversized_source_files": 3,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 6751
    },
    "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": [
        {
          "name": "ajv",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.18.0"
        },
        {
          "name": "picomatch",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.4"
        },
        {
          "name": "tinyglobby",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.15"
        },
        {
          "name": "tsx",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.0"
        }
      ],
      "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": 2,
        "closed_ratio": 0.95,
        "closed_issues": 38,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "junpei-9898",
          "commits": 151,
          "avatar_url": "https://avatars.githubusercontent.com/u/83627275?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "agent-context-refresh.yml",
        "ci.yml",
        "release-canary.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "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": 10,
            "reason": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
            "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": 10,
            "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": 0,
            "reason": "13 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "716b90681b3aaf790cb5706241c8df155acd0258",
        "ran_at": "2026-07-23T07:39:59Z",
        "aggregate_score": 3.6,
        "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-21T12:34:34Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 27,
          "created_at": "2026-05-15T06:20:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 29,
          "created_at": "2026-05-24T08:14:27Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/junpei-9898/phasegate",
    "host": "github.com",
    "name": "phasegate",
    "owner": "junpei-9898"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 57,
      "inputs": {
        "security": 36,
        "vitality": 79,
        "community": 38,
        "governance": 50,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 79,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "commits_last_year": 443,
              "human_commit_share": 1,
              "days_since_last_push": 1,
              "active_weeks_last_year": 13
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "13/52 weeks with commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 13
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "443 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 443
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "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": 100,
              "latest_release_tag": "v0.301.0",
              "releases_from_tags": true,
              "days_since_latest_release": 1,
              "mean_days_between_releases": 0.4
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.4 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.4
                    }
                  }
                ],
                "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": 38,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 2,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": 65,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "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": 13.5,
                "status": "met",
                "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": 60,
            "inputs": {
              "packages": [
                "phasegate"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 3931
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "3,931 downloads/month across npm",
                "points": 47.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 3931,
                      "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 50,
        "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": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 2,
              "closed_issues": 38,
              "issue_closed_ratio": 0.95,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "95% of issues closed",
                "points": 44.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 95
                    }
                  }
                ],
                "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": 36,
            "inputs": {
              "followers": 0,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "junpei-9898",
              "public_repos": 12,
              "account_age_days": 1906
            },
            "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 junpei-9898",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "junpei-9898"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "12 public repos, account ~5 yr old",
                "points": 18.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 12
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 5
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "phasegate"
              ],
              "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": "128 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 128
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "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": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "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": "biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "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": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 36,
        "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": 36,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.6
            },
            "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": "30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "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": 5,
                "status": "met",
                "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": "13 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "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": "good",
        "name": "AI Readiness",
        "value": 77,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 6751
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 1,
              "toolchain_manifests": [
                "scripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "scripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "scripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod"
                    }
                  }
                ],
                "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": "biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "100 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 100,
                      "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": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 149770,
              "source_files_sampled": 1859,
              "oversized_source_files": 3
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "3/1859 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 1859,
                      "oversized": 3
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "sample"
              ],
              "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": "sample",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "sample"
                    }
                  }
                ],
                "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",
    "deps.dev does not index npm:phasegate@0.283.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T07:40:06.202490Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/junpei-9898/phasegate.svg",
  "full_name": "junpei-9898/phasegate",
  "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.