# SESSION HANDOVER — SNIPERGOLD_ML P3-S.8: CANDIDATE SETUP SPEC + CONFORMANCE ```text Date : 2026-08-22 (session close) Status : P3-S.8 COMPLETE — spec + conformance done; synthetic tests 25/25; NOT yet committed (handover prepared before commit+push) Forge : https://forge.mql5.io/chiki2bum2/SniperGold_ML Checkpoint : P3-S.6 533c8c6647a552d01a1a290cb2d0505f94887666 (VERIFIED clean at start; P3-S.7 artifacts intact, uncommitted) ``` --- ## 1. SESSION OBJECTIVE ```text Formal Specification + Code-Conformance Audit for Candidate Setup. Question answered: What exact combination of market conditions should constitute ONE Candidate Setup in SniperGold, and does the current implementation actually create Candidate Setups according to that definition? Answer (VERDICT): SPECIFICATION AMBIGUOUS (with NON-CONFORMING components) The repository contains TWO formal Candidate Setup definitions: A (current Engine 2, canonical per P3-S.7): the E-agent M15 fuzzy rule "ZONE + CONFIRMATION" — min(zone, max(sweep, choch)) * weight 0.30, same-bar, OR legs, no gates, no identity, no lifecycle, no expiry. B (legacy v4.3/v4.4/v4.5): hard-gated chain HTF-align -> sweep -> CHoCH (after sweep) -> OB/FVG tap -> not-premium -> score>=threshold, all within SeqWindow=40. The current implementation does NOT create Candidate Setups as distinct entities: it creates per-bar vote states; the E-rule is a fuzzy weight contribution that is invisible downstream (E-vote saturation); the dashboard "TRADE SETUP" panel shows the aggregated signal, not a setup. STATE / EVENT / ZONE / CONFIRMATION / CANDIDATE SETUP / ENTRY / TRADE are kept distinct in the spec (CS-1..CS-32) — the implementation collapses SETUP into a vote contribution and the SIGNAL into the "setup" name. Questions NOT answered: profitability / AUC / PF (semantic audit only). Human verification = CANCELLED. No production code changes. No ML / repair. ``` --- ## 2. SOURCE RECONCILIATION (15 sources) ```text 1 DESIGN.md §9/§14 : E-agent "ZONE + CONFIRMATION = setup"; dashboard 2 AF_Defines.mqh:47-50 : H4/M30/M15/M3 agent TF macros 3 AF_Engine2_Agents.mqh:583-663 : AFAgentEntry::Compute — the ONLY "setup" code 4 AF_Engine2_Aggregator.mqh:77-170 : flat 2-pass weighted vote 5 AF_Engine2_Display.mqh : AF_BuildDisplayData (display context) 6 AF_Engine3_Render.mqh:272-278 : "TRADE SETUP" panel = aggregated signal 7 AF_Engine3_Display.mq5 : indicator driver 8 AlgoForge_Backtest_Baseline.mq5 : ML runtime (19 features; NO Engine 2) 9 FEATURE_CONTRACT.md : f7-f18 per-bar features; no setup unit 10 v4.3/v4.4/v4.5 legacy : SETUP SEQUENCE (institutional gate) — Def. B 11 P3-S.0 f7 lifecycle doc : SeqWindow=40 = f7 event validity/expiry 12 P3-S.2..S.7 specs : canonical per-concept statements 13 P3.1c candidate_setup_audit.py : diagnostic strata (f9&f7 etc.), median gap 1 bar 14 P3.2 label forensics : setup-unit vs event-unit analysis 15 DESAIN_MTF_v45.md : legacy MTF design (v4.5) Layers: INTENDED : E-agent rule (A); legacy chain (B) as reference LEGACY : v4.x hard-gated chain, SeqWindow=40 CURRENT : Engine 2 flat vote + E-rule fuzzy contribution; no entity TRAINING : per-bar features; diagnostic strata only; no setup unit DISPLAY : "TRADE SETUP" = final signal + levels ``` --- ## 3. SPECIFICATION (docs/SMC_CANDIDATE_SETUP_SPEC_v1.md) ```text CS-1 Setup (A) = E-agent M15 rule: ZONE(OB/FVG membership) AND CONFIRMATION(max(sweep,choch)) at the same closed bar -> fuzzy vote contribution (wSetup=0.30 normalized). NO entity/identity/onset. CS-2 Setup (B, legacy) = hard-gated chain (HTF-align -> sweep -> CHoCH -> OB/FVG tap -> not-premium -> score>=threshold), SeqWindow=40. CS-3 Canonical for this audit = Definition A (current Engine 2). CS-4/5 Causal order: A = same-bar only; B = ordered chain within 40 bars. CS-7/8 Onset: A = NOT DEFINED; B = entry-tap bar. CS-9/10 Completion: A = NOT DEFINED; B = gates + score threshold -> signal. CS-11 Direction (A): E-rule side = setup side; final = flat vote; arithmetic conflict resolution (no policy; S-X). CS-13..16 MTF roles: H4/M30/M3 alone -> NO setup; M15 alone -> YES in A. CS-17 Hierarchy: A = no cross-TF requirement; B = HTF gate required. CS-18 Alternative paths (A): {sweep|choch} x {OB|FVG} same-bar (P1..P4). CS-20/21 Hard requirements: A = zone>0 AND conf>0; B = full gate chain. CS-22 Score != setup (SETUP-CONSTRUCTION DRIFT D-9). CS-23 Dedup: NONE in A; no setup_id (SETUP-IDENTITY GAP D-10). CS-26/27 Lifecycle: A = NONE; B = freshness window only. CS-28 SeqWindow=40 scope: f7 expiry (ML) + legacy gates; NOT Engine 2. CS-30 Causality: closed-bar lock; as-of <= t; future mutation cannot change past decisions. CS-31 Setup vs trade: execution semantics excluded from setup validity. CS-32 State vs setup: only the E-rule conjunction constitutes a setup. ``` --- ## 4. CONFORMANCE (docs/P3_S8_CANDIDATE_SETUP_CONFORMANCE.md) ```text Setup definition : SPECIFICATION AMBIGUOUS (A vs B; D-8) Required components : PARTIALLY CONFORMING Causal sequence : PARTIALLY CONFORMING H4 role : CONFORMING (to A: context + vote, no gate) M30 role : CONFORMING (to A) M15 role : CONFORMING (to A: the setup layer) M3 role : CONFORMING (to A: not required) Hard requirements : CONFORMING (to A: zone>0 AND conf>0 same-bar) Score/confluence : NON-CONFORMING (D-9 SETUP-CONSTRUCTION DRIFT) Setup onset : SPECIFICATION AMBIGUOUS Setup completion : SPECIFICATION AMBIGUOUS Deduplication : NON-CONFORMING (D-10 SETUP-IDENTITY GAP) Lifecycle : SPECIFICATION AMBIGUOUS Expiration : PARTIALLY CONFORMING (f7 40-bar OK; Engine 2 none) Closed-bar causality : CONFORMING Consumer behavior : PARTIALLY CONFORMING (no setup identity downstream) Runtime/training : CONFORMING (N/A BY ABSENCE — no setup layer in either) Cross-primitive : NON-CONFORMING (X-6..X-10) VERDICT : SPECIFICATION AMBIGUOUS (with NON-CONFORMING components) ``` --- ## 5. SYNTHETIC TESTS — 25/25 PASS ```text spec_tests_candidate_setup.py + spec_test_cases_candidate_setup.json + output/spec_tests_candidate_setup_report.json CS-T01..T25 all pass; code_port == spec in ALL cases (Definition A IS the implementation; the differential evidence is structural): source_facts: e_agent_setup_rule_is_fuzzy_contribution=True setup_entity_exists=False setup_id_field=False dedup_exists=False expiry_window_in_engine2=False invalidation_exists=False hard_gates_in_engine2=False legacy_gate_chain_exists=True seqwindow_governs_f7=True aggregator_flat_vote=True display_trade_setup_is_signal=True engine1_closed_bar_lock=True Key results: CS-T04 zone missing -> NO setup, yet E vote saturates bullish (D-11) CS-T05 E neutral -> BUY without any setup (signal != setup) CS-T09 H4 bull / M30 bear exact tie -> WAIT (arithmetic) CS-T10 E,P bear vs N,C bull -> BUY (arithmetic, no veto) CS-T11 H4-only BUY = signal CONFORMING; no setup exists CS-T12 M15-only with rule fired -> this IS a setup per A + BUY CS-T13 same conditions 5 bars -> fires every bar (no dedup) CS-T14 age 50 -> Engine 2 still fires; f7 expired (SPEC AMBIGUOUS) CS-T17 future mutation -> decision stable (closed-bar lock) CS-T18/19 SeqWindow boundary: 40 valid (inclusive), 41 expired CS-T21 high score (0.8) without setup -> SETUP-CONSTRUCTION DRIFT CS-T22 setup fired + score below threshold -> WAIT (threshold gates signal) CS-T23 H4 bull + FVG active + CHoCH earlier + M3 bull -> setup predicate TRUE per A; not an entity (state vs setup kept distinct) CS-T24 H4-only BUY: signal CONFORMING / setup N/A CS-T25 flat vote confirmed; HIERARCHICAL-TO-VOTING DRIFT recorded (D-1) ``` --- ## 6. CONFIRMED FINDINGS (document-only) ```text D-8 SETUP-SEMANTIC DIVERGENCE [HIGH] — two setup definitions (A fuzzy rule vs B legacy gate chain); not adjudicated (A-9). D-9 SETUP-CONSTRUCTION DRIFT [HIGH] — BUY/SELL can fire with no setup; dashboard "TRADE SETUP" = aggregated signal (BUG-P3S8-001). D-10 SETUP-IDENTITY GAP [HIGH] — no setup_id/onset/zone-link; per-bar repeated emission; no dedup (BUG-P3S8-002/-003). D-11 E-VOTE SATURATION MASKS SETUP ABSENCE [MEDIUM] — E bias +/-1.0 with or without the setup leg (BUG-P3S8-002). D-12 SEQUENCE FRESHNESS ABSENT IN ENGINE 2 [MEDIUM] — no SeqWindow for Engine 2; CHoCH state never expires (BUG-P3S8-004). D-13 CONFLICT POLICY ABSENT AT SETUP LEVEL [MEDIUM] — arithmetic vs legacy gate-fail; carried from P3-S.7 D-2. D-14 LEGACY GATE CHAIN NOT PORTED TO ENGINE 2 [INFORMATIONAL]. ``` --- ## 7. AMBIGUITIES ```text A-5 Setup onset (A not defined) A-6 Setup completion (A not defined) A-7 Setup lifecycle (A not defined) A-8 Cross-bar causal order (A none) A-9 Canonical definition (A vs B) A-10 Setup identity (needed or not) ``` --- ## 8. NO PRODUCTION CHANGE Only P3-S.8 artifacts added; 0 production files modified (verified: AF_Engine1_MTFData / AF_Engine2_Agents / AF_Engine2_Aggregator / AF_Engine2_Display / AF_Engine3_Render / f7-f18 / FVG / OB / CHoCH / Displacement / ML / legacy v4.x : NOT touched). ## 9. NEXT GATE P3-S.9 CROSS-PRIMITIVE CONSOLIDATED REPAIR / ARCHITECTURE REVIEW (after reviewing the full P3-S.2..P3-S.8 evidence). STOP the semantic audit chain. No ML, no retraining, no immediate repair. ## 10. ARTIFACTS ```text docs/SMC_CANDIDATE_SETUP_SPEC_v1.md docs/P3_S8_CANDIDATE_SETUP_CONFORMANCE.md ml/p3/smc_semantic/spec_tests_candidate_setup.py ml/p3/smc_semantic/spec_test_cases_candidate_setup.json ml/p3/smc_semantic/output/spec_tests_candidate_setup_report.json docs/SESSION_HANDOVER_2026-08-22_P3_S8_CANDIDATE_SETUP.md (this document) ``` ## 11. COMMIT & PUSH STATUS ```text NOT YET COMMITTED at handover write time. Planned message: research: P3-S.8 Candidate Setup formal spec + conformance audit (SPECIFICATION AMBIGUOUS) ```