FICTIONAL PLANNING ARTIFACT. "Apogee Launch Co." is an invented company. Nothing here builds, tests, or flies a rocket. "To space" means a suborbital flight crossing the Kármán line (100 km); orbital flight is out of scope. All figures are planned targets, not measured results.
Apogee Launch Co. — 24-Month Plan to Space

Architecture

← Back to case study Open the interactive plan ↗

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.
  • GeneratorsdayPlan(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.