Navigation
DashboardRotation-Orthogonal-Probe Campaign › iter 11

iter 11 — regime-label-shuffle null: can random partitions mint verdicts?

BREAKSDEFENDED ×2 → CLOSED  2026-07-10 · KB §6's last sanctioned control · a partition-selection defect found · defense v1 collided with the iter-8 invariant and was caught by the campaign's own regression suite · clean 0/3

Claim under attack (assumed true only to destroy it)

The worst-regime machinery takes the WORST verdict over regime-types. The claim: it cannot manufacture severity from arbitrary partitioning — under a permutation of the REAL regime labels (KB §6: "regime-label-shuffle: permute labels → regime verdicts collapse to pooled"), no candidate's worst-regime verdict mints a BAN the unpartitioned pool doesn't support, nor a certified PASS the pool contradicts.

Attack construction

ATTACK RESULT — a random partition minted a BAN

Draw 1: price_impact shuffled worst-regime = BAN while the pooled verdict is WATCH (pooled ρ sits AT the frozen 0.95 line).

Mechanism: the worst-of rollup is a max-statistic — with the truth at a knife edge, random partitions flip around the line and the max cherry-picks the upward excursion (KB §4's "naive worst-group overweights small/noisy groups"). The iter-6 replicate-and-agree gate cannot help: this is partition noise, not seed noise — the minted BAN was replicate-stable.

DEFENSE — iterated honestly, twice

VersionConstructionOutcome
v1contiguous positional sub-slices (k∈{2,3,4}) of the pooled rows must all clear the BAN lineQuarantined the minted BAN — but broke the iter-8 order-invariance regression (positional slices change membership under within-symbol reordering). The campaign's own regression suite caught the collision between its own defenses.
v2 (landed)leave-one-symbol-out jackknife: a pooled BAN stands only if the max-over-panel |ρ| stays above the frozen line after deleting each symbol segment — segments are sets, so within-symbol order is irrelevantAll checks green (below)
+ rho_ban_subslice_stable(cj, Pp, ban_hi, segments)   # leave-one-symbol-out jackknife
+ evaluate_pooled: BAN → guard → unstable ⇒ WATCH (ban_degraded_unstable flag)

Proof the defense closes the gap — with perfect discrimination

CheckResult
A11 same attack re-run (3 shuffle draws)SURVIVES — the minted BAN degrades to WATCH in every draw
The REAL-label regime BAN for price_impactSURVIVES the guard — stable under every symbol deletion: a genuine regime finding, kept while the noise finding is killed
True-duplicate BANs (ofi, agg_record_count ρ≈0.999)Untouched in all draws and orderings
iter-8 order-invariance regression (exercises the modified evaluate_pooled)PASS again (v1 failed it; v2 passes)
§B declaration self-testPASS

Evidence

FileWhat
a11_label_shuffle_attack.py / a11_results.jsonThe null-control attack + final (post-v2) results.
a11_stderr.log · a11_stderr_postfix.log · a11_stderr_postfix2.logPre-fix (1 breach: minted BAN), guard-v1, and guard-v2 runs under the 2 CPU / 2 GB scope.
regression_tests/test_a11_label_shuffle.shPermanent regression test — re-runs the null, asserts SURVIVES.

Consequence

The 9th real defect: worst-of selection noise at frozen knife edges — invisible to every earlier attack because it lives in the AGGREGATION, not the estimator. The defense collision (v1 vs the iter-8 invariant) is the campaign working as designed: regression tests from earlier iterations police the defenses of later ones. Clean rounds: 0 of 3.

iter 11 · regime-label-shuffle null · verdict BREAKS → DEFENDED ×2 → CLOSED · one atomic commit: iter 11: regime-label-shuffle null — BREAKS→DEFENDED · append-only.