SniperGold_ML/docs/SESSION_HANDOVER_2026-08-22_P3_S3_CHOCH_MSS.md

11 KiB

SESSION HANDOVER — SNIPERGOLD_ML P3-S.3: CHOCH / MSS SPEC + CONFORMANCE

Date       : 2026-08-22 (session close)
Status     : P3-S.3 COMPLETE — spec + conformance audit done; commit+push verified
Forge      : https://forge.mql5.io/chiki2bum2/SniperGold_ML
Checkpoint : P3-S.2 595b4c9a622703b05228bd563b4979fef81a2ebf (verified clean at start)

1. SESSION OBJECTIVE

Formal Specification + Code-Conformance Audit for CHoCH / MSS.

Question answered:
  Does the SniperGold code claiming to detect CHoCH/MSS really implement the
  CHoCH/MSS definition established by the PROJECT SEMANTIC SPECIFICATION?

Questions NOT answered:
  - Does CHoCH generate profit?
  - Is the universal SMC definition correct for every trader?

Principle: SPEC FIRST, CODE AUDIT SECOND. Human verification = CANCELLED. No production code changes (Phase D).


2. SOURCE MATERIAL (15 sources, reconciled)

 1 FEATURE_CONTRACT v1.0 (f8/f9/f18)    docs/FEATURE_CONTRACT.md
 2 DESIGN.md (Algo Forge)               docs/DESIGN.md ("CHoCH/MSS" label, N agent)
 3 DESAIN_MTF_v45.md                    Shared Projects\SniperGold_ML
 4 v4.3/v4.4/v4.5 ProcessStructure      Indicators\Downloads\SniperGold_SMC_ProPlus_v4_3/4_4/4_5.mq5
 5 EA ProcessStructure (current)        Experts\AlgoForge_Backtest_Baseline.mq5:294-340
 6 build_features_p2.py                 ml/parity/build_features_p2.py (equal-allowed pivots)
 7 train_model.py build_structure       ml/train_model.py:161-229 (STRICT pivots)
 8 smc_semantic_common.py               ml/p3/smc_semantic/ (forensic infra)
 9 AF_DetectChoch / AF_DetectBos        Include\AlgoForge\AF_Engine2_Agents.mqh:238-256
10 AF_BuildStructLines                  Include\AlgoForge\AF_Engine2_Display.mqh:137-192
11 P3-S.0 f7 forensic                   docs/P3_S_F7_EVENT_LIFECYCLE_FORENSIC.md
12 P3-S.2 spec+conformance              docs/SMC_LIQUIDITY_SWEEP_SPEC_v1.md + conformance
13 Golden dataset doc                   docs/P3_SMC_SEMANTIC_GOLDEN_DATASET.md
14 audit_choch_state.json (NEW)         ml/p3/smc_semantic/output/ (CHoCH state forensic)
15 parity_choch_pivot_*.json (NEW)      ml/p3/smc_semantic/output/ (strict vs equal pivots)

Three semantic layers separated:
  INTENDED : CHoCH = reversal of the internal structure (close break of the last
             internal swing + opposite prior trend + non-opposing swing gate);
             CHoCH/MSS = synonymous labels; Sweep->CHoCH->OB/FVG chain (40);
             a separate MSS (break+displacement) is NOT defined.
  LEGACY   : trigger identical; the signal gate applies freshness (curBar-chochBar)<=40;
             ML features f8/f9/f18 use a PERSISTENT state without expiry.
  CURRENT  : trigger identical; f8 = last CHoCH (persistent per contract); f9/f18 =
             raw-state consumption WITHOUT expiry (stale 34.7% / 58%); Engine 2
             AF_DetectChoch = second definition (fractal 2/2, no gate, per-TF);
             display = third definition (fractal 2/2).

3. SPECIFICATION (docs/SMC_CHOCH_MSS_SPEC_v1.md)

REFERENCE   : f8/f9 = last internal swing pivot, fractal 5/5 (equal allowed), single
              level; swing len=50 is only the gate; HTF NOT valid.
FORMATION   : fractal 5/5, equal allowed, confirmation p+5 <= b, window
              [max(95,t-604), t-5]; MIN_BARS gate 160.
CHOCH       : bullish: close[b] > last internal pivot high, prior trend<0,
              SwingTrendAt(b)>=0. bearish: symmetric (close < last low, prior>0,
              SwingTrendAt<=0). CLOSE-CONFIRMED; wick-only insufficient; body not
              required; displacement NOT required.
MSS         : SAME AS CHOCH (project synonym label). No separate MSS primitive
              (code grep = 0 matches). MSS+displacement NOT adopted.
