β€ΊNavigation

Iteration 02 Β· 2026-06-09 Β· driver: native Claude Code /loop (laptop run)

Feature #1 β€” anderson_darling_a2 (PR #91)

← Dashboard Β· PR terrylica/mql5#91 Β· card 110 Β· stacked on bootstrap #90

Done. The first ΞΎ-confirmed candidate is a REAL continuous-float production column on fxview_cache.forex_bars β€” bit-exact Rust verified against a pinned Python SSoT, populated through the wired producer, with batch≑streaming parity and an independent FOSS corroboration. PR #91 open (base main; diff auto-cleans once #90 lands).

What it computes

RAW Anderson-Darling AΒ² of the de-gapped 200-bar strictly-trailing close-logret window vs a fitted Gaussian (sample mean + std ddof=1). Causal β€” excludes the current bar's own return. None on warm-up (<200 bars) / <8 finite returns / degenerate window. (Card 110's "intra-bar per-tick" prose is superseded by the campaign's bar-close decision β€” uses inter-bar close log-returns, which forex_bars persists.)

The chain β€” one SSoT, bit-exact to the column

LayerArtifactResult
Python SSoToracle_anderson_darling_a2.py (bit-faithful to the discovery probe k_anderson)sha-pinned jsonl artifact
Rust kernelorthogonal_extension_kernels/anderson_darling_a2.rs (scipy ndtr+log_ndtr via libm; NaN/Inf-total; causal)clippy clean
Differential parityvs pinned oracle on the frozen fixture11200 == oracle, max|dev| 4.5e-13 β‰ͺ 1e-9
Producer columnBarOrthogonalExtV1 + BarRow + schema.sql Nullable(Float64) + feature_metadata.yamltest_schema_contract 4/4
Producer populateAndersonDarlingA2RollingState (read-before-push 200-logret ring; gap-NULL; persists across gaps) @ finalizeβ€”
batch≑streamingstreaming observe() over the fixture per partition11200 == oracle, max|dev| 4.5e-13
3-way FOSSscipy vs statsmodelsPASS (11128 windows)

3-way FOSS finding (it earned its keep)

scipy (ddof=1, SSoT) and statsmodels (ddof=0 MLE) use the identical AΒ² formula (source-verified) and agree to ~2.3e-3 β€” the difference is ddof convention only (≀5e-3 bound still catches a formula/binning bug). statsmodels underflows to +inf in 72 deep-tail windows (|std-residual| up to ~10.4) where scipy/Rust (log_ndtr) stay finite β€” positive evidence of the kernel's tail robustness.

Challenge-and-Held (inline; sub-agent dispatch skipped per the tick-3 signal)

Gates / scope

Next

Feature #2 β€” edge_spread_bps (card 52, bidask.edge SSoT, Ξ΅ 1e-9). Same chain: oracle β†’ bit-exact kernel β†’ producer column (now that BarOrthogonalExtV1 exists, no carve-out needed) β†’ parity β†’ 3-way FOSS β†’ PR.

Presentation only β€” never the SSoT.