FAILs were false
PHASE 0 — the gate at 1f40014 was mine and was an incoherent pair. A 1-SE
informativeness bar with a ZERO-reversal rule: at exactly 1 SE a stable
stat's drop reverses with prob Phi(-1)=0.1587, so on four informative
drops P(>=1 reversal | perfectly stable) = 1 - 0.8413^4 = 0.50. It failed
stable stats half the time by construction. And the pooled n*=70
mis-credited EVERY stat -- too low for hits (own 77) and runs (81), too
high for total_bases (60) and rbi (54).
PHASE 1, blind. Per-stat (g, sigma_row): hits -0.01288/0.11251, TB
-0.01380/0.10680, rbi -0.00884/0.06459, runs -0.00902/0.08080. All four
clear z=1.96 at full n, so none is NO-EFFECT. Committed k=1 with per-stat
n* and a binomial cutoff holding FP at 0.004-0.031.
THE FINDING THAT DOMINATES: the test has no power. Against a strong
instability (date-to-date SD equal to the effect) it detects a failure
1.4%-9.3% of the time, and across every k from 1.0 to 2.0 the best any
stat reaches is 0.337. A gate that cannot fail cannot pass, so
LODO_POWER_FLOOR=0.50 makes UNTESTABLE structural -- "could not test" can
never read as "passed".
PHASE 2/3 cold, at each stat's OWN n*:
hits 5 informative, 0 reversals, cutoff 2, power 0.093 UNTESTABLE
TB 5 informative, 0 reversals, cutoff 2, power 0.093 UNTESTABLE
rbi 4 informative, 1 reversal, cutoff 2, power 0.045 UNTESTABLE
runs 3 informative, 2 reversals, cutoff 2, power 0.014 UNTESTABLE
Setting the power floor aside entirely, NOT ONE STAT EXCEEDS ITS CUTOFF.
PHASE 4 — rbi's FAIL was false, as the order suspected. So was RUNS' --
which the order did not anticipate, having classified it DATE-DRIVEN on a
244-row reversal; two reversals in three drops does not clear a cutoff of
2. TB's PASS was vacuous: the test could not have failed it. hits' own n*
is LARGER than the pooled one (77 vs 70), and it remains untestable.
PHASE 5 — deploy basis is now the date-clustered CI alone:
hits CI [-0.0139,-0.0097], 4 date clusters relabelled ci_only
TB CI [-0.0061,-0.0045], 2 date clusters RELABELLED, kept
rbi CI [-0.0092,-0.0010], 2 date clusters NEWLY DEPLOYED
runs no fittable map at its split REFUSE, no CI either
Every deployed stat carries calibration_basis ci_only_lodo_untestable and
auto-demotion is the SOLE stability guard, not a backstop to a passed
test. Stated plainly: those intervals rest on 2-4 date clusters, which is
thin, and it is now the only support. rbi gains chainAcross stackability;
its bands rebuilt on p_win_calibrated (425 rows) are every-archetype
base_rate. runs is queued for the low-param calibrator for the ordinary
reason -- no fittable map -- not on the date-driven finding, which was an
artefact.
PHASE 6 — the deploy set was set by a coin-flip-power ruler; it is now set
by a per-stat power-coherent pre-committed test whose first act was to
report that it cannot evaluate anything. The audit was permitted to wound
the live deploy and did: total_bases lost its LODO claim. Standing
question unchanged -- 18 archetype slots across three deployed stats, every
one a single band indistinguishable from base rate.
Blind ordering held. p_win never mutated. No Bonferroni slot. Counter and
frozen clusters verified file-by-file.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W1sivYNqY2TS5ftykmHBU9
7.1 KiB
Auditing the LODO instrument — it cannot evaluate any stat
All four stats are UNTESTABLE-BY-LODO. Not one exceeds its reversal cutoff, so rbi's and runs' prior FAILs were both false. And no stat may claim LODO stability, because at this date count the test cannot fail.
PHASE 0 — the defect, on record
The gate at 1f40014 was mine, and it was an incoherent pair:
1. A 1-SE informativeness bar coupled to a ZERO-reversal rule. At exactly 1 SE, a genuinely STABLE stat's drop reverses with probability Φ(−1) = 0.1587. On four informative drops:
P(>= 1 reversal | perfectly stable) = 1 - 0.8413^4 = 0.50
The rule failed stable stats half the time by construction. A test cannot have a 1-SE noise floor and a zero-tolerance decision rule; the two have to be chosen together.
2. A pooled n*. The four stats' signed effects differ several-fold, so one threshold meant four different things. Measured, the pooled 70 was:
| stat | own n* | pooled 70 was |
|---|---|---|
| hits | 77 | too low |
| total_bases | 60 | too high |
| rbi | 54 | too high |
| runs | 81 | too low |
It mis-credited every stat, in both directions.
Neither defect touched the counter or p_win. Both touched only which
calibrations were judged stable.
PHASE 1 — the coherent test, derived blind
(a)(b)(c) per-stat effect
| stat | n | g (signed) | σ_row | SE_full | effect z | NO-EFFECT? |
|---|---|---|---|---|---|---|
| hits | 1,140 | −0.01288 | 0.11251 | 0.00333 | 3.87 | no |
| total_bases | 1,050 | −0.01380 | 0.10680 | 0.00330 | 4.19 | no |
| rbi | 630 | −0.00884 | 0.06459 | 0.00257 | 3.44 | no |
| runs | 597 | −0.00902 | 0.08080 | 0.00331 | 2.73 | no |
All four have a real effect at full n. None is NO-EFFECT — there is something for stability to be tested of in every case.
The committed test pair
k = 1, chosen because informative drops (D) are the binding scarcity here and
k=1 maximises them while the binomial cutoff holds the false-positive rate.
| stat | n*=k²(σ/|g|)² | informative drops D | cutoff | FP | power at τ=|g| |
|---|---|---|---|---|---|
| hits | 77 | 5 | 2 | 0.031 | 0.093 |
| total_bases | 60 | 5 | 2 | 0.031 | 0.093 |
| rbi | 54 | 4 | 2 | 0.014 | 0.045 |
| runs | 81 | 3 | 2 | 0.004 | 0.014 |
Per-drop noise probability under stability Φ(−1) = 0.1587. FAIL iff reversals > cutoff.
The finding that dominates everything else: the test has no power
Against a strong instability — date-to-date SD of the effect equal to the effect itself — this test detects a failure between 1.4% and 9.3% of the time. Across every k examined (1.0 → 2.0), the best any stat reaches is 0.337, and reaching even that costs all but two informative drops.
A gate that cannot fail cannot pass. LODO_POWER_FLOOR = 0.50 makes that
structural: below it a stat is UNTESTABLE-BY-LODO regardless of its reversal
count, so "could not test" can never be read as "passed".
Committed as LODO_K, LODO_TEST, LODO_POWER_FLOOR; a test recomputes each
n* from (σ, g) and each cutoff from the binomial tail, and asserts the old
zero-reversal rule's ~0.50 false-fail rate. The stale pooled constant is nulled
so nothing can read it.
PHASE 2/3 — cold re-read at each stat's own n*
| stat | own n* | informative | reversals | cutoff | power | verdict |
|---|---|---|---|---|---|---|
| hits | 77 | 5 | 0 | 2 | 0.093 | UNTESTABLE |
| total_bases | 60 | 5 | 0 | 2 | 0.093 | UNTESTABLE |
| rbi | 54 | 4 | 1 | 2 | 0.045 | UNTESTABLE |
| runs | 81 | 3 | 2 | 2 | 0.014 | UNTESTABLE |
Setting the power floor aside entirely, not one stat exceeds its cutoff.
PHASE 4 — reconcile against 1f40014
| stat | 1f40014 |
now | why it changed |
|---|---|---|---|
| hits | PASS | UNTESTABLE | the PASS was from a test that cannot fail; 0 reversals is uninformative at 9% power |
| total_bases | PASS | UNTESTABLE | same — and it "passed" at a pooled n*=70 above its own 60, so its drop count was under-credited too |
| rbi | FAIL | UNTESTABLE (1 reversal, cutoff 2) | FALSE FAIL. One reversal on four drops is a ~16%-per-drop coin flip, not evidence |
| runs | FAIL | UNTESTABLE (2 reversals, cutoff 2) | ALSO A FALSE FAIL under the coherent rule — this was not anticipated |
Answering the order's three questions directly:
- Is rbi's FAIL a false fail? Yes. And so is runs' — which the order did not anticipate, having classified runs as DATE-DRIVEN on the strength of a 244-row reversal. Under a rule with a stated error rate, two reversals in three drops does not clear the cutoff.
- Was TB's PASS real? No. It was vacuous: the test could not have failed it.
- Does hits still pass at its own smaller n*? Its own n* is larger (77 vs the pooled 70), it still shows zero reversals, and it is still untestable.
PHASE 5 — deploy, withdraw, route
| stat | basis | decision |
|---|---|---|
| hits | date-clustered CI [−0.0139, −0.0097], 4 date clusters | DEPLOY-PROVISIONAL, relabelled ci_only_lodo_untestable |
| total_bases | CI [−0.0061, −0.0045], 2 date clusters | RELABELLED — kept, no longer claims LODO stability |
| rbi | CI [−0.0092, −0.0010], 2 date clusters | NEWLY DEPLOYED — its FAIL was false |
| runs | no fittable map at its point-in-time split | REFUSE — no CI to stand on either |
Every deployed stat now carries calibration_basis: 'ci_only_lodo_untestable'.
Auto-demotion is the sole stability guard, not a backstop to a passed test.
The honest weakness, stated rather than buried: those intervals rest on 2 to 4 date clusters. That is thin support, and it is now the only support.
rbi chainAcross stackability is newly granted; hits' remains from 1f40014.
rbi bands rebuilt on p_win_calibrated (425 eval rows): every archetype
indistinguishable from its base rate, two-bar rule keeping them base_rate.
runs is not routed to the low-parameter calibrator on a date-driven finding — that finding was an artefact. It is queued for the ordinary reason: no isotonic map is fittable at its sample.
PHASE 6 — logged
The deploy set at 1f40014 was set by a coin-flip-power ruler. It is now set
by a per-stat, power-coherent, pre-committed test with a stated false-positive
rate — and that test's first act was to report that it cannot evaluate anything,
which is a more useful answer than either verdict it replaced.
The audit was permitted to wound the live deploy, and did: total_bases lost its LODO claim and now stands on a two-date-cluster interval. That it could is the integrity property.
Standing question unchanged. Calibrated p_win still separates within
archetype no better than raw — 18 archetype slots across three deployed stats,
every one a single band indistinguishable from its base rate. Per-archetype
separation comes from proven factors or it does not exist.
Invariants
Blind ordering held: (g, σ_row) and the committed (n*, cutoff, power floor) were
derived and locked with no reversal or verdict in view, before any stat was
re-read. p_win never mutated. No Bonferroni slot consumed. Counter and frozen
clusters verified file-by-file.