Navigation
Closing reconciliation · DONE

Asked to implement the 4 features passing both worst-cell gates and stop at open pull requests. Three shipped as a stacked chain; the fourth never started, held for a formula-convention ruling that a later sweep has since made moot.

What it measured
QuantityValueMeaning
Features shipped3 of 4 declaredcard 50 sits at 0 of 16 stages
Stages per shipped feature16 of 16 on all three
Oracle residuals~1e-13, 0.0 bit-exact, ~1e-15gate is 1e-9
Promotion marginsworst-cell max rho 0.704-0.738; xi_worst 0.078-0.175gates rho<0.85, xi<0.50
Column-count tripwires86 -> 91manifest-SSoT wiring
How it ran
FiringWhat it did
01-05Card 78 Hoeffding phi-squared: oracle, kernel, wiring, certified, PR opened
06-09Card 59: a helper's premise corrected — it is first-passage and builds no graph — then PR opened
10-13Card 60 renamed for accuracy, PR opened; the loop declares its terminal phase
handoffCard 50 recorded as blocked on window-mean ratification
-No iteration 14; card 50 never started
What it produced
Carries forward

Formally, Terry's ratification that card 50's production formula is the window-mean of the per-bar Rogers-Satchell scalar. In substance that question is dead: the same kernel was later scored BAN by both probes in the 2026-07-22 registry sweep — h_norm near zero, degenerate on parts of the crypto substrate. Ratifying a convention for a banned candidate buys nothing, so what is left is a one-line ledger withdrawal.

Why this status

Three of four features shipped and merged; the fourth's gating ruling was overtaken by a BAN verdict from a different campaign, so no implementable work remains inside this scope.

'BLOCKING — card 50 (rogers_satchell_var_bar) awaits YOUR ruling.' (index.html handoff banner) — overtaken by the 2026-07-22 sweep's BAN.

Lifecycle status is process state, not a judgement of the findings. Results are stated as numbers with their uncertainty.

DashboardCrypto candidates › Bar Orth Batch6 Implementation

🛠 IMPLEMENTATION · autonomous loop · P5_DONE · hardened vs #544/#556

Crypto Orthogonal Bar Features — Implementation Journal (batch 6: 3 shipped · 1 gated)

🌅 MORNING HANDOFF — LOOP COMPLETE (P5_DONE, 2026-07-02)

3 of 4 shipped as a stacked PR chain: #568 card 78 hoeffding Φ²#569 card 59 hvg horizon#570 card 60 vgclust meangap. Each: 16/16 stages, ≤1e-9 oracle, 0-conceded adversarial challenge, check-full green.

⛔ BLOCKING — card 50 (rogers_satchell_var_bar) awaits YOUR ruling: ratify that the production formula is the window-MEAN of the per-bar Rogers-Satchell scalar (eval verdict.md C3). Then set gates.window_mean_ratified=true in LOOP_LEDGER.json and re-launch the loop — it resumes at card 50 automatically.

Operator tail: merge #568 → rebase+merge #569 → rebase+merge #570 → deploy → sidecar restart (zero-overlap playbook) → backfill → population audit (3 new columns). Full decision list: LOOP_LEDGER.json → morning_handoff; journal: iterations 01–13.

