Ledger
2026-10-20 – TCP-09 wave
Section titled “2026-10-20 – TCP-09 wave”Observed:
node harness/check.mjsreports13 passed · 0 warnings · 0 failed.harness/serve.mjsis operational on loopback 127.0.0.1:3030, /healthz returns a JSON body withgates: 12reflecting the snapshot.- Citations check resolves 67 citations; no broken citations.
- Seeded violations: 10/10 caught.
Derived:
- The gate count is 13 because the
workerscheck is included; the snapshot’sgatesfield is 12 becausehealth.mjsfilters out the self‑referentialstatuscheck.
Artifacts:
- The wave evidence ledger lives in the separate
harness-rescueworkspace outside this checkout (not a repo file). - Changed files in this wave:
docs/ops/publish-checklist.md,docs/ledger.md
2026-10-21 – ledger freshness gate
Section titled “2026-10-21 – ledger freshness gate”Observed:
node harness/check.mjsreports11 passed · 4 warnings · 0 failedon a tree whose snapshots are 25.8h old; the newledgercheck warns at 24h and fails at 72h, and the first live run names bothstatus.jsonandgate-results.json.node --test harness/check.test.mjsreports 38/38 passing, including eight ledger cases (fresh, warn, hard-bound fail, waiver, waiver scope, invalid waivers, undatable snapshots, inverted bounds, registry integration).- Waivers live in
harness/ledger-waivers.jsonand expire; an expired waiver, an undeclared file, a short reason or an unknown key fails the gate.
Derived:
- The frontier needs no freshness field: it is derived from the ticket files on
every run. The observable frontier count rides in
status.json, so the new gate covers it through that snapshot. - An absent snapshot stays a warning because absence is the owning check’s
verdict (
statusfails on a missingstatus.json,orchestrationwarns on a missing gate record). Freshness judges age, not existence.
Artifacts:
harness/checks/ledger.mjs,docs/freshness.md,harness/ledger-waivers.json, plus the registry and test changes.