Before letting the ξ probe touch a single candidate, this iteration hardened it against the SOTA literature and put it through a two-agent Attacker/Defender adversarial review (20 challenges). The conceded gaps were fixed; PR 1 (harness build) is open for review. The headline finding: the "universal absorber" from iter 1 was an overlapping-window artifact and collapsed under disjoint sampling.
hawkes_intensity_bar_last appeared to absorb ~14/16 candidates at ξ 0.83–0.95. The SOTA (Lin & Han 2022) says heavily-overlapping windows make every rolled feature near-identical row-to-row, spuriously inflating ξ. Switching to disjoint sampling (stride ≥ 200) dropped the max absorber to 0.47–0.55 and hawkes vanished from the top slot. Had we run the full battery on the v1 probe, we'd have wrongly dropped most of the slate. This is exactly why the mission mandates hardening before the run.Primary-source review (Chatterjee 2021; Lin & Han 2022/23/24; Shi-Drton-Han 2022; Dalitz 2024; Politis-Romano 1994; Holm 1979; Hill 1973). Real-data methods only — anything needing synthetic/surrogate data is forbidden here.
| concept | decision | why |
|---|---|---|
| Disjoint (stride ≥ window) sampling | APPLIED | kills overlapping-window ξ inflation — the #1 correctness win |
| Tie-aware general ξₙ + pairwise-NaN-drop | APPLIED | financial bars are tie-heavy; impute = synthetic = forbidden |
| Seeded permutation X-tie-break | APPLIED | unbiased (random within ties) AND replay-bit-exact |
| Independence p √(5n/2)·ξ→N(0,1) | APPLIED (support) | tie-frac-vetoed; anti-conservative under regime persistence → never gates |
| Holm step-down over 143 cols | APPLIED (support) | family gate stays effect-size + ≥2-symbol replication |
| Scale-free degeneracy = effective levels | APPLIED | quantile-bin perplexity + near-zero-magnitude prong; replaces range<1e-9 |
| Per-pair n floor + full ξ-vector audit | APPLIED | kills thin-pairing inflation; HOLD calls auditable |
| Lin–Han boosted ξ_{n,M} (higher power) | DEFERRED | changes null calibration; 0.50 cut is ~9σ above the n=149 null — no extra power needed |
| Politis–Romano subsampling CI (real-data) | DEFERRED | point-estimate gate is canon; survivors-only CI is a later add; bootstrap-w/-replacement is forbidden + proven inconsistent (Lin & Han 2024) |
| FOCI / CODEC (Azadkia–Chatterjee) | OUT | removed from the battery per operator directive |
An ATTACKER subagent raised 20 concrete challenges; conceded gaps were fixed; a DEFENDER subagent adjudicated each against the fixed code. 18 HELD / CONCEDED→FIXED, 1 fixed post-adjudication, 1 minor structural by design. Full per-challenge verdicts with line-level evidence are in the committed 2026-06-06-xi-harness-hardening-and-challenge-held.md (PR 1).
| # | sev | challenge | verdict |
|---|---|---|---|
| 1/20 | CRIT | aggregate ingested sibling-dir unhardened JSONs as good cells | FIXED schema HARD-HALT (verified: skipped 44, refused to emit) |
| 2 | MAJOR | resume-skip keyed on filename only → stale cells inherited | FIXED resume now checks schema, else recomputes |
| 4 | MAJOR | deterministic tie-break biases ξ on discrete columns | FIXED seeded permutation; self-test 0.990 / −0.282 |
| 6 | MAJOR | independence p anti-conservative under ties | FIXED tie-frac veto wired into p + Holm |
| 13 | MAJOR | thin pairwise-n inflates the top absorber | FIXED per-pair n≥80 floor for eligibility |
| 15 | MAJOR | HOLD adjudication not recoverable (only top absorber stored) | FIXED full ξ-vector + WATCH; shoelace↔log_return_bar_sum=0.431 |
| 3,5,10,11,14,19 | — | magnitude prong / tie-ceiling / self-substrate / Holm-family / gap-mask / point-substrate | HELD with code evidence |
| 8 | MINOR | replication biased toward liquid majors (thin slices) | by design made transparent via per_symbol_cells |
[xi-selftest] xi(x->x^2)=0.990 (>0.80) xi(x^2->x)=-0.282 (< fwd-0.15) xi(x->indep)=0.029 (<0.20) => PASS EURUSD_5_gold_rally n=149 prod=125 cands=16 maxXI(c->c)=0.36 maxXI_abs(prod->c)=0.48 (disjoint; hawkes gone) [aggregate-xi @ v1 dir] SKIPPED 44 non-xi_v2_hardened JSONs; HARD-HALT: refusing to emit a verdict. updown_cjs -> degenerate (magnitude prong, p50~3e-7); candle_shoelace_area -> NOT degenerate (range 1.13e-4 > 1e-4)
--mode aggregate-xi → adjudicate: ξ>0.50 median on ≥2 symbols ⇒ DROP/HOLD, else independent. Resolve candle_shoelace_area (its nearest absorber intra_max_drawdown hit 0.547 on EURUSD — watch ≥2-symbol replication) and updown_cjs (degenerate on majors; check XAU/XAG ξ-signal for a metals-only keep).implementation_ready:true for survivors in keepers.json → PR 2 (promote survivors) with its own Challenge-and-Held.Generated 2026-06-06 · iteration 2 · harness commit aaafdca · PR #86 (do not merge)