A pure decision core, a ledger, and honest seams.
Every decision in the lab is made by one pure, deterministic reducer. React only renders and sequences commands; persistence is a browser round-trip. External systems are simulated and marked as such.
Select a component to see its responsibilities, where it lives in this codebase and what production would add.
CHANNELS
Where commands originatePLATFORM CORE
Decisions — pure, deterministicMONEY
Ledger-backed stateEXTERNAL (SIMULATED)
Vendors replaced by fixturesGreen = directly connected to the selected component. Dashed lane = simulated; no vendor, payment rail, feed or database is connected.
How this web application is built
One repository, one Vercel project, no server-side state.
src/domainPure TypeScript domain — engine, reconciliation, scenarios, journey trace. No React, no browser APIs. Parity-tested against the untouched v4 core.
src/labReact client components for the customer app, Control Room and journey; a single hook sequences commands and persists to localStorage.
src/appNext.js App Router pages. Content pages are statically rendered; the lab is client-rendered to avoid locale/time hydration drift.