Verdict legend:
🟢 KEEP
🟡 RR-CAP-RESTRICTED
🟠 REFINE
🔴 QUARANTINE
⚪ INSUFFICIENT
⚫ NO FIRES YET
DETERMINISTIC CORE
▸ How a setup becomes a SIGNAL - pipeline ▸
L1Market ContextHard gate. Computes regime, session, volBucket, newsRisk, tradeWindow. Blocks all firing on disqualified context.
L2Setup GeneratorFor each setup: evaluate its conds (each contributes weight if true) -> sum to setupScore (0-100). 5 pillars modulate sensitivity.
L3Signal FilterPer-setup gates push addFail entries to gateReasons. Soft -> WAIT, hard -> block. State machine: WATCH -> ARMED -> SIGNAL.
L4Risk AdvisorPlan validity: entry reachable? RR meets floor? Stop placement defensible? preEntryState tracks freshness.
L5NarratorTrader-voice copy: WHY (which conds pushed it through), MEANING (what the market is doing), NEXT (what to watch).
-State DwellHysteresis. WATCH >=60s, ARMED >=90s, SIGNAL >=120s before transitions. Stops borderline-bar flicker.
-Cadence GateEV decision cached per (sym, setupId) until next 5m close. Stops every-tick reason recomputation.
G9RR-Inflation CapHard block on projectedRR > cap. NQ=2.5 - ES=4.0. Cures RR=4.5 inflation feeding EV inversion.
G9bRegime FitHARD BLOCK counter-trend in confirmed trending regime. SOFT WAIT if style ∉ regime.styles. Reads prod.dayRegime.
-Daily-Loss CBHalts all fires at -3R realized or 30 fires. Reads signalRegistry.
G10Session RouterDISABLED after OOS test rejected it. Whitelist/blacklist blocked profitable families on 840 historical.
->SIGNALFires to ev_calibration_log + bridge persistence. Trade lifecycle (entry / stop / target / outcome) begins.
▸ Pillars - the 5 confluence sources ▸
IBInitial Balance (first hour H/L). Range tightness, breakouts, fades, rejections.
DeltaCVD / order flow. Cumulative buy-sell imbalance, divergences, surges, absorption.
VWAPVolume-weighted average price. Side (above/below), bounce zones, σ extremes.
VPOCVolume Point of Control. Magnet, value-area boundaries, naked nodes, migration.
DOMDepth of market. Bid/ask imbalance, market-order tempo, absorption at price.
📖 Condition Glossary - 27 confluence checks
expand
▸ Global Gates - apply to every setup ▸
Gate 9 - RR-Inflation Cap (LIVE)
Hard block on projectedRR > symbol_cap. NQ=2.5 - ES=4.0. Diagnosed: 277-fire median RR=4.5 vs 840-historical median RR=1.5 (3x target inflation). Replay: ES ib-brk-L 13/13 preserved, 277 Δ=+0.597 R/trade. Config: window.RR_CAP_CONFIG.
Gate 9b - Regime Fit (LIVE)
Reads prod.dayRegime.{biasDir, styles, severity}. HARD BLOCK counter-trend setup in confirmed trending regime; SOFT WAIT if setup style ∉ regime.styles (synonyms reversion<->reversal, breakout<->continuation). Replay: 277 Δ=+0.209 R/trade. Config: window.REGIME_GATE_CONFIG.
Daily-Loss Circuit Breaker (LIVE)
Reads today's realized R from window.signalRegistry. Halts all fires at lossHaltR=-3.0R - maxFires=30. Optional winLockR (default off). Config: window.DAILY_RISK_GATE_CONFIG.
Gate 10 - Session Router (DISABLED)
Per-setup x context whitelist/blacklist derived from 277 in-sample trades. OOS test against 840 historical (Jan 2023-Sep 2025): BLOCKED mean R=+0.046 vs ALLOWED mean R=-0.023 - router rejected the profitable families. File preserved at engine-session-router.js, RULES.enabled=false.
Substrate-Write Fix (LIVE)
Pre-fix: 100% of records had orderFlowState, liquiditySweepState, divergenceWarning, absorptionRisk writing empty strings (wrong nested paths). Fixed at engine-pipeline.js:3055-3058.
North-Star Targets
(1) E[R]>0 at fire - (2) mean realized R >= +0.5R rolling 100 - (3) PF >= 1.5 - (4) regime stability - (5) time stability (3 rolling 4-wk windows) - (6) no-fire discipline (zero signals when E[R]<0).
▸ Setup Catalog - 19 families - 38 variants - L/S detail per card ▸