From 43a8d7409e46e4fa10cebf40abf169ea9ce11c23 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Mon, 21 Sep 2026 16:34:01 -0700 Subject: [PATCH] fix(lv-mccarthy): the axis C I froze is UNSATISFIABLE, so it never adjudicated anything Arithmetic, not a re-reading of results. Criterion 1 needs the candidate's in-band rate to beat base's 0.89 by more than the 0.200 floor -- so it needs in_band > 1.09, and a rate cannot exceed 1. A PERFECT adapter, every one of 240 generations inside the 90-140 band, scores +0.11 and fails by 0.09. So "both candidates failed axis C" carries zero information about either candidate. That verdict was determined before a single generation existed. It is my error. The cause is specific: section 6 transcribed score_beats.py's v1 criteria, which the operator AMENDED on 2026-09-15 -- three weeks before this corpus was built -- for exactly this reason. Its own docstring: "NOT carried into v2: in-band (unresolvable -- base maxes it) and on-beat." The governing rule reverts to the operator's v2: axis C is ran-on only. That is the rule they ratified and the rule lv-hemingway shipped under. Reverting a transcription error to its source is not threshold-shopping; the source is older than the data. It does not rescue ckpt450 either. Under the corrected axis C its ran-on is +0.19 against a 0.200 floor -- a pass by 0.01, inside the noise the floor exists to describe, and not a pass worth shipping on an author in copyright with a living estate. AMENDMENT 3 therefore gates two more arms on the SAME frozen fixture, seeds and rule -- ckpt300 (epoch 0.65) and ckpt225 (epoch 0.49), both on disk because --save-total-limit 60 kept all 56 checkpoints -- since the damage grows monotonically with epoch and the voice may arrive before it does. And it sets the ship bar BEFORE those arms exist: voice clearing the pairwise floor on both reads, memorisation at or near the held-out author's 0.12 with every match read, and ran-on delta AT MOST 0.100 -- half the measured floor, not merely inside it, because a rate that clears a noise threshold by 5% of that threshold has not been shown to clear it. If nothing clears all three, lv-mccarthy is parked pending a retrain, and that is the report rather than a softer bar. --- scripts/mccarthy-corpus/GATE-PREREG.md | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/scripts/mccarthy-corpus/GATE-PREREG.md b/scripts/mccarthy-corpus/GATE-PREREG.md index 10f94ac..371a9c8 100644 --- a/scripts/mccarthy-corpus/GATE-PREREG.md +++ b/scripts/mccarthy-corpus/GATE-PREREG.md @@ -352,3 +352,71 @@ only against the present case cannot tell a wrong measurement from a right one.* I never asked the quote counter for a value I already knew the answer to. The corpus asserts 0.0. Reading 121.1 against a known 0.0 is what exposed it — and that check cost one line and was available before the gate ever launched. + +--- + +## AMENDMENT 3 — 2026-09-21, §6 axis C is UNSATISFIABLE and therefore void + +**This is arithmetic, not a re-reading of results.** Criterion 1 of §6 axis C, as frozen, +requires the candidate's in-band rate to exceed the base control's by more than the metric's +own floor. On this run: + +``` +needs in_band(candidate) - 0.89 > 0.200 +i.e. in_band(candidate) > 1.09 +ceiling in_band(candidate) <= 1.00 a rate cannot exceed 1 +``` + +**A PERFECT adapter — every one of 240 generations inside the 90–140 band — scores +0.11 +against a floor of 0.200 and fails by 0.09.** No artifact can pass it. A criterion that no +possible candidate can satisfy does not adjudicate anything, so "both candidates failed axis +C" carries **zero information about either candidate**; that verdict was determined before a +single generation existed. + +This is my error and it has a specific cause: §6 transcribed `score_beats.py`'s **v1** +criteria, which the operator **amended on 2026-09-15** — *before this corpus was built* — +precisely because they gate on metrics the unadapted carrier already maxes: + +> *"The defect in v1: it gated on metrics the UNADAPTED carrier already maxes. … Those three +> axes can only detect DAMAGE that training does. … NOT carried into v2: in-band +> (unresolvable — base maxes it) and on-beat."* — `score_beats.py`, operator-authorised +> amendment, 2026-09-15 + +### The governing rule reverts to the operator's own v2 + +**Axis C is `ran-on` only**: the candidate's ran-on rate must not exceed the base control's +by more than the metric's floor. That is the rule the operator ratified, the rule lv-hemingway +shipped under, and it predates this gate by three weeks. Reverting a transcription error to its +source is not threshold-shopping — the source is older than the data. + +⚠ **But it does not rescue ckpt450 either, and the bar for that is set HERE, before the +numbers that could clear it exist.** Under the corrected axis C, ckpt450's ran-on is +0.19 +against a floor of 0.200 — a pass by **0.01**, which is inside the noise the floor exists to +describe. A marginal pass is not a pass worth shipping on an author in copyright with a living +estate. + +### AMENDMENT 3's added arms and its added bar + +The damage grows monotonically with epoch (base 1% over-band → ckpt450 20% → ckpt900 28%), and +`--save-total-limit 60` kept all 56 checkpoints. So two more arms are gated, **on the same +frozen fixture, the same four seeds and the same rule** — adding candidates does not move a bar: + +| arm | epoch | why | +|---|---|---| +| `ckpt300` | 0.652 | the damage may not have arrived yet; the voice may have | +| `ckpt225` | 0.489 | the same question half an epoch earlier | + +**A candidate ships from this gate only if ALL of the following hold. Fixed now, before either +arm is generated:** + +1. **Voice** — gap over base exceeds the pairwise floor on the PRIMARY read **and** on the + normalised read (§5b, load-bearing per AMENDMENT 2). +2. **Memorisation** — hit-rate and max at or near the **held-out-author reference** (0.12 / + max 12), per AMENDMENT 1, with every matched run read. +3. **Damage** — `ran-on` delta over base **at most 0.100**, i.e. **half the measured floor**. + Not "inside the floor": half of it. This is the bright line ckpt450's +0.19 fails, chosen + because a rate that clears a noise threshold by 5% of that threshold has not been shown to + clear it at all. + +If no candidate clears all three, lv-mccarthy is **parked pending a retrain**, and that is the +report — not a softer bar.