Your world, on your phone, with your coffee: five cards max, each in the words a human wrote when the thing settled, each with its receipt one tap away. Anything that needs you is fenced and first; if nothing does, the page says so. You mark ✓/✗/? and tomorrow's cards reflect it. Ninety seconds, two-minute hard ceiling. This surface reviews the spec — the walk script you already shaped is canonical and wins on any conflict.
Reference walk: where cards come from · verdict classes · mark identity · ruling reflection · deploy & rollback · your one call · what could go wrong
next_expected_render_at computed from the driver cadence (7:23/15:23 local). Client-side check at open time: Date.now() > next_expected + 45min → banner replaces header. Both elements exist in static HTML; the property is enforced at open time, so gate G-B5 runs in an executed-DOM harness under a mocked clock — raw-bytes assertions would pass while the property is false. Fixtures: dead-driver → banner, no header; healthy 16h overnight gap → header, no banner. First render (no prior receipt): window = trailing 24h, "first render" in the header, meter card suppressed.origin: bench:* excluded from candidacy — gate G-B2b plants one and it must not render) · intent-plane calls/leases · trunk merge subjects · LAW-2 meter state (a card only on state change). Cluster key: PR number when named, else normalized subject — never fuzzy. One-liner: most recent settlement text in the cluster. Ranking: needs-him first, then movement size, then recency; cap 5 is a runtime constructor cap with G-B1's force-a-sixth mutation. Naked claims (no receipt+currency) never render and are counted in the receipt's dropped_naked. Selection is a pure function: same inputs → byte-identical page (G-B6, plus a scope-aware ban on free fetch/network references in src/bench/ — import-reach alone can't see Node's global fetch).waiting-on-you (open intent-plane call) > stale (intent record past its lease/TTL horizon, unrenewed) > shipped (trunk merge) > moved (other fresh activity). blocked is not emitted in v1 — no mechanical predicate exists, and a class is never guessed from prose. Release line renders whenever the needs-him set is empty, independent of movement (G-B4's movement-only fixture: 4 cards, 0 calls → release line shows). Page currency lives exactly once, in the header; each card's claim-pin exactly once, on its card (G-B3)./__sync KV endpoint with specId: bench-marks-<token>; client-minted mark ids (hash of claim-id + mark + ts); merge-before-POST plus localStorage self-carry per device (last-write-wins substrate, so the client carries the merge — G-B8's merge-carry mutation: a stale-tab POST without merge must make a prior mark vanish → red). Driver dedupe anchors on existing bench:mark deposits by id — the same plane it writes to — because anchoring on receipts is circular in exactly the receipt-failure branch (G-B8's receipt-missing variant: deposits exist, receipt absent → second pass still mints zero). Every mark deposit is labeled origin: bench:mark (unauthenticated channel) — provenance never dressed up.bench:mark deposit or receipt marks_seen entry matching its cluster key) leaves the fenced set, ranks with movement, carries the annotation line with relative-day, and counts as answered for the release line. G-B9's fixture: call-marked-yesterday → demoted, annotated, NOT re-fenced, release line shows; mutation: re-fence the ruled call → red. Residual (benign, named): a ruled-but-unsettled call keeps rendering demoted until the lead formally settles it via intent machinery.functions/__sync.js + wrangler.jsonc (today they exist ONLY in gitignored scratch) and adds staging.json (committed source → snapshot path) + stage-snapshot.mjs rebuilding .roadmap-build/ fresh each cycle; G-B11 fails the deploy closed if any manifest entry is missing (mutation: delete __sync.js from staging → deploy must refuse). Twelve gate legs total, [M]/[J] courts declared, every [M] leg carrying a mutation that must go red; final [J] leg is the walk-audit on your actual phone viewport before you ever see it. DoD: gate green · manifest live · bench at the token path after one driver cycle · receipt deposited · driver duty patched · walk-audit logged. The staging manifest survives a bench rollback on purpose — it fixes a defect that predates the bench.A needs-you item misses the top five. Fence: needs-you always sorts first, the overflow line names it in those words, and the render receipt accounts for everything not shown.
The stale banner is a gate, not a hope — fixture-tested both ways under a mocked clock. The deeper fix (a driver that survives sessions) is its own named build, fenced visibly, not hidden here.
The ratified rider governs: iterate on the walk, not the plumbing; two failed iterations → park it and say so.
The marks channel ships unauthenticated behind the page's secret (same posture as this very review surface), every mark labeled as coming from that channel. If you want the bench behind Cloudflare Access instead — a login wall on your morning bookmark — say the word; it's a config flip, not a rebuild. Ship proceeds on the default; nothing else needs you until the walk-audit puts the page on your phone.