clay-borg/evidence/CB-EV-0031-a-seat-that-does-not-regulate.md
tegwick c4a8a227c0
Some checks failed
ci / check (push) Failing after 3s
CB-REV-0003: round 3, and three of four FATAL came from round 2's fixes
The pattern is now measured over three rounds: 5 fatal, then 3 (2 from the
previous round's corrections), then 4 (3 from them). The corrections are
not getting safer.

FATAL 1: round 2's short-cell assertion went into regulation.rs only.
attack-value.rs — which produced every number in CB-EV-0030's DARVO table
— still just warned, and the gate registered to close the finding claimed
the property for both.

FATAL 2, the sharpest of the three rounds: counting games proves they
STARTED. Stopping the engine after one round gives 200 games, all-zero
columns and exit 0 — byte for byte the signature CB-EV-0030 says the
instrumentation distinguishes from a real result. Both harnesses now
require every counted game to have reached an outcome over five rounds.

FATAL 3: round 2's `.csv` filter was applied to all three loops, so
catalog.yaml and rules_delta.yaml — whose missing digests were round 1's
finding — were recorded and then never compared, and never checked against
upstream at all. Only the parser loop filters now.

FATAL 4: five of six tiebreak comparators had no coverage. GR-E04's
tiebreak never executes in any scenario. All four are now covered and
mutation-verified; the Blame key needed compensating claims to be
reachable at all, since Blame also lowers the coalition score.

SERIOUS: "peak held" computed the same number as "peak assigned" for every
possible input — the real gap was that START_STRESS was an unchecked
constant, now read off the dealt state; cadence="none" was a pure
loophole, removed; sibling discovery swapped a hand-written list for
hand-written globs and missed metadata.json and VARIANT.md, both named in
the package's own changed_files — now walked, and it found them
immediately; and "~72,000 games" was unsourced, make panels runs 17,600.

Also separated two kinds of number that were presented alike: seats×games
is invariant, 363 and 29 vary 7.1%-11.5% across samples.

Round 4 owed. The conclusion is not that the work is nearly right — it is
that author-made corrections to measurement work should be assumed
defective until a fresh reader has attacked them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 10:26:25 +02:00

212 lines
10 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.

# CB-EV-0031 — a seat that does not regulate
CB-WP-0039. Tier M (adds a policy to the panel every future measurement is
reported against; chaos d8 = 2 → no override). **Declaration 11 of chaos
window 3.** Closed 2026-08-08.
> **CORRECTED 2026-08-08 after adversarial review, and most of the
> original file was wrong.** The review is in
> [`CB-REV-0001`](../reviews/CB-REV-0001-h1.md). The policy this pass
> called *"greedy with one preference changed"* differed in **five**
> places — including `SpendFreedom`, which it ranked 95 unconditionally
> where greedy ranks it 0 unless the gate bites, so the seat burned its
> Freedom token in round one of every game. **Every number below was
> measuring that bug.** They have been re-derived against a policy that
> delegates to `GreedyPolicy::rank` and overrides exactly one arm.
>
> Sections 1 and 2 are rewritten. **Section 3 is withdrawn entirely.**
**Delivered:** the `reactive` policy, and the measurement CB-EV-0030 §4
named as the one it had not run.
---
## 1. It changes CB-EV-0030's verdict
CB-EV-0030 concluded H1's DARVO arm rate was still 0. **That was true of
the panel, and the panel was greedy-family throughout.**
`GreedyPolicy` ranks `Action::Ground if gated => 100`: the instant the
stress gate bites it grounds. Stress plateaus at 3, and the arm at 5 is
unreachable **by construction**. So "H1 does nothing" was really "H1 does
nothing *to a seat that already manages its Stress*" — and H1 was written
for the seat that does not.
`reactive` now **delegates to `GreedyPolicy::rank` and overrides one arm**
(`Ground if gated`), so "one preference differs" is structurally true
rather than a claim. SHARED GROUND, 200 games per cell, all 200 ran, and
**`peak` is now Stress held, not Stress assigned** (§2):
| | | greedy | | | | reactive | | |
|---|---:|---:|---:|---:|---:|---:|---:|---:|
| **seats** | won | atk | darvo | peak | won | atk | darvo | peak |
| 2p | 68 | 0 | 0 | 4 | **66** | 726 | 363 | **5** |
| 3p | 0 | 0 | 0 | 4 | 0 | 1200 | 600 | **5** |
| 4p | 0 | 0 | 0 | 4 | 0 | 1600 | 800 | **5** |
| 6p | 0 | 0 | 0 | 4 | 0 | 2400 | 1200 | **5** |
**H1's mechanism does reach the unregulated seat.** DARVO arms **exactly
1 per seat per game** — 600/(200×3), 800/(200×4), 1200/(200×6) — and 0.91
at 2p. The first correction said **2** per seat per game, which is wrong
by a factor of two and was caught by round 2 (#3).
**Criterion 3's verdict is corrected.** The original said reactive *"wins
nothing, at any seat count"*. **False.** At 2p it wins **66 against
greedy's 68** — indistinguishable. It wins nothing at 3p and above, which
is also where greedy wins nothing.
## 2. The baseline finding, which is larger than H1
Look at the baseline half of the same run. Greedy and reactive are
**identical** — 132/165/190/200, zero attacks, zero DARVO, in all four
bands.
**Peak Stress held across the 1,600 baseline games was 2 — the starting
value, never exceeded.** Stress only ever went down.
**Three corrections to what this section originally said.**
1. It reported **1**, because `peak` was a maximum over `StressSet` event
*payloads*. Starting Stress is written by `setup`, never by an event,
so a table sitting at 2 all game reported 1 — and a table with no
`StressSet` at all would have reported 0. **Wrong subject**: the metric
answered *"highest value ever assigned"* while the prose claimed
*"highest Stress reached"*.
2. It said **3,200 baseline games**. The run is 3,200 *total*; the
baseline half is **1,600**.
3. It generalised to *"a policy built to be reckless with Stress plays
identically to one built to husband it"*. **False, and refuted by this
repo's own sibling harness**: `attack-value.rs`'s rank-95 policy is
exactly that policy, and under **baseline** it drives Stress to 5 and
arms DARVO 4001000 times per cell.
**What survives, stated narrowly.** Under both policies measured here —
neither of which ever selects ATTACK under baseline — **no Stress is ever
added at all**. The baseline's Stress economy is reachable only through
ATTACK, so a table that does not attack never meets the gate, the arm, or
the Freedom token. That is still a real observation about F17, and it is
**about ATTACK being the sole inbound pressure**, not about the economy
being unreachable in general.
## 3. WITHDRAWN — "H1-B suppresses DARVO in the attacker"
The original §3 argued that H1-B holds the attacker at Stress 4, below the
arm, and pushes its targets to 5 — inferred from a constant `darvo = 400`
and a final-Stress signature of `[5, 5, 4, 4, 4, 4]`.
**Withdrawn on two independent grounds, both found by the review.**
1. **The constant was the broken policy** — but a constant remains, and
saying otherwise was wrong (round 2, #12). With the one-arm-override
policy `darvo` is **exactly `seats × games`** at 3p and above. The
constant moved from 400 to `n·games`; it did not dissolve, and whatever
forces exactly one arm per seat per game is still unexplained.
2. **Disabling H1-B changes the arm count by exactly zero**, in every
cell, under the corrected policy. The effect attributed to H1-B's
arithmetic was an interaction with the undeclared preference deltas.
**And the inference was invalid even where the numbers held.** Final
Stress does not record who armed: `DarvoEnded` resets the stage to `Off`
and REVERSE applies 2 to its owner, so a seat can arm and finish below 5.
The review demonstrated six seats arming behind the same `[5,5,4,4,4,4]`
signature. **The original hedged the wrong variable** — it disclaimed "the
number 2" and defended "the direction", and the direction is the part that
failed.
## 4. What this does not say
- **`reactive` is not a good player and is not meant to be.** It wins
nothing under H1 and exactly what greedy wins under baseline. It is an
instrument for reaching the Stress economy, not a claim about how people
play.
- **Two policies is still not a panel.** RetrospectiveAnalysis §4.1 asks
for greedy, random and first-legal at minimum; this pass added a fourth
axis to two of them, in one mode.
- **SHARED GROUND only.** CB-EV-0030 covered three modes; this covers one.
- **No felt-play**, and this is the kind of claim — about pressure, and
when a player feels cornered — that a human table answers and 3,200
simulated games do not.
## 5. The three items the review left open, now closed
**H1-B on the DARVO extra Attack** — the delta says the extra Attack
shares the Attack resolution *"so it can self-soothe too if Stress ≥ 4"*.
CB-WP-0038 asserted it because the code shares `resolve_attack`; nothing
tested it, and the withdrawn §3 ran straight through this path.
`h1b_soothes_the_darvo_stage_attack_too` now covers it, mutation-verified.
**Round-5 pressure did not reach the score.** `end_round_events` scored
from `self` while H1-A's pressure went into `work`, and `score` reads
Stress for the GR-E03 and GR-E04 tiebreaks. Fixed, and the test uses the
case that actually bites: uniform pressure preserves an ordering, so it
takes the **clamp** at 5 to collapse a gap and change who wins.
**Its impact was claimed and never measured, and the measurement is
zero** (round 2, #5). This file said the pressure was invisible to *"the
two modes CB-EV-0030 reports on"* without checking. Reverting the fix
leaves `attack-value`'s output **byte-identical across all 24 cells and
all three modes**, including the two whose `won` column reads through the
tiebreak. **The defect is real in principle and its only witness is a
hand-constructed board.**
**The sample size quoted here was "~72,000 games" and was not
derivable from anything in this repo** (round 3, #9). `make panels` runs
**17,600**: `attack-value` is 2 variants × 3 modes × 3 policies × 4 seat
counts × 200 = 14,400, and `regulation` is 2 × 4 × 2 × 200 = 3,200. The
figure was adopted from a reviewer's message and never re-derived — in
the file whose whole correction history is about exactly that.
**Inert arms, and a second wrong-subject error caught on the way.** A
DARVO arm at the End of Round 5 can never advance a stage — `GameEnded`
follows immediately — and ground-game's criterion 1 is about DARVO
*mattering*. Now reported separately:
| seats | arms | of which inert |
|---|---:|---:|
| 2p | 363 | **29** (8%) |
| 3p | 600 | 0 |
| 4p | 800 | 0 |
| 6p | 1200 | 0 |
**Two kinds of number are in that table and this file did not distinguish
them** (round 3, #10). `600 / 800 / 1200` is **exactly `seats × games`**
and holds on every sample tried. `363` and `29` are **sample-specific**:
across four disjoint windows the 2p arms run 354366 and the inert share
runs **7.1%11.5%**. So "92% of arms at 2p are live" is a fact about seeds
`0..200`, not about the game — it reads 88.5% elsewhere.
The same applies to the baseline win counts quoted throughout
(`132/165/190/200`): the *identity* of greedy and reactive under baseline
holds on every sample, the **digits do not**.
**The first version of that metric was wrong and equalled `darvo` in
every cell**, because it tested `g.rounds >= 5` — a property of the
*game*, not of the *event*. Every arm in every completed game was marked
inert, which briefly looked like "criterion 1 is not met after all". An
arm is inert when no `RoundEnded` follows it.
**The 29-of-363 citation has now been wrong twice and is stated plainly
here.** Round 2 found it credited to `CB-REV-0001`, which did not contain
the figure; round 1's reviewer *had* reported it, in its message only.
Round 3 found the remaining problem (#10, #11): both "independent
confirmations" used **seeds 0..200**, so what was confirmed twice is the
**definition**, not the figure — and whether round 1's `StrictReactive`
was the corrected one-arm policy or the five-difference one **cannot be
determined from anything in this repo**, because that reviewer's code was
never kept. Treat 29/363 as one sample of a quantity that varies.
**Criterion 1 stands as met**: 92% of arms at 2p and all of them above are
live.
**`regulation.rs` no longer skips setup failures silently.** They are
counted, and a short cell now **fails an assertion** rather than printing
a number a reader has to notice — which is what CB-EV-0030 §3 claimed
credit for and only half did.
## 6. Open
- **The baseline's Stress economy being unreachable (§2) deserves its own
finding**, and is not raised here because it wants the plural panel of
§4 first. It is the more consequential of the two results in this file.
- **Whether H1-B's suppression is intended** is ground-game's question,
and it is the sharpest thing this pass can hand them.