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

satoh-y-0323 / claude-code-conductor

複数エージェントのオーケストレーションを中心に据えた Claude Code フレームワーク。

PythonMIT★ 1 estrella⑂ 1 forkdesde abr 2026Ver en GitHub ↗

satoh-y-0323/claude-code-conductor tiene un índice de salud de 54 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (78/100) y la más baja, Security (39/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

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

54
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

satoh-y-0323Cuenta personal
2 seguidores5 repositorios públicosdesde mar 2026

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
PyPIclaude-code-conductor2.55.0-116hace 0 díasagentsclaudeclaude-codecodexcursororchestrationtdd

Métricas por categoría

Vitalidad

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

78Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
9/36Cadencia de commits — 13/52 semanas con commits
18/18Volumen de commits — 420 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year420
human_commit_share0,99
days_since_last_push0
active_weeks_last_year13
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 0 días
27/27Cadencia de publicación — una versión cada ~1,2 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tagv2.55.0
releases_from_tagsno
days_since_latest_release0
mean_days_between_releases1,2
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?

43En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 1 estrellas
0/25Forks — 1 forks
0/15Observadores — 1 observadores
Datos de entrada utilizados
forks1
stars1
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conduct
has_pull_request_template

Sostenibilidad y Gobernanza

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

39En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — 0% de issues cerradas
38.2/38.3Aceptación de PR — 1/1 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs1
open_issues2
closed_issues0
issue_closed_ratio0
closed_unmerged_prs0
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
3.4/25Alcance del propietario — 2 seguidores de satoh-y-0323
6.3/25Trayectoria — 5 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers2
owner_typeUser
is_verified
owner_loginsatoh-y-0323
public_repos5
account_age_days117
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 pypi
35/35Recencia de publicación — última publicación hace 0 días
20/20Historial de versiones — 116 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesclaude-code-conductor
ecosystemspypi
any_deprecatedno
min_days_since_publish0

Calidad de Ingeniería

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

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

Documentación

85Excelente
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
10/10Topics — 5 topics
10/10Wiki
Datos de entrada utilizados
topicsclaude-code, framework, multi-agent, python, workflow
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

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

39En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
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
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,9
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, 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.

49En riesgo · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .claude/CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 99 de 99 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files.claude/CLAUDE.md
agent_instruction_max_bytes5325
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
0/10Entorno reproducible
10/10Práctica demostrada con agentes — 97 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,97
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
0/45Código verificable por tipos — Python sin configuración de verificación de tipos
52/55Tamaños de archivo manejables — 9/163 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes176.668
source_files_sampled163
oversized_source_files9
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_files

Datos clave

1estrellas de GitHub
1contribuidores
420commits en los últimos 12 meses
0días desde el último push
100versiones publicadas
1factor bus
2issues abiertas
PyPIecosistemas 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 pypi:claude-code-conductor@2.55.0; advisories assessed against the repository dependency graph instead

Más detalle

OpenSSF Scorecard 3.9 / 10
3.9agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-25 16:28 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow 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
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 4
RegistroPaqueteRestricción de versiónManifiesto
PyPIPyYAML>=6.0pyproject.toml
PyPIduckdb>=0.10pyproject.toml
PyPInumpy>=1.22pyproject.toml
PyPIfastembed>=0.8.0pyproject.toml
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": [
        "claude-code",
        "framework",
        "multi-agent",
        "python",
        "workflow"
      ],
      "is_fork": false,
      "size_kb": 3153,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Python": 2962949,
        "PLpgSQL": 13118
      },
      "pushed_at": "2026-07-25T16:21:31Z",
      "created_at": "2026-04-28T11:15:26Z",
      "owner_type": "User",
      "updated_at": "2026-07-25T16:21:35Z",
      "description": "複数エージェントのオーケストレーションを中心に据えた Claude Code フレームワーク。",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": "https://zenn.dev/satoh_y_0323",
      "name": "satoh-y-0323",
      "type": "User",
      "login": "satoh-y-0323",
      "company": null,
      "location": "Japan",
      "followers": 2,
      "avatar_url": "https://avatars.githubusercontent.com/u/272207768?v=4",
      "created_at": "2026-03-30T12:12:14Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 117
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.55.0",
          "kind": "minor",
          "published_at": "2026-07-25T16:22:02Z"
        },
        {
          "tag": "v2.54.0",
          "kind": "minor",
          "published_at": "2026-07-24T15:04:47Z"
        },
        {
          "tag": "v2.53.0",
          "kind": "minor",
          "published_at": "2026-07-24T03:21:58Z"
        },
        {
          "tag": "v2.52.1",
          "kind": "patch",
          "published_at": "2026-07-23T14:41:52Z"
        },
        {
          "tag": "v2.52.0",
          "kind": "minor",
          "published_at": "2026-07-23T10:13:45Z"
        },
        {
          "tag": "v2.51.1",
          "kind": "patch",
          "published_at": "2026-07-22T04:16:01Z"
        },
        {
          "tag": "v2.51.0",
          "kind": "minor",
          "published_at": "2026-07-18T07:55:39Z"
        },
        {
          "tag": "v2.50.0",
          "kind": "minor",
          "published_at": "2026-07-17T13:23:40Z"
        },
        {
          "tag": "v2.49.0",
          "kind": "minor",
          "published_at": "2026-07-16T15:47:41Z"
        },
        {
          "tag": "v2.48.1",
          "kind": "patch",
          "published_at": "2026-07-15T01:16:36Z"
        },
        {
          "tag": "v2.48.0",
          "kind": "minor",
          "published_at": "2026-07-07T10:59:15Z"
        },
        {
          "tag": "v2.47.0",
          "kind": "minor",
          "published_at": "2026-07-07T03:55:02Z"
        },
        {
          "tag": "v2.46.0",
          "kind": "minor",
          "published_at": "2026-07-06T19:42:51Z"
        },
        {
          "tag": "v2.45.0",
          "kind": "minor",
          "published_at": "2026-07-05T08:29:42Z"
        },
        {
          "tag": "v2.44.0",
          "kind": "minor",
          "published_at": "2026-07-04T06:04:04Z"
        },
        {
          "tag": "v2.43.0",
          "kind": "minor",
          "published_at": "2026-07-03T09:01:22Z"
        },
        {
          "tag": "v2.42.0",
          "kind": "minor",
          "published_at": "2026-07-03T04:43:54Z"
        },
        {
          "tag": "v2.41.0",
          "kind": "minor",
          "published_at": "2026-07-02T21:40:21Z"
        },
        {
          "tag": "v2.40.0",
          "kind": "minor",
          "published_at": "2026-06-30T07:06:21Z"
        },
        {
          "tag": "v2.39.0",
          "kind": "minor",
          "published_at": "2026-06-24T12:54:35Z"
        },
        {
          "tag": "v2.38.0",
          "kind": "minor",
          "published_at": "2026-06-16T07:44:40Z"
        },
        {
          "tag": "v2.37.0",
          "kind": "minor",
          "published_at": "2026-06-16T05:52:31Z"
        },
        {
          "tag": "v2.36.0",
          "kind": "minor",
          "published_at": "2026-06-14T12:57:40Z"
        },
        {
          "tag": "v2.35.0",
          "kind": "minor",
          "published_at": "2026-06-09T17:00:00Z"
        },
        {
          "tag": "v2.34.0",
          "kind": "minor",
          "published_at": "2026-06-09T04:29:39Z"
        },
        {
          "tag": "v2.33.0",
          "kind": "minor",
          "published_at": "2026-06-08T09:35:48Z"
        },
        {
          "tag": "v2.32.0",
          "kind": "minor",
          "published_at": "2026-06-07T05:09:19Z"
        },
        {
          "tag": "v2.31.1",
          "kind": "patch",
          "published_at": "2026-06-06T06:28:32Z"
        },
        {
          "tag": "v2.31.0",
          "kind": "minor",
          "published_at": "2026-06-06T06:03:51Z"
        },
        {
          "tag": "v2.30.0",
          "kind": "minor",
          "published_at": "2026-06-02T02:56:31Z"
        },
        {
          "tag": "v2.29.4",
          "kind": "patch",
          "published_at": "2026-05-31T07:59:23Z"
        },
        {
          "tag": "v2.29.3",
          "kind": "patch",
          "published_at": "2026-05-28T06:10:26Z"
        },
        {
          "tag": "v2.29.2",
          "kind": "patch",
          "published_at": "2026-05-27T18:18:15Z"
        },
        {
          "tag": "v2.29.1",
          "kind": "patch",
          "published_at": "2026-05-27T03:10:25Z"
        },
        {
          "tag": "v2.29.0",
          "kind": "minor",
          "published_at": "2026-05-27T01:37:53Z"
        },
        {
          "tag": "v2.28.0",
          "kind": "minor",
          "published_at": "2026-05-26T16:09:00Z"
        },
        {
          "tag": "v2.27.0",
          "kind": "minor",
          "published_at": "2026-05-26T14:15:26Z"
        },
        {
          "tag": "v2.26.0",
          "kind": "minor",
          "published_at": "2026-05-25T17:04:21Z"
        },
        {
          "tag": "v2.25.0",
          "kind": "minor",
          "published_at": "2026-05-25T15:30:46Z"
        },
        {
          "tag": "v2.24.0",
          "kind": "minor",
          "published_at": "2026-05-25T13:42:32Z"
        },
        {
          "tag": "v2.23.0",
          "kind": "minor",
          "published_at": "2026-05-25T11:08:59Z"
        },
        {
          "tag": "v2.22.0",
          "kind": "minor",
          "published_at": "2026-05-25T09:30:45Z"
        },
        {
          "tag": "v2.21.0",
          "kind": "minor",
          "published_at": "2026-05-25T07:02:22Z"
        },
        {
          "tag": "v2.20.0",
          "kind": "minor",
          "published_at": "2026-05-25T01:33:53Z"
        },
        {
          "tag": "v2.19.0",
          "kind": "minor",
          "published_at": "2026-05-24T16:25:32Z"
        },
        {
          "tag": "v2.18.0",
          "kind": "minor",
          "published_at": "2026-05-24T11:34:34Z"
        },
        {
          "tag": "v2.17.0",
          "kind": "minor",
          "published_at": "2026-05-24T09:39:40Z"
        },
        {
          "tag": "v2.16.0",
          "kind": "minor",
          "published_at": "2026-05-24T07:54:58Z"
        },
        {
          "tag": "v2.15.2",
          "kind": "patch",
          "published_at": "2026-05-23T16:47:32Z"
        },
        {
          "tag": "v2.15.1",
          "kind": "patch",
          "published_at": "2026-05-22T13:46:31Z"
        },
        {
          "tag": "v2.15.0",
          "kind": "minor",
          "published_at": "2026-05-22T07:29:37Z"
        },
        {
          "tag": "v2.14.2",
          "kind": "patch",
          "published_at": "2026-05-21T16:00:12Z"
        },
        {
          "tag": "v2.14.1",
          "kind": "patch",
          "published_at": "2026-05-21T13:11:52Z"
        },
        {
          "tag": "v2.14.0",
          "kind": "minor",
          "published_at": "2026-05-21T13:08:35Z"
        },
        {
          "tag": "v2.13.0",
          "kind": "minor",
          "published_at": "2026-05-21T13:08:06Z"
        },
        {
          "tag": "v2.12.0",
          "kind": "minor",
          "published_at": "2026-05-20T22:58:22Z"
        },
        {
          "tag": "v2.11.0",
          "kind": "minor",
          "published_at": "2026-05-20T17:28:31Z"
        },
        {
          "tag": "v2.10.0",
          "kind": "minor",
          "published_at": "2026-05-19T16:40:27Z"
        },
        {
          "tag": "v2.9.0",
          "kind": "minor",
          "published_at": "2026-05-18T16:04:24Z"
        },
        {
          "tag": "v2.8.0",
          "kind": "minor",
          "published_at": "2026-05-17T17:00:49Z"
        },
        {
          "tag": "v2.7.0",
          "kind": "minor",
          "published_at": "2026-05-15T22:53:38Z"
        },
        {
          "tag": "v2.6.1",
          "kind": "patch",
          "published_at": "2026-05-15T10:57:53Z"
        },
        {
          "tag": "v2.6.0",
          "kind": "minor",
          "published_at": "2026-05-14T15:56:51Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2026-05-13T14:19:22Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2026-05-12T14:06:31Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2026-05-12T00:13:44Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2026-05-11T17:44:35Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2026-05-11T16:27:18Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2026-05-11T15:21:47Z"
        },
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2026-05-11T15:07:16Z"
        },
        {
          "tag": "v1.13.0",
          "kind": "minor",
          "published_at": "2026-05-11T14:47:21Z"
        },
        {
          "tag": "v1.12.0",
          "kind": "minor",
          "published_at": "2026-05-11T14:34:25Z"
        },
        {
          "tag": "v1.11.1",
          "kind": "patch",
          "published_at": "2026-05-11T14:27:14Z"
        },
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-05-11T14:21:13Z"
        },
        {
          "tag": "v1.10.3",
          "kind": "patch",
          "published_at": "2026-05-11T01:30:12Z"
        },
        {
          "tag": "v1.10.2",
          "kind": "patch",
          "published_at": "2026-05-11T01:17:00Z"
        },
        {
          "tag": "v1.10.1",
          "kind": "patch",
          "published_at": "2026-05-10T15:58:25Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-05-10T14:32:54Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-05-10T06:25:08Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-05-10T06:03:32Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-05-10T04:40:56Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-05-09T17:30:12Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2026-05-09T10:48:31Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2026-05-09T10:14:33Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-05-09T09:12:11Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-05-09T08:01:00Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-05-09T05:51:14Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-05-09T02:26:54Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-05-08T16:37:07Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-05-08T16:30:12Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-05-08T15:49:21Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-05-08T15:20:13Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-05-08T15:17:44Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-05-08T14:16:09Z"
        },
        {
          "tag": "v0.7.1",
          "kind": "patch",
          "published_at": "2026-05-08T08:28:05Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-05-07T15:48:10Z"
        },
        {
          "tag": "v0.6.4",
          "kind": "patch",
          "published_at": "2026-05-07T10:23:00Z"
        },
        {
          "tag": "v0.6.3",
          "kind": "patch",
          "published_at": "2026-05-07T04:48:56Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2026-05-06T23:38:02Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2026-05-06T23:14:25Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "53dc5399c9465b9e234ea6bbf478a896b47ed8da",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.55.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-25T16:21:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e254cd69b9fa51de1adf638a2bee4a707efb02d7",
          "body": "…モード行監視 warn)\n\n- patterns_guard.py: patterns.json への Write/Edit を PreToolUse で block(許可フラグ TTL 600 秒・C3_PATTERNS_GUARD_DISABLE=1)\n- report_contract_check.py: reports 直下のタイムスタンプ契約 4 種の命名逸脱を PostToolUse warn(stderr + additionalContext の 2 経路・ASCII 厳密フルマッチ)\n- session_mode_watch.py: session.tmp のモード行挿入・\n[…]\ned / failed 0)\n\nhonor-system-inventory-20260725-174012.md の裁定に基づく「境界は硬く・中は柔らかく」の機械化第 1 弾。\nFable 5 親の自律運転(C-3 13 サイクル・E 4 周・findings 110 件処理)で実装。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: honor system 棚卸しの機械化 P1〜P3(patterns.json 保護 block・レポート名契約 warn・…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-25T16:12:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "16ca0e3b99bf296b769e3be31f9b6506d50a85be",
          "body": "- 冒頭に Discussions への 1 行導線を追加\n- 「フィードバック / Feedback」セクションを新設(カテゴリ別の用途表・Issues との使い分け)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: GitHub Discussions 有効化に伴い README へフィードバック導線を追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-25T08:09:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ef17e5963af3a18ff7f9ff1b5c59d45ce19644f",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: README/docs に tester(Red) の tier-routing 対象化(v2.54.0)を追記",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-24T15:17:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9baa4d73c2b9ca344bc614ffe0e375a1e6a43b41",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.54.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-24T15:02:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "54d57d51ad0723b793a686da76456570eef9da56",
          "body": "- C3_TASK_ID: test- マーカー(文字列先頭 1 行目・\\A アンカー)を条件に\n  tier_autoapply が roles.tester.tier を注入(D-3/D-5・confirm- は対象外)\n- gate D-1 新設・BANDIT_GATES_BY_ROLE の role 別 read-side フィルタで\n  Red セルを確認役成績から分離(既存 tester 記録 29 件は温存・集計外)\n- record の tester tier 解決を「2a→4」2 段化(2b/優先3 撤去=別タスク誤帰属の閉塞)\n- Red 成否 4 条件の記録規約を dev-workflow/parallel-agents SKILL に明文化\n- opus 固定不変則・マーカー遵守の機械検査テスト新設(2152 passed)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: tester/wt_tester の Red フェーズ限定 tier-routing 機械適用",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-24T15:02:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b4907b7a040ad2415a7f9f2d3e6fed06191583b9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.53.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-24T03:15:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6ce5e9023ddf07781e20fac67774a5ba54a2ad18",
          "body": "- 除外 3 ファイル(.gitignore / _excludes.py / hatch_build.py)から autonomous-mode を削除し追跡開始(S-1)\n- SKILL.md 規約改訂: R4 拡張(親 Claude 自身が新設する是正策も裏取り対象・S-2)・C-3 カウンタ規定(差し戻し後別枠上限 2・総量上界 13・S-3)・個人パス汎用化と環境前提の汎化(S-7)\n- mode_line.py 引用符対応: BNF quoted-path・理由コード unclosed_quote・スペース入りパス(S-9)・tests/test_mode_line.py 新設\n-\n[…]\nTERNS / _adapter_skip(fnmatchcase)で Codex/OpenCode 生成物へ非写像・e2e テスト(関数レベル+CLI レベル)追加\n- E レビュー収束: CR 3 周回・SR 2 周回・対応 9 件/許容 2 件・pytest 2115 passed\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: autonomous-mode skill を配布物へ切替(除外解除・引用符対応・アダプター除外機構)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-24T03:15:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e55972a378f2f3093ec9319d9c5327284501be06",
          "body": "- TOML エスケープの制御文字素通し修正(711c4ec)を単独で含むパッチリリース。\n\n破壊的変更なし(制御文字を含まない正常な入力の生成結果は不変)。\nリリース前チェック実測: extract_breaking_changes --check exit 0 / check_deletions\n--check exit 0 / wheel 実体検証(autonomous-mode 非収録・breaking-changes.txt 収録・\nc3_version.txt 非収録)。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.52.1",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-23T14:41:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "711c4ec0eba0b0b3583afdeda73c94b716db8c2e",
          "body": "_toml_escape() / _toml_multiline_escape() が TOML 仕様上禁止された制御文字を\nエスケープせず、Codex アダプターの生成物(.codex/config.toml /\n.codex/agents/*.toml)が不正な TOML になる、または行構造を偽装されうる問題を修正する。\n\n- エスケープ表を str.translate() 用の module 定数として構築し、C0 / DEL / C1 /\n  U+2028 / U+2029 を封じる(ADR-2)。対象は TOML 必須分に加え、\n  str.splitlines() が行境界とみな\n[…]\nを追加(tomllib 往復検証・行境界 10 種・2 表の対称性・\n  14 agent の不変条件・環境非依存スナップショット)\n\n読み戻し側(cli_doctor.py の正規表現)は変更しない。生成側で行境界文字を\n封じれば行構造偽装は成立しないため。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: TOML エスケープが制御文字を素通しする問題を修正",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-23T14:30:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae9af4be84a8b90d370c3af742ea9c2e605025f2",
          "body": "- NUL 境界 lint 機械検査の追加(a052ce8)\n- autonomous-mode 規約 R1〜R4 改訂に伴う dev-workflow の関所 2 類型化(3371340)\n\n破壊的変更なし(利用先の実挙動に変更なし・autonomous-mode は wheel 非収録のため\n利用先では自律宣言が常に無効=HITL 動作・HITL 既定動作は無変更)。\n\nリリース前チェック実測: extract_breaking_changes --check exit 0 / check_deletions\n--check exit 0 / wheel 実体検証(autonomous-mode 非収録・breaking-changes.txt 収録\n・c3_version.txt 非収録)/ pytest 2047 passed。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.52.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-23T10:11:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3371340014e9e12a094a37fcd6757c3d9901d8bd",
          "body": "Opus 4.8 親による自律完走検証(2026-07-22〜23)で露呈した規約欠陥 4 件を是正する。\n\n- R1: 人間の関所を 3 類型 → 2 類型(非可逆操作・情報不足の質問)へ縮退。走行中の\n  usage 停止を全廃し、委任プランに「資源同意」節を必須化。あわせて cycles= を自律\n  運転中は必須とし、上限の執行がソフト規約である限界を明記\n- R2: 自律運転中のソース変更主体を担当エージェント固定とし、親の直接 Edit を例外\n  なく禁止。親の職掌を閉じた 5 種に限定し、逸脱時は親の変更を破棄してから再実行\n- R3: C-3 の収束条件を「指摘 0」から「H\n[…]\n監査 3 サイクルで 61 件、code-review 6 件、security-review 4 件を\n処理(65 件対応 / 6 件は理由付きで許容)。検査 50 項目・不変ブロック sha256 一致・\npytest 2047 passed を確認済み。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: autonomous-mode 規約を R1〜R4 で改訂(人間の関所を 2 類型へ縮退)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-23T10:11:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a052ce82a5fcd7d3d3a7be9776d427f82efb2794",
          "body": "- tests/test_nul_boundary_lint.py 新設: AST で str.join を全件検出し、宣言マーカー\n  「# nul-boundary: allow(<理由>)」(tokenize.COMMENT 限定・理由 5 文字以上)の\n  無い使用を違反として検出する機械検査\n- .claude/docs/nul-boundary.md 新設(配布対象): NUL 境界原則\n  「機械可読な行集合の区切りは NUL・\\n は人間可読出力のみ」の規約文書\n- hooks 8 本・src 4 本: join 行末に allow 宣言コメントを追記(追跡対象 29 件・\n  ロジック変更なし・是正 0 件。.dev/loop の 21 件は git 非追跡)\n\nE レビュー 3 周(8→3→0)で収束・全体 2047 passed・wheel 実体検証済み\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: NUL 境界 lint 機械検査を追加(Opus 4.8 親の自律完走検証成果物)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-22T15:52:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "66ebb57c131c515030034af5087a4fd0e4e90bbf",
          "body": "setup skill の disable-model-invocation: true を削除し、init-session 自動チェーン(G-2)の\nブロックを解消。利用先の初回導入で SETUP_NEEDED 検出時に手動 /setup 実行を強いられていた\ndefect の修正(利用先プロジェクトで実地確認)。本文に起動経路の制約(/setup 明示呼び出し・\nG-2 チェーンの 2 経路のみ)を明記して暴発を防止。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.51.1",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-22T04:15:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "28b20088904dc698724c69b62586a829c9040d24",
          "body": "Markdown テーブルではコード span 内でも | がセル区切りとして解釈されるため、\ncodex|cursor|opencode|all の | を \\| にエスケープして表示崩れを解消する。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: README テーブル内の c3 init --platform 行のパイプ未エスケープを修正",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-20T10:45:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8c3005d01bcc687e70477f1efea65a489496ba6f",
          "body": "…3 run・design-critic 監査)\n\n- エージェント一覧を 9 体 → 14 体に更新(design-critic / project-setup / wt_* 3 種を追加、doc-writer の model を sonnet → opus に訂正、tier-routing の model 自動適用注記を追加)\n- スキル一覧に /pattern-status・/codex-review を追加し、内部参照スキル(dev-workflow / parallel-agents / report-timestamp)を明記\n- ワークフロー図にフェーズ C 承認後の desig\n[…]\n.51.0 の配布スクリプト共通起動口)を追加\n- docs/index.md の「10 のスキル」「8 専門エージェント」の古い数字を実体化\n- レポート一覧に design-review-report / test-report / debug-analysis-report を追加\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: README と GitHub Pages を v2.51.0 実体に同期(agents 14 体・skills 13+3・c…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-20T10:36:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c804c6dc3540334260d49e8672c49b6ee781379e",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: 調査ノート「環境条件別c3の問題点.md」を git 除外・配布除外へ追加(3 ファイル同期)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-18T08:08:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4c049d3acdfeb92cf2d7f77b917f06e2295481bb",
          "body": "- test_run_via_c3_entrypoint_without_python_on_path: POSIX では console script と\n  python 本体が同一 bin/ に同居するため、一時ディレクトリに c3 起動子のみを\n  symlink/コピーして PATH を構成する方式へ変更(前提 assert は維持)\n- test_write_cursor_mcp_uses_absolute_sys_executable: monkeypatch する\n  sys.executable を OS で切替(Windows 形式パスは PosixPath で絶対判定されない・\n  v2.50.0 push から失敗していた持ち越し)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(ci): Linux CI で失敗する環境依存テスト 2 本を解消(製品コード不変更)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-18T08:00:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6d14ec67cfa5aaf533015e2824bb99587a4b81b7",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.51.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-18T07:53:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "08a9f8075ff3d3cf1537c846f06aaf24a80c52d3",
          "body": "- c3 run サブコマンド新設(script / -c / -m の 3 形式・-- 無加工転送・cwd パリティ・sys.argv/sys.path 復元)\n- 配布 settings.json の hook / statusLine 起動子を c3 run 語彙へ全面置換\n- c3 doctor に hook 起動子検証を追加(python=WARN・c3 解決不能/プローブ失敗=FAIL・復旧案内)\n- doctor の except 分岐(JSONDecodeError=ERR・環境要因=WARN・UnicodeDecodeError 耐性)\n- 無印 python 起動子の li\n[…]\nl-agents checkpoint 手順を固定パス + Write 直書き方式へ刷新(heredoc 注入面の構造排除)\n- config-policy 落とし穴6 の誤記載是正\n\nE ループ 6 周回(CR∥SR)で High/Medium 0 収束・フルスイート 2004 件全緑\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: c3 run 呼び出し口による無印 python 起動子の全面是正",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-18T07:53:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "98db6d7642bf98396366595654a679da30f619e9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.50.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-17T13:23:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b04275ec0b0f8c67df36a7c3652da4b4c0aba782",
          "body": "Codex/CursorのMCP設定でcommandが\"python\"にハードコードされており、macOS 12.3以降の無印python不在・pipx隔離・GUI起動時のPATH最小化により起動失敗する問題を修正。\nc3 doctorに生成済みconfigからcommandを読み取りimport c3の実行可否を検証する自己診断を追加し、platform-adapters.mdにtrust要件・絶対パス化の理由・adapter生成物のマシン固有性を追記。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(adapters): MCP設定のcommandをsys.executable絶対パスに変更しdoctor自己診断を追加",
          "author_name": "Loop Test",
          "author_login": null,
          "committed_at": "2026-07-17T13:00:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a23edbf4c0d3218a2d9e064698ea24aa1cfe2f3",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.49.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-16T15:46:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3053f00946ac26d6653c433ded9ff551e2f33840",
          "body": "…検証テスト)\n\n- dev-workflow: 運転モード集中参照ブロック 1 つ追加(既存 10 ゲート無改変・既定 HITL)\n- init-session: モード行の表示/復元分岐+パス用封じ込め型防御(mode_line.py 機械実行・fail-closed)\n- 配布除外 3 ファイル同期(skills/autonomous-mode/*)・同期一致/除外/有効性テスト 12 件追加\n- agents/architect・planner に Edit 追加、report-timestamp に親タイムスタンプ渡し運用を明文化\n- skill 本体(SKILL.md・mode_line.py)は配布対象外・git 非追跡(配布元熟成・利用先挙動不変)\n\nE レビュー 4 周回で High/Medium 0 収束(CR/SR 並列・全レポートはタイムスタンプ名で履歴保全)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(autonomous-mode): 自律モード skill を新設し配布除外で昇格(運転モード切替の接続点・3ファイル同期・機械…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-16T15:46:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5a69801bc2d0271967fa71b83fb9a95ef442a155",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.48.1",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-15T01:15:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "38240fdf877e1d7ad6d8e18c5cbff30816e69180",
          "body": "no-op だった Glob(**) / Write(...) 系 11 ルールを削除し、\n対応漏れだった Edit(.claude/tmp/**) を追加。許可の実挙動は不変。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(settings): Claude Code v2.1.210 の permission ルール deprecation 警告を解消",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-15T01:15:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "788fedab5195ed6f15842775647d0262d2bd356d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.48.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-07T10:47:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bacd251f9df06d89d8f1cfd674723a77534a8e94",
          "body": "…id 突合・ADR-AS-4 解消)\n\n- tier_autoapply.py: 起動プロンプトの C3_TASK_ID マーカーを行頭アンカー厳格書式で抽出し jsonl に task_id を additive 追加(不在は null・mask 経路と独立・allowlist が構造サニタイズ)\n- record_agent_outcome.py: (session_id, role, task_id) 全一致の最新行を優先2a とし 0 件は従来の session 最新行(2b)へフォールバック(task 未指定は bit 一致の後方互換)。2b フォールバック時の限定警告(saw_t\n[…]\n与ルールを撤去。旧 ADR-AS-4 注記は E2E 実測(worktree 側 jsonl 0 件・main 書き込み・--tier なし機械解決)で反証し解消形へ\n- tests: 抽出系/突合系/警告 3 象限/GP-004 劣化固定/文言整合を追加(フル 1905 passed)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier-routing): 並列経路の record --tier 明示を不要化(T8・applied-state task_…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-07T10:47:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "811705418008a02125f8610dfe665a79e67c98d4",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.47.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-07T03:53:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae94546375e3dd4df51b3172b588855b51b67a43",
          "body": "ソフト適用(additionalContext の指示 honor system)を PreToolUse hook の\nupdatedInput による機械適用へ進化させ、「適用者=記録 SSOT」で帰属を完全機械化。\n\n- tier_autoapply.py(新規・PreToolUse Agent matcher 2本目):\n  model 無指定の developer/wt_developer に推奨 Tier を updatedInput で注入\n  (permissionDecision 省略形・T0 実機検証で実効確認)。明示指定は尊重。\n  どちらも実適用値を .claude/s\n[…]\nodel: 指定と ADR-AS-2\n  エスケープハッチを撤去(機械適用へ)\n\n品質: C-3 設計監査5ラウンド(19件→0)+ T0 実機検証(G1/G2/G3 全肯定)+\nレビュー fix-cycle 5周(CR/SR 計27件→0)。テスト 1807 → 1878 passed\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(hooks): tier-routing 機械適用(フェーズ3)と学習記録の欠落検知(P3)を追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-07T03:51:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c96d44322ba67d4f5443d23b582fba24ca7ed614",
          "body": "sqlite3.Connection.setlimit は Python 3.11 追加 API のため、v2.46.0 の\nTests CI(Python 3.10 ジョブ)で AttributeError → フェイルセーフ 0 埋めにより\nアサーション失敗していた。プロダクト実装(TEMP テーブル方式)は setlimit\n非依存で公開物への影響なし。テストのシミュレーション手法のみ 3.11+ を要する。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tests): setlimit 使用テストに Python 3.11 未満の skipif ガードを追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-06T19:45:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "62578297d7e497f69ca191be5e311fb1f4a0db0a",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.46.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-06T19:41:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea07ad51d21245ad57d251c9282db1ae57ecb7da",
          "body": "「C3 を使うと何がどれだけ良かったか」を横断で見る CLI と記録基盤。\n\n- migration 006: review_decisions に severity 列を additive 追加\n- record_review_decision.py: --severity(フェイルセーフ手動検証)・--reviewer design-critic・DC-XX-NNN 対応\n- db.py: insert_review_decision の severity 対応+レガシーフォールバック+二層検証、\n  metrics 集計ヘルパー6本(matrix / prevented_findings\n[…]\nocs/cli-reference.md にコマンド追記\n\n設計: C-3 監査6ラウンド(22件)+レビュー fix-cycle 5周(26件)指摘0クローズ。\n測定思想: 主役=深刻度付き事前検出実績・補助=差し戻し傾向/帰属/コスト(forward-only・bandit 不干渉)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(metrics): 効果総括メトリクス c3 metrics を追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-06T19:38:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d7d214b795aacd6338e88c69c01454221196476",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.45.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-05T08:28:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b47ec92d7c6508e8c78e37a08275fe0870643da3",
          "body": "日次 changelog 評価ログの直接 Edit による patterns.json 肥大(98KB・\ninit-session で Read 不能)の再発防止と、レビューで発見された既存バグの修正。\n\n- DESCRIPTION_WARN_LENGTH=1000 の肥大検知ガードを新設: update_patterns の\n  active 確定直後に、経路を問わず既存エントリの description 肥大を stderr で\n  警告する(削除・切り詰めはしない警告のみ・promoted 含む全件監査)。\n  取り込みガード MAX_DESCRIPTION_LENGTH=500 とは別\n[…]\ntional.py に TestDescriptionBloatWarning(T1-T11)を追加:\n  閾値境界・706字非警告・複数警告・非破壊・fail-safe・promoted 監査・\n  非 dict 完走・id サニタイズを回帰固定。フルスイート 1686 passed。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(hooks): stop.py に patterns.json 肥大検知ガードと非 dict 耐性を追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-05T08:26:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aa07ebb336a154d11257df9184a7324c68d7dd88",
          "body": null,
          "is_bot": false,
          "headline": "release: v2.44.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-04T06:03:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e20f0ecb95727008907be277ee3f0a2e887a39e",
          "body": "公式仕様(code.claude.com/docs/en/hooks)で PreCompact hook は\nhookSpecificOutput.additionalContext をサポートしない(decision: block のみ)。\n仕様外の JSON stdout が実機 /compact で「Hook JSON output validation failed」を\n誘発していたため撤去し、hook を checkpoint 追記専念(デバウンス付き)にする。\n\n- main() の hookSpecificOutput JSON 出力と SAVE_INSTRUCTION 定数を削\n[…]\neel 再生成で確認済み)→ 指摘 0 クローズ。\nフルスイート 1675 passed / 0 failed(-3 は削除テストと厳密一致)。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01TUu3N45EUjyeBcFPXofZb9",
          "is_bot": false,
          "headline": "fix(hooks): PreCompact の仕様外 additionalContext stdout 出力を撤去",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-04T03:35:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1cf415aca80563966c5e9cc5fdd4b93a8ad86ec5",
          "body": "ハーネスが 1 回の compact で pre_compact.py を 2〜4 回起動する\nundocumented 挙動により、session.tmp に checkpoint ブロックが重複堆積し\n(20260703.tmp では約8割がノイズ)、additionalContext も同数注入されていた。\n\n- pre_compact.py に 10 秒デバウンス窓を追加(窓内は追記・注入とも\n  スキップ・stderr にログ 1 行・fail-open 原則)\n- 最終 PreCompact checkpoint 行の検出は regex を排し\n  startswith/endsw\n[…]\n/ security-review を 3 サイクル反復し指摘 0 でクローズ\n(CR 7 件・SR 3 件・再レビュー指摘 4 件を全件対応)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01TUu3N45EUjyeBcFPXofZb9",
          "is_bot": false,
          "headline": "fix(hooks): PreCompact checkpoint の多重発火をデバウンスで冪等化",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-04T00:13:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "187dae8f0e79573e2cd6ad9797ed7310b8973d56",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.43.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-03T09:00:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "39ed7c8e3d304d24d00375e9ea26ab30af75fd01",
          "body": "- BANDIT_GATES (D-2.5/D-3/D-5/D-2.5-stuck) を新設し、bandit 集計と escalation の\n  failure rate を客観ゲートのみに限定。E-1/E-2 レビュー指摘由来の記録はイベント\n  ログとして保存を継続しつつ集計から対称に除外(成功も失敗も)\n- read_agent_tier_params を agent_tier_bandit 累積テーブル読みから agent_outcomes\n  イベントログの導出集計 (GROUP BY + gate フィルタ・placeholder は len(BANDIT_GATES)\n  から\n[…]\n\n  を新設。record_agent_outcome.py はイベント記録のみに簡素化\n- テスト: 新規40件・削除17件・全件 1646 passed / 0 failed。sonnet 閉塞解消\n  (failure_rate=(None,1)) と導出の遡及再計算を実機確認済み\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): 学習シグナルを客観化し bandit をイベントログ導出に再設計 (フェーズ2.5)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-03T08:58:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "50da7101ec483488c7fbfe42e0fd3808d52d4f36",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.42.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-03T04:43:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7de96f2171f2e70bca851e6f741fb1d5d69bb98f",
          "body": "- select_tier.py: additionalContext を推奨表示から指示形に強化(developer/wt_developer の\n  Agent 起動時に model: 明示指定を指示・uniform 期も適用・fork/persona/他 role 対象外を明記)\n- record_agent_outcome.py: developer subagent の tier 解決に優先2(tier_selection.json の\n  tier→suggested_model を SSOT として機械解決・ADR-AS-1)を追加。非文字列ガード付き・\n  不成立時は fron\n[…]\n決/fallback/ガード/役割ゲーティング/帰属語彙)+\n  実体 state 汚染からの隔離 12 件。全件 1623 passed / 0 failed\n- E2E 実証済み: wt_developer への model 上書きは worktree isolation 下でも有効\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): ソフト適用(推奨Tierのmodel:明示指定)と学習記録の帰属整合・tester帰属語彙追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-03T04:37:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "28520cdd5ff543f929a60d92e7bc9fd0aee94f4c",
          "body": "- CHANGELOG に v2.41.0(破壊的変更セクション含む)を追記\n- breaking-changes.txt に v2.41.0 エントリ追加\n- extract_breaking_changes --check / check_deletions --check 通過\n- wheel 実体検証 ALL OK(新スクリプト収録・旧スクリプト非収録・004 migration 収録)\n- 全テスト緑: 1595 passed / 0 failed\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.41.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-02T18:04:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "283b02dbf6879e4d02f041f0c855cec07706329a",
          "body": "帰属ズレ(推奨 tier ≠ 実使用 tier)と単一シグナル(E-2 のみ・1WF=1記録)の\n構造的欠陥を解消し、正しい tier 学習データを蓄積する基盤に置き換える。\n\n- migration 004: tier_bandit/tier_recent_outcomes を DROP し\n  agent_tier_bandit(PK: role×complexity×tier)/ agent_outcomes を新設\n- record_agent_outcome.py 新設(旧 record_tier_outcome.py 廃止・deletions.txt 追記):\n  tier は a\n[…]\nts: role 別表示・--role フィルタ・--json 形状変更\n- レビュー: code-review 4 Round / security-review 2 Round で指摘 0 件到達\n- テスト: 1595 passed / 0 failed\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): 学習シグナルを role 別・per-gate 記録に再設計 (v2.41.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-07-02T18:00:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ef9d8cc73e4f51745264708506c1de4fef02907",
          "body": "worktree 並列実装の前提となる git リポジトリを c3 init 時に検出し、同意の上で\ngit init する。非 git ディレクトリで後の worktree 生成が初めてハードエラーに\nなる UX 欠陥を解消。\n\n- 検出: git rev-parse --is-inside-work-tree(既に管理下なら何もしない=入れ子 repo を作らない)\n- 同意モデル: --git / --no-git / フラグなしは TTY で [Y/n] 確認・非 TTY は警告のみ\n- git プリミティブを src/c3/gitutil.py に分離(shell=False・固定引数・timeout=10・encoding=utf-8)\n- git 操作は c3 init の exit code に影響させない(scaffold 成功を優先)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(init): c3 init に非 git ディレクトリでの同意ベース git init を追加 (v2.40.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-30T06:59:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "50f98ce2e199609a256ba541a99ccd4f4f724c9c",
          "body": "…アログを恒久解消 (v2.39.0)\n\n/init-session・/start・/setup のセッション開始系 Bash ブロック(mkdir+printf によるフラグ書き込み・setup 実行済み判定・init-session 実行済み判定・/setup Phase 4 の setup_done.flag 書き込み)を単一の Python ヘルパー session_guard.py の {mark|check|setup-mark} 3 サブコマンドに集約。settings.json に session_guard.py* の 1 行 allow を追加し、複合 Bash(if/$(\n[…]\n_FLAG_REL を単一真実源化(SETUP_MARKERS_REL から参照)\n- 挙動完全不変・後方互換維持・破壊的変更なし\n- tests/skills/test_session_guard.py で 37 ケースを固定(全体 1518 passed)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(session): セッション開始ガードを session_guard.py に集約し /setup も含め Bash 許可ダイ…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-24T12:53:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "adaa601bb9d611b5168e591171ed6d4b73786c72",
          "body": "…2.38.0)\n\nC3 初導入プロジェクトで「最初に /start を打ち、規約未設定のまま開発が始まる」事故を防ぐ。\n/start 実行時に当該セッションで /init-session 未実行なら自動先行実行し、/init-session 実行時に\n規約未設定(coding-standards.md も setup_done.flag も無い)なら /setup を自動連鎖する。\nセッション単位の実行判定に CLAUDE_CODE_SESSION_ID を用いた init_session.flag を使い、\n/init-session↔/start の相互呼び出しループを防止(from-start 引数で開始方法選択等の対話をスキップ)。\nマーカーは .claude/state/(gitignore+配布除外済み)に置くため 3 ファイル同期は不要。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(onboarding): /start→/init-session→/setup の自動チェーンで初回導入の動線事故を防止 (v…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-16T07:44:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a8d0638f2e99c11c8005791030a1a292d2a715df",
          "body": "C++ Build Tools が無い環境での pip install 失敗(hnswlib ソースビルド要求)を解消する。\nrecall コーパスは 1 ユーザーの .claude/ 規模(数千チャンク)で近似最近傍の高速化が不要なため、\nnumpy の総当たり cosine 検索で代替。recall.hnsw ファイル名は後方互換で維持し中身を numpy .npy 化、\n索引は次回 rebuild で自動再生成(load() が旧 hnswlib バイナリ/不正形状を False 検出しフォールバック)。\nchroma-hnswlib 依存と LICENSES を除去し numpy>=1.22 と numpy-LICENSE(BSD-3-Clause) を追加。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): 索引を chroma-hnswlib(C++) から numpy ブルートフォース検索に置換 (v2.37.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-16T04:28:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb01827c75886b66336e79bfe0d555617ca8a596",
          "body": "セッション復元(コンパクト後・/init-session)の「構造なし丸投げ」が、(1) 完了済み・全文の無上限再注入によるコンテキスト肥大ループ、(2) フェーズ状態が単なる ToDo 注入になりワークフローを飛ばす問題、の2症状を生んでいた。テンプレートに現在地1行フィールドを新設し、restore は現在地を最優先で読み「skill 経由で再開・Approval Flow 厳守」を冒頭注入+残タスクは未完了のみ+成功/失敗は末尾15行に上限化、pre_compact は無上限追記をチェックリスト更新に変更、dev-workflow/parallel-agents/init-session は現在地更新と復帰案内を追記。後方互換あり・破壊的変更なし。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(session): セッション現在地フィールド新設でコンパクト肥大とワークフロー無視を解消 (v2.36.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-14T12:56:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "01a4d21e687e81b98acd163b01119c947c49f920",
          "body": "個人作業ノート docs/model_settings.md を配布対象から除外する。3 ファイル同期ルールに従い .gitignore / hatch_build.py / _excludes.py の EXCLUDE_PATTERNS を揃えて更新。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(excludes): docs/model_settings.md を配布対象外に追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-14T12:56:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ec0fa4225f8901673603beedcf14be9a89738498",
          "body": "…(v2.35.0)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(parallel-agents): worktree cwd リーク(Issue #28017)への暫定 cd 復帰手順を追加 …",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-09T16:58:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d3da1a2b44bc1748d0099f992d9e27ceaf08140",
          "body": "フェーズ C(計画)と D(実装)の間に opt-in の監査ゲート C-3 を新設。\n新規 read-only サブエージェント design-critic が requirements/architecture/plan を\n3 レンズ(前提発掘 [DC-AS] / 曖昧さ [DC-AM] / 抜け漏れ [DC-GP])で敵対的に監査し、\n各 finding に起因層(A要件 < B設計 < C計画)を付与。findings は起因層に応じて\n正しい上流フェーズへピンポイントで戻す層別ルーティングで対応する。\n\n- .claude/agents/design-critic.md(新規)\n-\n[…]\nn-review-report 追加\n\nopt-in スキップ時は従来の C→D と同一でノーオペ。破壊的変更なし・migration 不要。\ndesign-critic は新規 agent 定義のため c3 update 後はセッション再起動で有効化される。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dev-workflow): 設計・計画監査ゲート design-critic を追加 (v2.34.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-09T04:28:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b8c2ba2376131059dfa531c39118b46595dd31bf",
          "body": ".claude/CLAUDE.md 末尾の「## C3 Managed」セクション(@rules/promoted/index.md の\n@import +手動編集禁止コメント)を撤去。Claude Code 公式仕様で .claude/rules/ は\nサブディレクトリ含め再帰的に自動ロードされるため @import は冗長。ファイル全体が\nc3 update で上書きされる配布物なのに1セクションだけ編集禁止と書くのは誤解を招く。\nv2.1.168 実機 /context で @import 無しでも昇格ルールが自動ロードされることを検証済み。\n\ndocs/config-policy.md\n[…]\npolicy.md の promote-pattern\n追記機構の記述を実装に合わせ正確化し、バージョン表記を v2.33.0 に更新。\n\n挙動不変・破壊的変更なし・migration 不要。pytest 1421 passed / wheel 実体検証済み。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(claude-md): C3 Managed セクション撤去・rules 再帰自動ロードに統一 (v2.33.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-08T09:34:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae05965154cb690560138ea077fcf67995a121a9",
          "body": ".dev/hooks/ で試作・運用していた recall_autorebuild.py を配布 hook\n(.claude/hooks/) へ移行し、.claude/settings.json の Stop に登録して全利用先で\n既定有効にする。セッション終了ごとに recall 索引の stale を stat 軽量判定し、\nstale なら c3 recall rebuild を detached background で起動して索引を新鮮化する。\n\n- .claude/hooks/recall_autorebuild.py 新規(.dev/ 版を移動・ロジック無改変)\n- tests/\n[…]\nL ロック / 常に exit 0 /\nAPI キー除外 env / Windows CREATE_NO_WINDOW)と 3 OS 対応は試作時のまま維持。\nC3_RECALL_AUTOREBUILD_DISABLE=1 でオプトアウト可能。破壊的変更なし。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): 索引自動リビルド Stop hook を配布物に昇格 (v2.32.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-07T05:08:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9696e1a5224d7cd5fb447f86cdc40486a56432f3",
          "body": "interview-rubric / design-rubric の Step 1 に「ユーザー提示資料(PDF/画像/既存doc)を\nRead で読み込み観点を判明マーク(事前執筆は求めない)」を 1 行ずつ追記。\n指示書テンプレ案は却下し資料ドリブンに再定義。__version__ 2.31.0 → 2.31.1。破壊的変更なし。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.31.1 動的ルーブリックに資料ドリブン壁打ちを明文化",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-06T06:27:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f43d50b8c36db279d78fc76b66641fae666604de",
          "body": "dev-workflow フェーズ A/B の固定 AskUserQuestion テンプレを\nルーブリック型ハイブリッド動的生成へ置換(references/interview-rubric.md・design-rubric.md 新規)。\n__version__ 2.30.0 → 2.31.0 / CHANGELOG [2.31.0] 追記。破壊的変更なし。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.31.0 標準ワークフローのヒアリング/設計を動的化(ルーブリック型)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-06T06:02:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "342d54cdea695a8b4983f4af00c82ad2acb26e68",
          "body": "フェーズ A(A-1/A-2/A-3)とフェーズ B(B-1)の固定 AskUserQuestion テンプレを\nルーブリック型ハイブリッド動的生成へ置換。「聞く観点カテゴリ=固定・文面/選択肢/深掘り=動的」。\n\n- references/interview-rubric.md 新規: 床5観点(背景/目的・スコープ境界・制約・非機能・成功条件)・\n  上限6問・床充足で即停止・対話余白型・report 前 self-check\n- references/design-rubric.md 新規: 床4観点・上限4問・構造化型・B-1+B-2 統合\n- SKILL.md: フェーズ A/B を rubric 参照の動的手順へ。A-4/B-3 の承認契約は無改変\n- code-review Medium 3件(design/interview 非対称の補足)修正済\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dev-workflow): interviewer/architect の質問を固定テンプレからルーブリック型動的生成へ",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-06T05:58:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a0f44e487d46f8ff0627cdbd71e14d34aac7ee92",
          "body": "GitHub Community Standards の未設定項目を整備:\n- CONTRIBUTING.md: 開発セットアップと C3 特有の注意(_template 直接編集禁止・.claude/ 正本・除外 3 ファイル同期)\n- SECURITY.md: Private vulnerability reporting による報告フロー\n- CODE_OF_CONDUCT.md: Contributor Covenant v2.1(日本語)\n- .github/pull_request_template.md: PR チェックリスト\n- .github/ISSUE_TEMPLATE/: bug_report / feature_request / config.yml(日英どちらも歓迎)\n\nいずれもリポジトリ運営用ファイルで、wheel/sdist・c3 init の配布物には含まれない。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: コミュニティ健全性ファイルを追加(CONTRIBUTING / SECURITY / 行動規範 / Issue・PR テンプレート)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-02T09:12:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d0893b0dcda15ad064c322f1b4969c85d44abee5",
          "body": "c3 init --platform opencode で OpenCode 向け adapter を生成可能に(PR #3 / @ma2tak)。\n配布元で C3 側のテスト・ドキュメントを追加し、code-reviewer / security-reviewer の\n指摘を 0 件まで解消した。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.30.0 OpenCode adapter 対応(テスト・ドキュメント整備+レビュー指摘全件解消)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-02T02:55:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "65a2e5ea1af584ec953e5dfbef810d83c98c393e",
          "body": "PR #3(OpenCode adapter, @ma2tak)に対し、テスト・ドキュメントを追加し、\ncode-reviewer / security-reviewer の指摘(CR 15 + SR 6、ラウンド2 で追加検出分含む)\nを全件解消した(最終レビュー 0 件)。\n\n実装修正(src/c3/adapters.py):\n- description を YAML 安全な共通ヘルパー _yaml_inline_scalar に統一(CR H-01/H-02/L-06・SR-V-001)\n- _sanitize_for_managed_block で全 adapter の managed\n[…]\n getting-started.md / ARCHITECTURE.md に opencode を追記\n\nTOCTOU(_write_file_if_changed)は共有インフラ・スコープ外・local 脅威モデルのため据置(両 reviewer 是認)。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(opencode): OpenCode adapter のテスト・ドキュメント整備とレビュー指摘修正",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-02T02:55:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aeb30473599de39cf4b234c793d393ee124a2725",
          "body": "feat: OpenCode adapter for c3 init --platform opencode",
          "is_bot": false,
          "headline": "Merge pull request #3 from ma2tak/feature/opencode-adapter",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-06-02T00:56:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "737535b6c75404dc6dcf3a04788ce54456a4e71d",
          "body": "…r の test-overfit 回避)\n\nドキュメント PATCH。Anthropic 公式「Prompting best practices」(Claude Opus 4.8 /\nSonnet 4.6 等の最新モデル向け)の推奨を C3 の agent 定義に反映する文言を\ncode-reviewer / security-reviewer / developer / wt_developer の 4 定義に追記\n(本文は 506c522 で既出、本コミットは version bump + CHANGELOG)。\n\nコード・公開 API・CLI・DB スキーマに変更なし。**破壊的変更なし**・migration 不要。\n全テスト緑(1339 passed, 8 skipped, 1 deselected)。wheel 同梱検証 OK\n(breaking-changes.txt のみ・c3_version.txt 含まず)。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.29.4 公式 Prompting BP 整合(reviewer の coverage 網羅明記・develope…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-31T07:57:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "506c5228647af8130f8af1ab2d8f1f1bcc46c8cb",
          "body": "…verfit 回避を追加\n\nAnthropic 公式 Prompting best practices(Opus 4.8 / Sonnet 4.6 向け)の推奨を agent 定義に反映:\n\n- code-reviewer / security-reviewer: 発見段階の役割は網羅(coverage)であり取捨選択ではないことを明記(Low/低確信度も握り潰さず report・絞り込みは下流 planner->ユーザー承認に委譲・MEMORY.md 許容例外は除外)。最新モデルが抑制指示を忠実に守り recall を落とす問題への対策\n\n- developer / wt_develope\n[…]\nt 回避(最小限と汎用解の両立・テスト入力への hard-code 禁止)\n\ncode-reviewer レビュー済(High 0 / Medium 1 任意 / Low 3 確認のみ)。配布実体 _template/ への伝播は wheel 再生成で確認済。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(agents): 公式プロンプトBP整合で reviewer の coverage 明記と developer の test-o…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-30T12:15:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "00ea0e84f3cb7cbe23964723f1aeb706f65f988d",
          "body": "ドキュメント + 配布調整 PATCH。コード変更・破壊的変更なし。\n\n内容:\n- ARCHITECTURE.md を sdist include に追加 (80813d2)\n- deletions.txt に v2.18.0 前の削除 23 件を遡及追記 (daa8813)\n\n利用先で次回 `c3 update` 時に古い .claude/ 残骸(旧 commands/*.md\n9 件 / 旧 skills/*.md 4 件 / skills/parallel-execution.md / 初期\nhooks 4 件 / PO 関連 5 件)が除去される。\n\nリリース前チェック:\n- pyth\n[…]\n\n- python -m build --sdist: sdist 同梱確認\n  - claude_code_conductor-2.29.3/ARCHITECTURE.md: あり (トップレベル)\n  - .claude/deletions.txt: あり\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.29.3 ARCHITECTURE.md sdist 同梱 + deletions.txt 遡及 23 件",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-28T06:09:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "daa881353dbbda3fe0802b078b44bdef202b424b",
          "body": "deletions.txt 機構導入(v2.18.0)以前に削除された配布対象ファイルを\ngit 全履歴 × PyPI 公開タグ(v0.2.0〜v2.17.0 の 68 タグ)で全数監査し、\n漏れ 23 件を追記。\n\n内訳:\n- 旧 commands/*.md 9 件 (082c8a6 / v0.2.0〜v0.3.4)\n- 旧 skills/*.md flat 4 件 (082c8a6 / v0.2.0〜v0.3.4)\n- skills/parallel-execution.md 1 件 (6edf2ef / v0.2.0〜v0.2.4)\n- 初期 hooks 4 件 (04124c2 / s\n[…]\n.txt 同梱・43 行・新規エントリ含有\n- pytest -q: 1339 passed / 0 regression\n\n不在の配布先では no-op(13 段セーフガード)。\nv2.29.1 で追記した rules→references 3 件と同方針。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(deletions): v2.18.0 前の削除 23 件を遡及追記",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-28T06:05:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80813d28a18417c4c0a49199647f6dc7f22dc047",
          "body": "pip download / pip install --no-binary :all: で sdist を受け取った\n利用者もリポジトリルート直下の C3 アーキテクチャ地図を読めるよう\nにする。wheel への同梱は引き続きなし。\n\n実機検証: python -m build --sdist で再生成し\nclaude_code_conductor-2.29.2/ARCHITECTURE.md がトップレベルに\n含まれることを確認。\n\nCHANGELOG.md は [Unreleased] セクションに記録し、次回機能\nリリースに合流させる(このコミット単独ではタグを切らない)。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(sdist): ARCHITECTURE.md を sdist include に追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-28T05:41:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4a84ed9eb3501f7ec58d39f03a77b4b71d8bbfb2",
          "body": "Generate OpenCode-compatible agent definitions from .claude/ tree.\n\nMapping:\n- .claude/agents/*.md → .opencode/agents/c3-*.md (with YAML frontmatter)\n- .claude/skills/*/SKILL.md → .opencode/agents/c3-skill-*.md\n- .claude/rules/*.md + CLAUDE.md → AGENTS.md (managed block)\n- Interactive agents (interv\n[…]\npose\n- Implementation agents (developer, tester, etc.) → mode: subagent\n\nOpenCode agents can be invoked via @mention:\n@c3-developer, @c3-tester, @c3-architect, etc.\n\nUsage: c3 init --platform opencode",
          "is_bot": true,
          "headline": "feat: add OpenCode adapter for c3 init --platform opencode",
          "author_name": "opencode-agent[bot]",
          "author_login": "opencode-agent[bot]",
          "committed_at": "2026-05-28T02:53:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3435cb1534acb6730a482089c4d9c2ec9eb59b26",
          "body": "…/ ARCHITECTURE.md)\n\nv2.29.1 以降のコード負債返済をまとめてリリース。振る舞い不変・公開 API 不変・\n破壊的変更なし。観測可能な差分は missing-table のログレベル warning→debug のみ。\n\n- db.py: resolve_* 3関数を _resolve_float_env に集約(DRY・45002ce)\n- db.py: tier-routing パラメータを _db_params.py へ分離・re-export 維持(8d140b0)\n- usage_ingester.py: パス traversal 検証の重複を _safe_\n[…]\ning・a8ddc65)\n- /ARCHITECTURE.md 新設(配布対象外・6be3e73)\n\n全テスト 1339 passed / 0 regression・全 Python(3.10/3.11/3.12) CI green・wheel 実体検証済み。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.29.2 内部品質リファクタ(DRY統合 / _db_params 分離 / path検証集約 / 例外分類統一 …",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T18:17:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a8ddc65735c9421bd0d1f85a4be26c5a5a14c590",
          "body": "telemetry/観測ヘルパーの graceful degradation(DB エラーで呼び出し側を止めない)は\n維持したまま、4 関数が既に持つ「想定内の sqlite3.OperationalError は debug、想定外の\nException は warning」分類を、warning を出す 10 関数にも揃えた。catch-all の\nexcept Exception は意図的なので狭めない(bare except 自体は graceful degradation)。\n\n効果: 想定内の missing-table が warning→debug に下がりログノイズ減・分類一\n[…]\ng・WARNING 抑止を read/write 両系で固定(既存\nTestExceptionLogTypeName の corrupt-DB→warning と対称)。\n\n全テスト 1339 passed / 0 regression・ruff clean。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(db): missing-table の例外分類を 10 関数で統一(OperationalError→debug)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T15:26:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "43518e78c61638727abfaa2444d228c2e5fc6b63",
          "body": "ruff F401/F841(CI が tests を lint しないため従来検出されていなかった):\n- tests/test_db.py: 未使用 import update_tier_params\n- tests/test_usage_ingester.py: 未使用 import 3 件\n  (insert_agent_cost_run / read_agent_cost_summary / set_ingest_offset)\n  + 未使用 local result2(代入のみ削除し ingest_session 呼び出しは維持)\n\nテスト内容・振る舞いは不変。全テスト 1337 passed / 0 regression・ruff clean。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(tests): pre-existing 未使用 import/local を除去",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T15:12:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "adc6df97c9a3a5bbadbcaa402404c9d1a6df140e",
          "body": "_ingest_jsonl と _read_agent_meta にあったほぼ同一のパス検証(symlink チェック →\nis_file → resolve() → is_relative_to(project_dir))をローカルヘルパー\n_safe_resolved_file(path, project_dir, *, log_label) -> Path | None に集約。\nresolved パスを返すため検証後の読込にもそのまま使える。SR-V-002 のパス traversal\n対策が 1 箇所に集約され、2 コピー間の drift リスクを解消。\n\nbehavior-pres\n[…]\n 対応)\n+ docstring に is_symlink/is_file/resolve の例外送出を明記(code-reviewer M-01 対応)\n\n全テスト 1337 passed / 0 regression・ruff clean(変更ファイル)。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(usage_ingester): パス traversal 検証の重複を _safe_resolved_file に集約",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T15:05:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8d140b0cf424858952d60e22ca40a102439a814b",
          "body": "db.py(SQLite read/write helpers・1351行)から、概念的に別物の tier-routing\nパラメータ群(SSOT 定数6個 + env override の resolve_* / _resolve_float_env)を\n新規 src/c3/_db_params.py へ分離。db.py は 6定数 + resolve_* 3関数を redundant-alias\nで re-export し、`from c3.db import X` / `from c3 import db; db.X` の両形式を維持。\n\nbehavior-preserving: 公開 \n[…]\nた。\n\ncode-reviewer: CR-Q-005(_resolve_float_env 再export 削除)/ CR-NEW(docstring 追記)/\nCR-T-001(_db_params 直接 import スモークテスト N6 群追加)対応。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(db): tier-routing パラメータ解決を _db_params.py へ抽出",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T14:46:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6be3e73d93f8809d11bb5f9ab9c5e41e1622b785",
          "body": "src/c3(c3 パッケージ)と .claude/(フレームワーク本体)の二層構造、\nランタイムのオーケストレーション、hook ライフサイクル(settings.json と\n照合済み)、知能基盤(c3.db / recall)、ビルド・配布パイプライン、adapter、\nテスト/CI、正典ドキュメントの地図を 1 枚に集約。\n\nこれまで src/c3 と .claude/ の関係・実行時の全体像を示す文書が無く、設計判断の\n土台が code comment / patterns.json / 各 docs に散在していた。本書は索引役に徹し、\n詳細は taxonomy.md / conf\n[…]\nter のコードベース照合で事実誤り1・要修正2を検出し修正済み(exit 2 例の\n配布元専用明示・cost ソースパス・worktree_guard の env 条件・session_stop 3段構成)。\n配布対象外(ルート直下・.claude/ 外)。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(architecture): C3 全体アーキテクチャ地図 ARCHITECTURE.md を追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T14:16:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "45002ce53d4982b20596ba0364facada1dd0bca6",
          "body": "resolve_cost_lambda / resolve_epsilon / resolve_escalation_threshold は\nenv名・デフォルト・下限の開閉・ログ接頭辞だけが異なるほぼ同一コード\n(DRY違反)だった。共通ヘルパー _resolve_float_env に集約し、公開3関数は\n薄いラッパーに変更。公開API・戻り値・stderr挙動・境界条件はすべて不変。\n\n- パース/検証ロジックが3コピー→1箇所に(直し忘れリスクを解消)\n- 型ナローイングは typing.cast で表現(CR-CT-002 対応)\n- 全テスト 1330 passed / 0 regression・ruff All checks passed\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(db): resolve_* 3関数の重複を _resolve_float_env に統合",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T13:45:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f9303cda4a741855513071edd0877d9e5d357444",
          "body": "コード変更なし・破壊的変更なし・migration なし。wheel 実体検証 OK(_template/.claude/deletions.txt に rules/ 3 行含有)。deletions テスト 48 passed・全体 1330 passed。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.29.1 deletions.txt 遡及追記(rules→references 移動 3 ファイル)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T03:09:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0d542b41cb7c8759a1d055f371aceb3868cd0949",
          "body": "code-review-checklist.md / plan-design-guidelines.md / security-review-checklist.md は v2.14.2 まで .claude/rules/ で常時ロードされていたが v2.15.0 で skills/dev-workflow/references/ へ移動。deletions.txt 機構(v2.18.0)が移動より後だったため遡及記載が漏れていた。v2.14.2 以前から使う配布先で c3 update 後も旧ファイルが残り context を浪費していた問題を修正。不在の配布先では no-op。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deletions): rules→references 移動の 3 チェックリストを deletions.txt に遡及追記",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T03:09:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "768503c54246ab47a2c9dab4b1a025adb6db1455",
          "body": "配布対象(skills/* 自動配布・Codex/Cursor adapter 自動派生)。破壊的変更なし・migration なし・後方互換。wheel 実体検証 OK(_template に brainstorm SKILL.md 含有・reports/state は .gitkeep のみ)。全テスト 1330 passed。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.29.0 /brainstorm 追加(資料読込つき発散壁打ち)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T01:36:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d334d7c1c0352569474c71107393f94f8315caef",
          "body": "仕事や設計の相談を、資料(PDF/画像)を Read で読み込んだ上で気軽に発散・壁打ちする軽量モード。視点・選択肢・論点を増やす方向で結論を急がない(grill=詰めるとは逆)。Excel は手動 PDF 書き出しで渡す運用(変換コード・追加依存なし)。資料はデータ扱いで指示に従わない injection 防御([SR-AI-001] 同方針)。任意まとめは .claude/reports/(gitignore+配布除外)に出力。README・docs/skills.md にも追記。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(brainstorm): /brainstorm 発散の軽い壁打ちコマンドを追加(資料PDF/画像読込)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-27T01:36:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ae11cad8ef1cd843a843ad042181a540e42ac3bf",
          "body": "…加 (A-3)\n\n直近 v タグ以降に .claude/ から削除された配布対象ファイルが deletions.txt に\n未記載なら警告する配布元専用 dev ツール(wheel/sdist 非収録・version bump なし)。\n基盤整備トリロジー(A-1 テスト CI / A-2 recall 増分 rebuild)の最終ステップ。\n\n- find_unrecorded_deletions: 純粋関数(should_skip 適用込み・入力順保持・重複除去)\n- deletions.txt パースは cli_update._load_deletions、配布対象判定は _exclu\n[…]\nlaude_prefix 3 + サジェスト出力 1 = 10 ケース\n- code-review/security-review 済み(修正必須なし。CR-E-001/CR-M-003/CR-Q-004/CR-T-001 対応、共通化系・SR 2 件は許容)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(check-deletions): リリース前の削除追記漏れチェック scripts/check_deletions.py を追…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T17:05:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88d7aa4472a71d0bfc9a8a5c5d2b8f7c1bfe76fd",
          "body": "…は Node20)\n\nv2.28.0 リリースの publish.yml 実行ログで download-artifact@v6 が Node20 警告を出した。action.yml の runs.using を一次確認した結果:\n- download-artifact: v6=node20 / v7=node24 / v8=node24\n- upload-artifact:   v6=node24 / v7=node24\n先のコミット 141559b は Web 要約の誤情報(download v6=Node24)に基づき download-artifact を v6 にしてしまっていた。両 artifact actions を v7(共に Node24)に統一。次リリースの publish.yml 実行で検証される。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: publish.yml の artifact actions を v7 に修正(download-artifact@v6 は実際に…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T16:11:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b1cccc6ebbe90abe193e66b3c441d10cccbc87f7",
          "body": "…e で全再構築・検索結果不変・migration なし・後方互換。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.28.0 recall 増分 rebuild。未変更チャンクのベクトルを再利用し変更分のみ再埋め込み。--forc…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T16:08:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "10e2404440704dc3217f6515ff4ac13c52554aba",
          "body": "- cli_recall: (source_type,path,chunk_id)+source_hash 一致の未変更チャンクは旧ベクトルを再利用し、変更/新規のみ embed。律速の埋め込みを削減。--force で全再構築。増分不可(index 不在/load 失敗)は全再構築フォールバック(理由を stderr に型名のみ出力)\n- recall_index: get_vector(chunk_id) アクセサ + 公開 content_hash(text) を追加(source_hash 計算を一元化)\n- 増分パーティションは _partition_chunks_for_reuse に分離。検索結果・index 形式は全再構築と一致\n- tests: 増分/再利用/force/fallback/削除/get_vector/content_hash・PYTHONHASHSEED フレーク安定\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(recall): rebuild を増分化(未変更チャンクのベクトル再利用)(v2.28.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T16:08:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "141559ba50fcf5c125355aae9927a43ae9719f97",
          "body": "…s actions の保留理由を明記\n\n- actions/upload-artifact@v4 → @v6(Node24・GitHub API でタグ実在確認・name/path 利用は v4→v6 で破壊的変更なし)\n- actions/download-artifact@v4 → @v6(同上)\n- docs.yml: upload-pages-artifact@v3 / deploy-pages@v4 は Node24 版が upstream 未提供(deploy-pages#410)のため据え置き、理由をコメントで明記\n\npublish.yml は tag 時のみ実行のため次リリース(v2.28.0)で検証される。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: publish.yml の artifact actions を Node24 化(v4→v6)+ docs.yml に Page…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T15:13:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cc04b8600c7421a185440ff29948433308b5cb55",
          "body": "Node.js 20 ランタイムの actions は 2026-06-02 に Node24 へ強制移行・2026-09-16 に Node20 がランナーから削除される(GitHub 告知)。CI 警告で名指しされた checkout/setup-python を全 3 ワークフロー(test/publish/docs)で Node24 版に更新。\n- actions/checkout@v4 → @v5(Node24・min runner v2.327.1)\n- actions/setup-python@v5 → @v6(Node24)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: actions を Node24 対応版へ更新(checkout v4→v5・setup-python v5→v6)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T15:06:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0683606724cdad12bfbb9a88c6e434d405313339",
          "body": "A-1 で追加した test.yml の初回 CI(ubuntu)で 2 件が露呈。production コードは正しく、テスト側の OS 移植性バグだったため修正:\n\n- test_session_start.py::test_symlink_uses_unlink_not_rmtree:\n  リンク先 dir も file-history 直下のため別エントリとして rmtree される(=消えるのが正しい)にも関わらず target_dir.exists() を assert していた設計誤り。symlink を作れない Windows では skip され露呈せず、symlink が作\n[…]\nONPATH のバックスラッシュエスケープは Windows パスでのみ発生し POSIX では検証対象が無いため Windows 限定 skipif に。escape ロジック自体は tests/test_adapters.py で OS 非依存に検証済み。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: OS 依存テスト 2 件を Linux CI で通るよう修正",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T14:54:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "98768a1bcbc06b50f296b5a81218e584e254b610",
          "body": "- ubuntu-latest × Python 3.10/3.11/3.12 マトリクスで pytest 実行\n- slow テスト(fastembed モデル取得)は pyproject の addopts で既定除外(220MB DL を踏まない)\n- scripts/extract_breaking_changes.py --check で破壊的変更の未記載を検出\n- .github/ は wheel/sdist 非収録のため version bump なし(infra)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: push/PR で pytest + breaking-changes チェックを回す test.yml を追加",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T14:47:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "12ebf6fa45fd347ff2682cb952829649fd8fc5ab",
          "body": "… パラメータ表示)\n\n- C3_TIER_COST_LAMBDA の範囲を 0 ≤ λ ≤ 5 に更新(v2.27.0 で上限拡張・v2.26.0 は ≤ 1)\n- c3 tier stats の表示項目に「routing パラメータ(λ/ε/escalation)」を追記\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: README / CLI リファレンスに v2.27.0 を反映(λ 上限 5・c3 tier stats の routing…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T14:14:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ff8080c50744daf9d65631f814517b6a056ead56",
          "body": "…精緻化・cli_tier routing パラメータ表示。env 未設定で v2.26.0 と routing 一致・migration なし・後方互換。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.27.0 tier-routing λ 機能拡張。λ 上限 5.0・CR-Q-001 observability …",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T14:10:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6cc1e53a93992064bc8908ffa8a1e9353243530b",
          "body": "…ng パラメータ表示 (v2.27.0)\n\n- db.py: COST_LAMBDA_MIN/MAX 定数(SSOT)・公開 resolve_cost_lambda/epsilon/escalation_threshold 追加\n- select_tier.py: _resolve_cost_lambda 上限 1.0→COST_LAMBDA_MAX(5.0)・CR-Q-001(_cost_tiebreak 経路1 全コスト同値時 did_tiebreak=False・選ばれる tier は不変)\n- cli_tier.py: c3 tier stats に routing パラメータセクション(λ/ε/escalation)・--json に routing_params\n- tests: λ 上限境界(5.0 有効/5.1 拒否)・CR-Q-001 同値・parity(hook↔db 戻り値一致)・routing_params 表示\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): λ 上限 5.0 拡張 + CR-Q-001 observability 精緻化 + cli_tier routi…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-26T14:10:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2c5ff2966840b24cc3925830c7535cc51343b65e",
          "body": "…N_THRESHOLD 調整可能化。env 未設定で v2.25.0 バイト互換・migration なし・後方互換。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.26.0 cost-weighted Thompson 本格統合(全 tier・λ 重み付け)・ESCALATIO…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T17:03:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "044d025959d8d7f365f1ce5b0f73f1a538589f55",
          "body": "… 調整可能化 (v2.26.0)\n\n- A: Thompson サンプルを全 tier でコスト重み付け(score=sample-λ*cost_norm・全tier min-max正規化)して最大選択する routing を導入。重み λ は C3_TIER_COST_LAMBDA(0-1) で設定。λ>0 で発動(成功率 vs コストのトレードオフ)\n- B: λ 既定=互換センチネル(db.COST_LAMBDA_DEFAULT=None)。env 未設定で v2.25.0 の ε tie-break をバイト互換維持。λ=0 明示で cost 無視(純 Thompson)\n- C: \n[…]\nャ不変(λ optional kwarg・SelectionResult 末尾フィールド追加)・migration なし\n- docs: README/CLI リファレンスに cost-weighted routing と env チューニング変数の記載を追加\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): cost-weighted Thompson 本格統合(全 tier)+ ESCALATION_THRESHOLD…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T17:03:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dadfd8a3712a26bcb033d52f3d794f24decf7abe",
          "body": "…ng 挙動不変・migration なし・後方互換。cost-weighted Thompson 本格統合は v2.26.0 に分離。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.25.0 tier_bandit cost 蓄積・EPSILON 調整可能化・db.py 例外ログ統一。routi…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T15:30:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "309fc30fc865b350579c1d3540a9710344562290",
          "body": "- A1: tier_bandit へ cost を materialize する sync_tier_bandit_cost を追加(冪等な全クリア→集計 SET 同期・UPDATE-only・session_stop の usage ingest 直後に実行)。c3 tier stats に total_cost_usd/cost_samples 列を追加\n- B: cost-aware tie-break 閾値を db.EPSILON_TIEBREAK 定数 SSOT 化し C3_TIER_EPSILON env で上書き可能化(NaN/範囲/非数値は default fallback)\n[…]\n定で v2.24.0 と一致・A1 は書き込みのみで select_tier は cost 列を読まない)・migration なし・後方互換\n- docs: README / docs に c3 tier stats と cost 集計セクションの記載を追加\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): tier_bandit cost 蓄積 + EPSILON 調整可能化 + db.py 例外ログ統一 (v2.25.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T15:30:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2cc77a6768db3155ba269f5b0e8f3893384a389f",
          "body": "…除・実測の USD/MTok レート化で静的 tier_reference_cost と単位整合。既存関数不変・migration なし。tier_bandit cost 書き込みは v2.25.0+。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.24.0 tier-routing cost 精度向上。model 一致集計・(session,tier) 重複排…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T13:42:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b1add31c08d20ddcf32db5a7cdde79e61e87fddb",
          "body": "read_tier_cost_rate_summary / read_tier_cost_rate_for_complexity を新設し、\ntie-break の cost_map 源を rate 関数へ切替(tie-break ロジック不変・cost_map の\n値の意味が絶対 USD → USD/MTok レートに変化し静的 tier_reference_cost と単位整合)。\n既存 read_tier_cost_summary / read_tier_cost_for_complexity は完全不変。\ncli_tier に USD/MTok レートセクション追加 + DB 由来テキストに sanitize_terminal_text 適用。\nmigration なし。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): cost 精度向上(model 一致集計・USD/MTok レート化で単位整合) (v2.24.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T13:42:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ec6f34fb701067a1fa75561b3abb8d07367d4db5",
          "body": "…ier を選ぶ最小スコープの cost 統合。精度向上・tier_bandit cost 書き込みは v2.24.0。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.23.0 cost-aware routing 本体(tie-break)。Thompson 拮抗群で低コスト T…",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T11:08:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5e867eaa8e11c9d8c0857de2efd38303351abc48",
          "body": "select_tier の Thompson Sampling 分岐に、サンプル最大から ε(=0.05) 以内の拮抗 tier 群がある場合のみ min-max 正規化コスト最安を選ぶ tie-break を追加。単独最大は従来通り(挙動不変)・成功率を犠牲にしない最小スコープの cost 統合。\n\n- pricing.tier_reference_cost: tier→静的参照単価(input+output 和・haiku<sonnet<opus・未知0.0)\n- db.read_tier_cost_for_complexity: read_tier_cost_summary の comp\n[…]\next/main に cost_tiebreak 伝播(True 時のみ json キー/context suffix 追加)\n- LEARNING_THRESHOLD 未満は cost 無視・escalation 不変・migration なし・後方互換維持\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): cost-aware tie-break routing を実装 (v2.23.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T11:08:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "19e21eb6575af01d33020cfe333821a8668bac36",
          "body": "session_id で tier 学習データ (tier_recent_outcomes) と cost データ (agent_cost_runs) を JOIN し、complexity×tier 別平均コストを c3 tier stats で観測可能にする。cost-aware routing 本体(Thompson Sampling への cost 組み込み)は v2.23.0。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.22.0 基盤整備リリース第6弾。tier-routing に cost 紐づけデータ蓄積+可視化を導入。",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T09:29:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4d9d63b370f7f9968088c5a7ce8c505425da4d06",
          "body": "tier_recent_outcomes に session_id 列を追加し、agent_cost_runs と session_id で JOIN して complexity×tier 別コストを集計できるデータ基盤を整備する。c3 tier stats に Tier 別平均コストセクションを追加。routing 本体(Thompson Sampling)は不変で cost-aware routing は v2.23.0。tier_bandit の total_cost_usd/cost_samples 列は確保のみ。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tier): tier-routing に cost 紐づけデータ蓄積を追加 (v2.22.0)",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T09:28:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ca365e72f28c2487cbc0dfc2403d9aac73ead78e",
          "body": "基盤整備リリース第 5 弾。tier-routing にコスト次元を統合するデータ収集基盤を導入。\nセッションログ (jsonl) からモデル別トークン消費を USD 換算し agent_cost_runs に蓄積する。\n\n機能サマリ:\n- src/c3/pricing.py: モデル単価→USD 換算 (Opus 世代別単価に対応、出典 URL/取得日を docstring に明記)\n- src/c3/usage_ingester.py: セッションログ ingester (traversal/symlink/PII 防御)\n- 002_agent_cost_runs.sql: agent_\n[…]\n件解消。1073 PASS / 0 FAIL / 7 skip。\n\n次リリース予告:\n- v2.22.0 cost-aware routing (tier_bandit に total_cost_usd 列追加、select_tier に cost 重み付け)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "release: v2.21.0",
          "author_name": "satoh-y-0323",
          "author_login": "satoh-y-0323",
          "committed_at": "2026-05-25T07:01:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 420,
      "latest_release_at": "2026-07-25T16:22:02Z",
      "latest_release_tag": "v2.55.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 13,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 1.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 100,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "claude-code-conductor",
          "exists": true,
          "license": null,
          "keywords": [
            "agents",
            "claude",
            "claude-code",
            "codex",
            "cursor",
            "orchestration",
            "tdd",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "License :: OSI Approved :: MIT License",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Topic :: Software Development"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/claude-code-conductor/",
          "is_deprecated": false,
          "latest_version": "2.55.0",
          "repository_url": "https://github.com/satoh-y-0323/claude-code-conductor",
          "versions_count": 116,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-04-30T16:36:17.117874Z",
          "latest_published_at": "2026-07-25T16:22:19.354405Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 1,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2026-05-28",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": null,
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 176668,
      "source_files_sampled": 163,
      "oversized_source_files": 9,
      "agent_instruction_files": [
        ".claude/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 5325
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "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": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "PyYAML",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "duckdb",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.10"
        },
        {
          "name": "numpy",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.22"
        },
        {
          "name": "fastembed",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.8.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": 1,
        "open_issues": 2,
        "closed_ratio": 0,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "satoh-y-0323",
          "commits": 421,
          "avatar_url": "https://avatars.githubusercontent.com/u/272207768?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "docs.yml",
        "macos-smoke.yml",
        "publish.yml",
        "test.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "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": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "53dc5399c9465b9e234ea6bbf478a896b47ed8da",
        "ran_at": "2026-07-25T16:28:34Z",
        "aggregate_score": 3.9,
        "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-25T16:22:23Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-06-02T00:56:56Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 1,
          "created_at": "2026-05-20T11:47:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2,
          "created_at": "2026-05-20T11:48:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/satoh-y-0323/claude-code-conductor",
    "host": "github.com",
    "name": "claude-code-conductor",
    "owner": "satoh-y-0323"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 54,
      "inputs": {
        "security": 39,
        "vitality": 78,
        "community": 43,
        "governance": 39,
        "engineering": 70
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 78,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "commits_last_year": 420,
              "human_commit_share": 0.99,
              "days_since_last_push": 0,
              "active_weeks_last_year": 13
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "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": "420 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 420
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v2.55.0",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 1.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~1.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 1.2
                    }
                  }
                ],
                "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": 43,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 1,
              "stars": 1,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 39,
        "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": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "merged_prs": 1,
              "open_issues": 2,
              "closed_issues": 0,
              "issue_closed_ratio": 0,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "0% of issues closed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 0
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1/1 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1,
                      "decided": 1
                    }
                  }
                ],
                "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": "critical",
            "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": 25,
            "inputs": {
              "followers": 2,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "satoh-y-0323",
              "public_repos": 5,
              "account_age_days": 117
            },
            "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": "2 followers of satoh-y-0323",
                "points": 3.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2,
                      "login": "satoh-y-0323"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~0 yr old",
                "points": 6.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "claude-code-conductor"
              ],
              "ecosystems": "pypi",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "116 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 116
                    }
                  }
                ],
                "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": 70,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "claude-code",
                "framework",
                "multi-agent",
                "python",
                "workflow"
              ],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "5 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 39,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 39,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.9
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "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": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 49,
        "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": [
                ".claude/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 5325
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".claude/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".claude/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": "99 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.97,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "97 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 97,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 52,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 176668,
              "source_files_sampled": 163,
              "oversized_source_files": 9
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "9/163 source files over 60KB",
                "points": 52,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 163,
                      "oversized": 9
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "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": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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 pypi:claude-code-conductor@2.55.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T16:28:41.047587Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/satoh-y-0323/claude-code-conductor.svg",
  "full_name": "satoh-y-0323/claude-code-conductor",
  "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 agregadasPyPI.