Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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

GoSin licencia detectada★ 0 estrellas⑂ 0 forksdesde jul 2026Ver en GitHub ↗

Nathandela/swarm tiene un índice de salud de 45 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es AI Readiness (79/100) y la más baja, Community & Adoption (12/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

45
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

45
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

NathandelaCuenta personal
7 seguidores7 repositorios públicosdesde feb 2019Quanthome

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
Gogithub.com/Nathandela/swarmv0.5.1-6hace 4 días

Métricas por categoría

Vitalidad

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

69Moderado · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
0.7/36Cadencia de commits — 1/52 semanas con commits
18/18Volumen de commits — 106 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year106
human_commit_share1
days_since_last_push0
active_weeks_last_year1
Cómo se puntúa
27/27Publica versiones — 6 versiones publicadas
36/36Recencia de las versiones — última versión hace 4 días
27/27Cadencia de publicación — una versión cada ~0,1 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count6
latest_release_tagv0.5.1
releases_from_tagsno
days_since_latest_release4
mean_days_between_releases0,1

Comunidad y Adopción

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

12Crítico · 18% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

Sostenibilidad y Gobernanza

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

35En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
6.5/25Alcance del propietario — 7 seguidores de Nathandela
18.6/25Trayectoria — 7 repos públicos, cuenta de ~7 años
Datos de entrada utilizados
followers7
owner_typeUser
is_verified
owner_loginNathandela
public_repos7
account_age_days2708
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en go
35/35Recencia de publicación — última publicación hace 4 días
20/20Historial de versiones — 6 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/Nathandela/swarm
ecosystemsgo
any_deprecatedno
min_days_since_publish4

Calidad de Ingeniería

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

66Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_description

Seguridad

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

35En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0.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.5Licencia — 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
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate3,5
Excluidos de la puntuación (sin datos o no aplicable): ci_tests. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

79Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 85 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,85
agent_instruction_filesAGENTS.md, CLAUDE.md
agent_instruction_max_bytes3526
Cómo se puntúa
12.6/18Arranque con un solo comando — go.mod (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — Go (tipado estático)
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 84 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Datos de entrada utilizados
has_nixno
has_tests
lockfilesgo.sum
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,84
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — Go (tipado estático)
55/55Tamaños de archivo manejables — 0/253 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageGo
largest_source_bytes34.748
source_files_sampled253
oversized_source_files0

Datos clave

0estrellas de GitHub
1contribuidores
106commits en los últimos 12 meses
0días desde el último push
6versiones publicadas
1factor bus
0issues abiertas
Goecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 3.5 / 10
3.5agregado

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
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
Dependencias directas 10
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 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
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasGo.