iteration 12 · 2026-07-23 · P2 · laptop-drives-bigblack
The multiple-testing haircut: once you account for everything ever tried, how large a t-stat does a feature really need? All six §7 gates pass, robust across 5 seeds. This closes the realness axis (#2, #3, #6, #8, #9, #10 all grounded).
readonly=2. 5c/5G/no-swap capped, single-thread BLAS.| Gate (§7 row 10) | Result | Target | |
|---|---|---|---|
| Power | 1.00 (real look-ahead clears threshold) | ≥ .8 | PASS |
| M_eff recovery | 5.00 vs true 5 (rel-err 0.02%) | ±20% | PASS |
| HAC FWER (permutation) | 0.043 held-out | ≤ .05 | PASS |
| Naïve-OLS FWER | 0.82 (iid SE, no MTC) | ≥ .25 | PASS |
| Dup M_eff | 1.00 (feature + exact clone) | ∈ [1,1.2] | PASS |
| N_min(H) | detectable at all tested N ≥ 2000 | reported | PASS |
| Harden — no collapse-to-1 | collapse FWER 0.085 > frozen 0.043 & > .05 | inflates | PASS |
Seed-robustness: 5 seeds all GROUNDED 6/6 — permutation FWER ∈ [.030,.048], naïve ∈ [.79,1.00], collapse ∈ [.085,.182], M_eff-recovery 5.00, dup 1.00, power 1.0.
The §7 analytic rule |t| ≥ max(t*(M_eff), 3.0) assumes the null t-stat is a standard normal. Attacking that assumption: on real autocorrelated data the HAC-t null has heavier tails, so the fixed analytic threshold (3.13) under-controls FWER — 0.058 → 0.075 → 0.083 → 0.060 → 0.130 across the five seeds (one seed blew past α by 2.6×).
The fix, and the operating threshold, is permutation-calibrated (empirical null max-|t|, real values only): it controls FWER by construction whatever the tail, and it adapts — the threshold rises 3.19 → 3.58 exactly on the heavy-tail seed where the fixed analytic threshold fails. Same permutation-refinement pattern as #3 (HAC) and #8 (permutation SR0).