# SESSION HANDOVER — SNIPERGOLD_ML P3-S.5: ORDER BLOCK SPEC + CONFORMANCE ```text Date : 2026-08-22 (session close) Status : P3-S.5 COMPLETE — spec + conformance audit done; synthetic tests 20/20; NOT yet committed (handover prepared before commit+push) Forge : https://forge.mql5.io/chiki2bum2/SniperGold_ML Checkpoint : P3-S.4 176880f8f3f17afb7e922a48ed953daa22c1515f (VERIFIED clean at start) ``` --- ## 1. SESSION OBJECTIVE ```text Formal Specification + Code-Conformance Audit for Order Block (OB). Question answered: Does the SniperGold code claiming to detect Order Blocks really implement the OB definition established by the PROJECT SEMANTIC SPECIFICATION? Questions NOT answered: - Does OB generate profit? - Does OB improve AUC / PF? - Is the universal SMC OB definition correct for every trader? ``` Principle: SPEC FIRST, CODE AUDIT SECOND. Human verification = CANCELLED. No production code changes (Phase D). No ML / AUC / PF / backtest optimization. --- ## 2. SOURCE MATERIAL (15 sources, reconciled) ```text 1 DESIGN.md (Algo Forge) docs/DESIGN.md:132-133,206 (intent: OB = "opposite bar before a strong move") 2 Engine 2 detector Include\AlgoForge\AF_Engine2_Agents.mqh:293-322 (AF_FindOrderBlock) 3 AF_AvgBody AF_Engine2_Agents.mqh:120-127 4 Engine 2 C agent AF_Engine2_Agents.mqh:492-575 (weight 0.30) 5 Engine 2 E agent AF_Engine2_Agents.mqh:583-663 (ZONE+CONFIRM) 6 Engine 3 display collector Include\AlgoForge\AF_Engine2_Display.mqh:199-250 (AF_CollectOBs) 7 AF_Defines.mqh AF_Defines.mqh:57,59,60 (OB 5/0.15 ATR/1.5) 8 Engine 3 render/indicator AF_Engine3_Render.mqh; AF_Engine3_Display.mq5 9 v4.3/v4.4 indicator Indicators\Downloads\SniperGold_SMC_ProPlus_v4_3/4_4.mq5 (LEGACY structure-break OB: ProcessStructure RecordOB, FindEntryOB, Sweep->CHoCH->OB) 10 v4.5 indicator SniperGold_SMC_ProPlus_v4_5.mq5 (chart OB identical; + MTF OB per-TF RecordOB_mtf) 11 FEATURE_CONTRACT docs/FEATURE_CONTRACT.md — NO OB feature 12 EA runtime Experts\AlgoForge_Backtest_Baseline.mq5 — NO OB 13 Python training ml/**/*.py — NO OB (0 refs) 14 P3 docs P3_2_2 / P3_2_LABEL_FORENSIC: "breaker" = FUTURE concept only 15 External SMC Order Block Detector.mq5 / XAUUSD_MTF_Liquidity_OB_Reversal (2).mq5: external references, NOT wired to the project Three semantic layers separated: INTENDED : OB = opposite bar before a strong move (DESIGN.md); C agent context zone; E agent entry zone (ZONE + CONFIRMATION = setup); display zones with MIT filter + dedupe + min size 0.15xATR. LEGACY : v4.3/v4.4/v4.5: OB = opposite candle BEFORE A STRUCTURE BREAK (BOS/CHoCH on swing len=50 / internal len=5); last or highest-volume opposite candle; full range; min 0.15xATR; close-through mitigation; internal + swing OBs; entry chain. CURRENT : Algo Forge: opposite bar before strong move (1.5 x avg body); zone = full range; Engine 2 = newest-only, NO min size, NO mitigation; display = newest N unmitigated, 0.15xATR min, close-through mit, 0.5xATR dedupe. TRAINING : N/A (no OB feature). DISPLAY-ONLY: Engine 3 / v4.4 / v4.5 MTF OB. ``` --- ## 3. SPECIFICATION (docs/SMC_ORDER_BLOCK_SPEC_v1.md) ```text FORMATION : canonical current = opposite-color candle B immediately before strong-move candle M (|body(M)| >= 1.5 x avg body, avg over the last 20 closed bars). LEGACY second definition = opposite candle before a STRUCTURE BREAK (BOS/CHoCH) — recorded as A-2. CANDLE : B = full opposite candle (Close vs Open); doji excluded; zone = FULL RANGE [Low(B), High(B)]. BOUNDARIES : top = High(B), bot = Low(B); no padding; min size none in the definition (0.15 ATR consumer filters, A-1). DIRECTION : +1 bullish (bearish B + bullish M), -1 bearish, 0 none; direction = move direction. PRECONDITION : NONE (canonical); BOS/CHoCH/displacement/liquidity NOT required. TIMING : observable at M close (B+1 <= t); newest pair (t-1, t); NO 1-bar lag; timestamp = B open; closed-bar lock; no future. LIFECYCLE : ZONE + FORMATION EVENT; one zone per pair; no event stream; no age expiry; one zone stays ONE zone (T09). MITIGATION : close-through full fill (Close < Low(B) bull / > High(B) bear); partial/wick NOT mitigation. INVALIDATION : NOT MODELED. OVERLAP : separate zones per pair; display dedupe 0.5 x ATR (A-3). BREAKER : NOT IMPLEMENTED (0 code matches; future concept only). TIMEFRAME : Engine 2 per-TF (H4/M30/M15/M3); canonical = AMBIGUOUS (A-4). CONSUMERS : C (context, w 0.30), E (entry zone), legacy entry gate (all-unmitigated within tap), display; NO ML feature. PARITY : PARITY = N/A BY ABSENCE (OB not in f0-f18 / EA / Python). ``` --- ## 4. CONFORMANCE (docs/P3_S5_ORDER_BLOCK_CONFORMANCE.md) ```text Formation (E-1, E-2, E-4, E-6, E-7) : CONFORMING (current definition) Zone boundaries (E-3) : CONFORMING (+ AMBIGUOUS A-1 min size) Structural precondition (E-5) : CONFORMING (current = none); legacy BOS/CHoCH rule = A-2 Lifecycle (E-8) : CONFORMING (zone; no event duplication) Mitigation (E-9) : NON-CONFORMING (Engine 2, BUG-P3S5-001) Invalidation (E-10) : CONFORMING (not modeled) Overlap (E-11) : PARTIALLY CONFORMING (A-3) Breaker (E-12) : NOT IMPLEMENTED (no claim) Timeframe (E-13) : SPECIFICATION AMBIGUOUS (A-4) Consumer semantics (E-14) : PARTIALLY CONFORMING (BUG-P3S5-001, A-5) Runtime/training parity (E-15) : CONFORMING (N/A by absence) VERDICT : PARTIALLY CONFORMING (conformance to the project spec; NOT profitability/edge) ``` --- ## 5. SYNTHETIC TESTS ```text Runner : ml/p3/smc_semantic/spec_tests_order_block.py Cases : ml/p3/smc_semantic/spec_test_cases_order_block.json (20 cases) Report : ml/p3/smc_semantic/output/spec_tests_order_block_report.json Result : 20/20 PASS OB-T01..T20 (all required). spec_oracle (truth, from SPEC S-1..S-15) == expected in all cases; symmetry property (S-4) asserted on EVERY case. code_port (Engine-2 AF_FindOrderBlock port, observation) MATCHES spec in T01-T05/T07-T10/T13-T15/T17-T19; DIVERGES in: T06/T11/T12/T16: spec newest-unmitigated = none (mitigated) vs code returns the zone -> synthetic evidence for BUG-P3S5-001. Expected derived from SPEC, NOT from production code. Parity scan (T20): FEATURE_CONTRACT.md = 0 order-block refs; ml/**/*.py = 0 (excluding the spec test files) -> PARITY = N/A BY ABSENCE. NO AUC/PF/backtest/human annotation/ML on the test path. ``` --- ## 6. CONFIRMED BUGS (document-only; NOT fixed in P3-S.5) ```text BUG-P3S5-001 [MEDIUM] CONFIRMED, NOT FIXED Engine-2 AF_FindOrderBlock (AF_Engine2_Agents.mqh:293-322) has NO mitigation filter and NO age/freshness bound: the Context (weight 0.30) and Entry (zone tap) agents can consume a FULLY-FILLED OB as a current zone, and the newest OB can be hundreds of bars old. It also returns ONLY the newest zone (older unmitigated OBs invisible), diverging from the legacy entry rule (FindEntryOB: all unmitigated within tap). Same bug class as BUG-P3S4-001 (FVG side). NOT the f7/f9/f18 duplication class — OB is a zone, not an event stream (verified OB-T09). Fix: apply the close-through mitigation filter (S-9) to AF_FindOrderBlock (or filter mitigated zones in the agents) and add a zone-age bound if freshness is required; document the zone-selection rule. BUG-P3S5-002 [LOW] DOCUMENTED Two OB definitions in one project: Algo Forge "opposite bar before strong move (1.5 x avg body)" vs legacy v4.3/v4.4/v4.5 "opposite candle before STRUCTURE BREAK (BOS/CHoCH)" (+ legacy volume-weighted mode InpVolumeOB/InpOBStyle). The two rules can select DIFFERENT candles for the same price sequence. Fix: document the current rule as canonical; mark the legacy rule as historical. BUG-P3S5-003 [INFO] DOCUMENTED Minimum zone size filters diverge: Engine-2 none / display 0.15 ATR / legacy 0.15 ATR (A-1). No canonical value; not optimized here. BUG-P3S5-004 [INFO] DOCUMENTED Display dedupe (0.5 x ATR) vs Engine-2 newest-only vs legacy keep-all (A-3): three zone-selection policies. Not adjudicated. ``` --- ## 7. SEMANTIC AMBIGUITIES ```text 1. Minimum zone size (A-1) : none / 0.15 ATR / 0.15 ATR; no canonical value. 2. Two OB definitions (A-2) : strong-move (current) vs structure-break (legacy). 3. Overlap / dedupe (A-3) : display 0.5 ATR dedupe vs keep-all. 4. Canonical timeframe (A-4) : Engine-2 M15 slot explicit; HTF OB as M15 context / M3 execution not defined (same class as CHoCH G-4 / sweep G-3 / FVG A-3). 5. Consumer zone scope (A-5) : Engine-2 newest-ANY (no mit/age) vs legacy all-unmitigated within tap. 6. Volume-weighted OB (A-6) : legacy-only (InpVolumeOB / OB_HIGHEST_VOLUME); current = last candle only. ``` --- ## 8. PREVIOUS BUG-CLASS CHECK (per brief §27) ```text The f7/CHoCH/FVG cross-layer pattern (detector correct -> zone/state correct -> consumer incorrect) was explicitly checked for OB: detector : AF_FindOrderBlock — correct for FORMATION (S-1..S-6) OK zone/state : zone list — correct (one zone per pair, no duplication) OK consumer : C/E agents consume the newest-ANY zone WITHOUT the mitigation filter that display/legacy apply FAIL -> The cross-layer gap EXISTS for OB (BUG-P3S5-001: mitigation/age not applied by the Engine-2 detector/consumers). It is the SAME class as BUG-P3S4-001 (FVG) — a mitigation-lifecycle gap, NOT the f7/f9/f18 stale-event duplication (proven: OB-T09 zone_count=1 after 19 bars). ``` --- ## 9. NO PRODUCTION CHANGE ```text No production code was modified. AF_FindOrderBlock / AF_CollectOBs / v4.3 / v4.4 / v4.5 / Engine 2 / Engine 3 / f7 / f8 / f9 / f10 / f11 / f18 / FVG / CHoCH / Displacement / ML / EA : NOT touched. Only P3-S.5 research artifacts added (spec, conformance, tests, report, handover). P3-S.4 / P3-S.3 / P3-S.2 artifacts (immutable) UNCHANGED (git status: only new files, 0 modified). ``` --- ## 10. HUMAN VERIFICATION STATUS ```text HUMAN VERIFICATION = CANCELLED Human annotation is NOT part of the OB validation path. The human_package/ remains a historical artifact only. ``` --- ## 11. NEXT GATE ```text After the Order Block verdict (PARTIALLY CONFORMING): Displacement -> MTF Alignment -> Candidate Setup. DO NOT return to ML; DO NOT build a meta-label; DO NOT create new event labels; DO NOT fix production bugs before the audit chain completes (BUG-P3S5-00x stay documented until the semantic audit chain is finished). ``` --- ## 12. CHECKPOINT & PROVENANCE (P3-S.5) ```text Forge HEAD (session start) : 176880f (P3-S.4) — VERIFIED P3-S.4 spec (immutable) : docs/SMC_FVG_SPEC_v1.md P3-S.3 spec (immutable) : docs/SMC_CHOCH_MSS_SPEC_v1.md P3-S.2 spec (immutable) : docs/SMC_LIQUIDITY_SWEEP_SPEC_v1.md FEATURE_CONTRACT : C44CC6F2... (P2-era) / 7b908b12... (committed) symbol/tf : XAUUSD / M15 (2017-01-01 .. 2026-08-20) Human verification : CANCELLED ``` --- ## 13. P3-S.5 ARTIFACTS ```text docs/SMC_ORDER_BLOCK_SPEC_v1.md docs/P3_S5_ORDER_BLOCK_CONFORMANCE.md ml/p3/smc_semantic/spec_tests_order_block.py ml/p3/smc_semantic/spec_test_cases_order_block.json ml/p3/smc_semantic/output/spec_tests_order_block_report.json docs/SESSION_HANDOVER_2026-08-22_P3_S5_ORDER_BLOCK.md (this document) ``` --- ## 14. COMMIT & PUSH STATUS ```text NOT YET COMMITTED at handover write time. Planned commit message: research: P3-S.5 Order Block formal spec + conformance audit (PARTIALLY CONFORMING) Follow with: git push origin main; verify rev-parse HEAD == ls-remote origin HEAD; working tree CLEAN. ```