Design Notes
Every significant design decision in p(Doom)1 is written down before it is built. 17 of those records are published here.
- ADR-0001 — Situational Awareness as the primary sink ("spending buys sight")
P(Doom)1 is source-rich and sink-poor: money and reputation accumulate faster than anything competes to spend them, which is mechanically identical to being vulnerable to simple dominant-strategy exploits. We need sinks ...
- ADR-0002 — Scoring: turns survived, lexicographic doom-integral tiebreak, flows only
The implemented score formula — (100−doom)×1000 + papers×5000 + researchers×2000 + turn×500 + money×0.1 + 50,000 victory bonus (doom<20) — was scaffolding built to test the end-game screen, never a design statement (Pip,...
- ADR-0003 — The Liability Ledger (two-sided): every mitigation is a loan
Pip's generative image (preserved because the chain is the idea): "like taking out a credit card to save the mortgage, then taking a job as a lobbyist to pay off the credit card, then lobbying to weaken financial regulat...
- ADR-0004 — SA amended: channels with provenance, lead-time semantics, decision-flip test
ADR-0001 proposed "spending buys sight" as the flagship sink. The workshop stress-tested it against Pip's peak verb — "triaging in a race against death" — and against the realization: "I am used to thinking about the gam...
- ADR-0005 — Emergent doom waves: author causes, never outcomes; seed = RNG + schedule
Doom arrives in waves. The fork: authored waves (designed timings — pacing guaranteed, sim partly theater) vs emergent waves (arising from opponent behavior plus the player's accumulated ledger — pure, attributable, paci...
- ADR-0006 — The replay string is the canonical run artifact; backend wiring order
- ADR-0007 — Alliances: the third client of Ledger + SA (treaty = shared liability + shared sight)
- ADR-0008 — Deferrals, folds, and rejections (the negative space of workshop #1)
- ADR-0009 — Turn structure: plan-months, two decision speeds, day as resolution tick
Workshop #1's intent was a week-based planning loop; the build drifted to day-turns with the week surviving only as display (game_state.gd TURNS_PER_WEEK, "Day 3/5" HUD). The drift's real shape: decisions attached to the...
- ADR-0010 — Adoption routing (soft-with-teeth): doom bends where work is adopted
The exploit sweep's dominant line (safety_lean, basement safety-spam, median 37 turns vs 7 for passive) exists because safety research bends doom directly, privately, and state-independently — papers are decorative, conf...
- ADR-0011 — The effort economy: founder hours, staff lanes, manager compression
Current build: one global AP pool, spent instantly; staff add to the pool; researchers are single-function; banking exists but does nothing. The sweep's diagnosis in mechanism terms: one fungible currency + state-indepen...
- ADR-0012 — Event response taxonomy: un-snoozable, deferrable, expiring
ADR-0009 gave every response window a DEFER option routing through the Ledger. Left uniform, DEFER becomes a universal snooze button and the reserve-vs-greed gamble loses its sting (why hold reserve when everything waits...
- ADR-0013 — Financing instruments & the cost-of-debt engine
Flat 25%/turn loans were a day-cadence artifact (ADR-0009) and a placeholder (DQ-8). With DEFER routing through the Ledger (ADR-0009/0012), loan terms and defer carrying-costs need one pricing engine, or the two halves o...
- ADR-0014 — Conferences, presence, and minimal location
ADR-0010 made socialization the mandatory middle of the research→adoption value chain with no ruling on what attending is. Pip's rulings, this beat, with one ambition flagged: "Part of me wants to make a conference atten...
- ADR-0015 — No printed doom deltas: doom is computed from world state
The current build carries literal doom bumps on event/action definitions (legacy of the prototype engine). Pip's ruling: "hardcoding doom counters into things seems really like a legacy design philosophy and as we get so...
- ADR-0016 — League metabolism: the game trails reality by one month
The scouting beat's variance question ("what does a veteran re-scout per run?") was answered by moving the variance out of the seed and into time. Pip: "i'm considering making the leagues and associated patches that long...
- ADR-0017 -- Anti-hollow test strategy (load-time smoke + property-based invariants)
Two real failures on 2026-07-17 share one root cause -- tests that pass without exercising the thing they claim to protect (call it a "hollow" test):