DIRECTION   : +1 bullish (reversal from down), -1 bearish, 0 none.
PRECONDITION: prior internal trend != 0 (the first break = BOS, not CHoCH);
              non-opposing swing gate (>=0/<=0 — WEAK gate, A-4).
TEMPORAL    : closed bar t; break b <= t; pivot p+5 <= b; no future.
EVENT/STATE : EVENT (detection) + STATE (f8 last dir, persistent per contract) +
              VALIDITY WINDOW 40 for chain consumers (f9/f18/signal gate).
LIFECYCLE   : NO_CHOCH / ONSET / ACTIVE / EXPIRED / SUPERSEDED;
              INVALIDATED & CONSUMED not modeled.
TIMEFRAME   : f8/f9 = M15 ONLY; Engine 2 per-TF (H4/M30/M15/M3); canonical project
              = SPECIFICATION AMBIGUOUS (MTF).
SWEEP REL   : CHoCH detection STANDS ALONE; the f9 chain = ordering+direction+
              freshness; f7 NOT changed.

4. CONFORMANCE (docs/P3_S3_CHOCH_MSS_CONFORMANCE.md)

Detection chain (E-1..E-10, E-12)    : CONFORMING
  structure, swing, trigger, break semantics, direction, precondition,
  closed-bar, detector lifecycle (one event per transition), f8 state.
Confluence gate (E-7)                : PARTIALLY CONFORMING
  WEAK gate (>=0/<=0) vs the "align" comment (A-4); the spec adopts weak.
Event-consumer lifecycle (E-11)      : NON-CONFORMING (BUG-P3S3-001)
  f9/f18 without SEQ_WINDOW -> stale confirm (34.7% f9 / 58% f18 leg).
Runtime-training pivots (E-13)       : PARTIALLY CONFORMING
  parity feed OK (P2.5 1e-9); train_model/P3-infra STRICT diverge
  (0.26% choch_dir / 2.40% choch_bar).
MSS distinct (E-14)                  : CONFORMING (no MSS claim)
Engine 2 / Display (E-15)            : CONFORMING to its own definition; project AMBIGUOUS
Same-bar precedence (E-16)           : SPECIFICATION AMBIGUOUS (unreachable)

VERDICT : PARTIALLY CONFORMING
  (conformance to the project spec; NOT profitability/edge)

5. SYNTHETIC TESTS

Runner  : ml/p3/smc_semantic/spec_tests_choch_mss.py
Cases   : ml/p3/smc_semantic/spec_test_cases_choch_mss.json (20 cases)
Report  : ml/p3/smc_semantic/output/spec_tests_choch_mss_report.json

Result  : 20/20 PASS
  CH-T01..T15 (required) + T16 (MSS distinction) + T17 (confirmation boundary)
  + T18 (gate suppression) + T19 (gate permissive) + T20 (BOS continuation).
  spec_oracle (truth, from SPEC S-3..S-10) == expected in all cases.
  code_port (EA port, observation) MATCHES spec in all DETECTION (f8/events);
  DIVERGES in the chain consumer: CH-T08 spec f9=0 (expired age>40) vs
  code f9=1 (stale) -> synthetic evidence for BUG-P3S3-001.
Expected derived from SPEC, NOT from production code.
NO AUC/PF/backtest/human annotation/ML on the test path.

6. STATE/EVENT FORENSIC (diagnostic, mirrors f7 P3-S.0)

Output : ml/p3/smc_semantic/output/audit_choch_state.json
Population XAUUSD M15 2017-2026 (n=197.032, runtime-semantics equal-allowed):

  CHoCH onsets            : 2.197
  active bars (f8 != 0)   : 196.817 (99.89%)  | repetition 89.6x (f7 = 69.5x)
  state run median/max    : 318 / 2.187 bars
  state age median/p99    : 49 / 242 bars (max 418)
  state returns to 0      : NEVER after the first event (same as f7)

  f9 chochOK TRUE         : 51.105 bars -> STALE (age>40) 17.714 (34.7%)
  f18 +15 leg             : 97.826 bars -> STALE 56.761 (58.0%)

Finding: the f7 pattern repeats on the CHoCH side — the DETECTOR is correct (one
event per transition), but the CONSUMERS (f9/f18) count the stale state as repeated
confirmation. Old unit tests do not prove this (not this test path).

7. RUNTIME/TRAINING PARITY (diagnostic, no retraining)

Output : ml/p3/smc_semantic/output/parity_choch_pivot_strict_vs_equal.json

  strict (train_model.build_structure) vs equal-allowed
  (build_features_p2.build_structure_fast == EA):
    choch_dir mismatch : 512 bars (0.26%)
    choch_bar mismatch : 4.722 bars (2.40%)
    onsets             : 2.165 (strict) vs 2.197 (equal)

