From a9978c7a91fea01c06f7418b4e473fc0f0db59c9 Mon Sep 17 00:00:00 2001 From: tegwick Date: Fri, 7 Aug 2026 10:55:54 +0200 Subject: [PATCH] =?UTF-8?q?ADR-0017:=20window=202's=20verdict=20=E2=80=94?= =?UTF-8?q?=20the=20mechanism=20worked,=20my=20account=20of=20it=20did=20n?= =?UTF-8?q?ot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tier M (changes how the loop constrains its own operation), declared at d8 because the rate for window 3 is what this document decides and declaring at a rate it invents would be circular. chaos d8 = 7, no override. I CLAIMED WINDOW 2 PRODUCED ZERO OVERRIDES, FIVE TIMES, AND IT IS FALSE. Declaration 3 (CB-WP-0020) rolled d8 = 8, overrode, drew S against a structural S, and changed nothing -- and CB-WP-0020 recorded it correctly at the time, in those words: "the first override at d8... It changed nothing... One." Counting the workplans takes one command and I never ran it. CB-EV-0024 asserted "zero" without checking; CB-EV-0025, 0026, 0027 and CB-WP-0029 each cited the one before. A claim propagated five times by citation rather than by measurement, in files whose subject was that exact failure. facts-check catches a copied number that disagrees with its source; nothing catches a number with NO source, asserted once and repeated. Registered F23, and all four evidence files carry an in-place correction rather than a silent edit (ADR-0012 D5). THE ACTUAL VERDICT: THE RATE IS WORKING. Eleven rolls at d8 -- declaration 1 opened the window at the old d4 -- against 1.375 eights expected, 1 observed. Not a shortage of evidence; the design. BUT THE RETIREMENT CONDITION GENUINELY CANNOT FIRE, and that took computing to see. "An override changes nothing twice running" needs a consecutive pair at P=1/3 each, so ~12 overrides expected, at ~1.4 per window: ~9 windows, roughly 100 declarations. A gate that cannot cash out on any realistic horizon is decoration, which ADR-0006 D3 forbids. Restated to be evaluated PER WINDOW: retire if a full window's overrides all change nothing, met in two consecutive windows. A window with no overrides is inconclusive and advances nothing. ~24 declarations rather than ~100. Window 2 counts as the first; window 3 opens at d8 and decides. Recorded and deliberately not acted on: declarations 5-9 rolled six five times running, ~1 in 370 for some run of five in eleven rolls. shuf tested over 200 rapid successive calls looks uniform, longest run three. Found post hoc, which is how coincidences become findings, so it is logged for a future window to check rather than treated as evidence. InnerLoop.md then crossed the loadability limit, and so did InnerLoopReference.md. The window log moved to specs/ChaosRollHistory.md: it grows by one entry per window, and a log inside a reference eventually crowds out the reference. make all: exit 0. Co-Authored-By: Claude Opus 5 --- decisions/ADR-0017-chaos-window-2-verdict.md | 145 ++++++++++++++++++ evidence/CB-EV-0024-could-we-have-won.md | 9 ++ evidence/CB-EV-0025-the-commentary-track.md | 9 ++ evidence/CB-EV-0026-the-table-you-sit-at.md | 9 ++ .../CB-EV-0027-the-tokens-on-the-table.md | 9 ++ specs/ChaosRollHistory.md | 49 ++++++ specs/FindingRegister.md | 22 +++ specs/InnerLoop.md | 17 +- specs/InnerLoopReference.md | 6 + 9 files changed, 269 insertions(+), 6 deletions(-) create mode 100644 decisions/ADR-0017-chaos-window-2-verdict.md create mode 100644 specs/ChaosRollHistory.md diff --git a/decisions/ADR-0017-chaos-window-2-verdict.md b/decisions/ADR-0017-chaos-window-2-verdict.md new file mode 100644 index 0000000..55a249f --- /dev/null +++ b/decisions/ADR-0017-chaos-window-2-verdict.md @@ -0,0 +1,145 @@ +# ADR-0017: window 2's verdict — the mechanism worked, my account of it did not + +status: accepted +date: 2026-08-07 +decided by: agent, under the standing loop authorization +tier: M (structural M — changes how the loop constrains its own operation, +InnerLoop §Loop tiers v1.6, ADR-0006 D5). **Declared at d8**, window 2's +rate, because the rate for window 3 is what this document decides and +declaring at a rate this pass invents would be circular. +chaos: d8 = 7 → no override +references: [InnerLoop.md](../specs/InnerLoop.md) §Loop tiers, +[InnerLoopReference.md](../specs/InnerLoopReference.md) §Chaos roll, +CB-EV-0015 §5 and CB-EV-0016 §4 (window 1's verdict), +[CB-WP-0020](../workplans/CB-WP-0020-the-table-you-can-read.md) (window 2's +override) + +## Context + +Window 2 opened 2026-08-03 at d8 and closed 2026-08-07 at twelve +declarations. Its verdict is due, and four evidence files said it would be +impossible to give. + +## The correction this ADR exists for + +**CB-EV-0024 §6, CB-EV-0025 §7, CB-EV-0026 §7, CB-EV-0027 §6 and +CB-WP-0029 all state that window 2 produced zero overrides and that its +retirement condition was untestable. That is false.** + +Counted from the workplans: + +| decl | pass | roll | effect | +|---:|---|---|---| +| 1 | CB-WP-0018 | **d4** = 3 | opened the window; rolled at the *old* rate | +| 2 | CB-WP-0019 | d8 = 5 | — | +| **3** | **CB-WP-0020** | **d8 = 8** | **OVERRIDE — drew S, structural was S, changed nothing** | +| 4 | CB-WP-0021 | d8 = 7 | — | +| 5–9 | CB-WP-0022…0026 | d8 = 6, 6, 6, 6, 6 | — | +| 10 | CB-WP-0027 | d8 = 7 | — | +| 11 | CB-WP-0028 | d8 = 1 | — | +| 12 | CB-WP-0029 | d8 = 4 | — | + +**Eleven rolls at d8** — declaration 1 opened the window and rolled at d4. +Expected 8s: **1.375**. Observed: **1**. + +**And CB-WP-0020 recorded it correctly at the time**, in its own words: +*"the first override at d8 — it fired on the second roll at the new rate. +It changed nothing, which is the first half of window 2's retirement +condition. **One.**"* + +**So the data existed, was correct, and was written down.** I asserted +"zero" in CB-EV-0024 without counting, and each later evidence file cited +the one before it. **A claim propagated five times by citation rather than +by measurement**, in a project whose central discipline is that a number +must carry its reproduction — and in files whose subject was that very +failure. + +**Registered as a finding (F23), not buried here.** + +## D1 — the mechanism is kept, and the rate stays at d8 + +**d8 is behaving exactly as designed.** 1 override observed against 1.375 +expected is not a shortage of data; it is the rate working. + +Window 1 at d4 produced 2 overrides in 12 and **both changed the +outcome** — which is why the rate was lowered. Window 2 at d8 produced 1, +which changed nothing. Nothing here argues for moving the rate again, and +moving it would discard the only comparison the two windows give. + +## D2 — the retirement condition is restated, because as written it cannot fire + +**This is the real finding, and it took computing to see.** + +The condition is *retire if an override changes nothing twice running.* An +override changes nothing when the drawn tier equals the structural tier: +**P = 1/3**. Overrides arrive at **~1.4 per twelve-declaration window**. + +The expected number of overrides before seeing two consecutive no-change +overrides is **~12**. At 1.4 per window that is **~9 more windows, roughly +100 declarations.** + +**A retirement condition that needs a hundred declarations is decorative.** +It cannot discipline the mechanism it governs, which is the entire reason +a retirement condition exists (ADR-0006 D3: a gate must be able to cash +out). + +Replaced with a condition that can be evaluated **once per window**: + +> **Retire the chaos roll if a full window's overrides all change +> nothing** — and the window contains at least one override. A window with +> no overrides is **inconclusive**, and says so, rather than counting as +> evidence either way. + +Window 2 under the new condition: **one override, it changed nothing → +the condition is MET for window 2.** But a single window at ~1.4 overrides +is a sample of one, so: + +**D2a — the mechanism is not retired on one window.** The new condition +must be met **twice**, in consecutive windows, before the roll is retired. +That is the same conservatism as the old rule, moved to a level where the +sample size makes it reachable: two windows, ~24 declarations, not ~100. + +**Window 2 counts as the first.** Window 3 decides. + +## D3 — what would falsify this decision + +- If window 3 produces **zero** overrides, the condition is inconclusive + and the retirement clock does not advance. Two inconclusive windows + running would mean d8 is too sparse to evaluate *even at window level*, + and the rate should rise rather than the mechanism be kept by default. +- If an override ever **changes an outcome** in a way that produces a + finding, the mechanism has paid for itself and the retirement clock + resets — which is what happened twice in window 1. + +## D4 — a post-hoc observation, recorded and deliberately not acted on + +Declarations 5–9 rolled **six, five times running**. The chance of some +run of five in eleven d8 rolls is roughly **1 in 370**. + +**`shuf` was tested and looks fine** — 200 rapid successive calls gave a +reasonable spread across all eight values with a longest run of three. + +**And this was found by looking after the fact**, which is how coincidences +become findings. It is recorded so a future window can check whether it +recurs, and **not treated as evidence of anything**. If a second window +shows a long run, that is two observations and worth investigating. + +## Consequences + +- `specs/InnerLoop.md` records window 2's result and window 3's terms. +- Window 3 opens at **d8**, twelve declarations, under D2's condition. +- **The four evidence files carrying the false claim are corrected in + place**, each pointing here — per ADR-0012 D5, a claim retracted + silently is how three wrong premises survived. +- F23 registered. + +## What was rejected + +| rejected | why | +|---|---| +| *"the mechanism produced no data"* | false — one override, exactly at the expected rate | +| moving the rate again | nothing argues for it, and it would discard the two-window comparison | +| keeping the old retirement condition | it needs ~100 declarations to fire; a gate that cannot cash out is decoration | +| retiring the roll on window 2 alone | one window at ~1.4 overrides is a sample of one | +| treating the five consecutive 6s as a finding | found post hoc, and `shuf` tests clean | +| correcting the evidence files silently | ADR-0012 D5 | diff --git a/evidence/CB-EV-0024-could-we-have-won.md b/evidence/CB-EV-0024-could-we-have-won.md index 94a2b49..c163b65 100644 --- a/evidence/CB-EV-0024-could-we-have-won.md +++ b/evidence/CB-EV-0024-could-we-have-won.md @@ -127,6 +127,15 @@ produce a number someone else acts on*. Recorded for whoever revisits ## 6. Chaos window 2 +> **CORRECTED 2026-08-07 — this section is wrong.** +> Window 2 produced **one** override: declaration 3 (CB-WP-0020) rolled +> d8 = 8, drew S against a structural S, and **changed nothing** — which +> CB-WP-0020 recorded correctly at the time as *"One."* Eleven rolls at d8 +> (declaration 1 opened the window at d4) against an expectation of 1.375 +> eights. **The rate was working; I asserted "zero" without counting, and +> each later evidence file cited the one before it.** +> See [ADR-0017](../decisions/ADR-0017-chaos-window-2-verdict.md) and F23. + **Declaration 8 of 12.** Structural L (over-declared), d8 = 6, no override. diff --git a/evidence/CB-EV-0025-the-commentary-track.md b/evidence/CB-EV-0025-the-commentary-track.md index 1abeb0b..b075d76 100644 --- a/evidence/CB-EV-0025-the-commentary-track.md +++ b/evidence/CB-EV-0025-the-commentary-track.md @@ -120,6 +120,15 @@ does not.** ## 7. Chaos window 2 +> **CORRECTED 2026-08-07 — this section is wrong.** +> Window 2 produced **one** override: declaration 3 (CB-WP-0020) rolled +> d8 = 8, drew S against a structural S, and **changed nothing** — which +> CB-WP-0020 recorded correctly at the time as *"One."* Eleven rolls at d8 +> (declaration 1 opened the window at d4) against an expectation of 1.375 +> eights. **The rate was working; I asserted "zero" without counting, and +> each later evidence file cited the one before it.** +> See [ADR-0017](../decisions/ADR-0017-chaos-window-2-verdict.md) and F23. + **Declaration 10 of 12.** Structural M, d8 = 7, no override. **Twelve declarations, no 8 rolled**, so the window closes with **zero diff --git a/evidence/CB-EV-0026-the-table-you-sit-at.md b/evidence/CB-EV-0026-the-table-you-sit-at.md index 6d5c496..7d41eb9 100644 --- a/evidence/CB-EV-0026-the-table-you-sit-at.md +++ b/evidence/CB-EV-0026-the-table-you-sit-at.md @@ -136,6 +136,15 @@ three — which is the only count anyone ever looks at. ## 7. Chaos window 2 — closed +> **CORRECTED 2026-08-07 — this section is wrong.** +> Window 2 produced **one** override: declaration 3 (CB-WP-0020) rolled +> d8 = 8, drew S against a structural S, and **changed nothing** — which +> CB-WP-0020 recorded correctly at the time as *"One."* Eleven rolls at d8 +> (declaration 1 opened the window at d4) against an expectation of 1.375 +> eights. **The rate was working; I asserted "zero" without counting, and +> each later evidence file cited the one before it.** +> See [ADR-0017](../decisions/ADR-0017-chaos-window-2-verdict.md) and F23. + **Declaration 11 of 12**, structural M, d8 = 1, no override. The window has now produced **zero overrides in eleven declarations at diff --git a/evidence/CB-EV-0027-the-tokens-on-the-table.md b/evidence/CB-EV-0027-the-tokens-on-the-table.md index 3eacaf1..b1a209b 100644 --- a/evidence/CB-EV-0027-the-tokens-on-the-table.md +++ b/evidence/CB-EV-0027-the-tokens-on-the-table.md @@ -122,6 +122,15 @@ not the number. ## 6. Chaos window 2 — closed, and its verdict is due +> **CORRECTED 2026-08-07 — this section is wrong.** +> Window 2 produced **one** override: declaration 3 (CB-WP-0020) rolled +> d8 = 8, drew S against a structural S, and **changed nothing** — which +> CB-WP-0020 recorded correctly at the time as *"One."* Eleven rolls at d8 +> (declaration 1 opened the window at d4) against an expectation of 1.375 +> eights. **The rate was working; I asserted "zero" without counting, and +> each later evidence file cited the one before it.** +> See [ADR-0017](../decisions/ADR-0017-chaos-window-2-verdict.md) and F23. + **This is declaration 12 of 12.** The window opened 2026-08-03 at d8. **Twelve declarations, zero 8s, zero overrides.** The retirement condition diff --git a/specs/ChaosRollHistory.md b/specs/ChaosRollHistory.md new file mode 100644 index 0000000..f4d85de --- /dev/null +++ b/specs/ChaosRollHistory.md @@ -0,0 +1,49 @@ +# Chaos roll — window records + +One entry per chaos window. Split out of `InnerLoopReference.md` when that +file crossed the loadability limit: this is a **log that grows**, and a log +inside a reference eventually crowds out the reference. + +The rule itself lives in [`InnerLoop.md`](InnerLoop.md) §Loop tiers; the +current window's terms are there. This is the history the verdicts rest on. + +**Window 1** (d4, closed 2026-08-02): 12 declarations, **2 overrides**, one +each way, and **both changed the outcome**. The mechanism was kept and the +rate dropped d4 → d8 (CB-EV-0015 §5, CB-EV-0016 §4). + +**Window 2** (d8, 2026-08-03 → 2026-08-07): 12 declarations, of which +**11 rolled at d8** — declaration 1 (CB-WP-0018) opened the window and +rolled at the old d4. Expected 8s: **1.375**. Observed: **1**. + +| decl | pass | roll | effect | +|---:|---|---|---| +| 1 | CB-WP-0018 | d4 = 3 | opened the window at the old rate | +| 2 | CB-WP-0019 | d8 = 5 | — | +| **3** | **CB-WP-0020** | **d8 = 8** | **override — drew S over a structural S: changed nothing** | +| 4 | CB-WP-0021 | d8 = 7 | — | +| 5–9 | CB-WP-0022…0026 | d8 = 6 ×5 | — | +| 10 | CB-WP-0027 | d8 = 7 | — | +| 11 | CB-WP-0028 | d8 = 1 | — | +| 12 | CB-WP-0029 | d8 = 4 | — | + +**Verdict (ADR-0017): the rate is behaving as designed.** One override +against 1.375 expected is not a shortage of evidence. + +**Why the retirement condition changed.** *"An override changes nothing +twice running"* requires a consecutive pair, each with P = 1/3, so ~12 +overrides are expected before one occurs — at ~1.4 overrides per window, +**~9 windows or roughly 100 declarations**. A gate that cannot cash out on +any realistic horizon is decoration (ADR-0006 D3). It is now evaluated +**per window**, needing two consecutive qualifying windows: ~24 +declarations rather than ~100. + +**Four evidence files claimed window 2 produced zero overrides.** They were +wrong, and each cited the one before rather than counting. See F23 — +the failure is a claim with no source, asserted once and repeated, which +no gate here detects. + +**A post-hoc observation, deliberately not acted on.** Declarations 5–9 +rolled six five times running (~1 in 370 for some run of five in eleven +rolls). `shuf` was tested over 200 rapid successive calls and looks +uniform, longest run three. Recorded so a future window can check whether +it recurs; not evidence of anything on its own. diff --git a/specs/FindingRegister.md b/specs/FindingRegister.md index acd0f34..7d4fc2f 100644 --- a/specs/FindingRegister.md +++ b/specs/FindingRegister.md @@ -49,6 +49,7 @@ kinds, states and metrics: [`GameDesign.md`](GameDesign.md). Reported by | F19 | degenerate | applied | crates/cb-render-html/src/lib.rs::overhead_table | counterexample | 2026-08-06 | clay-borg | | F20 | inert | applied | crates/cb-render-html/src/lib.rs::ending_page | counterexample | 2026-08-06 | clay-borg | | F21 | degenerate | note | — | — | 2026-08-06 | clay-borg | +| F23 | inconsistent | applied | decisions/ADR-0017-chaos-window-2-verdict.md | counterexample | 2026-08-07 | clay-borg | | F22 | underdetermined | withdrawn | games_ground::edition::supply_tests::play_never_exceeds_the_components_the_box_holds | counterexample | 2026-08-07 | clay-borg | @@ -79,6 +80,27 @@ kinds, states and metrics: [`GameDesign.md`](GameDesign.md). Reported by since GROUND-WP-0005 is blocked on exactly this number. The withdrawal was reported (ADR-0012 D5). Its reproduction is `difficulty.rs`, whose policy panel is plural *because of this finding*. +- **F23 — a false claim propagated five times by citation instead of + measurement.** CB-EV-0024 §6 stated that chaos window 2 produced **zero + overrides** and that its retirement condition was untestable. CB-EV-0025, + CB-EV-0026, CB-EV-0027 and CB-WP-0029 each repeated it, citing the one + before. + + **It was false.** Declaration 3 (CB-WP-0020) rolled d8 = 8 and overrode — + and **CB-WP-0020 recorded it correctly at the time**, in those words: + *"the first override at d8… It changed nothing… **One.**"* Counting the + workplans takes one command. + + **The subject makes it worse.** Three of those four files were arguing + that this project's defect is claims asserted without their + reproduction — while carrying one. `facts-check` catches a copied number + that disagrees with its source; nothing catches a number with **no + source**, asserted once and cited thereafter. + + **`applied`** — ADR-0017 corrects it, and each of the four files carries + an in-place correction rather than a silent edit (ADR-0012 D5). **The + general defect is not fixed**: it is the same family as the five + wrong-subject instances, and still has no control. - **F22 — does the component supply bind the game? Asked, measured, and withdrawn.** `Tokens.csv` gives every component a `quantity` — 6 Protection, 5 Denied, 12 relation links — and **no numbered rule diff --git a/specs/InnerLoop.md b/specs/InnerLoop.md index 669c298..2d9f157 100644 --- a/specs/InnerLoop.md +++ b/specs/InnerLoop.md @@ -153,17 +153,22 @@ are never skipped for code-producing work. random (`shuf -e S M L -n 1`), overriding the structural derivation — up or down. -> **Window 1 closed 2026-08-02** at 12 declarations, 2 overrides, one each -> way, and **both changed the outcome** — so the mechanism was kept and -> the rate dropped d4 → d8 (CB-EV-0015 §5, CB-EV-0016 §4). +> **Window 3, opened 2026-08-07 at d8**, running to 12 declarations. > -> **Window 2, opened 2026-08-03 at d8**, running to 12 declarations. -> Retirement condition: **retire if an override changes nothing twice -> running.** +> **Retirement condition (ADR-0017 D2):** retire the roll if **a full +> window's overrides all change nothing**, met in **two consecutive +> windows**. A window with **no** overrides is *inconclusive* and advances +> nothing. **Window 2 counts as the first.** +> +> Both windows' full records, the rate history, and why the old +> "twice running" condition was replaced: +> [`specs/ChaosRollHistory.md`](ChaosRollHistory.md), and +> `specs/InnerLoopReference.md` §Chaos roll — calibration. > > Record the roll every time, including when it changes nothing > (`tier: L (structural L, chaos 8)`). Why the rate fell, why n=2 makes > that the weakest part of the decision, and the dead rolls: +> [`specs/ChaosRollHistory.md`](ChaosRollHistory.md), and > `specs/InnerLoopReference.md` §Chaos roll — calibration. Chaos limits: a rolled-down tier relaxes *process* weight only. Invariants diff --git a/specs/InnerLoopReference.md b/specs/InnerLoopReference.md index 771decc..b9c6475 100644 --- a/specs/InnerLoopReference.md +++ b/specs/InnerLoopReference.md @@ -381,3 +381,9 @@ not merely *add a control*. **Quoting is not measuring** — the same sentence the cost-quoting rule above rests on, learned here first and re-learned six times since. + +## Chaos roll — window records + +Moved to [`ChaosRollHistory.md`](ChaosRollHistory.md) on 2026-08-07: it is +a log that grows by one entry per window, and this file crossed the +loadability limit carrying it.