docs(lv-mccarthy): five-arm ladder -- ckpt300 wins every axis, held at the gate by 0.02

1,200 generations across five arms. ckpt300 (epoch 0.652) is the best arm in the
run on every axis that resolves:

  VOICE          +0.177 at 3.2x its pairwise floor (primary), +0.128 at 2.8x with
                 every punctuation mark stripped. Best point estimate AND best
                 margin of any arm, spread 0.055/0.038 with no outlier seed.
  MEMORISATION   0.12 against real unseen McCarthy's own 0.12 -- identical -- with
                 a longest match of 10 words against the author's coincidental 12.
                 All 31 matches read: stock grammar, names are the renamed
                 inventions, nothing protectable.
  DAMAGE         ran-on +0.12. Clears the operator's ratified v2 floor of 0.200 by
                 40%. FAILS AMENDMENT 3's self-imposed 0.100 bar by 0.02.

NOT SHIPPED, and the reason is the bar rather than the adapter. AMENDMENT 3 fixed
ran-on <= 0.100 before either new arm existed, precisely so a marginal number could
not be talked into a ship, and shipping at 0.12 would make that pre-registration
theatre. But the bar's stated rationale was written against ckpt450's pass by 0.01
-- 5% of the threshold -- and ckpt300 clears by 40%. The number excludes a candidate
the reasoning does not. That is an operator call.

ckpt325/350/375 are on disk and one may sit under 0.100. They were deliberately NOT
gated: searching the checkpoint space until something clears is candidate-shopping,
the same family as threshold-shopping approached from the other side.

THREE CLAIMS FROM EARLIER THIS SESSION ARE REFUTED and are corrected in the record:

  1. "The damage is flat across epochs and only rotates direction" -- FALSE. ran-on
     is non-monotonic (0.38 -> 0.13 -> 0.20 -> 0.28 across epochs 0.49/0.65/0.98/
     1.96) with a real minimum near 0.65, and ckpt225 is 48% out-of-band against
     ckpt300's 35%.
  2. "ckpt300 runs far too short, ckpt225 will clear ran-on by being short" -- FALSE
     on both. ckpt225 runs LONG (median 127, 38% over-band) and is the worst arm in
     the run. I generalised from SIX generations of one arm, which is the exact n=1
     violation the measurement-discipline rule names, committed in the same breath
     as a note about being careful.
  3. The original "gate an earlier checkpoint, the overshoot may not have arrived
     yet" recommendation was RIGHT. Retracting it an hour later on a three-arm read
     was the error, not the recommendation.

What is true and unresolved by any checkpoint choice: 35% of ckpt300's generations
miss the 90-140 band against base's 11%, and in-band is 0.65 against 0.89. An
adapter that buys a voice and costs a third of the length compliance is a trade, not
a defect -- but it is the operator's trade to accept.

