Home Blog

The walking skeleton walks: one thin lap of the REMIT spine

10 June 2026

At a glance — one stamped kernel call now fans out three genuinely different routes — fast, tracked, covered — and the whole lifecycle runs end-to-end in the browser: capture → world → plan → compare → views → execute → learn, with replay from the stamp reproducing the identical decision.

Three strategy routes across the synthetic AO, each banded and content-addressed

The problem

REMIT’s register had decided what to build in unusual depth — fifty-eight decisions covering the requirement-first ontology, the seam, stamps, bands, honesty rules — but none of it had ever run. The riskiest thing in a decision-heavy project is finding out late that the decided pieces don’t actually join up. DEC-43/44 prescribe the antidote: a walking skeleton — every stage of the lifecycle spine present and trivially populated, working end-to-end, before any stage gets deep.

Options

A repo-local choice rode along: the deploy pipeline here publishes app/ with no build step, so the skeleton ships as plain ES modules (JSDoc-typed) rather than DEC-41’s TypeScript — recorded as a deviation to reconcile at the skeleton gate (ADR-0005, DEC-47).

The strategy

Walk the system’s own use-order, committing real artifacts at every step:

  1. Capture — scripted interrogation of one visit activity; defaults visibly stamped; the canonical echo-back is the committing act (DEC-17). The requirement becomes a content-addressed, immutable object (DEC-35).
  2. World — a hand-authored 28×18 synthetic AO (roads, wood, marsh, the river Kara) with one mobility channel; the world-defining config core canonicalises and hashes into the stamp (DEC-48).
  3. Plan — the mock kernel: deterministic A* under three strategy biases (time / roads / cover — DEC-22’s fan-out), real paths, banded scores, and a stamp as plan identity (DEC-29).
  4. Compare — the A2 matrix, the comparability guard, and a selection rationale recording chosen + beaten + deciding axis (DEC-23, NF2).
  5. Views — map + timeline as synchronised projections with a shared playhead, rendered through the kernel’s own evaluator: shown = optimised (NF1).
  6. Execute — simulated playback re-anchoring the same evaluator; one margin band; an alert iff the band is crossed (E3); manual observations append to the log (E5).
  7. Learn — the after-action record read back entirely over the seam, and replay from the stamp reproducing the identical plan ids (NF3).

Everything heavy sits behind in-browser mock seam routes (PUT /objects, POST /plan/handful, /logs/… — DEC-39/41/42), and the app’s footer drawers show the object store and seam traffic live, so the substrate is visible, not asserted.

The results

Screenshots

Compare: the A2 satisfaction matrix, comparability guard, and rationale capture

Execute: band-crossing alerts and the append-only execution log during playback

Learn: plan-vs-actual reconciliation and the NF3 replay — same stamp, same ids

Execute: the vehicle holds at the bank for low water — the ford renders closed, phase 'hold', then it wades K-7 once the window opens

Sync Matrix: own-force phase + fuel, the tide forecast (curve + ford-open window) and the IKAROS-3 satellite's overhead passes on one shared axis — the first pass coincides with the OP dwell

Advisory coincidence: the imagery window (satellite overhead during the OP dwell) and the tide-aligned crossing surface as labelled advisory bands, with the columns lit up across the stack — advisory only, never deciding