What happened in this iteration, in plain words: the lab's first real job was to end the forex blackout โ and it turned out the story was deeper than the casebook said. The known defect (the instrument searched for five crypto column names on a forex table) had in fact already been patched in a June re-runโฆ and forex still came back empty. This iteration found out why: two of the forex anchor columns are the same column under two names โ byte-for-byte identical across 701,424 rows. Feeding both twins into the invariance instrument makes its math degenerate, it threw an error for every single feature, and a silent catch-all turned all those errors into an innocent-looking empty page. We proved that failure on record (five probes, five identical crashes), removed the twin (plus one metadata column, per an existing precedent), made every skip and error loudly counted, and re-ran. Result: 163 of 167 forex features now get graded (it was zero), the crypto control is identical to the committed run on every comparable feature, and the whole thing took under a minute inside the resource cage. The scientific readout mirrors crypto: nothing on forex is regime-invariant either โ but now that's a measurement, not blindness.
Preflight (A0)
2026-07-03 09:18 UTC โ load1 4.03 / 32 cores (โค24) ยท no competing nasimubd jobs (transient 40 MB gh) ยท 20 GiB available, si/soโ0 ยท clickhouse-server active ยท sidecar active + /health healthy โ ALL PASS. Run: capped systemd-run 5c/5G scope, readonly=2 on every query, single-thread BLAS, 0.94 min wall, pre-authorized (directive 03b). Zero synthetic values (directive 03c) โ the null leg permutes real rows only.
The two-layer defect and how it died
LAYER 1 (known, committed casebook): v2 harness ACTIVE = 5 CRYPTO column names
โ 0 of 5 found on fxview โ every forex env silently skipped โ {}
STATUS: already patched in v3 (per-substrate ACTIVE_BY, 2026-06-12)
โฆ and yet v3's forex map was STILL {} โ nobody knew why. THIS iteration:
LAYER 2 (found + proven today): on fxview EURUSD@5,
duration_us โก intra_duration_us โ BYTE-IDENTICAL TWINS
(countIf(duration_us != intra_duration_us) = 0 over 701,424 rows;
stddev identical to the last digit in all 7 regime windows)
v3 anchors = [duration_us, intra_duration_us, max_gap_duration_us,
intra_intensity_qps][:4] โ twin included
โ ICP design matrix rank-deficient
โ causalicp: LinAlgError("Singular matrix") for EVERY feature
โ bare `except: return nan` swallowed every one โ silent {}
PROVEN ON RECORD (P1): 5 probe features, 5ร LinAlgError, zero other paths
THE FIX:
anchors(forex) = [duration_us, intra_intensity_qps, intra_burstiness]
DERIVED: centrality top5 โ twin โ metadata column (CRY_EXC precedent);
corr(duration_us, intra_intensity_qps) = โ0.165 โ healthily distinct
+ FAIL LOUD: every env-skip and every exception counted by class;
an empty result now prints its reasons โ this failure class cannot recur silently
THE RE-RUN (P2, capped read-only, 10 forex envs ร 2,000-row deterministic subsamples):
forex|EURUSD|5 ICP map: 163/167 features graded (was 0)
accounting: 50 constant-in-env skips + 4 features with <3 envs ยท anchor skips: 0
readout: 0/163 regime-invariant at ฮฑ=0.05 โ forex mirrors crypto's 0/92
Acceptance scorecard
Criterion (from the fix plan)
Result
Forex ICP map non-empty (~140 effective features expected)
โ 163/167 graded; every skip counted, nothing silent
โ 92/92 comparable features identical ยท +8 additive bar_* batch-6 columns that post-date the June run (graded 0.0, consistent)
Shuffled-environment null still collapses
Executed (real rows re-partitioned into pseudo-envs); real AND null both read set-size 0 for all features โ the inherited len(estimate) readout cannot distinguish "no subset accepted" from "many accepted, empty intersection". Known limitation on record; disambiguation = Frontier #2's per-environment k-of-N (which is exactly the next pinned item).
Technical record
Item
Value
Kind
REPAIR (re-grounding of admitted G3 on the forex substrate, Tier-A slice) โ LEDGER row 8
Harness
forex_icp_fix_rerun.py โ mirrors the v3 fetch verbatim (N_SUB=2000, intHash64 stride, FINAL on fxview), per-substrate anchors, fail-loud instrumentation; ran in ~/fwd_smoke_venv (the June campaign's own env)
Root-cause probes (read-only)
countIf(duration_us != intra_duration_us) = 0 over 701,424 eur_parity rows ยท stddev pairs identical in all 7 windows ยท corr(duration_us, intra_intensity_qps) = โ0.165
Anchor decision (ยง0 tag)
[duration_us, intra_intensity_qps, intra_burstiness] โ DERIVED (committed centrality top5 โ byte-identical twin โ metadata column per CRY_EXC precedent); recorded in FOREX-ICP-WIRING-DEFECT.md as its caveat required
Environments
forex: 8 regime windows + 2 sessions (incl. live_tail last-90d โ non-deterministic by design, noted) ยท crypto control: 10 historical windows
Expiry
re-ground after the next completed forex regime slice (interim rule ยง5.2)
Remaining slice
fix-plan step 6: full forex grid (19 symรthr) โ next bounded slice after Frontier #2 unless operator reorders
Compute / prod impact
0.94 min wall inside the 5c/5G scope ยท ~22 readonly=2 SELECTs (2,000-row subsamples) ยท zero writes outside audit folder + dashboard
โถ Next iteration
Iteration 7 = Frontier #2: per-environment ICP k-of-N (crypto) โ make FRAGILE vs CONDITIONAL measurable for the first time. In plain words: today the invariance instrument answers only "is this feature invariant in ALL regimes?" (answer so far: nothing is, on either market). The statuses need a finer question: "in HOW MANY of the N regimes does it hold?" โ a feature holding in 8 of 10 regimes is CONDITIONAL material; one holding in 2 of 10 is FRAGILE. This also dissolves the set-size-0 ambiguity that iteration 6 flagged: instead of one opaque zero, every feature gets a per-environment acceptance count. Technically: per-environment ICP acceptance counting over the same 10 crypto regime envs (capped read-only re-analysis + spike, pre-authorized), k-of-N per feature, FDR-aware summary; crypto first, forex after (its instrument now works). One bounded slice; checkpoint row if it runs long. Alternative next slices you can order instead: full forex grid extension (fix-plan step 6), or jump to F014 (Frontier #3).