# ADR-0021: the chaos roll is retired — and the condition that retired it was wrong status: accepted date: 2026-08-08 decided by: agent, under the standing loop authorization tier: M (changes how the loop constrains its own operation — ADR-0006 D5). chaos d8 = 7 → no override. **Declaration 4 of chaos window 4, and the last chaos roll this project will make.** references: [ADR-0006](ADR-0006-the-inner-loop.md), [ADR-0017](ADR-0017-chaos-window-2-verdict.md), [`specs/ChaosRollHistory.md`](../specs/ChaosRollHistory.md), [`specs/InnerLoop.md`](../specs/InnerLoop.md) §Loop tiers ## D1 — the condition is met, and the tally was verified rather than recalled ADR-0017 D2: *retire if a full window's overrides all change nothing, and the window contains at least one override* — met in **two consecutive windows**. D2a: *"Window 2 counts as the first. Window 3 decides."* | window | declarations | overrides | all changed nothing? | |---|---:|---:|---| | 2 | 12 | 1 (CB-WP-0020, d8=8, drew S over structural S) | **yes** | | 3 | 12 | 1 (CB-WP-0038, d8=8, drew L over structural L) | **yes** | **Two consecutive. The condition is met.** **Every roll was cross-checked against the workplan that made it**, not read off the history table — because the last time this project tallied chaos rolls from memory it was wrong, and asserted the wrong figure four times (F23). All twelve of window 3 agree. ## D2 — and meeting it is not evidence **P(an override changes nothing) = 1/3.** Each of windows 2 and 3 had **exactly one** override. So: > **P(the condition fires | one override per window) = 1/3 × 1/3 = 1/9.** **An 11% coincidence is not a finding.** The condition, restated in ADR-0017 D2 to be *reachable*, became reachable by becoming weak — and that trade was made without computing this number. Reachability was checked; discriminating power was not. ## D3 — worse: it measures the wrong subject **The condition asks whether an override changed the tier. The question is whether changing the tier helped.** Those are different subjects, which is the family [`Taxonomy.md`](../specs/Taxonomy.md) §2.2 exists to name. An override that changes nothing tells you the die landed on the tier you already had; it says nothing about whether the mechanism is worth running. Under this condition a die that *always* changed the tier — maximally active — could never be retired, however useless its changes were. ## D4 — the real ground for retirement, which is stronger Four overrides across roughly forty declarations: | override | effect | benefit | |---|---|---| | CB-WP-0011 | structural **L → declared S** | **none recorded** | | CB-WP-0017 | structural **S → declared M** | none recorded | | CB-WP-0020 | drew S over structural S | changed nothing | | CB-WP-0038 | drew L over structural L | changed nothing | > **The mechanism has acted four times in the project's life and its value > has never once been demonstrated.** **And the one substantive intervention is not encouraging.** CB-WP-0011 was the inspectable-table pass; the roll dropped a structural **L** to **S**, and the resulting work needed **two follow-up passes** — CB-WP-0016 (the drag was broken) and CB-WP-0017 (the page was wrong about which moves exist) — to fix defects a human found by playing. **That is not proof of causation and is not offered as such.** A tier is process weight, not a guarantee, and both defects were the kind INTENT says only human verification finds. **But it is the only evidence we have about an override's consequences, and it points the wrong way.** ## D5 — the purpose has no live evidence of need The roll exists so tier declaration cannot ossify. Measured across every workplan: **17 M · 11 S · 4 L** **That is a real spread**, and only two passes in the project's history declared a tier different from their structural one — **both of them the window-1 overrides.** Left to itself, tier declaration has varied on the structure, which is what it is supposed to do. ## D6 — retired, and what replaces it **The chaos roll is retired.** No roll, no window, no `chaos` line in a workplan's tier block. Existing records keep theirs — they are history. **Nothing replaces it.** Adding a successor mechanism to guard against ossification that has not occurred would be inventing a gate for an instance we do not have (GameDesign §2). **What stays** is the structural derivation and its trigger table, which is the part that was doing the work. **The trigger for revisiting**: if declared tiers collapse toward a single value, or if a pass is found to have declared a tier below its structural one to avoid a review, ossification is real and this decision was wrong. ## Consequences - `InnerLoop.md` §Loop tiers loses the chaos paragraph; `loop-lint`'s `chaos-recorded` check must go with it, or it fails every future workplan. - `ChaosRollHistory.md` becomes a **closed log**, and says so. - **Window 4 ends at four declarations**, incomplete, which is correct: the condition was met at the end of window 3 and waiting out a window to satisfy a symmetry nobody requires would be ceremony. ## What was rejected | rejected | why | |---|---| | retire on the strength of the condition | it fires on a 1/9 coincidence and measures the wrong subject (D2, D3) | | keep the roll because the condition is weak | the condition being weak is not an argument for the mechanism; D4 and D5 are, and they point at retirement | | keep it as a diagnostic, unrolled | a roll nobody acts on is a ritual with a log file | | replace it with a value-measuring condition | it would need overrides to measure, and retirement stops producing them. **The honest sequence is retire, then watch D6's trigger** | | wait for window 4 to close | ceremony; the condition was met at the end of window 3 |