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

Nathandela / swarm

Terminal multi-CLI agent tracker: centralized Agent View for Claude Code, Codex, Gemini, OpenCode and more

GoЛіцензію не виявлено★ 0 зірок⑂ 0 форківз лип. 2026 р.Переглянути на GitHub ↗

Nathandela/swarm має індекс здоров’я 45 зі 100, що відповідає смузі «У зоні ризику». Найвищий показник — AI Readiness (79/100), найнижчий — Community & Adoption (12/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

45
загалом / 100
У зоні ризику

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

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

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

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

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

Власність

NathandelaОсобистий обліковий запис
7 підписників7 публічних репозиторіївз лют. 2019 р.Quanthome

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
Gogithub.com/Nathandela/swarmv0.5.1-64 дні тому

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

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

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

69Помірний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
0.7/36Ритм комітів — 1/52 тижнів із комітами
18/18Обсяг комітів — 106 комітів за останній рік
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Використані вхідні дані
commits_last_year106
human_commit_share1
days_since_last_push0
active_weeks_last_year1
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 6 релізів
36/36Свіжість релізів — останній реліз 4 дн. тому
27/27Ритм релізів — реліз кожні ~0,1 дн.
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Використані вхідні дані
releases_count6
latest_release_tagv0.5.1
releases_from_tagsні
days_since_latest_release4
mean_days_between_releases0,1

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

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

12Критичний · 18% загального індексу
Як обчислюється оцінка
0/60Зірки — 0 зірок
0/25Форки — 0 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
0/22.5Ліцензія — файлу ліцензії не виявлено
0/18Настанови CONTRIBUTING
0/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ні

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

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

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

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

44У зоні ризику
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
6.5/25Охоплення власника — 7 підписників у Nathandela
18.6/25Послужний список — 7 публічних репозиторіїв, вік облікового запису ~7 р.
Використані вхідні дані
followers7
owner_typeUser
is_verified
owner_loginNathandela
public_repos7
account_age_days2 708
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

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

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у go
35/35Свіжість публікацій — остання публікація 4 дн. тому
20/20Історія версій — 6 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesgithub.com/Nathandela/swarm
ecosystemsgo
any_deprecatedні
min_days_since_publish4

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

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

66Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 1 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
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. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
0/10Теми
10/10Wiki
Використані вхідні дані
topics
has_wikiтак
homepage
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

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

Стан безпеки

35У зоні ризику
Як обчислюється оцінка
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.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
5/5Fuzzing — project is fuzzed
0/2.5Ліцензія — license file not detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6.8/7.5Vulnerabilities — 1 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,5
Виключено з оцінювання (немає даних або не застосовно): ci_tests. Залишкові ваги перенормовано.

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

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

79Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md, CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 85 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,85
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes3 526
Як обчислюється оцінка
12.6/18Розгортання однією командою — go.mod (домовленість інструментарію, без раннера задач)
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
11/11Статична перевірка типів — Go (статично типізована)
10/10Відтворюване середовище — lockfile
10/10Підтверджена практика роботи з агентами — 84 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Використані вхідні дані
has_nixні
has_testsтак
lockfilesgo.sum
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0,84
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — Go (статично типізована)
55/55Керовані розміри файлів — 0/253 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageGo
largest_source_bytes34 748
source_files_sampled253
oversized_source_files0

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

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

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

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Докладніше

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

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-23 13:15 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
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
10Fuzzingproject is fuzzed
0Licenselicense file not detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
9Vulnerabilities1 existing vulnerabilities detected
Прямі залежності 10
РеєстрПакетОбмеження версіїМаніфест
Gocharm.land/bubbletea/v2v2.0.2go.mod
Gocharm.land/lipgloss/v2v2.0.0go.mod
Gogithub.com/charmbracelet/ultravioletv0.0.0-20260303162955-0b88c25f3fffgo.mod
Gogithub.com/charmbracelet/x/exp/teatest/v2v2.0.0-20260713092006-0d683c34c74bgo.mod
Gogithub.com/charmbracelet/x/termv0.2.2go.mod
Gogithub.com/charmbracelet/x/vtv0.0.0-20260713092006-0d683c34c74bgo.mod
Gogithub.com/creack/ptyv1.1.24go.mod
Gogithub.com/muesli/cancelreaderv0.2.2go.mod
Gogithub.com/rivo/unisegv0.4.7go.mod
Gogolang.org/x/sysv0.41.0go.mod
Усі залежності не зібрано

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 8310,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Go": 1657723,
        "Ruby": 2403,
        "Shell": 5347
      },
      "pushed_at": "2026-07-23T07:55:36Z",
      "created_at": "2026-07-16T18:37:59Z",
      "owner_type": "User",
      "updated_at": "2026-07-18T18:13:41Z",
      "description": "Terminal multi-CLI agent tracker: centralized Agent View for Claude Code, Codex, Gemini, OpenCode and more",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "www.nathan-delacretaz.com",
      "name": null,
      "type": "User",
      "login": "Nathandela",
      "company": "Quanthome",
      "location": "Lausanne, Switzerland",
      "followers": 7,
      "avatar_url": "https://avatars.githubusercontent.com/u/47887658?v=4",
      "created_at": "2019-02-22T10:45:08Z",
      "is_verified": null,
      "public_repos": 7,
      "account_age_days": 2708
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.5.1",
          "kind": "patch",
          "published_at": "2026-07-18T18:17:56Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-07-18T17:34:09Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-07-18T13:14:13Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-07-18T10:44:03Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-07-18T08:35:40Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-07-18T05:53:37Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "de63641ab13cd0128e61bd97f547941da8d1c488",
          "body": "Field test 5 (bead agents-tracker-zsc): a codex session waiting on\ncommand approval showed Working. Replaying the live transcript through\nthe production vt emulator proved the dialog frame is inconclusive to\nevaluateCodexGrid - the busy hint is gone and codex hides the cursor,\nso neither the busy no\n[…]\ne real\nfield screen; verified red-first and against the live transcript.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Fix codex approval dialog reading as Working (needs-input signature)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T18:13:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b5ab42a811c79c5c3ea2ff2a98ee1ceef78ef95",
          "body": "Fable's v0.5 final audit flagged the subscribe section's 'a live status change reaches a healthy subscriber' as imprecise versus amended L1: an intermediate change may coalesce away; the latest committed state is what arrives within the bound. Post-release doc touch-up, explicitly non-blocking in the verdict.",
          "is_bot": false,
          "headline": "protocol.md: subscribe streams latest-state snapshots (ADR-008 touch-up)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T17:35:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0def5cfae322b2e0eed1d370ef64b624ca84577",
          "body": "…livered stream\n\ncodex's confirm round caught the last edge-delivery straggler: V-5 promised a banner whenever a session enters needs_input/ready_for_review, which ADR-008 permits coalescing away. V-5, E7.2, and the matrix V-5 row now scope the trigger to transitions observed in the delivered status\n[…]\ne always persist to delivery. ADR-008 consequences record the amendment.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Amend V-5 for ADR-008: banner fires on transitions observed in the de…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T17:28:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "64c5de1e7852e49ac6d74c231ad5d9202f72a5a0",
          "body": "codex's v0.5 final-confirm flagged that the single-producer fan-out\n(5c2d698) can coalesce two commits landing inside one sampling window,\nlosing a committed intermediate state, and read P-3/L1 as requiring\nper-change edge delivery. Ruling: amend the contract, not the code.\nEdge-completeness was nev\n[…]\nnd the reopen condition (any future server-side\nedge-triggered feature).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "ADR-008: status events are latest-state snapshots (coalescing permitted)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T17:24:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c2d698e5c1f59c6b8fa6c5a3e22fd3cc0d741c7",
          "body": "…ace)\n\ncodex maintained its rename race with an exact interleaving and was\nright - the race is emitStatus-vs-poller, not daemon-writer-vs-writer\n(what the other reviewers verified safe): emitStatus could capture\nmeta before a rename, queue its stale snapshot AFTER the poller\nqueued the newer name, a\n[…]\nix rows still\nencoding the pre-ADR-007 inconclusive rule (codex item 6).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Fix codex v0.5 HIGH-2: single-producer roster fan-out (stale-rename r…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T17:15:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba472253701c7def7bb08c1af65dd825e7e771a9",
          "body": "Consensus fixes from the v0.5 audit: readCapped stat-and-rejects\nnon-regular files so a FIFO planted at a config path cannot block the\ndetection goroutine (symlinked regular configs still pass); T-4 and\nE10.8 amended to reference the ADR-007 revision (the source-of-truth\nrequirements still encoded t\n[…]\nblocking),\nthe duplicated roster diff key, and the offline-replay panic.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.5: committee polish - FIFO probe guard, spec/ADR amendments",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T16:56:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17776aa266cea0ef2e7abd9876103824d8bc7c3a",
          "body": "overlayModelOptions was an unimplemented identity function, so the\ndiscovered models never reached the launch form - the orchestrator's\nsession-limit salvage completed the parsers but missed the stubbed\nintegration seam, and no test covered it. Implemented (catalog\nreplaces aliases; default-only dis\n[…]\n-pinned.\n\nTDD red appended to docs/verification/v0_5-red/models-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Fix codex v0.5 HIGH-1: implement the model-overlay stub",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T16:43:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4eaf9787ac658444494bd3056aaf54520bd02c14",
          "body": "Field test 4: the board's leftmost column is now the session NAME with\nthe agent as its own column; 'e' on a row opens an inline rename\n(type/paste, enter saves, esc cancels). New protocol Rename op\nmodeled on Kill end-to-end: server revalidates via sanitizeName, the\ndaemon persists through the sing\n[…]\nd: docs/verification/v0_5-red/rename-red.txt.\nCloses agents-tracker-hki.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.5: rename sessions from the board + name-first layout",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T16:27:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "255a160f775e65e61a6476d1761639a50b122a58",
          "body": "…ignatures\n\nField test 4 P1s, forensics-driven. The engine no longer lets an\nINCONCLUSIVE grid read clobber a known status: absence of evidence is\nnot evidence of change (ADR-007 - reverses the deliberate\napply-unknown design; Tick's evidence-based silence downgrade kept,\nthe two fire on opposite ev\n[…]\ned through the production emulator.\nCloses the two v0.5 P1 status beads.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.5: status accuracy - preserve rule (ADR-007) + codex/claude grid s…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T16:04:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f5b29f387a95c4941962ff4be5fdeab12078c9d3",
          "body": "The model field now pre-fills the model each CLI is actually\nconfigured to use and cycles real choices: codex from CODEX_HOME\nconfig.toml (model key) + models_cache.json (visibility list, by\npriority); claude from settings.json (default only - no enumeration\nexists). Probes live in the detect packag\n[…]\ns/verification/v0_5-red/models-red.txt.\nCloses the model-discovery bead.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.5: launch form discovers real model default + choices from CLI config",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T15:41:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "13927e4efea03f2277a393555fd8647630d398e0",
          "body": "…al names\n\nAdjudicated from the codex/Opus/Fable v0.4 audit. Attach now dials a\nfresh connection per attach from the stored socket path, so the auto\ndaemon-upgrade no longer strands attach on the dead pre-restart conn\n(the codex+Opus HIGH; real-daemon post-upgrade attach test added).\ncompareSemver l\n[…]\n selected one.\n\nTDD red: docs/verification/v0_4-red/audit-fixes-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.4: committee fixes - fresh-dial attach, prerelease semver, canonic…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T13:07:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0aedd5f886ea02c930b661d579ef11065dedda37",
          "body": "…esults",
          "is_bot": false,
          "headline": "Fix SA4006 in flow/naming tests: discard deliberately-unused settle r…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T12:37:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "274fbbd142dee6a2a8f42f07f4b8119d4c1b264c",
          "body": "Field test 3: no way to tell running agents apart. The launch form\ngains an optional name field (default <agent>-<base cwd> composed at\nsubmit); LaunchReq/SessionView carry it (server-sanitized, 64-rune\ncap, truncate-never-reject), meta.json persists it additively (legacy\nmetas load fine), and the b\n[…]\nd: docs/verification/v0_4-red/naming-red.txt.\nCloses agents-tracker-4e2.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.4: session naming end-to-end",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T12:20:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0363215d68e3e4624051d2d6c848fea1d85cbba9",
          "body": null,
          "is_bot": false,
          "headline": "v0.4: end-to-end test locking form-submit auto-attach integration",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T11:42:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcaad20c66a4af545be9a373c131a98afc4bd0d0",
          "body": "…on upgrade\n\nField test 3 wave. Form: option schemas fully swap when arrows cross\nagents (codex rows no longer leak into claude's form), label column\nfits 12-char labels, selected-dot marker fixed, bool rows show the\nspace affordance inline. Detection: probe crash output is no longer\ndiscarded - the\n[…]\nhe session id.\n\nTDD red: docs/verification/v0_4-red/{form,flow}-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.4: form glitch fix, probe-reason surfacing, auto-attach, auto daem…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T11:37:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "971c0e01cb6e287aa001a3f54bf9a219bb496fa8",
          "body": "Field test 3: the reserved-row hint was reverse video (a harsh white\nbar on dark terminals); now faint (SGR 2) with a negative assertion\nforbidding reverse. goreleaser gains universal_binaries so the darwin\nartifact is a fat x86_64+arm64 binary - brew-installed swarm always\nruns native, fixing the R\n[…]\nerence regenerated.\n\nTDD red: docs/verification/v0_4-red/polish-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.4: dim hint bar + darwin universal binary",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T11:13:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d52057e3856f149ab9ea96a1283b70f647980809",
          "body": null,
          "is_bot": false,
          "headline": "Ignore session-local .claude/worktrees",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T10:43:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee5b85eb64f6bddb9eb2fef99251d1636a4a4c05",
          "body": "codex re-confirm round 2: the resize branch was the one remaining\nunconditional injection site - a resize landing mid escape sequence\ncould still splice region/hint bytes into the agent stream. The\nresize's terminal writes now go through the same ground-state gate\n(deferred via pendingResize to the \n[…]\ny).\n\nTDD red appended to docs/verification/v0_3-red/audit-fixes-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.3: ground-gate the resize path + height-2 notice policy",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T10:39:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1fcae2e545c746dc60a4005ef4725460f7d65ae4",
          "body": "Adjudicated fixes from the codex/Opus/Fable audit: re-assert\ninjections are ground-state-gated by a minimal streaming parser so a\nframe ending mid escape sequence is never corrupted (A-1 purity,\ncodex CRITICAL); a one-shot trailing heal timer bounds last-frame\ndamage and absolute-CUP bottom-row stom\n[…]\naded.\n\nTDD red evidence: docs/verification/v0_3-red/audit-fixes-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.3: committee hardening of the reserved row + delete path",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T10:31:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f381001e0da3f1630a4706b2413c8e0d2b3c7573",
          "body": "Field test 2: Enter on an ended session was a silent no-op (the\ndaemon refuses non-running attach, so the Epic-8 read-only path was\ndead fiction - superseded with traceability to bead x5z) and delete\ngave no acknowledgment. Enter on a non-running row now banners with\nnext steps; delete/kill replies \n[…]\nrification/v0_3-red/sessionux-red.txt.\nCloses the ended-session UX bead.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.3: ended-session UX + version-skew notice",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T09:49:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3f0d42fd0ab1faf0edbb9efa275e49e9af3fff1d",
          "body": "Field test 2: the user had no visible way back to the board from\ninside an agent. The attach view now reserves the real terminal's\nbottom row: the session PTY is sized rows-1, a DECSTBM scroll region\npins rows 1..rows-1, and a reverse-video hint (name + ctrl+q returns\nto swarm) owns the last row. Th\n[…]\ne: docs/verification/v0_3-red/hintrow-red.txt.\nCloses the hint-row bead.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.3: reserved bottom hint row while attached (ctrl+q affordance)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T09:39:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "632d5c1c241a49f3395e5f967f8e971ee732621d",
          "body": "Field test 2: up/down now move between form fields (Tab kept); arrows\ncan land on an unusable agent, which renders greyed with a derived\nreason (probe crash, unsupported version) instead of being silently\nskipped - the dead-arrow no-op the user hit with a broken codex npm\ninstall. Launch guard appen\n[…]\n/verification/v0_3-red/formnav-red.txt.\nCloses the form-navigation bead.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.3: form arrows navigate + unusable agents visible with reason",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T09:23:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a817cfd67e0aceffdc023886acd508e55465b660",
          "body": "Fable re-confirm residual (agents-tracker-9p5): xterm-family terminals\nin UTF-8 mode honor UTF-8-encoded C1 CSI/OSC as controls, so the\nrender-time backstop must strip U+0080-U+009F alongside C0+DEL.\nTDD red appended to docs/verification/v0_2-red/audit-fixes-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Widen render sanitizer to C1 control runes (U+0080-U+009F)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T08:38:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7c9a343de1c6fa8f55a1de2657542b167ba2c5d0",
          "body": "Render: control bytes stripped from snapshot text (escape-injection\nguard); RenderSnapshotClipped clips to the client terminal (rows,\nwidth-accumulated cols, wide cells never split, cursor clamped);\nrecorded alt-screen mode restored in the preamble; malformed snapshot\nnow paints a visible notice ins\n[…]\nated.\n\nTDD red evidence: docs/verification/v0_2-red/audit-fixes-red.txt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.2: audit-committee fix wave (9 items, codex/Opus/Fable adjudicated)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T08:29:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7d8908c2fc45843ebbf5c132a22f9336f9503eea",
          "body": "CI (ubuntu) caught the 2s probe bound not binding: linux /bin/sh runs\nits command as a child, so the context kill left an orphan holding the\noutput pipe and CombinedOutput blocked until the orphan exited (macOS\nbash execs the command, masking the bug locally). cmd.WaitDelay = 1s\nforce-closes the pipes after the kill. Verified darwin 2.01s and\nlinux/docker 3.02s.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Fix probe timeout on linux: WaitDelay closes pipes past orphan holders",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T07:56:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "97a1949f6aba354f3235f69766c6911e546143a7",
          "body": "Implements ADR-006 waves 1-2. DefaultDetachKey 0x1c (Ctrl+backslash,\nuntypeable on Swiss/QWERTZ layouts) becomes 0x11 (Ctrl+q); clean in raw\nmode since IXON is off, proven by the real-PTY detach test. Spec A-2 /\nscenario 8 and the E14 EARS matrix updated with the ADR citation.\n\nThe board now renders\n[…]\ned/chrome-detach-red.txt.\nCloses agents-tracker-bkn, agents-tracker-qes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.2: detach key Ctrl+q + full-screen board with persistent status bar",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T07:52:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1e55b96449567c9092733e049dce77d8c88f0f9c",
          "body": "P0 perf: pressing n froze the TUI for minutes — agent detection ran\nclaude/codex --version synchronously on the Update loop with no timeout.\nDetection now runs async at startup (detectMsg cache, live refresh on\nform open) and detect.Host.Run bounds the probe with a 2s CommandContext.\n\nForm UX (field\n[…]\n_2-red/form-perf-red.txt.\nCloses agents-tracker-3it, agents-tracker-0cx.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.2: instant launch form (async bounded detection) + form UX overhaul",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T07:30:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b5db8c8dd9fae7833524976604781013b71e8408",
          "body": "Records the three decision changes from the first human field test before\nWave B implements them: detach key Ctrl+backslash to Ctrl+q (layout\naccessibility), full-screen board with persistent status bar, and the\nbilling-inheritance principle (env forwarded untouched, neutral indicator\nonly).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "ADR-006: field-test UX revisions (detach key, chrome, auth inheritance)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T07:19:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "08842f75e5be635858b52c45057690718cc1d403",
          "body": "Field test showed attaching painted the literal snapshot JSON to the\nterminal: vt.Emulator.Snapshot is a JSON projection and attach wrote it\nverbatim. Add vt.RenderSnapshot (clear+home, per-run SGR styling, cursor\nrestore) and wire attach to decode+render, skipping malformed snapshots\nsilently. Chro\n[…]\nin docs/verification/v0_2-red/render-red.txt.\nCloses agents-tracker-a6f.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "v0.2: render attach snapshot as ANSI instead of raw JSON (P0)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T07:17:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22dc5081670eba5d812e83fe9255038bef5b05b3",
          "body": "… chronology note\n\nAddresses the final committee re-tour's concrete residuals (codex):\n- E5.7: wantOwnerOnly + the state-dir/socket/lock checks now assert the EXACT\n  contracted mode (0700 dir / 0600 files+socket), not merely no-group/other bits\n  (which accepted 0400/0700/0000). Pins the stated con\n[…]\nth commits integrated at verified-green checkpoints by workflow design.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Re-tour fixes: E5.7 exact-mode perms + scenario-1 N-1 citation + GG-5…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T01:52:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e124955db16b87df5c05bdf6ae1d22a447ee6596",
          "body": "…uffers\n\nThe buffer-shrink alone didn't make drops engage on the ubuntu CI runner (AF_UNIX\nflow-control blocking is kernel-version-specific). The buffers are finite, so a\nwedged consumer's queue WILL overflow given enough flood; ubuntu's defaults are\nlarger, so 20s was too short. Bump the drop-wait \n[…]\n drops must still engage; only the patience for a larger buffer grows).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "S9 drop tests: 90s drop-wait deadline for ubuntu CI's larger socket b…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T01:34:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1007aac2238f39a4916940dba4aa2e10f270ed9e",
          "body": "…ogs (Epic 11/14)\n\nTwo S9 wedged-consumer drop tests (TestSurvival_WedgedConsumerDropsFrames...,\nTestSurvival_SoakBoundedMemory) flaked on the CPU-constrained CI runner (\"drops\nnever started within 20s\"): filling a large default socket buffer before the\nbounded queue overflows is CPU-bound, so on a \n[…]\n code (a7d ordering, disk-full, compat matrix,\n  perf/composite gates).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "S9 drop tests: deterministic overflow (CI-runner robust) + GG-5 red-l…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T01:25:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35b1fc05a45a509420fe148762700b4e5936a426",
          "body": "The linux CI test lane (running for the first time since the Epic-4 Getsid fix)\nsurfaced 10 internal/shim unit-test failures. All THREE root causes are\ntest-infra — the shim product works on linux (e2e/daemon/skeleton pass);\nshim.go/server.go are untouched:\n\n1. Snapshot-vs-live routing (not lost out\n[…]\nount=5, no flakes) + darwin -race PASS; gofmt/vet/GOOS=linux vet clean.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Fix linux shim unit tests: 3 test-infra causes (no product bug)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T01:00:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f06d9121216901fb521f03fdb2cb65175b869205",
          "body": "…, perms, scenario map\n\nAddresses the committee's whole-system-tour findings (audit trail: the codex +\nOpus + Fable tour on 6de7b00):\n\n- GG-4 lint: all 15 golangci-lint v1.64.8 findings fixed (2 real bugs: an\n  unimplemented drain-check behind an empty branch in lease_test, a dead\n  accumulator in s\n[…]\n fix in progress; the\nproduct passes on linux via e2e/daemon/skeleton.)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Whole-system audit fixes: lint (GG-4), live-shim N-2 gate, GG-6 scope…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-18T00:33:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ab7e747f51db0c7681c6c764d1229582f59a6f1",
          "body": "The whole-system audit tour (Fable) caught that CI has failed on every push\nsince Epic 4: cmd/swarm/role_test.go used syscall.Getsid, which exists only on\ndarwin. `GOOS=linux go build` skips test files so it passed every epic's\nbuild check, but CI's `go vet` on ubuntu typechecks tests and fails\n(\"un\n[…]\nswitches the\none test call to match. GOOS=linux go vet ./... now clean.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Fix CRITICAL: linux CI red since Epic 4 — syscall.Getsid in a test file",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T23:44:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6de7b00cda5bc15844ed4106ac945338dd4dbd59",
          "body": "…perf gate, gated real-CLI\n\nE14.3 old-shim×new-daemon compat MATRIX (build-tagged shimwire version seam,\nbyte-identical shipped build; matched interops, both skew directions detect->lost\nwith agent+shim alive, S3). E14.4 N-3 real daemon+shims idle-CPU <5%/core over\n>=60s (integration lane, both CI p\n[…]\nproduction test seams\n(shim.testHookAfterSignalArm, persist.writeTemp).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 14 Wave 2: compat matrix, idle-CPU, L1 composite, worktree e2e, …",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T23:27:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d7147a545d6c83bc42998e8abc793b8c7a9b36d6",
          "body": "… soak + injections\n\nE14.5 fuzz job (5 targets, bounded fuzztime). E14.2/E14.6/E14.7 traceability\nartifacts (invariant list, EARS matrix, contracts manifest) — every cited test\nverified to exist. a7d: a nil-in-production shim seam proves a SIGTERM in the\narm->spawn window is buffered and still conta\n[…]\nL1 composite, worktree e2e, gated real-CLI smoke) + evidence file next.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 14 Wave 1: fuzz-CI, traceability artifacts, a7d ordering, daemon…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T22:59:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c149ac9e24b1add249e728e5d243ff1db15aab8",
          "body": "…d (committee CONSENSUS)\n\ngoreleaser v2 pipeline: 4 static CGO-free artifacts (darwin/linux × amd64/arm64)\n+ sha256 checksums; only cmd/swarm ships (dev tools excluded). Build version is\nstamped via ldflags into internal/version, printed by `swarm version`, and\ncarried additively on the real OpHello\n[…]\n -race; goreleaser check valid. Sign/notarize deferred to release time.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 13: release packaging — installable by name, versioned end-to-en…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T22:18:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a5ec9760c0096747345b341838d280c5f4b2ece",
          "body": "…SENSUS)\n\ncodex + Opus both CONFIRM Epic 11 ready to close. Three audit rounds turned\nconformant-but-simulation-only adapters into a working, race-safe status\nfeature: SetStatus resurrection race, restart-status seed, terminal-writer\nrace, the event->status mapping bridge, and real transcript-driven\n[…]\nnt\ncapture during a held attach), closing codex's LOW verification nit.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11 evidence — close the adapters + status feature (committee CON…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T21:20:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "381cc6aa964bcd79810168a204e84f96c0c184b9",
          "body": "…ture\n\nCloses the three narrow B2/B3 edges the confirmation committee found:\n\nC1 - conversation-id capture no longer depends on winning a second live shim\nattach. Capture now reads the transcript file tail (bounded) on the poll\ncadence AND at session end, so a session the user attaches immediately a\n[…]\n capture/extract tests at -count=5; gofmt/build/vet + GOOS=linux clean.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11: confirmation-round residuals (audit-011) — robust resume cap…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T21:13:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b701b4a1c9e9d6ea8fbd2055c33cf52459711b34",
          "body": "codex + Opus confirmed B1/B4/B5/fixture resolved and gates green under -race;\nOpus verdict CONFIRM. codex found 3 narrow B2/B3 edges (attached-until-exit\ncapture gap, non-atomic register/seed on fresh launch, partial-id write-once),\nall verified in code. One final tight round (C1-C4) dispatched; findings are\nnarrowing round-over-round (convergence).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11: confirmation synthesis (audit-011) — 3 narrow residuals",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T20:59:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b933beee3c7393d7695cea5a00fe20c3848f5341",
          "body": "… safe defaults\n\nAddresses the five correctness bugs the audit-010 committee confirmed:\n\nB1 - resume no longer lies or fails silently: composeLaunchSpec proceeds as a\nresume (and stamps ResumedFrom) only when a real resume argv is composed;\notherwise it returns a clear error. The TUI resume path now\n[…]\nngine race tests at\n-count=5; gofmt/build/vet + GOOS=linux build clean.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11: committee fix round (audit-010) — resume, S7, terminal race,…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T20:23:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fa05830ce8fd2ee5d609ac00e6882e785e7151eb",
          "body": "codex (cross-model) + Opus (independent, ran the gates) re-reviewed the fix\nround. Structural spine cleared; five correctness bugs confirmed line-by-line\n(broken/mislabeled resume, S7 stale-active after restart, terminal-writer\nrace, unsafe permission default, unfaithful Codex fixture). Codex live\nt\n[…]\ne names consciously deferred to Epic 14.\nTargeted fix round dispatched.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11: committee re-review synthesis (audit-010) — FIX REQUIRED",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T19:55:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c9ae6791ee23cf93f0ec6e36e14074c0ac91f17",
          "body": "The audit-009 committee cleared the adapters as pure/conformant but found the\nFEATURE undelivered: launching a real Claude/Codex session, its hooks driving\nstatus, and resume all worked only in simulation. This round wires the six\nremaining seams (FIX 1, the SetStatus race, landed in ceabc44):\n\nFIX \n[…]\nr -race (27 packages), gofmt/build/vet clean. Committee\nre-review next.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11 FIX 2-7: turn conformant adapters into a working status feature",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T19:37:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ceabc44fb9bd5bb1428cc6f41cb0d6e26f497f45",
          "body": "The audit-009 committee's CRITICAL finding: SetStatus read meta under d.mu,\nreleased the lock, then saveMeta persisted the STALE process dimension. A late\nengine emit interleaved with handleShimExit/markLost could overwrite an exited\nor lost session back to running, so a dead session showed running \n[…]\nreen against the committed base wiring). FIX 2-7 from audit-009 remain.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11 FIX 1: close the SetStatus resurrection race (atomic RMW)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T19:06:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b2e4ac3a029d9f02ef35a25b0d366af5920c47d",
          "body": "…d-to-end\n\nCompletes the carry-forward from Epics 8/10. Three seams in the skeleton assembly:\n(a) daemon OnSessionStart/OnSessionEnd hooks thread the privately-minted SWARM_HOOK_TOKEN\nto engine.RegisterSession (token never persisted). (b) A 200ms grid-sample tap opens a\nshort-lived shim attach (resp\n[…]\na verified no-op (S6). Whole module green under -race; GG-1 stays green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11: engine->daemon status wiring — status detection now works en…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T18:12:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "483c21bcf9a9a60c3abae55220f47ecf81abf0bb",
          "body": "…ts, T-5 boundary)\n\nThe two v1.0 real-CLI adapters, each a pure strategy object importing only {adapter, vt}.\nClaude: hook-style SignalSources (6 events via inline-JSON --settings injection, per-\ninvocation), --resume + conversation-id, ParseVersion('2.1.212 (Claude Code)').\nCodex: typed-event Signa\n[…]\nwo mechanical frozen-test defects: a dead vt import, a gofmt alignment.)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 11: Claude Code + Codex adapters + registry (pure strategy objec…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T18:07:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "210a5790d8d2735dd051d0ba09465fba862f9512",
          "body": "… committee consensus)\n\nGG-1 proven end-to-end and human-runnable: swarm opens the real TUI; kill -9 the\ndaemon, every agent survives, reconnect with nothing lost (exact grid + transcript).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 8 evidence + red log; close the WALKING SKELETON milestone (full…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T17:20:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "442e9b908d4460961737d49010d1c9eabf9f8d0f",
          "body": "…test, Epic 8 audit synthesis\n\nHousekeeping — three files landed in the working tree but missed their epic commits:\ndocs/adr/ADR-002 (the Epic 6 re-attach-on-supersede amendment), the Epic 12 E12.3\nhookpoints_test.go (the daemon PreLaunch/PreDelete registration test), and the Epic 8\ncommittee synthesis. No code change.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Commit missed files: ADR-002 re-attach amendment, Epic 12 hookpoints …",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T17:17:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ce92b082f11f24294e9af21e62a9b61e811b0a76",
          "body": "…id + transcript continuity, stdin guard\n\ncodex final round. (1) The 'V' version-probe tag is an incompatible wire change, so\ndaemon.ProtocolVersion 1->2 — a new daemon now detects a legacy untagged daemon as\nskewed (RED test proved it went undetected at v1). (2) GG-1 e2e strengthened: the\npost-reco\n[…]\nH stdout and\nstdin to be terminals (redirected-stdin bypass test added).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 8 final: bump ProtocolVersion for the wire change, GG-1 exact-gr…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T17:15:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "43b9b1287349aaed01106bf80f746819aa0972bf",
          "body": "…istic demux, self-contained GG-1\n\nCommittee (codex+Opus). runTUI now opens the real TUI: EnsureDaemon (D-1) ->\nprotocol.Dial -> tui.New(WithAttachRunner(NewAttachRunner(client.Attach, terminal\nhandoff))) -> tea.Program on the real terminal; no-tty -> clear error; PTY smoke test\nproves the general v\n[…]\nia\na real snapshot decode ('SKELETON-LIVES'). Latency comment corrected.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 8 review fixes: wire runTUI (swarm opens the real TUI), determin…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T16:57:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bc6444476290fcdaad9b0179a5991e4fbd7e2eb5",
          "body": "…GG-1 green)\n\nTHE MILESTONE. The daemon now assembles end-to-end: internal/skeleton.Serve composes\ndaemon.Open (singleton) + engine.Run + protocol.Serve on the daemon socket (via an\nadditive ConnHandler knob) + a 3-way first-byte demux (version handshake / protocol\nframe / raw hook JSON, no hook-wir\n[…]\nout) is\nan Epic 11 carry-forward (becomes real with live adapter hooks).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 8: walking skeleton — daemon assembly + raw attach passthrough (…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T15:57:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e58e903f9dbe86116e543d7494e6f37f00fd5ecf",
          "body": "… F1 deferred to Epic 8)",
          "is_bot": false,
          "headline": "Epic 12 evidence + red log; close epic (mechanism approved, F2 fixed,…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T15:13:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e778363b0258354d897872d4cacf2abf096241e8",
          "body": "Review found a leak: a launch that fails AFTER a successful PreLaunch called\ndropReserved (erasing the meta) but never a compensating PreDelete, orphaning the\nworktree dir + branch forever. Fix: a rollbackReserved helper calls PreDelete\n(when PreLaunch succeeded) before dropReserved on all 7 post-Pr\n[…]\n-injection paths that keep the meta are untouched. Genuine red-to-green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 12 F2: compensate the worktree hook on launch rollback (no orphan)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T15:11:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1492757b3b1c2df2aa5bb8a82d86a202be22ed55",
          "body": "internal/worktree: Create makes .swarm/worktrees/<validated-id> on branch swarm/<id>\n(git worktree add; path-safe id validated first, clear non-repo error); Remove tears\nit down (git worktree remove --force + prune, R-3). Daemon gains optional\nPreLaunch(id,spec)->cwdOverride and PreDelete(meta) hook\n[…]\ne shim spawns in the worktree. All 49 existing daemon tests still green.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 12: worktree isolation via daemon pre-launch/pre-delete hooks",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T14:51:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "73b42893690f72a290fc1ed43c7dc8d013cfb894",
          "body": null,
          "is_bot": false,
          "headline": "Epic 7 evidence + red log; close epic (committee APPROVE)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T14:33:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f4b568a700b98165b1a8e136849ff469a2c3c72",
          "body": "…, launch guard, calmer repaint\n\nBlocking fix: selection + Ctrl+X confirm now resolve by SESSION ID, not flat index,\nso a concurrent status event that reorders groups can never make kill/delete/attach\nhit the wrong session (data-destructive bug). Selection follows the same session by\nidentity across\n[…]\nd needs the\nalt-screen wiring that Epic 8 lands (recorded on that bead).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 7 review fixes: identity-based selection (no wrong-session kill)…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T14:28:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "89c3bdd83100f87e4c6ee33b11085da475fdd193",
          "body": null,
          "is_bot": false,
          "headline": "Epic 10 evidence + red log; close epic (full committee consensus)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T14:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32d24aee2982e93019fa717dac86f462ecbdf898",
          "body": "…red concurrent hooks)\n\ncodex re-review: strict lastSeq drops a legitimately-later-arriving lower sequence\nunder concurrent out-of-order hook delivery. A flat anti-replay window would fix that\nbut CONTRADICTS the frozen no-regression tests (a stale same-dimension update must be\nrejected). Resolution\n[…]\nnt corrected (transits 0600 launch config + env, never meta/transcript).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 10 F1-redux: per-dimension sequence high-water (tolerates reorde…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T14:03:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8844af39f415236fb6e6e7bf6625560867e2b198",
          "body": "…x, launch injection; fix linux build\n\nCommittee (codex+Opus, engine core confirmed correct). F1: replace the constant\nspawn-env sequence with a per-session flock'd counter file each hook atomically\nincrements (strictly-increasing under concurrent hooks — G5 now actually works).\nF2: applyPayload rej\n[…]\nd to Epic 8 walking skeleton per both reviewers (recorded on that bead).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 10 review fixes: per-session sequence counter, Emit-outside-mute…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T13:39:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6ed5d85b133fe2c6828da5da0e4e216cdfe69736",
          "body": "The user-facing production slice, matched to docs/design/ui-preview.html. Screen\nrouter (general/launch/attach sub-models); grouped general view (4 status groups,\nV-4 row fields, live Subscribe updates, needs-input/ready-for-review banners);\nfull keyboard map (wrap-select, Ctrl+X confirm kill-runnin\n[…]\no keep\nthe go 1.24 directive. teatest goldens are the acceptance record.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 7: TUI general view + launch form (Bubble Tea v2)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T13:17:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c9642db5863963ba3aebb5eca8b320eb2f198e8",
          "body": "…istics, staleness guard\n\nThe daemon-side status engine (S6/S7). HandleCallback authenticates every typed\nsignal (live token + strictly-increasing sequence; rejects tokenless/foreign/\nreplayed/post-end with no emit — S6/G5). Staleness guard flips active→unknown on\nno-output-and-no-CPU past threshold\n[…]\n posts an\nauthenticated callback. Single status writer per session (G6).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 10: status detection engine — authenticated hook callbacks, heur…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T12:55:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1b767d057b61f2a92aa73ed64b18b76b338eb83e",
          "body": "…e module green)",
          "is_bot": false,
          "headline": "Epic 6 evidence + red log; close epic (full committee consensus, whol…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T11:51:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c55664e78c06df1688c177aebca4fa7a2d50c9ea",
          "body": "…cap is sound\n\ncodex: the cap's per-cell byte assumption was unsound — Run.Text grapheme clusters\nand Snap.Title have no byte limit, so a legal snapshot could exceed the cap and be\nwrongly rejected. Producer-side fix: the emulator clamps per-cell text to 64 bytes\n(rune-boundary; covers any real grap\n[…]\nects these real producer bounds. vt fuzz + suite\ngreen; shim unaffected.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 6: bound per-cell text + title in vt snapshot so the reassembly …",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T11:47:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "982e1f82c4fa2814a26b4c863707874a1a92fef0",
          "body": "…ot is rejected\n\ncodex: the fixed 16 MiB cap rejected valid large-grid snapshots (vt emits one JSON\nrun per cell). Cap now = maxDim*maxDim*snapshotBytesPerCell — admits the largest\nlegal snapshot, rejects garbage/negative/oversized declared lengths (no OOM), and\ntracks maxDim automatically. Epic 8 f\n[…]\ne inline (run-merging is the\neventual optimization for large terminals).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 6: derive snapshot reassembly cap from maxDim so no legal snapsh…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T11:30:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f2b63aa398352fc387ee14ac026c9771d2809b92",
          "body": "…oundary), bound reassembly\n\ncodex found 3 new HIGHs from the snapshot-splice approach. Root fix: supersede now\nRE-ATTACHES via a fresh shim connection instead of splicing a fresh snapshot into a\nreused stream — reusing the shim's Epic 4 atomic snapshot-then-stream boundary (S10),\neliminating the da\n[…]\nsupersede\nsemantics + L3 stream release rather than single-stream reuse.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 6 re-review fixes: re-attach on supersede (reuse shim's atomic b…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T11:16:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6b10576f8234541d4ba5bb52d13f940cf8cfe0b8",
          "body": "…slow-controller eviction, L1 event safety\n\nCommittee (codex 7 HIGH + Opus-with-race). Snapshot now chunked across frames\n(a full grid exceeds wire.MaxFrame — ADR-002 amended) with attachment-state\nrollback on write failure; supersede fetches a FRESH snapshot; the attach output\npath is bounded with \n[…]\nizes text;\ndetach generation checked; lease/seen maps cleaned on delete.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 6 review fixes: snapshot chunking, fresh-snapshot-on-supersede, …",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T10:11:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a92dd74d773d83aef40eddaa200af6c31bd23d3d",
          "body": null,
          "is_bot": false,
          "headline": "Epic 9 evidence + red log; close epic (full committee consensus)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T09:36:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7afa3264f7778e82b7d71fc288de17068406f612",
          "body": "…, geometry, stderr version)\n\nRe-review NOT-RESOLVED + new defects, all in the dev tool. swarm-char now exposes\n-scenario/-input/-hook-sink/-geometry/-adapter and derives capability from the\nselected adapter via a registry (Epic 11 registers claude/codex). Hook collection\nis bounded (grace deadline \n[…]\ntry. detect uses CombinedOutput so a stderr-printed\nversion is captured.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 9: finish swarm-char CLI (flags, adapter registry, bounded hooks…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T09:34:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6d43704d86feaf0d5d66159bdabe4c925b24585b",
          "body": "…formance teeth, real characterization\n\ncodex FIX REQUIRED (contract-design flaw): Detect() was pure-declared but host-probing.\nReplaced with pure Binary()/VersionArgs()/ParseVersion() + a core Detect(a, HostProber)\nso adapters own zero fds/disk/sockets (ADR-001) — contract package now verified I/O-\n[…]\nos + collects hooks over a sink + derives capability from the real grid.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 9 review fixes: Detect() made pure (descriptors+HostProber), con…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T09:15:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c09e6e88c9ad388628a80d0f0ee99454fb79fd6",
          "body": "…out, server-side groups\n\nThe low-reversibility wire surface (ADR-002, G1 framing reused). Control ops over\ntype-tagged frames; hello with version+capability negotiation (D-8 both sides);\nexclusive controller lease with monotonic generations and supersede (S2), stale\ninput/resize dropped server-side\n[…]\nith a reflection-based drift test. DialSession seam added to the daemon.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 6: client protocol + daemon API — lease/generation, bounded fan-…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T09:03:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8bcf65be2d8dc3d2f9bedd39e63d8a1641c14045",
          "body": "…in-unblock hang\n\nFrozen anti-corruption boundary (T-1/T-5/T-6): the Adapter interface + conformance\nsuite, versioned fixture-corpus schema, swarm-char harness, and a fixture-only\nreference adapter proving zero core edits (import-boundary check). Purity proven\nfour ways (determinism, fd/goroutine ne\n[…]\ned flag to race. Two crasher corpus\nfiles retained as regression guards.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 9: adapter contract + characterization harness; fix vt Close dra…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T08:21:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f5b0614793c1531b75e99ab0967851e217b6b490",
          "body": "… 4 fix rounds)",
          "is_bot": false,
          "headline": "Epic 5 evidence + red log; close epic (full committee consensus after…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T07:54:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df3ac2f97116d5fc316af648779040d98ac4e925",
          "body": "codex: signal.Stop didn't drain sigCh or join the handler, so a queued signal\ncould invoke onSignal after finalization and hit a reused pgid. The one-shot\nhandler now runs under a WaitGroup; Run closes its done channel, joins it, and\ndrains sigCh before finishEscalation — provably quiescent at final\n[…]\no baseline. Only residual:\nuncatchable SIGKILL of the shim (documented).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 5 N2-final-2: join the shim signal handler before finalization",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T07:52:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0087161b49aac6c60050440caa7fee927cd5cc11",
          "body": "The launch-abort orphan window (agent exists between StartWithSize and acceptLoop)\nis closed at its root: the shim now arms an OS signal handler BEFORE spawning the\nagent, so any catchable termination of the shim runs the agent-group TERM->KILL\nfirst (agent-exists implies handler-armed). Daemon clea\n[…]\n an uncatchable SIGKILL of the shim itself (documented, error-surfaced).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 5 N2-final: shim self-contains its agent group on SIGTERM/HUP/INT",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T07:39:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ce1b8ab517646aa1838b53b4c69b98aaf575e6cf",
          "body": "codex flagged the fallback kill(-shimPID) as still racy. The literal reorder\n(identity save after serving) regresses S1: the agent becomes live during\nwaitShimServing, so a daemon death there leaves a live agent with no persisted\nidentity -> reconnect marks it lost. Resolution keeps the identity sav\n[…]\nists. Added an\ninvariant-guard test + Epic 14 note (agents-tracker-a7d).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 5 N2-residual: race-free launch cleanup preserving S1 reconnect",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T07:15:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9afa219463f6edd5d3129a3aa39e72d801bf1f51",
          "body": "…h cleanup kills agent group\n\ncodex delta re-review found 2 new HIGHs the prior round introduced. Restart now\nwaits for the old daemon's flock to free and Dial-confirms the replacement before\nreporting success (socket-quiet was never lock-free proof). Failed-launch cleanup\nsends SigKill through the \n[…]\nt the shim. Both proven by non-vacuous tests (HUP/stdin-ignoring agent).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 5 re-review fixes: Restart confirms replacement took over, launc…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T06:54:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fd5a83cb1a9d68d0890a5b5a4429c95535d3271f",
          "body": "… delete race, reconcile errors, real kill-9 test\n\nCommittee (codex+Opus, productive divergence). Fixes: pidfile stores PID+start-time\nand restart verifies before SIGTERM (the S3 bug in the daemon's own pidfile);\nlaunch kills an un-trackable shim instead of persisting ShimStartTime=0; delete/exit\nre\n[…]\nparenting + fd independence), two-process singleton race, log hardening.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 5 review fixes: restart PID-reuse safety, launch identity error,…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T06:36:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fa997571703c13bc90b5901ad9bbe9ca9dd98140",
          "body": "…phase launch, kill-9 survival\n\nLifecycle authority (ADR-001/S1): flock-before-bind singleton (S12); registry\nrebuilt from meta scan with (PID, process-start-time) identity reconnect, lost\non mismatch with zero signals (S3); two-phase launch with crash-window\nreconciliation leaving no orphan/phantom\n[…]\n kill-9 the daemon, every agent survives, a fresh daemon reconnects all.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 5: daemon core — flock singleton, PID+start-time reconnect, two-…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T05:11:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d1e11ea24d5dd95ef49532f451ba32473fc50f87",
          "body": null,
          "is_bot": false,
          "headline": "Epic 4 evidence + audit-003; close epic (full committee consensus)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T04:08:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "570dadaaada7ad64de45fdb90e39f22b67f0bbe1",
          "body": "…tee+verify setsid\n\ncodex re-review residuals. Escalation worker is now tracked and joined at\nfinalization with one synchronous group KILL, so no goroutine can signal a\n(possibly reused) pgid after Run returns. swarm shim role guarantees a fresh\nsession: Setsid, else Getsid check, else re-exec with \n[…]\nop-guarded); role_test asserts SID==PID. Corrected Run doc + umask note.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 4 final fixes: join escalation worker before Run returns, guaran…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T04:06:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "25d9c8c2483ce4f4045961be5f1ba60ca9aa60c9",
          "body": "… flush timeout, persistence integrity, resize/handshake gate, swarm shim role\n\nCommittee (codex + Opus) FIX REQUIRED. F1 CRITICAL: TERM->KILL now escalates\non group-not-empty with a bounded PTY-EOF wait, so a TERM-ignoring child can no\nlonger survive or hang Run. F2-F9: async reply pump (S9), timed\n[…]\n-load now requires contiguity; 30s bounded-memory soak (heap growth ~0).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 4 review fixes: group-empty escalation, non-blocking reply pump,…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T03:10:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bac19f8f9ff208600b4db2cada6f2cafaa3413c3",
          "body": "…group signals, exit side-files\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 4: shim engine — PTY ownership, G2 socket, S10 attach boundary, …",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T02:10:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "19bae1453eff3ed702e36c6c561996ee6dd3b027",
          "body": "…se; shim test suite (red)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 4: G1 wire codec, G2 message set, vt replies API + race-free Clo…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T01:04:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "adf18d5a33729f2ea443b1af7ce3736d0f085e9f",
          "body": null,
          "is_bot": false,
          "headline": "Epic 2 evidence file and red log; close epic",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-17T00:04:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cef5c3f34e41d8ea05b3cb34803e3b10aa3c3a89",
          "body": "… printable-only sanitizer\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 2 review fixes: scoped fuzz invariant (grapheme/malformed-UTF8),…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T23:57:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c4e20cafaba9552704d65430094054c038a720c8",
          "body": "…r, fuzz-found query-reply drain\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 2: Emulator wrapper — structured snapshots, hostile-escape filte…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T23:09:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f7984e8ecc088a99375ae161ee8be7b7817b9dcf",
          "body": "… close epic\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 3 review fixes + evidence: config validation, flush-after-close,…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T22:51:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a0ef5314f9a10f9d3bffbf3a438340a8c9a25d2",
          "body": "…rain\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 3: transcript writer — rotation, spinner collapse, never-block d…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T22:37:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9659ab744f61348987a78acb4bb8dc7c45acdff7",
          "body": "…n to 1.24\n\nWide-char cell geometry decided it: only x/vt keeps columns aligned for CJK,\nemoji and box drawing, which snapshots and grid heuristics depend on. Spike\ntest + real vim alt-screen capture retained as the validation fixture.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 2: E2.1 risk gate passed — charm x/vt chosen (ADR-005), toolchai…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T22:29:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b839c3172b528d5e45a46c12d77d32369ab485e6",
          "body": null,
          "is_bot": false,
          "headline": "Close Epic 1: full committee approval",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T22:10:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9e6d59d47aaa97de428019e7116459c3932c4bf",
          "body": null,
          "is_bot": false,
          "headline": "Epic 1 evidence file and red-phase logs (GG-5)",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T22:08:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ba3c8b515ad47dd7e1775f8a69c4ea13662b4f9",
          "body": "…arwin dylib assertion\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 1 round-2 fixes: non-vacuous crash test, migration gap errors, d…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T22:07:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "afaa532e8abb353f4451da5eabd35f1de45178f3",
          "body": null,
          "is_bot": false,
          "headline": "Remove accidentally committed build artifact, ignore root binary",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T21:59:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e4492b1c1bb44387ad3e1d516e4268792955f29e",
          "body": "…ion, dir hardening, migration registry, symlink guard, CI static assert, stdin-ask guard\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 1 review fixes: decode validation, env choke point, crash inject…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T21:56:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4798a130eb67b29785d4c291b5a780b3e9323f93",
          "body": "…afe ids\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 1: persistence — atomic meta store, migration, allowlist, path-s…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T21:35:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "973efccce352b51650d2310bbefa73ad07638ba3",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 1: status kernel (36-row derivation) and scripted fake agent, TDD",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T21:27:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "92a70518644620b605a0285bed622bc9e3df5f63",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 1: module bootstrap, role dispatch, CI cross-compile matrix",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T21:19:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9815f9fb16fad350f8a5f8cf4c3bd38ec4c66350",
          "body": "AGENTS.md finalized as a map; manifesto vendored with provenance (SHA 37dcf68);\nCI skeleton (docs gate + guarded lint/test); ADR index; N-7 limitation in README;\nproject rules in CLAUDE.md; backlog verified against build plan.\nIndependent review: APPROVE. Evidence: docs/verification/epic-00-evidence.md.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01AMF1EgNqYTS3iiq17HDWNB",
          "is_bot": false,
          "headline": "Epic 0: agentic codebase foundation",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T21:14:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f225437d5eaedc73360a3aff74ea8ee8757191f7",
          "body": "…onfigurable cap",
          "is_bot": false,
          "headline": "Close last verification gap: D-8 safety statement, demux semantics, c…",
          "author_name": "Nathan Delacrétaz",
          "author_login": "Nathandela",
          "committed_at": "2026-07-16T20:57:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 6,
      "commits_last_year": 106,
      "latest_release_at": "2026-07-18T18:17:56Z",
      "latest_release_tag": "v0.5.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 1,
      "days_since_latest_release": 4,
      "mean_days_between_releases": 0.1
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/Nathandela/swarm",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/Nathandela/swarm",
          "is_deprecated": false,
          "latest_version": "v0.5.1",
          "repository_url": "https://github.com/Nathandela/swarm",
          "versions_count": 6,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-18T18:13:36Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 34748,
      "source_files_sampled": 253,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 3526
    },
    "dependencies": {
      "manifests": [
        "go.mod"
      ],
      "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": [
        "go"
      ],
      "dependencies": [
        {
          "name": "charm.land/bubbletea/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.0.2"
        },
        {
          "name": "charm.land/lipgloss/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.0.0"
        },
        {
          "name": "github.com/charmbracelet/ultraviolet",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260303162955-0b88c25f3fff"
        },
        {
          "name": "github.com/charmbracelet/x/exp/teatest/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.0.0-20260713092006-0d683c34c74b"
        },
        {
          "name": "github.com/charmbracelet/x/term",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.2.2"
        },
        {
          "name": "github.com/charmbracelet/x/vt",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260713092006-0d683c34c74b"
        },
        {
          "name": "github.com/creack/pty",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.1.24"
        },
        {
          "name": "github.com/muesli/cancelreader",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.2.2"
        },
        {
          "name": "github.com/rivo/uniseg",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.4.7"
        },
        {
          "name": "golang.org/x/sys",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.41.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": 2,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "Nathandela",
          "commits": 106,
          "avatar_url": "https://avatars.githubusercontent.com/u/47887658?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum"
      ],
      "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": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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": 10,
            "reason": "project is fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 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": 9,
            "reason": "1 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "de63641ab13cd0128e61bd97f547941da8d1c488",
        "ran_at": "2026-07-23T13:15:36Z",
        "aggregate_score": 3.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-18T18:21:32Z",
      "oldest_open_prs": [
        {
          "number": 1,
          "created_at": "2026-07-18T10:04:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2,
          "created_at": "2026-07-18T10:06:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/Nathandela/swarm",
    "host": "github.com",
    "name": "swarm",
    "owner": "Nathandela"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 45,
      "inputs": {
        "security": 35,
        "vitality": 69,
        "community": 12,
        "governance": 35,
        "engineering": 66
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 69,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "commits_last_year": 106,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 1
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "1/52 weeks with commits",
                "points": 0.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "106 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 106
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.5.1",
              "releases_from_tags": false,
              "days_since_latest_release": 4,
              "mean_days_between_releases": 0.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "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": "critical",
        "name": "Community & Adoption",
        "value": 12,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 35,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "followers": 7,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "Nathandela",
              "public_repos": 7,
              "account_age_days": 2708
            },
            "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": "7 followers of Nathandela",
                "points": 6.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 7,
                      "login": "Nathandela"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "7 public repos, account ~7 yr old",
                "points": 18.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 7
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 7
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/Nathandela/swarm"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 4 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "6 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 66,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 35,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 35,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 3.5
            },
            "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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 fuzzed",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "1 existing vulnerabilities detected",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 79,
        "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": 0.85,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 3526
            },
            "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": "85 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 85,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.84,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Go (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "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": "84 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 84,
                      "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 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 34748,
              "source_files_sampled": 253,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/253 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 253,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T13:15:42.282244Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/Nathandela/swarm.svg",
  "full_name": "Nathandela/swarm",
  "license_state": "absent",
  "license_spdx": null
}

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

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

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