The parity feed build_features_p2 (deployed-model P2.6 path) == runtime (P2.5 1e-9
for f8/f9). The divergence exists only in the old train_model path + P3 forensic
infra (BUG-P3S3-002, documented).

8. CONFIRMED BUGS (document-only; NOT fixed in P3-S.3)

BUG-P3S3-001 [MEDIUM] CONFIRMED, NOT FIXED
  f9 (chochOK) & f18 (+15 leg) consume CHoCH state WITHOUT SEQ_WINDOW -> a stale
  event stays "confirmed" (34.7% f9 / 58% f18 leg; state age p99 242 bars).
  Same bug class as BUG-P3S2-001 (sweep side); P3-S.0 only fixed f7.
  Fix: (t - chochBar) <= 40 at f9/f18 OR refactor to a single event lifecycle.

BUG-P3S3-002 [LOW] DOCUMENTED
  train_model.build_structure (STRICT pivots) vs EA/parity feed (equal allowed):
  diverge 0.26% choch_dir / 2.40% choch_bar. Fix: use _pivots_vec on all
  training/forensic paths.

BUG-P3S3-003 [INFO] DOCUMENTED
  InpConfluenceFilter comment "align with swing trend" vs the WEAK gate (>=0/<=0).
  Spec A-4 = small AMBIGUITY; adjudicate weak vs strong gate.

9. SEMANTIC AMBIGUITIES

1. MSS vs CHoCH (terminology)  : project synonym labels; a separate MSS (break+
   displacement) NOT defined -> AMBIGUOUS (no code).
2. Two/three CHoCH definitions : f8/f9 (5/5+gate, M15) vs Engine 2 (2/2, no gate,
   per-TF) vs Display (2/2, chart TF). f8/f9 is authoritative for ML.
3. Weak confluence gate       : >=0/<=0 ("non-opposing") vs "aligned".
4. Canonical timeframe        : f8/f9 M15 explicit; the HTF role vs LTF events not
   established (same as sweep G-3).
5. Event vs state in consumers : f8 state (per contract); f9/f18 should be
   event+window (BUG-P3S3-001).

10. NO PRODUCTION CHANGE

No production code was modified.
  AF_Engine2_Agents.mqh / AF_DetectChoch / AF_DetectBos / ProcessStructure /
  f8 / f9 / f18 / f7 / f10 / f11 / OB / FVG / Displacement / ML / Engines 2-3 :
  NOT touched.

Only P3-S.3 research artifacts added (spec, conformance, tests, forensic,
parity, handover). P3-S.2 artifacts (immutable) UNCHANGED
(git status: only new files, 0 modified).

11. HUMAN VERIFICATION STATUS

HUMAN VERIFICATION = CANCELLED
  Human annotation not required for P3-S.3.
  Human A/B comparison NOT part of the validation path.
  No new human annotation requests.
  The human_package/ remains as a historical artifact.

12. NEXT GATE

After the CHoCH/MSS verdict (PARTIALLY CONFORMING):
  FVG -> OB -> Displacement -> MTF Alignment -> Candidate Setup.
DO NOT return to ML; DO NOT build a meta-label; DO NOT create new event labels.

13. CHECKPOINT & PROVENANCE (P3-S.3)

Forge HEAD (before the P3-S.3 commit)  : 595b4c9a (P3-S.2) — VERIFIED
P3-S.0 commit                       : b519a34
P3-S.1 commit                       : 8c1ef6c
P3-S.2 checkpoint                   : c7a2b3f5e6acbf8deb748315dcbcc200046d0b84
FEATURE_CONTRACT                    : C44CC6F2... (P2-era) / 7b908b12... (committed)
symbol/tf                           : XAUUSD / M15 (2017-01-01 .. 2026-08-20)
Human verification                  : CANCELLED

14. P3-S.3 ARTIFACTS

docs/SMC_CHOCH_MSS_SPEC_v1.md
docs/P3_S3_CHOCH_MSS_CONFORMANCE.md
ml/p3/smc_semantic/spec_tests_choch_mss.py
ml/p3/smc_semantic/spec_test_cases_choch_mss.json
ml/p3/smc_semantic/output/spec_tests_choch_mss_report.json
ml/p3/smc_semantic/output/audit_choch_state.json
ml/p3/smc_semantic/output/parity_choch_pivot_strict_vs_equal.json
ml/p3/smc_semantic/audit_choch_state.py
ml/p3/smc_semantic/parity_choch_pivot_check.py
docs/SESSION_HANDOVER_2026-08-22_P3_S3_CHOCH_MSS.md  (this document)