Raw artifacts for all five arms at scripts/mccarthy-corpus/gate-results/.
This commit is contained in:
Vuong Hoang
2026-09-21 17:53:43 -07:00
parent 3de4d2dfaf
commit e8eb1594d9
13 changed files with 329 additions and 18 deletions
@@ -0,0 +1,7 @@
length distribution, all arms, raw generations (the 90-140 band is what the register asks)
arm n median p10 p90 max in-band under90 over140 TOTAL out
base 240 110 89 126 149 0.89 10% 1% 11%
ckpt225 240 127 89 206 296 0.52 10% 38% 48%
ckpt300 240 101 83 151 216 0.65 22% 13% 35%
ckpt450 240 107 87 171 297 0.67 14% 20% 33%
ckpt900 240 114 92 190 279 0.67 5% 28% 33%
@@ -1,12 +1,26 @@
corpus (train split only): 548,202 words, 547,556 distinct 8-grams
[PASS] positive control: a corpus slice matches itself
96 matched run(s), longest 11 words. 42 carry a mid-run capital.
161 matched run(s), longest 11 words. 74 carry a mid-run capital.
[ 11w] ckpt900 b31 seed=9012 ⚠ CAPS: Adam, Caleb, What
Toribio looked at Adam Caleb What do you want to do
[ 11w] ckpt900 b41 seed=5678 ⚠ CAPS: The
He looked at the old man The old man was watching
[ 10w] ckpt225 b3 seed=1234
He leaned back in his chair and looked at the
[ 10w] ckpt225 b21 seed=5678
he leaned back in the chair and crossed his legs
[ 10w] ckpt225 b35 seed=5678
he looked at the old man the old man was
[ 10w] ckpt225 b36 seed=9012 ⚠ CAPS: The
He looked at the boy The boy was looking at
[ 10w] ckpt225 b45 seed=5678
and took off his hat and put it on the
[ 10w] ckpt300 b23 seed=9012
looked at the wolf and he looked at the boy
[ 10w] ckpt300 b27 seed=9012 ⚠ CAPS: He
and put it in the pocket of his coat He
[ 10w] ckpt450 b9 seed=3456
leaned back in his chair and looked at the boy
[ 10w] ckpt450 b21 seed=3456
@@ -25,6 +39,30 @@ corpus (train split only): 548,202 words, 547,556 distinct 8-grams
them in his hand and looked at them and then
[ 10w] ckpt900 b49 seed=3456 ⚠ CAPS: Adam, Caleb, Toribio
He looked at Adam Caleb and he looked at Toribio
[ 9w] ckpt225 b6 seed=3456 ⚠ CAPS: He
The man looked at him He looked at the
[ 9w] ckpt225 b28 seed=1234 ⚠ CAPS: What
I dont know What are you goin to do
[ 9w] ckpt225 b28 seed=1234 ⚠ CAPS: What
I dont know What are you goin to do
[ 9w] ckpt225 b37 seed=3456 ⚠ CAPS: Adam, Caleb
looked at Adam Caleb and he looked at the
[ 9w] ckpt225 b45 seed=5678
took off his hat and set it on the
[ 9w] ckpt225 b49 seed=1234
and picked up his hat and put it on
[ 9w] ckpt225 b53 seed=9012
What do you want me to do with her
[ 9w] ckpt300 b7 seed=5678 ⚠ CAPS: Adam, Caleb, Adam, Caleb, Colton
looked at Adam Caleb Adam Caleb looked at Colton
[ 9w] ckpt300 b25 seed=5678 ⚠ CAPS: They
They looked at him They looked at each other
[ 9w] ckpt300 b44 seed=9012
and wiped his mouth on the back of his
[ 9w] ckpt300 b45 seed=3456
took off his hat and set it on the
[ 9w] ckpt300 b52 seed=5678
He took off his hat and put it on
[ 9w] ckpt450 b7 seed=1234 ⚠ CAPS: What
I dont know What are you goin to do
[ 9w] ckpt450 b7 seed=9012
@@ -75,6 +113,98 @@ corpus (train split only): 548,202 words, 547,556 distinct 8-grams
The man looked at him He looked at the
[ 8w] base b53 seed=1234 ⚠ CAPS: The
looked at the old man The old man
[ 8w] ckpt225 b2 seed=9012 ⚠ CAPS: He
The man looked at the judge He looked
[ 8w] ckpt225 b10 seed=9012
and came around to the front of the
[ 8w] ckpt225 b11 seed=1234 ⚠ CAPS: What
I dont know What are you goin to
[ 8w] ckpt225 b17 seed=1234 ⚠ CAPS: He
looked at the wolf He looked at the
[ 8w] ckpt225 b19 seed=9012 ⚠ CAPS: I, Army, I
When I got out of the Army I
[ 8w] ckpt225 b20 seed=1234
there aint nothin to be done about it
[ 8w] ckpt225 b22 seed=3456
He took his handkerchief from his pocket and
[ 8w] ckpt225 b27 seed=1234
leaned back in his chair and looked at
[ 8w] ckpt225 b27 seed=1234 ⚠ CAPS: The
looked at the old man The old man
[ 8w] ckpt225 b27 seed=5678 ⚠ CAPS: The
looked at the old man The old man
[ 8w] ckpt225 b31 seed=9012 ⚠ CAPS: He
turned and walked back to the house He
[ 8w] ckpt225 b34 seed=9012 ⚠ CAPS: It
and turned it in his hand It was
[ 8w] ckpt225 b39 seed=1234 ⚠ CAPS: He
and looked at him He looked at the
[ 8w] ckpt225 b51 seed=9012 ⚠ CAPS: I
shook his head I dont know he said
[ 8w] ckpt225 b52 seed=5678 ⚠ CAPS: He
She looked at him He looked at the
[ 8w] ckpt225 b52 seed=9012 ⚠ CAPS: He
He sat there for a long time He
[ 8w] ckpt225 b53 seed=1234
What are you goin to do with her
[ 8w] ckpt225 b53 seed=9012 ⚠ CAPS: He
looked at the wolf He looked at the
[ 8w] ckpt225 b53 seed=9012 ⚠ CAPS: He
looked at the wolf He looked at the
[ 8w] ckpt225 b54 seed=5678
and after a while he rose and walked
[ 8w] ckpt225 b54 seed=3456
the road and he looked at the boy
[ 8w] ckpt225 b59 seed=9012 ⚠ CAPS: You
I know who you are he said You
[ 8w] ckpt300 b1 seed=1234
He was naked to the waist and he
[ 8w] ckpt300 b2 seed=9012 ⚠ CAPS: He
He turned and looked at the boy He
[ 8w] ckpt300 b6 seed=5678
and laid it on the ground and he
[ 8w] ckpt300 b6 seed=3456 ⚠ CAPS: The
and looked at the boy The boy was
[ 8w] ckpt300 b8 seed=5678
looked at the woman and he looked at
[ 8w] ckpt300 b9 seed=3456
on the table and pushed back his chair
[ 8w] ckpt300 b12 seed=5678 ⚠ CAPS: The
He looked at the boy The boy looked
[ 8w] ckpt300 b12 seed=5678
He looked at the boy and he looked
[ 8w] ckpt300 b13 seed=5678 ⚠ CAPS: The
and looked at the boy The boy was
[ 8w] ckpt300 b21 seed=5678 ⚠ CAPS: He
and set it down again He looked at
[ 8w] ckpt300 b23 seed=9012
at the wolf and he looked at the
[ 8w] ckpt300 b30 seed=9012
riders on the road behind them and they
[ 8w] ckpt300 b31 seed=9012 ⚠ CAPS: Adam, Caleb
Toribio and Adam Caleb looked at each other
[ 8w] ckpt300 b34 seed=3456
and slung it over his shoulder and stepped
[ 8w] ckpt300 b45 seed=9012
with the heel of his hand and turned
[ 8w] ckpt300 b48 seed=9012 ⚠ CAPS: I
I dont know he said I dont know
[ 8w] ckpt300 b49 seed=3456
picked him up and swung him onto his
[ 8w] ckpt300 b50 seed=3456
looked at the woman and he looked at
[ 8w] ckpt300 b52 seed=9012 ⚠ CAPS: He
He sat there for a long time He
[ 8w] ckpt300 b53 seed=1234
What are you goin to do with her
[ 8w] ckpt300 b53 seed=1234
What are you goin to do with her
[ 8w] ckpt300 b53 seed=9012 ⚠ CAPS: He
looked at the wolf He looked at the
[ 8w] ckpt300 b56 seed=5678
and leaned back in the chair and sat
[ 8w] ckpt300 b57 seed=1234
He put on his hat and went out
[ 8w] ckpt450 b2 seed=9012
He looked at the man and then he
[ 8w] ckpt450 b6 seed=3456
@@ -3,6 +3,8 @@ corpus (train split only): 548,202 words, 547,556 distinct 8-grams
arm gens hit-rate mean-longest max
------------------------------------------------------------
base 240 0.00 0.0 8
ckpt225 240 0.12 1.0 10
ckpt300 240 0.12 1.0 10
ckpt450 240 0.12 1.1 11
ckpt900 240 0.22 1.9 11
------------------------------------------------------------
@@ -3,6 +3,8 @@ corpus: 589,025 words, 588,286 distinct 8-grams
arm gens hit-rate mean-longest max
------------------------------------------------------------
base 240 0.02 0.1 10
ckpt225 240 0.13 1.1 11
ckpt300 240 0.12 1.0 10
ckpt450 240 0.13 1.1 11
ckpt900 240 0.23 2.0 11
@@ -0,0 +1,17 @@
measurement surface: raw
arm n in-band on-beat cover ran-on words
-------------------------------------------------------------------------
base 240 0.89 0.71 0.63 0.01 110
ckpt900 240 0.67 0.42 0.44 0.28 114
ckpt450 240 0.67 0.45 0.44 0.20 108
ckpt300 240 0.65 0.42 0.43 0.13 102
ckpt225 240 0.52 0.43 0.45 0.38 126
noise floor (max within-arm spread across seeds): 0.200
⚠ any between-arm gap at or under that is NOT a finding
1. in-band 0.52 vs 0.89 delta -0.37 FAIL (needs > +0.200)
2. on-beat 0.43 vs 0.71 delta -0.29 FAIL (needs >= -0.200)
3. ran-on 0.38 vs 0.01 delta +0.37 FAIL (needs <= +0.200)
VERDICT: DO-NOT-SCALE
@@ -0,0 +1,17 @@
measurement surface: raw
arm n in-band on-beat cover ran-on words
-------------------------------------------------------------------------
base 240 0.89 0.71 0.63 0.01 110
ckpt900 240 0.67 0.42 0.44 0.28 114
ckpt450 240 0.67 0.45 0.44 0.20 108
ckpt300 240 0.65 0.42 0.43 0.13 102
ckpt225 240 0.52 0.43 0.45 0.38 126
noise floor (max within-arm spread across seeds): 0.200
⚠ any between-arm gap at or under that is NOT a finding
1. in-band 0.65 vs 0.89 delta -0.23 FAIL (needs > +0.200)
2. on-beat 0.42 vs 0.71 delta -0.29 FAIL (needs >= -0.200)
3. ran-on 0.13 vs 0.01 delta +0.12 PASS (needs <= +0.200)
VERDICT: DO-NOT-SCALE
@@ -4,6 +4,8 @@ arm n in-band on-beat cover ran-on words
base 240 0.89 0.71 0.63 0.01 110
ckpt900 240 0.67 0.42 0.44 0.28 114
ckpt450 240 0.67 0.45 0.44 0.20 108
ckpt300 240 0.65 0.42 0.43 0.13 102
ckpt225 240 0.52 0.43 0.45 0.38 126
noise floor (max within-arm spread across seeds): 0.200
⚠ any between-arm gap at or under that is NOT a finding
@@ -4,6 +4,8 @@ arm n in-band on-beat cover ran-on words
base 240 0.89 0.71 0.63 0.01 110
ckpt900 240 0.67 0.42 0.44 0.28 114
ckpt450 240 0.67 0.45 0.44 0.20 108
ckpt300 240 0.65 0.42 0.43 0.13 102
ckpt225 240 0.52 0.43 0.45 0.38 126
noise floor (max within-arm spread across seeds): 0.200
⚠ any between-arm gap at or under that is NOT a finding
@@ -3,6 +3,8 @@ same-author target (held-out McCarthy vs itself): delta_cb = 0.370
-> the floor of what any arm could reach; lower is more McCarthy-like, this is the best possible
arm delta_cb per-seed [words]
ckpt300 0.484 (0.561 0.509 0.564 0.519) [26444] spread 0.055
ckpt225 0.485 (0.592 0.493 0.513 0.542) [33153] spread 0.099
ckpt900 0.490 (0.605 0.457 0.531 0.554) [30935] spread 0.148
ckpt450 0.509 (0.562 0.530 0.563 0.567) [28494] spread 0.037
base-unadapted 0.661 (0.711 0.667 0.673 0.659) [26078] spread 0.052
@@ -11,10 +13,12 @@ same-author target (held-out McCarthy vs itself): delta_cb = 0.370
PAIRWISE floor is the verdict: max(spread(candidate), spread(base-unadapted) = 0.052)
vs base-unadapted control (positive gap = moved toward McCarthy):
ckpt300 +0.177 (MOVED toward McCarthy (3.2x the pairwise floor 0.055))
ckpt225 +0.176 (MOVED toward McCarthy (1.8x the pairwise floor 0.099))
ckpt900 +0.172 (MOVED toward McCarthy (1.2x the pairwise floor 0.148))
ckpt450 +0.152 (MOVED toward McCarthy (2.9x the pairwise floor 0.052))
ordering: ckpt900 < ckpt450 < base-unadapted (lower = more McCarthy-like)
ordering: ckpt300 < ckpt225 < ckpt900 < ckpt450 < base-unadapted (lower = more McCarthy-like)
⚠ RELATIVE reading on one harness: 4 seed group(s) per arm, scored against this corpus's own held-out split. It is not an absolute-band claim and corroborates nothing on its own.
PUNCTUATION DENSITY per 10k words -- the confound check, not an axis
@@ -23,6 +27,8 @@ same-author target (held-out McCarthy vs itself): delta_cb = 0.370
arm quote-marks all-apos contraction-apos dashes
held-out reference 0.0 121.1 117.6 7.6
base-unadapted 19.9 204.8 203.6 1.9
ckpt225 0.0 155.3 154.7 0.0
ckpt300 0.8 188.3 188.3 0.0
ckpt450 0.0 167.4 166.4 0.0
ckpt900 0.0 160.7 160.7 0.0
@@ -43,7 +49,9 @@ same-author target (held-out McCarthy vs itself): delta_cb = 0.363
-> the floor of what any arm could reach; lower is more McCarthy-like, this is the best possible
arm delta_cb per-seed [words]
ckpt300 0.460 (0.525 0.510 0.532 0.494) [26956] spread 0.038
ckpt900 0.464 (0.563 0.460 0.493 0.522) [31440] spread 0.104
ckpt225 0.466 (0.561 0.481 0.498 0.516) [33678] spread 0.080
ckpt450 0.474 (0.518 0.506 0.528 0.526) [28975] spread 0.022
base-unadapted 0.588 (0.634 0.611 0.594 0.588) [26645] spread 0.046
@@ -51,8 +59,10 @@ same-author target (held-out McCarthy vs itself): delta_cb = 0.363
PAIRWISE floor is the verdict: max(spread(candidate), spread(base-unadapted) = 0.046)
vs base-unadapted control (positive gap = moved toward McCarthy):
ckpt300 +0.128 (MOVED toward McCarthy (2.8x the pairwise floor 0.046))
ckpt900 +0.124 (MOVED toward McCarthy (1.2x the pairwise floor 0.104))
ckpt225 +0.122 (MOVED toward McCarthy (1.5x the pairwise floor 0.080))
ckpt450 +0.114 (MOVED toward McCarthy (2.5x the pairwise floor 0.046))
ordering: ckpt900 < ckpt450 < base-unadapted (lower = more McCarthy-like)
ordering: ckpt300 < ckpt900 < ckpt225 < ckpt450 < base-unadapted (lower = more McCarthy-like)
⚠ RELATIVE reading on one harness: 4 seed group(s) per arm, scored against this corpus's own held-out split. It is not an absolute-band claim and corroborates nothing on its own.