forked from chiki2bum2/SniperGold_ML
226 lines
10 KiB
Markdown
226 lines
10 KiB
Markdown
# 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)
| |||
```
|