Model
src/model/
Pure TypeScript. No React. No DOM. No SVG. Sim lives in nautical miles. Seeded RNG.
ViewModel
src/viewmodel/
Commands and derived labels. The View never constructs the engine.
View
src/view/
Header, map overlay, role panels. Pretty. Not the argument.
Turn order
- 01 priceTick
- 02 hiddenPipeline
- 03 expandMines
- 04 usOrders
- 05 iranOrders
- 06 tankerOrders
- 07 resolve
- 08 bankExit
- 09 fuses
- 10 decay
Architect locks, 9 Sep
Ingest is closed. This is a math problem. Transcripts keep their numbers. The sim uses one cited knob per family.
- 1.4 vs 1.6 mb/d is the same faucet. Sim uses 1.5.
- 17 pierside warships at match start. 120 speedboats on the water. 1,500 FAC in sheds.
- Mine prices are a family: M-08 about $1,500, EM52 about $15,000, influence $15k to $60k.
- Destroyer sticker is a family by flight and year. $1.8B to $2.5B can all be true.
- Avenger class status is open research. Clearance stays rented either way.
- Facebook blockade reel stays a title card. Do not average transcripts.
Modules (master §14, relocated)
- balance.tsTunables, image calibration, price bands
- geo.tsnm points, polylines, circle clip, corridor holes
- engine.tsTurn order, resolve, fuses, price
- factions.tsUS / Iran / tanker action schemas
- ai.tsScripted v1 tendencies
- copy.tsTeaching beats, tooltips, after-action
- scenarios.tsReopen / one-transit / overplay / mine-warfare / iran-warfare
- receipts.tsAnnotated bibliography
- rng.tsSeeded PRNG
Invariants (tests lock these)
- 01Existing mine circles expand one step during expandMines. New lays wait.
- 02Red fog paints water, including the till. It does not paint land.
- 03One tanker mine-kill in the TSS collapses insurance for the match.
- 04Bribes never shrink circles and never grant mine immunity.
- 05STEEL never fills in v1. CONTRACTS can.
- 06US: at most one off-board lever per turn.
- 07Factory hits are permanent. Pit hits relocate.
- 08Capital ships start off-map. Commit paints a prestige target.
- 09High price funds Iran's next-turn pool.
- 10Secret packages still arrive if factories are dead, unless banks and off-board levers pinch them.
- 11Neighbor strike lights OPPOSITION and speeds CONTRACTS.
Gameplay simulations
Not UI tests. An array of role/action pairs against engine.dispatch.
- pits-only-while-factories-liveTutor flag after 3 pit-only US turns
- one-boom-kills-insuranceInsurance collapsed, CONTRACTS +3
- pay-iran-funds-molesDirected boats drop, mines unchanged, pool grows
- high-price-is-a-factoryHigh P grants Iran kits next turn
- steel-never-fillsSTEEL stays 0
- us-offboard-onceSecond off-board in one turn is illegal
- carrier-in-the-lanePrestige target flag on
- neighbor-strike-funds-oppositionOPPOSITION opens
- reopen-lane-us-ai-88-turn match completes
- tanker-naked-hullAfter collapse, hull_factor is 0 or 1
Tanker slice is two doors, not a plotted track. Wait forces US clearance and an Iran lay. Price sits on the map.