128 lines
5.7 KiB
Markdown
128 lines
5.7 KiB
Markdown
|
|
# 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 |
|