clay-borg/specs/ChaosRollHistory.md
tegwick 2806b3acb7
Some checks failed
ci / check (push) Failing after 3s
CB-WP-0041 done: ADR-0020 refuses the port, and T02 is why
T02 — all chance derives from one root seed. Three chance points, all
reading it: the setup deck shuffle, the setup Lead draw, and the reshuffle
permutation. The Problems deal is not chance at all. So in extensive-form
terms the tree has a single chance node at the root.

That test was wrong first, and the mutation caught it. It compared state
hashes — and GroundState carries `seed` as a field, so "different seeds
differ" was true by construction. Mutating the shuffle away left it green.
It now compares the dealt configuration, and the same mutation fails it: a
wrong-subject error inside the control written for T02.

The reshuffle is a pure function of (seed, round) because K5 requires
deterministic replay, where a real table reshuffles independently. That is
a modelling restriction, not a defect, and it is now pinned.

T03 — commit/reveal checked in both directions: before Reveal each seat
sees its own selection and no other; after Reveal the information sets
merge, because an encoding that hides forever is not commit/reveal either.

T04 — ADR-0020 refuses the EFG port, and the blocker is T02 rather than
T01, which inverts what the workplan expected. Perfect recall looked like
the risk and is a constraint with a known answer: key on observation
histories. Making chance explicit is the expensive one — the reshuffle
would become a real chance node and break the K5 purity that every
recording, replay bundle and trial-note hash depends on. A port would
trade the property this project is built on for one it has never needed.

Track B's first move is therefore a question, not a build: take "is
exploitability meaningful for a co-operative game with a shared threshold"
to OpenSpiel on a toy model, where answering it costs nothing. D4 states
what being wrong looks like — OpenSpiel settling on a toy what three
rounds of policy sweeps could not — and makes watching for it the next
action.

Taxonomy §4.1 records the EFG correspondence with the test that checks
each row, so a later pass starts from a specification rather than a memory.

Chaos window 4 at three declarations. Window 3's verdict is now two
windows behind and should be evaluated rather than restated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 15:35:03 +02:00

107 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 | — |
| 59 | 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 59
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.
---
## Window 3 — opened 2026-08-07 at d8, running to 12 declarations
| # | pass | roll | override |
|---|---|---|---|
| 1 | CB-WP-0030 | d8 = 7 | — |
| 2 | CB-WP-0031 | d8 = 2 | — |
| 3 | CB-WP-0032 | d8 = 6 | — |
| 4 | CB-WP-0033 | d8 = 7 | — |
| 5 | CB-WP-0034 | d8 = 4 | — |
| 6 | CB-WP-0035 | d8 = 4 | — |
| 7 | CB-WP-0036 (first declaration) | d8 = 7 | — |
| 8 | CB-WP-0036 (re-declared L→M) | d8 = 7 | — |
| 9 | CB-WP-0037 | d8 = 1 | — |
| 10 | CB-WP-0038 | **d8 = 8** | **yes — redraw L, structural was L, so it changed nothing** |
| 11 | CB-WP-0039 | d8 = 2 | — |
| 12 | CB-WP-0040 | d8 = 5 | — |
**The window's first 8, at declaration 10.** Expectation over ten rolls at
d8 is 1.25; one is exactly on rate.
**The override changed nothing**, which is the observation ADR-0017 D2's
retirement condition is built from — it needs *a full window whose
overrides all change nothing*, in two consecutive windows. This window now
had one qualifying override, and it changed nothing.
**Window 3 is closed at 12 declarations. Its verdict is due and is not
written here** — recording it is a change to how the loop constrains its
own operation, which is a tier-M trigger in its own right, and window 2's
verdict was delayed the same way. **One override in twelve, changing
nothing**, is the second consecutive window to produce no override that
changed an outcome; ADR-0017 D2's retirement condition asks for exactly
that in two consecutive windows and should now be evaluated rather than
restated.
**Declaration 8 is a re-declaration of the same workplan**, counted
separately because it was a materially different pass: CB-WP-0036 was
re-scoped from L to M after the maintainer moved the animation work out of
the repo, and a changed declaration is a new declaration or the roll is
not binding on what was actually built.
---
## Window 4 — opened 2026-08-08 at d8
| # | pass | roll | override |
|---|---|---|---|
| 1 | CB-WP-0041 | d8 = 5 | — |
| 2 | CB-WP-0042 | d8 = 4 | — |
| 3 | ADR-0020 | d8 = 7 | — |
**Window 3's verdict remains owed** and is now two windows behind. One
override in twelve, changing nothing, is the second consecutive window
meeting ADR-0017 D2's retirement condition — *"a full window's overrides
all change nothing"* — and the condition asks for two consecutive such
windows. **It should be evaluated, not restated again.**