Architecture
Architecture
Single source of truth
src/plan.mjs ── canonical model + deterministic generators (pure, no I/O)
│
├── build-site.mjs ── reads the model, precomputes SVG charts,
│ emits public/index.html (self-contained)
│
├── verify.mjs ── asserts the model is consistent/complete/deterministic,
│ builds the site, writes verification-report.{json,md}
│
└── publish.mjs ── renders docs to HTML, copies proof artifacts,
builds published/rocket-24-month-plan/
Everything derives from src/plan.mjs. Nothing downstream invents plan data, so the website, the verifier, and the published case study can never disagree.
The plan model (src/plan.mjs)
- Constants — company, $200M funding, 730 days, 100 km target, program start.
PHASES— 10 non-overlapping phases tiling Day 1–730, each with an owner,
goal, exit gate, a workstream pool, and a parallel-track pool.
TEAM— the 5 leads (E1–E5).MILESTONES— 17 dated gates, including the FLIGHT milestone at Day 710.BUDGET_ALLOCATION+CUM_SPEND_M— the $200M split and the 24-month
cumulative-spend curve.
RISKS— the risk register.- Generators —
dayPlan(n)produces a deterministic plan for any day by
selecting a workstream and parallel track from its phase by day-of-phase, plus weekday-driven rituals and a spend-to-date interpolation. allDays() and monthBuckets() build the full 730-day plan and group it by calendar month.
The website (public/index.html)
A single HTML file. Static sections (roadmap, budget, crew, milestones, risks) are server-rendered by build-site.mjs; SVG charts are precomputed. The day-by-day planner is interactive: the full plan is embedded as inline JSON (window.__PLAN__) and a small vanilla-JS controller renders the month pills, the day-detail card, and the per-month table. No frameworks, no network calls.
Determinism
All date math uses UTC and all generators are pure functions of the day index, so allDays() is byte-identical across runs — asserted by verify.mjs and relied on by the Proof Layer's checksums.