Planning

Critstorm
Multi-Session Roadmap

Updated: July 8, 2026· Version 2

How the rest of critstorm gets built: the dependency spine that forces the order, a wave-by-wave plan from here to a playable v0.1 slice and beyond, and a readiness label on every open issue so you know what an agent can take solo and what needs you in the loop. Current status: wave 2.5 merged, wave 3 drafted.

01Where we are

Two waves of foundation are in. The game itself has not started yet.

8 / 45
Issues closed
+4 today
~18%
Epic progress
29
Open leaf issues
2
Waves to v0.1 slice

02The dependency spine

Blocks-edges between epics force a mostly-linear order. b4r is done; mhz then hkm are the critical path.

flowchart LR
b4r["b4r · sim + render ✓"] --> mhz["mhz · gold loop"]
mhz --> hkm["hkm · surge (bank-or-ride)"]
mhz --> j5g["j5g · defenses"]
mhz --> sh8["sh8 · presentation"]
hkm --> cz["4cz · economy harness"]
hkm --> gen["gen · meta layer"]
hkm --> npq["npq · storm arc & finale"]
Info

Read this as: nothing in mhz can start until b4r is done (it is); nothing in hkm / j5g / sh8 until mhz lands; the three right-hand epics unblock only once hkm exists. That last fan-out is the best place to run epics in parallel.

03The wave plan

Each wave is one (or a few) agent sessions, grouped so dependencies are satisfied and file-ownership doesn't collide.

WaveFocusIssuesGated on
2.5 — wave-2 cleanup tail (done)9zz, 18q, jhg, 5nf (7g6 deferred)
3Gold matter loopmhz.1–5b4r ✓
4Surge + v0.1 slicehkm.1–5, j5g.1mhz
5Economy harness + perf4cz.2, 4cz.3, b4r.4, 7g6hkm
6Content breadth (3 parallel epics)j5g.2–4, gen.1–3, npq.1–4hkm
7Presentation (taste pass)sh8.1–3, durmhz+
Success

Waves 3 and 4 are strictly sequential — the surge needs the gold loop to exist first.

Info

Wave 6's three epics (j5g / gen / npq) are independent of each other. That's the ideal fan-out: one agent-chain per epic, running concurrently.

Warning

Wave 7 is all taste — art, audio, juice, bust legibility. Save it for a session where you're actually in the loop; agents can't judge feel.

04The v0.1 milestone

Finishing waves 3 and 4 is the design's own vertical slice — the smallest build where the pitch is visible in a 10-second clip.

After wave 4, stop and play

Design §8 defines v0.1 as: strikes erupt molten gold with tier-scaled heat → gold cools and pools → a collector turns it into essence → essence buys crit upgrades and stone/water brushes → the surge with its pot, BANK button, physical overheat bust, and a readable HUD. Completing mhz + hkm is that slice. The pacing gate: the first surge must be reachable within ~90s of a fresh start. If this slice isn't fun, nothing above it saves the game — so this is the first real playtest checkpoint, not wave 7.

05The readiness labels

A three-tier scheme, not a binary — the middle tier is where an agent does the work but you review before the next issue builds on it.

LabelMeaningOpenExamples
agent-readyDeterministic, spec-precise, test-verifiable. Fire and forget.9mhz.1 materials, mhz.4 collector, gen.1 cores formula
agent-draftAgent writes the first pass; a human reviews before it's trusted — an architectural keystone others build on, or a feel/visual thing that can't be unit-tested.13mhz.2 value contract, hkm.1 surge state machine, mhz.3 ballistic eruption
needs-humanPlaytest tuning, UI/UX, art, audio, juice. Judgment calls, not code.7hkm.5 HUD legibility, 4cz.3 pacing, gen.2 workshop UI, sh8.*
FYI

Why three tiers matter: the binary hides the two spots where the whole downstream chain depends on getting a shape right. mhz.2 (the Lagrangian value-conservation contract) and hkm.1 (the surge state machine) are keystones — if an agent gets the contract or the state shape wrong, every issue built on top inherits the mistake. Those want a human eye on the design before the dependents run, even though the agent can write them.

06The 7g6 finding

One wave-2.5 issue came back with a real result instead of a green checkmark — worth reading.

Anti-farming can't be asserted yet — and that's expected

The agent tasked with the anti-farming test (7g6) did not fake a passing test. It proved the current pre-surge economy violates the property: cores/min declines after ~15 min because in-storm essence growth flattens once the crit-chance / golden / attack-rate caps hit, and the 8-vs-35-minute comparison even flips sign depending on how many seeds you sample. No fixed seed yields an honest green assertion without cherry-picking.

This is not a bug to fix now. Design §6 says the late-game growth curve is supposed to come "mostly through multiplier growth + collection efficiency" — i.e. from the surge multiplier (hkm.1) and the collector (mhz.4), neither of which exists yet. So 7g6 was mis-scoped as buildable today. It's been re-scoped: relabeled agent-draft + wave-5, given dependencies on hkm.1 and mhz.4, and the intended assertion is parked as an it.skip in sim/storm-simulator.test.ts with the full analysis in the test body. It comes back in wave 5 once the surge economy makes the assertion meaningful.

07How each wave gets fired

Reuse the wave-2 pattern that worked, minus the two things that tripped the safety gate.

08Wave 3, concretely

Decisions made — here's how the gold loop actually runs, in two phases forced by a hard code dependency.

Decisions

Keystone review happens at merge, not via a workflow pause. The bd label arg-order quirk is not being saved to memory.

The gold loop can't run as one fan-out: mhz.2's value field must exist in code before the collector, eruption spawner, and loss rules (mhz.3/4/5) can be written against it. So wave 3 is two phases:

PhaseWhatIssuesEnds at
3a — foundation (drafted)One agent: gold materials, then the Lagrangian value field + conservation contractmhz.1, mhz.2One reviewed PR, ready for your merge
3b — consumers (after 3a merges)Three agents in parallel from merged main, each against the value-field API 3a exposesmhz.3, mhz.4, mhz.5Three reviewed PRs
Info

Phase 3b's agent prompts reference the exact value-field API — so I write that script after 3a merges, when the real API names exist. The wave-3.js foundation script is drafted and waiting; it guards preconditions, builds both foundation issues in a worktree, posts a comment-only review keyed on the conservation contract, auto-applies confirmed blocker/major findings, and stops at a merge-ready PR.