The autonomous loop that turned the batch-6 orthogonality-proven research formulas (re-scoped 8 → 4 by the ξ §B gate, PR #564) into production ClickHouse columns — 3 shipped as stacked PRs #568 ← #569 ← #570, 1 gated on an operator ruling — each proved bit-exact (≤1e-9), wired from a single manifest source of truth, and persistence-proven by a hermetic round-trip before the PR is opened. This batch is explicitly hardened so the batch-5 #556 silent-NULL incident cannot recur.

PHASE · P5_DONE (13 iterations) gate · worst-regime / worst-cell ∩ ξ §B 3 shipped · PRs #568 ← #569 ← #570 1 gated · card 50 awaits window-mean ruling loop stopped at the PRs (contract)

Read this first — what this loop is doing

The loop's job is to implement everything end-to-end, test it, and hand off the PRs. It never merges, deploys, or backfills. Review · merge · deploy · sidecar restart · backfill · live population audit are operator steps, performed by a human after the loop stops. See the amber lane in the flow below.
Delivery mode — one PR per feature, stacked. Batch-6 ships four PRs, one per feature, stacked in dependency order (each branches off the previous, not off main) — not one batch PR. Small blast radius, trivial per-feature revert, and a per-feature persistence gate that counters #556. Cost: every feature edits the same SSoT files and bumps the column-count tripwire, so the stack rebases linearly as earlier PRs merge (they queue, they don't fan out). Order: 78 (clean) → 59 → 60 (visibility-graph) → 50 (after the reduction ruling).
Re-scoped 2026-07-02 (8 → 4). PR #564 declared the Chatterjee ξ §B worst-cell bands (PASS xi_worst<0.50 · WATCH residual · BAN >0.95 ∧ breadth ≥ 0.80) and banned the median rule as a promotion axis. Loop scope is now the intersection of the two declared worst-cell gates: cards 78 · 59 · 60 · 50 (ξ 0.078–0.312, all PASS). Cards 58 · 45 · 108 · 107 are ξ-WATCH held (0.609–0.771) — document + re-probe + operator ruling before scheduling. Audit: PR #563.

The candidates were promoted by two declared worst-cell gates: Spearman CH_FEATURE_BANLIST bands (PASS max|ρ|<0.85 · WATCH 0.85–0.95 · BAN ≥0.95) and Chatterjee ξ §B (PR #564) — never the median rule (banned). Full evidence: WORST_REGIME_CELL_ANALYSIS.md · live status: verdict.md · full playbook: IMPLEMENTATION_PLAYBOOK.md.

How each feature is implemented — the hardened flow

Green = loop-owned (autonomous) · amber = operator-owned (outside the loop) · rose = incident-prevention guard · ★ cyan = the #556 persistence gate.

Batch-6 hardened implementation flow: P0 bootstrap with ordering guard, P1 16-stage per-feature pipeline with I2–I4 oracle guards and the ★ hermetic persistence round-trip that prevents #556, loop stops at PR, then the operator lane (review, merge, deploy, sidecar restart, backfill, population audit, live).

The 16 per-feature stages (inside P1)

GroupStagesWhat it proves
Prove the mathsoracle · xcheckClean-room Rust == trusted reference bit-exactly (≤1e-9), cross-checked by 3 independent legs. Guards: FixedPoint quantize (drift==0 fail-closed), FOSS/closed-form cross-val, IEEE-stable substrate.
Build the kernelkernel · wire · causality · determinismFast Rust kernel wired into every write surface from feature_manifest.toml (no hand-lists); reads past bars only; threaded == serial.
Store itschema · contract · manifestClickHouse column + comment; 4-file lockstep contract; catalogue registration.
Verify itparity · robust · ★ persistence round-trip + SSoT completenesscompute == stream == persisted-read-back; degenerate/oversized/scale witnesses; hermetic serialize→write→read-back proves the 8 columns are non-NULL and bit-equal — with no deploy.
Ship itadr · mise · check-full · challenge · commitDecision record, slash-commands, full gate (fmt+lint+test+deny), per-feature Attacker/Defender challenge, then commit — the loop halts at the open PR.

Incident guardrails baked into this batch

IncidentRoot causeGuard in this loop
#544 / #556 silent-NULL persistencecompute updated but the ~5 write surfaces each carried a hand-list of only the 4 old columns → 8 new columns serialized as NULL, 0% populatedWire every surface from the manifest SSoT; hermetic persistence round-trip + manifest-completeness test before the PR
I1 order split-brainimplementation_order diverged from the ledgerOrder derived from the manifest, not a parallel list; a stateless fire re-derives "next"
I2 rank-fliplibm ≠ glibc ln flipped ranks (Bartels 6.98e-4 > 1e-9)Rank the IEEE-exact gross-return ratio, not ln
I3 quantizationround-half-away vs half-even at the FixedPoint boundaryOracle pre-quantizes via the production FixedPoint path; drift==0 fail-closed
I4 bad oraclenumpy np.float64() repr bug in a generatorFOSS/closed-form cross-validation baked into the generator, fail-closed

The features — final status (3 shipped · 1 gated · 4 ξ-WATCH held)

All clean-room Rust in bar_close_features.rs; per-feature gen_*_oracle.py; ≤1e-9; no runtime FOSS dependency (libraries are dev-only oracle generators). Final bar_* column names assigned by feature_manifest.toml.

"bar_close" has two senses. The family (group="bar_close") is all batch-6 features — that governs wiring/persistence. The Substrate column is what each formula actually consumes: only 59/60 (and held 58) are close-substrate; the rest are signs / ohlc_bar / ret_dur. The A/B/C delivery group is a third axis (shared blocker for PR sequencing) and crosses substrates.

CardCandidateSubstrateworst-cell max|ρ|ξ worst-cellGroup / notesStatus
78bar_hoeffding_phi_squared_midreturn_durationret_dur0.7380.078A · stack base · first TWO-substrate kernel (return-rank × duration-rank Φ²)16/16 · PR #568
59bar_hvg_forward_visibility_horizon_meanclose0.7040.175B · first-passage horizon (plan corrected: needs NO graph — the VG helper moved to card 60) · closed-form/property oracle16/16 · PR #569
60bar_vg_time_directed_clustering_meangapclose0.8440.171B · renamed _kld_meangap in the PR · carries the shared HVG helper · ts2vg dev-oracle leg16/16 · PR #570
50rogers_satchell_var_barohlc_bar0.8000.312C · TTR (dev-oracle) · NOT started — the loop stopped here per contract⛔ gated · awaits window-mean ruling
58hvg_mean_degree_excessclose0.7640.609B · ξ-WATCH vs close (bull_2021) · re-probe + ruling requiredheld · ξ-WATCH
45heikin_ashi_open_gap_signohlc_bar0.8050.659C · ξ-WATCH vs cox_stuart (current_2026) · re-probe + ruling requiredheld · ξ-WATCH
108sequitur_grammar_compression_ratio_logret_signsigns0.6900.710A · ξ-WATCH vs high (bull_2021, breadth 4/7) · re-probe + ruling requiredheld · ξ-WATCH
107etc_effort_to_compress_logret_signsigns0.7170.771A · ξ-WATCH vs high (bull_2021, breadth 6/7) · re-probe + ruling requiredheld · ξ-WATCH

Per-candidate test evidence (the shipped three)

Every claim below is enforced by a committed, hermetic test (no ClickHouse at test time) that fails the build if violated — file names + SHA pins are in each PR. "Oracle residual" = the largest observed |Rust − Python| across all 19,602 windows (9,801 per symbol, BTCUSDT + ETHUSDT), against the sacred ≤1e-9 ceiling.

Card 78 — bar_hoeffding_phi_squared_midreturn_duration · PR #568

GateEvidenceResult
≤1e-9 oracle (S1)19,602 windows vs SHA-locked CSVs (BTC 2ec3992d… / ETH 68676123…); new self-contained (close, duration_us) fixtures (26bfea6f…/1627ec31…), FixedPoint drift = 0GREEN · residual ~1e-13
Independent legs (S2)In-generator exact-integer closed form (≤1e-12, every window) + in-Rust naive O(m³) counting leg + 8-test kernel batteryGREEN
Causality / determinism / scale / crash (S5·S6·S11)Dedicated two-substrate lanes: truncation bit-parity, recompute bit-parity, dual-axis bit-exact pow-2 scale invariance, 12-case totality — both symbolsGREEN ×2 symbols
Persistence (#556 ★, S4·S8)All surfaces from feature_manifest.toml; tripwires 85→86 (Arrow) / 90→91 (CORE_COLUMNS + py mirror); schema-contract 4-source equality; 91-column dead-letter Parquet round-trip (Rust→polars)GREEN
Parity + restart (S10)batch ≡ streaming ≡ JSON-checkpoint-restart on real aggTrades, non-vacuous; pre-durations checkpoint self-heal (field deleted from real JSON) + oversized-window re-convergenceGREEN
check-full (S14) + challenge (S15)fmt+lint+test+deny green ×2; Attacker 2 MAJOR + 4 MINOR (stale compat counts; untested deploy-day restore path) — all fixed in-PR, Defender verified 6/60 conceded
Discovery findingFinite-m grid Φ² = 1.0000631 at m=199 under perfect monotone dependence (textbook [0,1] is asymptotic) — documented, not clampeddocumented

Journal: iter 01 · 02 · 03 · 04 · 05 · ADR 2026-07-02-bar-hoeffding-phi-squared-midreturn-duration.md · gates: /hoeffding:check-full

Card 59 — bar_hvg_forward_visibility_horizon_mean · PR #569

GateEvidenceResult
≤1e-9 oracle (S1)19,602 windows vs SHA-locked CSVs (BTC aff5c3a0… / ETH 54acf3c7…); committed close fixtures reused; comparisons + one division onlyBIT-EXACT · residual 0
Independent legs (S2)Dual-leg generator (naive scan vs monotonic stack, EXACT integer-list equality, every window) + in-Rust naive O(n²) leg bit-equal at n=5/23/61/200 + 4 exact anchors (increasing/constant → exactly 1.0, decreasing → NaN, hand-pinned [3,1,2,3] → 5/3)GREEN
Causality / determinism (S5·S6)The STANDARD 13-column walk drivers sweep the column over both symbols (close substrate — no dedicated lanes needed)GREEN ×2 symbols
Persistence (#556 ★)Tripwires 86→87 / 91→92; compat 66→67 & 13→14 bumped proactively (card-78 lesson); schema-contract; 92-column dead-letter round-trip; completeness 14==14==14GREEN
Parity + restart (S10)batch ≡ streaming ≡ checkpoint-restart with non-vacuity guardGREEN
check-full + challengeAttacker: 84,124-sequence exhaustive differential proof (stack ≡ naive, 0 mismatches) + full clean-room oracle recompute (0/19,602 bit mismatches); 6 MINOR findings; Defender REJECTED one fix as incomplete (+4 remnants, +the N5 vacuous-gate catch) — all worked, final 61/61 with the arrow lane0 conceded
Plan correctionCard 59's evaluated kernel is a first-passage scan — builds NO graph; the shared VG helper moved to card 60 where it is used (recorded in both ADRs)surfaced

Journal: iter 06 · 07 · 08 · 09 · ADR 2026-07-02-bar-hvg-forward-visibility-horizon-mean.md · gates: /hvghorizon:check-full

Card 60 — bar_vg_time_directed_clustering_meangap · PR #570

GateEvidenceResult
≤1e-9 oracle (S1)19,602 windows vs SHA-locked CSVs (BTC e70f3c69… / ETH e3e1ee77…); QUADRUPLE-leg generator: left-scan HVG primary · ts2vg edge-set EXACT equality on every window · naive O(n³) subset (21/symbol) · 1e-12 time-reversal anchor everywhereGREEN · residual ~1e-15
Traps caught fail-closed (S1)P1: a textbook monotonic-stack HVG admits phantom edges on equal-height runs ([2,1,1,2] class) — vetoed by the ts2vg leg (3 spurious edges, window 0); P2: the reversal sign-flip is exact only in ℝ (IEEE summation-order ULP) — anchors assert 1e-12, not bitsinstitutionalized as tests
Kernel battery (S2·S3)In-Rust naive O(n³) leg bit-equal ×4 sizes + the P1 tie battery + P2 reversal property + symmetric-sawtooth anchor (exactly 0.0) + monotone → NaN + pow-2 scale bit-invariance5/5
Persistence (#556 ★)Walk 13→14; tripwires 87→88 / 92→93; compat 67→68 & 14→15; manifest meta + every narrative count in the same pass; schema-contract; 93-column round-trip; completeness 15==15==15GREEN (62/62 battery)
check-full + challengeAttacker's 1 MAJOR was REAL: clippy-deny needless_range_loop in the new kernel under --all-targets --all-features — a lane the namespace gates never run; fixed + 4 MINOR worked; Defender verified all (bench lint rot proven pre-existing at HEAD)0 conceded
The rename_kld_meangap: a true D_KL needs an unpinned density estimator (forbidden); what was evaluated and ships is the signed mean-gaprecorded in ADR + manifest

Journal: iter 10 · 11 · 12 · 13 · ADR 2026-07-02-bar-vg-time-directed-clustering-meangap.md · gates: /vgclust:check-full

Iteration log (every loop firing)

#CardAdvancedPage
01780/16 → 1/16 · S1 oracle (new 2-col fixtures; dual-leg green 19,602/19,602)Hoeffding Φ² oracle grounded
02781/16 → 3/16 · kernel + ≤1e-9 gate GREEN; finite-m range discoveryRust kernel proven bit-exact
03783/16 → 4/16 · all #556 write surfaces; schema-contract flips greenWired into every write surface
04784/16 → 13/16 · causality/determinism/parity/robustness + ADR + namespaceCertified end-to-end
057813/16 → 16/16 DONE · challenge 0-conceded · PR #568Card 78 shipped
06590/16 → 1/16 · S1 oracle (fixtures reused; VG-helper plan correction surfaced)The "how long underwater?" ruler
07591/16 → 3/16 · BIT-EXACT gate (residual 0); standard walk 12→13Kernel matches to the last bit
08593/16 → 11/16 · wiring + certification in one pass (lessons compounding)Wired & certified in one pass
095911/16 → 16/16 DONE · defender-forced remnant sweep · PR #569Card 59 shipped
10600/16 → 1/16 · S1 oracle (quadruple-leg; P1+P2 traps sprung pre-Rust)The time-arrow detector begins
11601/16 → 3/16 · tie-safe kernel; ≤1e-9 gate GREEN; walk 13→14Both booby traps defused
12603/16 → 11/16 · wiring with all four accumulated lessons applied up frontCleanest wiring pass yet
136011/16 → 16/16 DONE · PR #570 · card-50 gate check → morning-handoff · P5_DONELoop ends per contract