Attack item R-6 ยท 2026-07-29 ยท harness
harness/unanimity_false_veto.py ยท draft remedy
PRE-REGISTRATION-DRAFT-xi-stability-guard.md
A candidate passes the ฮพ stage only if xi_worst < 0.50 and zero of 62 cells is
flagged unstable โ a cell being unstable unless all 9 contiguous sub-slice readings agree on which side
of the frozen lines the cell sits. In the instrument that is two lines:
if v == "PASS" and n_unstable > 0:
v = "PENDING" # rotation_robust_eval.py:555 (xi) and :670 (h_norm analogue)
False-veto โ 0 at true ฮพ=0 (readings sit ~100 ฯ from the line), climbing steeply toward 100% as the true value approaches 0.50 โ which would mean the guard measures proximity, not instability. Confirmed, and the transition is sharper than expected.
Continuous x is deliberate: it removes the estimator's tie randomness entirely (iter 2), so everything below is the rule, not the estimator.
| true ฮพ | mean worst-cell ฮพ | PASS | false-veto | mean unstable cells |
|---|---|---|---|---|
| 0.00 | 0.0256 | 60/60 | 0% | 0.00 |
| 0.10 | 0.1350 | 60/60 | 0% | 0.00 |
| 0.20 | 0.2337 | 60/60 | 0% | 0.00 |
| 0.30 | 0.3311 | 60/60 | 0% | 0.00 |
| 0.40 | 0.4275 | 60/60 | 0% | 0.00 |
| 0.45 | 0.4740 | 17/60 | 72% | 1.62 |
| 0.48 | 0.5046 | 0/60 | see below | 37.67 |
The load-bearing row is ฮพ=0.45. Worst-cell reads 0.4740 โ below the line โ and 72% are still refused, by the unanimity clause alone rather than by magnitude. Nothing is flagged at all up to ฮพ=0.40; then it collapses.
The 0.48 row overstates the case and I am not going to lean on it. Mean worst-cell there is 0.5046 โ above the line. The statistic under test is a max over 62 cells, whose expectation exceeds the per-cell truth, so at ฮพ=0.48 those candidates are genuinely borderline at the worst-cell statistic and refusing them is defensible. The argument rests on 0.45; 0.48 is reported for shape only.
That inflation is itself worth recording: at ฮพ=0.45 the worst-cell mean sits +0.024 above the per-cell truth. That is the selection bias of a max-over-62 โ the research's decision (b) โ observed in this instrument rather than imported from a paper.
k would not fix thisThe obvious remedy is "allow up to k unstable cells", which is what the k-FWER route in
the research implies. It fails here, because the failure is concentrated, not uniform:
| true ฮพ | required k |
|---|---|
| โค 0.40 | 0 โ nothing is ever flagged |
| 0.45 | โ 2 |
| 0.48 | โ 38 of 62 |
Any fixed k large enough to recover power near the line nullifies the guard everywhere
else. The required k is a steep function of proximity to the line โ which is the formal
statement that the guard is measuring nearness to a threshold rather than instability of the
data. This refines the research's recommendation A3 rather than following it.
No dial, band, threshold, tolerance or sub-slice fraction was touched, and the guard was
not deleted โ its strongest deletion argument is second-hand and about the sample mean,
and ฮพ is not a sample mean (research gap #962). Four remedy options are drafted in
PRE-REGISTRATION-DRAFT-xi-stability-guard.md, each with its free parameters named, awaiting
operator sign-off. That is the whole of the loop's authority here.
Evidence: harness/unanimity_false_veto_evidence.json. Reproduce:
VIRTUAL_ENV="" uv run --python 3.13 --no-project --with numpy --with pandas python3
harness/unanimity_false_veto.py