Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-23 07:40 UTC

junpei-9898 / phasegate

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

TypeScriptMIT★ 2 зірки⑂ 0 форківз бер. 2026 р.Переглянути на GitHub ↗

junpei-9898/phasegate має індекс здоров’я 57 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (79/100), найнижчий — Security (36/100). Останнє оновлення було 1 день тому. Більшість нещодавньої роботи виконує один учасник.

57
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

57
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

junpei-9898Особистий обліковий запис
0 підписників12 публічних репозиторіївз трав. 2021 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmphasegate0.283.03 9311285 днів томуqualityclean-architecturedddai-agentgovernancephase-gatephasegate

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

79Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 1 дн. тому
9/36Ритм комітів — 13/52 тижнів із комітами
18/18Обсяг комітів — 443 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year443
human_commit_share1
days_since_last_push1
active_weeks_last_year13
Як обчислюється оцінка
16.2/27Випускає релізи — 100 тегів версій (без релізів GitHub)
36/36Свіжість релізів — останній реліз 1 дн. тому
27/27Ритм релізів — реліз кожні ~0,4 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_tagv0.301.0
releases_from_tagsтак
days_since_latest_release1
mean_days_between_releases0,4
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

38У зоні ризику · 18% загального індексу
Як обчислюється оцінка
0/60Зірки — 2 зірок
0/25Форки — 0 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks0
stars2
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductтак
has_pull_request_templateні
Як обчислюється оцінка
47.9/80Щомісячні завантаження — 3 931 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesphasegate
dependents
ecosystemsnpm
total_downloads
monthly_downloads3 931
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

50Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0/22.5Розподіл комітів — головний контриб’ютор — автор 100% комітів
1.4/13.5Широта контриб’юторів — 1 контриб’юторів
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Використані вхідні дані
bus_factor1
contributors_sampled1
top_contributor_share1
Як обчислюється оцінка
44.4/46.8Вирішення issue — закрито 95% issue
0/38.3Прийняття PR — немає вирішених pull request-ів або даних
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs0
open_issues2
closed_issues38
issue_closed_ratio0,95
closed_unmerged_prs0
Виключено з оцінювання (немає даних або не застосовно): Прийняття PR. Залишкові ваги перенормовано.

Власність та опіка

36У зоні ризику
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
0/25Охоплення власника — 0 підписників у junpei-9898
18.5/25Послужний список — 12 публічних репозиторіїв, вік облікового запису ~5 р.
Використані вхідні дані
followers0
owner_typeUser
is_verified
owner_loginjunpei-9898
public_repos12
account_age_days1 906
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 5 дн. тому
20/20Історія версій — 128 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesphasegate
ecosystemsnpm
any_deprecatedні
min_days_since_publish5

Інженерна якість

Чи наявні базові інженерні практики та документація?

74Добрий · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 3 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — biome.json
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: CI-Tests. Залишкові ваги перенормовано.

Документація

65Помірний
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
0/10Теми
0/10Wiki
Використані вхідні дані
topics
has_wikiні
homepage
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

36У зоні ризику · 16% загального індексу

Стан безпеки

36У зоні ризику
Як обчислюється оцінка
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 — немає даних
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.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
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 — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,6
Виключено з оцінювання (немає даних або не застосовно): ci_tests, packaging, signed_releases. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

77Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 100 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes6 751
Як обчислюється оцінка
12.6/18Розгортання однією командою — scripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod (домовленість інструментарію, без раннера задач)
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — biome.json
11/11Статична перевірка типів — tsconfig.json
10/10Відтворюване середовище — lockfile
10/10Підтверджена практика роботи з агентами — 100 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilespnpm-lock.yaml
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configstsconfig.json
agent_commit_share1
toolchain_manifestsscripts/harness/__tests__/fixtures/release-smoke/go-monorepo/go.mod
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — TypeScript (статично типізована)
54.9/55Керовані розміри файлів — 3/1 859 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes149 770
source_files_sampled1 859
oversized_source_files3
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — sample
Використані вхідні дані
example_dirssample
has_mcp_signalні
api_schema_files

Ключові факти

2зірок GitHub
1контриб'юторів
443комітів за останні 12 місяців
1днів від останнього пушу
100релізів
1бас-фактор
2відкритих issue
npmпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:phasegate@0.283.0; advisories assessed against the repository dependency graph instead

Докладніше

OpenSSF Scorecard 3.6 / 10
3.6сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-23 07:39 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
н/дCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 30 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
Прямі залежності 4
РеєстрПакетОбмеження версіїМаніфест
npmajv^8.18.0package.json
npmpicomatch^4.0.4package.json
npmtinyglobby^0.2.15package.json
npmtsx^4.0.0package.json
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

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

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаnpm.