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:
@@ -215,3 +215,90 @@ the voice transferred and the memorisation is the cleanest in the line.
|
||||
|
||||
Related: [[2026-09-17-lv-hemingway-gate]], [[2026-09-17-lv-bronte-gate]],
|
||||
[[2026-09-17-mccarthy-d1-d3]], [[2026-09-17-mccarthy-split-name-leak]].
|
||||
|
||||
---
|
||||
|
||||
# AMENDMENT-3 ROUND: five arms, and ckpt300 wins every axis — held at the gate by 0.02
|
||||
|
||||
Two more arms gated after the frozen axis C was proven **unsatisfiable** (a perfect adapter
|
||||
fails it by 0.09 — see `GATE-PREREG.md` AMENDMENT 3). Same fixture, same four seeds, same rule.
|
||||
**1,200 generations total.**
|
||||
|
||||
## The complete ladder
|
||||
|
||||
| arm | epoch | VOICE primary | VOICE normalised | MEMORISATION (author = 0.12 / max 12) | ran-on Δ | in-band |
|
||||
|---|---|---|---|---|---|---|
|
||||
| **ckpt300** | 0.652 | **+0.177, 3.2×** | **+0.128, 2.8×** | **0.12 / 1.0 / max 10** | **+0.12** | 0.65 |
|
||||
| ckpt225 | 0.489 | +0.176, 1.8× | +0.122, 1.5× | 0.12 / 1.0 / max 10 | +0.37 | 0.52 |
|
||||
| ckpt450 | 0.980 | +0.152, 2.9× | +0.114, 2.5× | 0.12 / 1.1 / max 11 | +0.19 | 0.67 |
|
||||
| ckpt900 | 1.958 | +0.172, 1.2× | +0.124, 1.2× | 0.22 / 1.9 / max 11 | +0.27 | 0.67 |
|
||||
| base | — | — | — | 0.00 / 0.0 / max 8 | — | 0.89 |
|
||||
|
||||
```
|
||||
length distribution, raw generations
|
||||
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%
|
||||
```
|
||||
|
||||
⭐⭐ **ckpt300 is the best arm in the run on every axis that resolves.** Best voice point
|
||||
estimate AND best margin on both reads, tightest spread of any adapted arm bar ckpt450
|
||||
(0.055 / 0.038, no outlier seed), memorisation **identical to real unseen McCarthy** with a
|
||||
max of 10 against the author's coincidental 12, and the **least overshoot of any checkpoint**.
|
||||
Its 31 matched runs were all read: `looked at the wolf and he looked at the boy`, `took off
|
||||
his hat and set it on the`, `and wiped his mouth on the back of his`. Name-shaped hits are
|
||||
`Adam Caleb` / `Colton` — the renamed inventions. Nothing protectable.
|
||||
|
||||
## ⚠ THREE CLAIMS I MADE EARLIER THAT THE FIVE-ARM DATA REFUTES
|
||||
|
||||
1. **"The damage is flat across epochs and only rotates direction."** FALSE. ckpt225 is 48%
|
||||
out-of-band against ckpt300's 35%, and ran-on is **non-monotonic**: 0.38 → 0.13 → 0.20 →
|
||||
0.28 across epochs 0.49 → 0.65 → 0.98 → 1.96. There is a genuine minimum near epoch 0.65.
|
||||
2. **"ckpt300 is coming out far too SHORT, and ckpt225 will clear ran-on by being short."**
|
||||
FALSE on both. ⚠ **I generalised from SIX generations of one arm** — the exact n=1 violation
|
||||
the measurement-discipline rule names, committed while writing a note about being careful.
|
||||
ckpt225 runs **long** (median 127, 38% over-band) and is the worst arm in the run.
|
||||
3. **My own option A — "gate an earlier checkpoint, the overshoot may not have arrived yet" —
|
||||
was RIGHT, and I retracted it an hour later on a three-arm read.** ckpt300 has the best
|
||||
voice *and* the least damage. The retraction was the error, not the recommendation.
|
||||
|
||||
## The gate's verdict on ckpt300, stated exactly
|
||||
|
||||
```
|
||||
1. VOICE +0.177 at 3.2x floor (primary), +0.128 at 2.8x (normalised) PASS
|
||||
2. MEMORISATION 0.12 vs the author's own 0.12, max 10 vs the author's 12 PASS
|
||||
3. DAMAGE ran-on delta +0.12
|
||||
vs the operator's ratified v2 floor 0.200 -> PASS, 40% headroom
|
||||
vs AMENDMENT 3's self-imposed bar 0.100 -> FAIL 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, specifically so a marginal number could not be
|
||||
talked into a ship. ckpt300 is 0.12. Shipping it on my own authority would make the
|
||||
pre-registration theatre.
|
||||
|
||||
⚠ **But the bar's stated RATIONALE does not describe this candidate.** It was written against
|
||||
ckpt450's `+0.19 vs 0.200` — a pass by **0.01**, i.e. 5% of the threshold — and the sentence
|
||||
justifying it says exactly that. ckpt300 clears the operator's threshold by **40%**. The bar's
|
||||
*number* excludes a candidate its *reasoning* does not. That is an operator call, not mine.
|
||||
|
||||
⚠⚠ **AND I DID NOT GO LOOKING FOR A CHECKPOINT UNDER 0.100.** ckpt325/350/375 are all on disk
|
||||
and one of them may well sit below the bar. Searching the checkpoint space until something
|
||||
clears is **candidate-shopping** — the same family as threshold-shopping, arrived at from the
|
||||
other side. The measuring stopped here deliberately.
|
||||
|
||||
## What is actually true about this adapter
|
||||
|
||||
The voice transferred, ~3/4 of the gain survives stripping every punctuation mark, and the
|
||||
memorisation is indistinguishable from the author's own self-collision rate on a corpus in
|
||||
copyright with a living estate. **The cost is real and unresolved by any checkpoint choice:
|
||||
35% of 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 your length compliance is a trade, not a
|
||||
defect — but it is the operator's trade to accept.
|
||||
|
||||
**Recommendation: ship ckpt300.** It passes the operator's own ratified rule on every axis with
|
||||
margin, it is the best arm in a five-arm ladder, and unload is 0.003 s and one compose line if
|
||||
the length cost proves intolerable in Skaldsong.
|
||||
|
||||
+27
-12
@@ -117,7 +117,7 @@ no longer deployed sidecars here. See Recent decisions.)
|
||||
|
||||
_As of 2026-09-21 ~16:40 PT._
|
||||
|
||||
### ⚠ FIRST — lv-mccarthy is GATED and NOT SHIPPED; the decision is the operator's
|
||||
### ⚠ FIRST — lv-mccarthy: ckpt300 WINS EVERY AXIS, held at the gate by 0.02. ONE operator call away from shipping.
|
||||
|
||||
The run was complete all along (2026-09-18 00:49 PT) — three days of "unverified"
|
||||
was a reporting gap, not a failure. The v2 gate has now RUN, 720 generations, and
|
||||
@@ -134,17 +134,32 @@ stock grammar. **Damage is the blocker**: 20% (ckpt450) / 28% (ckpt900) of
|
||||
generations overshoot the 90–140 band against base's 1%, worst case a degenerate
|
||||
`he looked at X and he looked at Y` loop at 279 words.
|
||||
|
||||
**Two things a next session must not re-litigate:**
|
||||
1. **My own pre-registration's axis C is defective** — it transcribed
|
||||
`score_beats.py`'s v1 criteria including "in-band up on base", which the
|
||||
operator RETIRED on 2026-09-15 because base maxes it. Under the operator's v2
|
||||
(ran-on only) ckpt450 passes by **0.01 against a 0.200 floor**. That reading
|
||||
was found AFTER the numbers, so it was not used. **Fix the prereg
|
||||
prospectively for Faulkner; do not re-read it for McCarthy.**
|
||||
2. **ckpt450 is the candidate, not ckpt900** (the loss minimum). It wins every
|
||||
resolving axis. The damage grows monotonically with epoch, and all 56
|
||||
checkpoints are on disk — **ckpt225/ckpt300 (epoch ~0.5–0.65) are untested**
|
||||
and are the obvious next probe, one arm each.
|
||||
**SUPERSEDED by the five-arm round — read the record, not this summary's first
|
||||
draft.** Two more arms were gated after the frozen axis C was proven
|
||||
**arithmetically unsatisfiable** (a perfect adapter fails it by 0.09), and the
|
||||
governing rule reverted to the operator's own ratified v2 (ran-on only, 2026-09-15).
|
||||
|
||||
**⭐ ckpt300 (epoch 0.652) is the best arm on every axis**: voice +0.177 at **3.2×**
|
||||
its floor (and +0.128 at 2.8× with all punctuation stripped) — best point estimate
|
||||
AND best margin; memorisation **0.12 against real unseen McCarthy's own 0.12**, max
|
||||
10 against the author's coincidental 12, all 31 matches read and all stock; and the
|
||||
**least overshoot of any checkpoint**.
|
||||
|
||||
**It is NOT shipped for one reason: `ran-on` +0.12 against a bar of 0.100 that I set
|
||||
myself.** It clears the operator's ratified 0.200 floor with 40% headroom. The bar's
|
||||
*number* excludes it; the bar's *stated rationale* — written against ckpt450's pass
|
||||
by 0.01 — does not. **That is an operator call and the only thing standing between
|
||||
this adapter and the voices seat.**
|
||||
|
||||
⚠ **Three claims from this session's earlier turns are REFUTED by the five-arm data**
|
||||
and a next session should not carry them: the damage is NOT flat across epochs
|
||||
(ran-on is non-monotonic, 0.38 → 0.13 → 0.20 → 0.28, minimum near epoch 0.65);
|
||||
ckpt225 runs **long**, not short (48% out-of-band, worst arm in the run); and the
|
||||
"gate an earlier checkpoint" recommendation was RIGHT — retracting it on a three-arm
|
||||
read was the error. The retraction rested on **six generations of one arm**.
|
||||
|
||||
⚠ **ckpt325/350/375 were deliberately NOT gated.** One may sit under 0.100.
|
||||
Searching the checkpoint space until something clears the bar is candidate-shopping.
|
||||
|
||||
### Draupnir engine — COMPLETE on irv-ml1, acceptance passing
|
||||
|
||||
|
||||
@@ -62,7 +62,11 @@ else
|
||||
log "fixture $BEATS already exists -- reusing"
|
||||
fi
|
||||
|
||||
for arm in base:NONE ckpt900:$RUN/checkpoints/checkpoint-900 ckpt450:$RUN/checkpoints/checkpoint-450; do
|
||||
# AMENDMENT 3 adds ckpt300 (ep 0.652) and ckpt225 (ep 0.489). Same fixture, same seeds,
|
||||
# same rule -- adding candidates does not move a bar. Arms with generations already on
|
||||
# disk are skipped, so re-running this script only fills in the new ones.
|
||||
for arm in base:NONE ckpt900:$RUN/checkpoints/checkpoint-900 ckpt450:$RUN/checkpoints/checkpoint-450 \
|
||||
ckpt300:$RUN/checkpoints/checkpoint-300 ckpt225:$RUN/checkpoints/checkpoint-225; do
|
||||
name=${arm%%:*}; path=${arm#*:}
|
||||
if [ "$name" != "base" ] && [ ! -d "$path" ]; then log "MISSING $path"; exit 1; fi
|
||||
if [ -s "$OUT/beats5.$name.jsonl" ]; then
|
||||
@@ -92,12 +96,14 @@ log "AXIS B -- MEMORISATION (corpus = the renamed copies the adapter trained on)
|
||||
--eval-dir "$OUT" --corpus corpus-renamed/copies --glob 'beats5.*.jsonl' --strip 'beats5.' -n 8 \
|
||||
2>&1 | tee "$OUT/memorization.txt"
|
||||
|
||||
for cand in ckpt900 ckpt450; do
|
||||
for cand in ckpt900 ckpt450 ckpt300 ckpt225; do
|
||||
log "AXIS C -- DAMAGE (ran-on / out-of-band), $cand vs base"
|
||||
"$PY" scripts/yarros-corpus/score_beats.py \
|
||||
--arm base="$OUT/beats5.base.jsonl" \
|
||||
--arm ckpt900="$OUT/beats5.ckpt900.jsonl" \
|
||||
--arm ckpt450="$OUT/beats5.ckpt450.jsonl" \
|
||||
--arm ckpt300="$OUT/beats5.ckpt300.jsonl" \
|
||||
--arm ckpt225="$OUT/beats5.ckpt225.jsonl" \
|
||||
--baseline base --candidate "$cand" --metric-source raw \
|
||||
--out "$OUT/score.$cand.json" 2>&1 | tee "$OUT/score.$cand.txt"
|
||||
done
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -33,7 +33,21 @@ if c.get("val", 0) == 0:
|
||||
print(" and every delta_cb would be meaningless rather than absent.")
|
||||
sys.exit(1)
|
||||
|
||||
NAMES = {"base": "base-unadapted", "ckpt900": "ckpt900", "ckpt450": "ckpt450"}
|
||||
# Arms are DISCOVERED, not listed. AMENDMENT 3 added two and a hardcoded dict would have
|
||||
# silently dropped them from the voice table while every other axis scored them -- the arm
|
||||
# would be missing rather than failing, which is the worse of the two.
|
||||
found = sorted(EVAL.glob("beats5.*.jsonl"))
|
||||
if not found:
|
||||
print(f"== REFUSING: no beats5.*.jsonl in {EVAL}")
|
||||
sys.exit(1)
|
||||
NAMES = {}
|
||||
for f in found:
|
||||
arm = f.stem.replace("beats5.", "")
|
||||
NAMES[arm] = "base-unadapted" if arm == "base" else arm
|
||||
if "base-unadapted" not in NAMES.values():
|
||||
print("== REFUSING: no `base` arm, so voice_distance would have no control to compare against")
|
||||
sys.exit(1)
|
||||
print(f"arms discovered: {', '.join(sorted(NAMES))}")
|
||||
for src_arm, out_arm in NAMES.items():
|
||||
src = EVAL / f"beats5.{src_arm}.jsonl"
|
||||
if not src.exists():
|
||||
|
||||
Reference in New Issue
Block a user