Bruntwork · Eon Labs · bigblack · driver: native Claude Code /loop (20-min) · 2026-06-07
Implement the 14 ξ-confirmed parameterless-orthogonal forex candidates as REAL production feature columns in fxview_cache.forex_bars, by copying the engineering of the crypto bar_close #509 promotion — not the crypto. ONE PR per feature; every PR human-merged.
k_spectral_slope over the RAW "close" 200-bar trailing window: mean-center → one-sided real-DFT power → drop DC → OLS slope of log(P) vs log(f) over surviving positive-power bins ≥8; slope verbatim NOT negated) → Rust kernel (direct DFT std cos/sin mod-n twiddle + closed-form OLS; no new dep) → producer column → populate (200-bar close ring, no gap-null like sevcik) → batch≡streaming parity (11200 windows, max|dev| 4.641e-14 ≪ 1e-6) → 3-way FOSS (probe-form vs clean-room hand-DFT+hand-OLS vs scipy.fft.rfft+scipy.stats.linregress: 0 mismatches, 0 mask divergences, max|dev| 2.7e-14 / 1.4e-14 over 11200) → feature_metadata. Load-bearing finding: the probe's (P>0) mask drops numpy pocketfft exact-zero bins (even-n Nyquist) that a direct DFT leaves at ~1e-60 → one bin at log(P)≈−138 caused a 1.4-slope divergence; fixed with a relative numerical-zero floor P>ε²·max_P (machine-defined ε², NOT a tuned knob, NOT a frequency-band restriction → parameterless preserved), reproducing numpy's bin set on all 11200 windows. FOSS trap: card lists librosa poly_features but librosa fits magnitude-over-LINEAR-freq, NOT log-log PSD slope — scipy (FFT+linregress, BSD-3) is the correct discrete ref. check:all-gates green on macOS except (a) worktree git-hook-installed + (b) the STANDING foreign research-orthogonality substrate-skip (operator-follow-up; see handoff). §11 STOP reached: all 9 implementable PRs + bootstrap opened; 5 deferred NOT attempted. Bootstrap #90 + feature PRs await operator merge (order #90 → #91 → #92 → #93 → #94 → #95 → #96 → #97 → #98 → #99).feat/odb-ext/bootstrap, rebased onto 967a0d8 after hygiene PR #89 merged), awaiting review + squash-merge. Scaffold + the Challenge-and-Held F1/F2/F4a fixes applied. 8/8 SOTA-harness + 4/4 cohort anchor-pin tests pass; rust:check + rust-bash-line-ref-bounds green; test_schema_contract unaffected (no producer wire-format / schema.sql change by design). F3 caveat: the fail-loud anchors are macOS-verified but UNVERIFIED on Linux/bigblack pending the pre-existing signal_ring test-build breakage (out of campaign scope) — see the PR body + BOOTSTRAP_STATUS.md.
check:rust-bash-line-ref-bounds drift in fxview-stall-detector-watchdog (not this campaign) was fixed in standalone PR #89 and merged (origin/main → 967a0d8); the gate is green again.cargo test -p fxview-core fails with 40 errors across 6 #[cfg(target_os="linux")] signal_ring/shm test modules — a dropped use import (CanonicalSignalRingEntryTotalTwoCacheLines) + a missing constructor arg from the Wave-A/275/396 test-modularization refactors. Invisible on the macOS dev/CI platform; blocks mise run check:all-gates on bigblack, so NO PR (bootstrap or per-feature) can pass gates here until fixed. Minimal fix: add the missing use to the 3 Linux-gated test files + supply the producer_started_unix_microseconds: u64 arg. Owned by the SHM/signal-ring loop, not this campaign (the loop did not touch it — "never guess / never patch in-flight code it doesn't own").local_variation_lv, pietra_hoover_durations, spread_sign_reversal_rate — need per-quote intra-bar data not persisted; decide: intra-bar sidecar feature vs drop). 2 parameter-flagged (dhvg_indeg_outdeg_kld, mean_cosine_turning_angle — NOT parameterless-by-inspection per the 2026-06-09 audit: free knobs; operator pin-or-drop). Full per-feature rationale, decision menus + resurrection conditions: see the DEFERRAL REGISTER callout below · SSoT DEFERRALS.md (PR #100).findings/audits/2026-06-03-forex-parameterless-orthogonal-candidate-discovery/DEFERRALS.md (PR #100); each discovery candidate card now carries an Implementation disposition section and discovery KEEPERS.md carries the 14-keeper outcome table. This callout is a mirror, not the SSoT.
local_variation_lv (card 47) — needs the per-quote inter-arrival intervals τi; forex_bars persists only quote_count (=n) + duration_us (=Στi): the per-quote dispersion LV measures is irrecoverable from {n, Σd}. Operator: intra-bar sidecar re-route vs drop.pietra_hoover_durations (card 120) — the Pietra L1 deviation Σ|di−d̄| over per-quote durations cannot be reconstructed from {quote_count, duration_us, perbar_fx_quote_max_gap_us} = {n, Σd, max d}. Operator: intra-bar sidecar re-route vs drop.spread_sign_reversal_rate (card 111) — needs the ordered per-tick spread series st=askt−bidt; only per-bar spread moments are persisted, and the ordering is irrecoverable from any moment set. Operator: intra-bar sidecar re-route vs drop.dhvg_indeg_outdeg_kld (card 30) — unpinned port-level conventions = de-facto free knobs: KLD orientation (the card defines D(Pin‖Pout), Lacasa 2012 defines D(Pout‖Pin)), KL argument order, zero-bin smoothing/ε policy (KLD undefined where one distribution has P(k)=0). Operator: pin-or-drop — pin each knob in the Python-SSoT pinning table, then the feature re-qualifies for the standard per-feature PR pipeline.mean_cosine_turning_angle (card 17) — unpinned conventions: dt (real-µs close_time_us deltas vs uniform spacing), normalization (Re(mean resultant vector) vs modulus), all-flat disposition (+1 vs NULL), gap-break policy across the >8h weekend/Ouroboros reset; plus reference impl trajr is GPL-3 → clean-room mandatory. Operator: pin-or-drop.exactly_eleven_implementable_three_blocked) encodes the substrate axis only (11 implementable + 3 blocked); the 2026-06-09 parameterless axis explains 11→9.
sevcik_fd FOSS ref is neurokit2 not antropy; anderson_darling_a2 uses inter-bar close logret (not the card's per-tick prose). GPL clean-room mandatory: mean_cosine_turning_angle (trajr), mann_kendall_z (cran/Kendall).findings/audits/2026-06-07-…/HYGIENE_DEBT.md (on PR #90).
rust-bash-line-ref-bounds — 7 blank-line refs in fxview-stall-detector-watchdog (foreign Audit Class C). Deeper follow-up: fuller Class-C re-audit of remaining stale-but-non-blank refs — rust-enhancement loop (iter#129/#154/#155).signal_ring/shm Linux test-build break (41 errors, Phase-23.E, blocklist, latent since 2026-05-18). NOT fixed (blocklist; dodged on macOS). Follow-up: add the missing use + ctor arg to the 3 Linux-gated test files so the campaign's anchors run on bigblack (the F3 caveat).check:research-orthogonality-null-utils-tests — 33 of 34 (foreign env-drift). The 34th is a smoke test that SKIPs when /tmp/mql5-orthogonality-substrate/eurusd_5dbps_5k_fp_candidates.parquet is absent (env artifact, not in-repo, regenerable only with ClickHouse); the gate's MIN_TESTS=34 counts only passed → trips. Owned by the rust-enhancement loop (iter#59 gate); this campaign never touches scripts/research/. Per §10 = operator-follow-up; NOT weakened. Follow-up: count passed+skipped for the substrate-gated test, OR commit a tiny substrate fixture, OR pin the substrate path.| # | Feature | Card | Status | Tier | SSoT / note |
|---|---|---|---|---|---|
| — | PR #1 bootstrap | — | PR #90 OPEN | — | #90 · fixture + harness + cohort anchor + C&H F1/F2/F4a (598d1d8 + bf907d2) |
| 1 | anderson_darling_a2 | 110 | PR #91 OPEN | ε 1e-9 | scipy.stats.anderson (RAW, ddof=1) · parity max|dev| 4.5e-13 (11200 windows) + batch≡streaming + 3-way FOSS |
| 2 | dhvg_indeg_outdeg_kld | 30 | deferred · param-flagged | EXACT+ε | NOT parameterless (KLD orientation + arg + zero-bin ε) — pin-or-drop |
| 3 | edge_spread_bps | 52 | PR #92 OPEN | ε 1e-9 | bidask.edge · parity max|dev| 9.78e-11 (11200) + batch≡streaming + 3-way FOSS (edge vs edge_rolling 3.54e-14) |
| 4 | hvg_clustering | 54 | PR #93 OPEN | EXACT+ε | ts2vg HVG + networkx.average_clustering · parity max|dev| 9.99e-16 (11200) + batch≡streaming + 3-way FOSS (0 edge-set mismatches vs clean-room numpy HVG) |
| 5 | kendall_taub_ret_spread | 79 | PR #94 OPEN | EXACT+ε | scipy.kendalltau(variant='b') · integer-exact concordance counts · parity max|dev| 2.78e-17 (11200) + batch≡streaming + 3-way FOSS (0 mismatches / max|dev| 0.0 vs clean-room numpy tau-b) |
| 6 | local_variation_lv | 47 | substrate-blocked | ε | needs per-quote intervals (not persisted) |
| 7 | lziv_complexity_signs | 40 | PR #95 OPEN | EXACT+ε | antropy.lziv_complexity · EXACT integer LZ76 count · parity max|dev| 2.22e-16 (11200) + batch≡streaming + 3-way FOSS (0 mismatches / max|dev| 0.0 vs clean-room substring-LZ76) |
| 8 | mann_kendall_z | 20 | PR #96 OPEN | EXACT+ε | probe k_mann_kendall · integer-exact S, SIMPLE var (NO tie correction) · parity max|dev| 3.553e-15 (11200) + batch≡streaming + 3-way FOSS (0 S-mismatches vs clean-room + pymannkendall integer S; tie-pervasive substrate → no-tie-correction is load-bearing) |
| 9 | mean_cosine_turning_angle | 17 | deferred · param-flagged | ε 1e-9 | NOT parameterless (dt-convention + normalization + all-flat) — pin-or-drop · trajr GPL clean-room |
| 10 | pietra_hoover_durations | 120 | substrate-blocked | ε | needs per-quote durations (not persisted) |
| 11 | sevcik_fd | 10 | PR #97 OPEN | ε 1e-9 | probe k_sevcik · unit-square curve-length FD · parity max|dev| 6.661e-16 (11200) + batch≡streaming + 3-way FOSS (0 mismatches vs clean-room + neurokit2.fractal_sevcik; errata: antropy has NO Sevcik FD, real ref is neurokit2) |
| 12 | sign_two_state_entropy_rate | 83 | PR #98 OPEN | EXACT+ε | probe k_sign_entropy_rate · integer-exact 2×2 transition counts · 2-state Markov entropy rate H=−Σ statp·P·log2 P · parity max|dev| 1.110e-16 (11200) + batch≡streaming + 3-way FOSS (0 mismatches vs clean-room conditional-entropy + pyitlib H(X|X₋₁) ML; FOSS trap: card lists NPEET but NPEET is kNN-continuous — wrong tool; pyitlib is the discrete ref) |
| 13 | spectral_log_slope | 75 | PR #99 OPEN | ε ~1e-6 | probe k_spectral_slope · full-band log-spectral slope (1/f^α): mean-center → direct real DFT → drop DC → OLS log(P) vs log(f) · parity max|dev| 4.641e-14 (11200) + batch≡streaming + 3-way FOSS (0 mismatches vs clean-room hand-DFT + scipy.fft/linregress; P>0 mask reconciled by ε²·max_P numerical-zero floor; FOSS trap: card lists librosa but librosa fits magnitude-over-linear-freq — scipy is the correct log-log ref) |
| 14 | spread_sign_reversal_rate | 111 | substrate-blocked | EXACT+ε | needs per-quote spread seq (not persisted) |
Presentation layer only — never the SSoT. Repo SSoT: findings/audits/2026-06-07-forex-orthogonal-feature-implementation/ on branch feat/odb-ext/bootstrap (commit a61cc58).