forked from chiki2bum2/SniperGold_ML
234 lines
10 KiB
Markdown
234 lines
10 KiB
Markdown
# P3-S.9 ROOT-CAUSE MATRIX — SNIPERGOLD_ML CROSS-PRIMITIVE CONSOLIDATION
| |||
| |||
```text
| |||
Date : 2026-08-22
| |||
Session : P3-S.9 — Cross-Primitive Consolidated Repair & Architecture Review
| |||
Purpose : Identify SHARED root causes across P3-S.2..P3-S.8 findings so the
| |||
future repair phase patches ONE architecture, not N files.
| |||
Evidence : docs/SMC_*_SPEC_v1.md (P3-S.2..S.8), docs/P3_S*_CONFORMANCE.md,
| |||
docs/SESSION_HANDOVER_2026-08-22_P3_S*_*.md, FEATURE_CONTRACT.md,
| |||
AF_Engine1/2/3 sources, legacy v4.3/v4.4/v4.5 (all reconciled).
| |||
Rule : Every mark below cites at least one audited finding. No AUC/PF/
| |||
profit-based inference. Human verification = CANCELLED.
| |||
```
| |||
| |||
---
| |||
| |||
## 1. SHARED ROOT-CAUSE PATTERNS (from §7 of the brief)
| |||
| |||
### A. EVENT/STATE CONFUSION
| |||
| |||
```text
| |||
Definition : a detector that is semantically an EVENT (onset + validity) is
| |||
consumed as a persistent STATE (never expires), or vice versa.
| |||
Evidence :
| |||
- Liquidity Sweep: f7 EVENT with 40-bar lifecycle (P3-S.0 fix, CONFORMING)
| |||
vs per-TF stateless state in Engine 2 (AF_DetectSweep, no expiry) and vs
| |||
g_swpDir persistent state consumed by f9/f18 WITHOUT age bound
| |||
(BUG-P3S2-001; P3-S.2 E-10 NON-CONFORMING).
| |||
- CHoCH/MSS: f8 = persistent STATE per contract (99.89% active bars,
| |||
median run 318 bars; P3-S.3 audit_choch_state) vs f9/f18 consuming it as
| |||
a fresh EVENT (BUG-P3S3-001, 34.7% / 58.0% stale) vs Engine-2
| |||
AF_DetectChoch per-bar state with no expiry (P3-S.8 D-12).
| |||
- Candidate Setup: E-rule consumes choch as a same-bar state, so a CHoCH
| |||
500 bars old still "confirms" (P3-S.8 CS-T14).
| |||
Affected : Sweep, CHoCH/MSS, Candidate Setup.
| |||
```
| |||
| |||
### B. ZONE/MITIGATION CONSUMER ERROR
| |||
| |||
```text
| |||
Definition : a ZONE producer applies mitigation in display/legacy, but the
| |||
decision-path consumer reads the zone WITHOUT mitigation.
| |||
Evidence :
| |||
- FVG: Engine-2 AF_FindFVG (AF_Engine2_Agents.mqh:329-350) has NO
| |||
mitigation filter; C/E agents consume the newest-ANY zone
| |||
(BUG-P3S4-001; P3-S.4 E-9 NON-CONFORMING). Display AF_CollectFVG applies
| |||
MIT, legacy FindEntryFVG requires unmitigated.
| |||
- OB: Engine-2 AF_FindOrderBlock (293-322) has NO mitigation and NO age
| |||
bound; C/E consume newest-ANY (BUG-P3S5-001; P3-S.5 E-9 NON-CONFORMING).
| |||
Display AF_CollectOBs applies close-through MIT + 0.5 ATR dedupe.
| |||
Affected : FVG, OB, Candidate Setup (zone leg inherits the error).
| |||
```
| |||
| |||
### C. DUPLICATE EVENT EMISSION
| |||
| |||
```text
| |||
Definition : a per-bar state detector emits the "event" on every bar the
| |||
state holds, with no onset suppression.
| |||
Evidence :
| |||
- f7 pre-fix: a single sweep onset yielded TRUE for hundreds of bars
| |||
(P3-S.0; max per-onset lifetime ~996 -> 41 after fix).
| |||
- f8: state run median 318 bars, returns to 0 NEVER after first event
| |||
(P3-S.3 audit_choch_state.json).
| |||
- P3.1c candidate strata: median gap between candidate bars = 1 bar
| |||
(candidate_setup_audit.json event_frequency) — no dedup by construction.
| |||
- Engine-2 E-rule: fires every bar while zone+conf hold (P3-S.8 CS-T13).
| |||
Affected : Sweep, CHoCH/MSS, Candidate Setup.
| |||
```
| |||
| |||
### D. STALE STATE CONSUMPTION
| |||
| |||
```text
| |||
Definition : a consumer reads a detector's persistent state without checking
| |||
the event validity window.
| |||
Evidence :
| |||
- f9/f18 sweep leg: uses raw g_swpDir/g_swpBar without age bound
| |||
(BUG-P3S2-001; EA AlgoForge_Backtest_Baseline.mq5:470-471, 510-516).
| |||
- f9/f18 CHoCH leg: same pattern (BUG-P3S3-001; f9 34.7% stale,
| |||
f18 +15 leg 58.0% stale).
| |||
- Engine-2 C/E zone consumers: no age bound on OB/FVG (BUG-P3S4-001/-002,
| |||
BUG-P3S5-001).
| |||
Affected : Sweep, CHoCH/MSS, FVG, OB, Candidate Setup.
| |||
```
| |||
| |||
### E. MULTIPLE INCOMPATIBLE DEFINITIONS
| |||
| |||
```text
| |||
Definition : the same concept has 2+ definitions/TF-models in the repo with
| |||
no canonical rule.
| |||
Evidence :
| |||
- MTF models: FEATURE_CONTRACT D1/H4/H1+M15 vs Engine 2 H4/M30/M15/M3 vs
| |||
legacy v4.5 D1/H4/H1+M15 (P3-S.7 D-5/D-6; X-1..X-5).
| |||
- OB: current "opposite bar before strong move (1.5x avg)" vs legacy
| |||
"opposite candle before structure break" (P3-S.5 A-2, BUG-P3S5-002).
| |||
- CHoCH: f8/f9 (5/5+gate, M15) vs Engine 2 (2/2, no gate) vs display
| |||
struct lines (P3-S.3 A-2; P3-S.7 X-2).
| |||
- Sweep: f7 internal pivot (M15) vs Engine-2 swing-pivot per-TF vs
| |||
legacy D1/H4/H1 per-TF (P3-S.2 A-2; P3-S.7 X-1).
| |||
- FVG: min-gap none vs 0.02 ATR vs 0.25 ATR; timestamp C2 vs C3
| |||
(P3-S.4 A-1/A-5).
| |||
- Displacement: 1.6x avg body vs OB strong-move 1.5x (BUG-P3S6-001).
| |||
- Candidate Setup: Definition A (E-rule) vs Definition B (legacy gate
| |||
chain) (P3-S.8 D-8).
| |||
Affected : ALL primitives (Sweep, CHoCH, FVG, OB, Displacement, MTF,
| |||
Candidate Setup).
| |||
```
| |||
| |||
### F. FLAT SCORE USED AS SETUP SUBSTITUTE
| |||
| |||
```text
| |||
Definition : the aggregator's weighted score/signal is treated as (or
| |||
displayed as) a Candidate Setup.
| |||
Evidence :
| |||
- Aggregator outputs direction+score only; any single TF can produce
| |||
BUY/SELL with zero setup contribution (P3-S.7 MTF-T19/T20/T22;
| |||
P3-S.8 CS-T05/T11/T21; unit test T6 "N buy kuat saja -> BUY").
| |||
- Dashboard "TRADE SETUP" panel renders the aggregated signal
| |||
(AF_Engine3_Render.mqh:272-278; P3-S.8 D-9).
| |||
Affected : Candidate Setup, MTF (aggregation).
| |||
```
| |||
| |||
### G. TIMEFRAME ROLE DRIFT
| |||
| |||
```text
| |||
Definition : roles are assigned by AGENT LABEL, not by structural
| |||
cross-TF dependency; the same detector runs per-TF.
| |||
Evidence :
| |||
- 4 agents each read exactly ONE slot; same detector suite per-TF; NO
| |||
cross-TF structural references (P3-S.7 S-R, D-7; MTF ROLE DIVERGENCE).
| |||
- "H4 Narrative -> M30 Context -> M15 Entry -> M3 Price Action" is an
| |||
ANALYSIS order; the DECISION is a flat vote (P3-S.7 S-H, D-1).
| |||
Affected : MTF, Candidate Setup.
| |||
```
| |||
| |||
### H. TRAINING/RUNTIME SEMANTIC DRIFT
| |||
| |||
```text
| |||
Definition : training features and the agent runtime implement different
| |||
semantics for the same concept.
| |||
Evidence :
| |||
- MTF model mismatch: contract/training D1/H4/H1+M15 vs agent path
| |||
H4/M30/M15/M3; agent path has NO Python counterpart (P3-S.7 D-5,
| |||
S-PR "N/A by absence"; FEATURE_CONTRACT MTF MISMATCH).
| |||
- CHoCH pivots: train_model.build_structure STRICT vs EA/parity feed
| |||
equal-allowed: 0.26% choch_dir / 2.40% choch_bar divergence
| |||
(BUG-P3S3-002; P3-S.3 E-13).
| |||
- FVG/OB/Displacement: absent from contract (PARITY = N/A by absence).
| |||
Affected : CHoCH/MSS, MTF.
| |||
```
| |||
| |||
### I. MISSING SETUP IDENTITY
| |||
| |||
```text
| |||
Definition : no setup_id / formation timestamp / originating event / zone
| |||
linkage exists; downstream receives direction+score only.
| |||
Evidence :
| |||
- No setup struct/array anywhere in Engine 2; E-rule is a fuzzy weight
| |||
contribution; no dedup (P3-S.8 D-10, CS-T13/T16/T20; SETUP-IDENTITY
| |||
GAP).
| |||
Affected : Candidate Setup.
| |||
```
| |||
| |||
### J. MISSING EXPLICIT LIFECYCLE
| |||
| |||
```text
| |||
Definition : no onset/completion/expiry/invalidation states for setups or
| |||
for Engine-2 events/zones.
| |||
Evidence :
| |||
- Engine 2 has no SeqWindow constant (AF_Defines.mqh); E-rule has no age
| |||
bound; CHoCH/sweep states never expire in Engine 2 (P3-S.8 D-12,
| |||
CS-T14).
| |||
- FVG/OB invalidation NOT modeled anywhere (P3-S.4 E-10, P3-S.5 E-10
| |||
CONFORMING by absence).
| |||
- Setup onset/completion/lifecycle: SPECIFICATION AMBIGUOUS (P3-S.8
| |||
A-5/A-6/A-7).
| |||
Affected : Sweep, CHoCH/MSS, Candidate Setup (zones have implicit
| |||
mitigation-based lifecycle only).
| |||
```
| |||
| |||
---
| |||
| |||
## 2. ROOT-CAUSE × PRIMITIVE MATRIX
| |||
| |||
| Root Cause | Sweep | CHoCH/MSS | FVG | OB | Displacement | MTF | Candidate Setup |
| |||
|------------------------|-------|-----------|-----|----|--------------|-----|-----------------|
| |||
| A. Event/state confusion | ✓ (P3S2 E-9/E-10) | ✓ (P3S3 E-11) | — | — | — | — | ✓ (P3S8 D-12/CS-T14) |
| |||
| B. Zone/mitigation consumer error | — | — | ✓ (P3S4 E-9) | ✓ (P3S5 E-9) | — | — | ✓ (inherits zone leg) |
| |||
| C. Duplicate event emission | ✓ (P3S0) | ✓ (P3S3 audit) | — | — | — | — | ✓ (P3S8 CS-T13) |
| |||
| D. Stale state consumption | ✓ (P3S2 BUG-001) | ✓ (P3S3 BUG-001) | ✓ (P3S4 BUG-001) | ✓ (P3S5 BUG-001) | — | — | ✓ (P3S8 D-12) |
| |||
| E. Multiple incompatible definitions | ✓ (P3S2 A-2) | ✓ (P3S3 A-2) | ✓ (P3S4 A-1/A-5) | ✓ (P3S5 A-2) | ✓ (P3S6 BUG-001) | ✓ (P3S7 D-5/D-6) | ✓ (P3S8 D-8) |
| |||
| F. Flat score as setup substitute | — | — | — | — | — | ✓ (P3S7 D-1) | ✓ (P3S8 D-9) |
| |||
| G. Timeframe role drift | — | — | — | — | — | ✓ (P3S7 D-7/S-R) | ✓ (P3S8 CS-17) |
| |||
| H. Training/runtime semantic drift | — | ✓ (P3S3 BUG-002) | — | — | — | ✓ (P3S7 D-5) | — |
| |||
| I. Missing setup identity | — | — | — | — | — | — | ✓ (P3S8 D-10) |
| |||
| J. Missing explicit lifecycle | ✓ (P3S2 E-9) | ✓ (P3S3 E-11) | — | — | — | — | ✓ (P3S8 A-5..A-7) |
| |||
| |||
Legend: "—" = no audited finding; "✓" = at least one audited finding; the
| |||
citation column gives the primary evidence.
| |||
| |||
---
| |||
| |||
## 3. CONSISTENCY ACROSS THE CHAIN (detector -> consumer)
| |||
| |||
```text
| |||
Detectors (mostly CONFORMING): sweep trigger, CHoCH trigger, FVG geometry,
| |||
OB formation, displacement candle attribute — all validated P3-S.2..S.6.
| |||
Consumers (mostly NON-/PARTIALLY CONFORMING): f9/f18 (stale sweep+choch),
| |||
Engine-2 C/E zones (no mitigation/age), aggregator (flat score), display
| |||
(mitigation exists but decision path ignores it), training (strict pivots).
| |||
-> The dominant failure class is CONSUMER-SIDE, not detector-side.
| |||
-> A single consumer-contract layer (event/zone/state/attribute contracts)
| |||
addresses root causes A, B, C, D, I, J simultaneously.
| |||
```
| |||
| |||
---
| |||
| |||
## 4. EVIDENCE REFERENCES
| |||
| |||
```text
| |||
P3-S.2 : docs/SMC_LIQUIDITY_SWEEP_SPEC_v1.md, P3_S2_LIQUIDITY_SWEEP_CONFORMANCE.md
| |||
P3-S.3 : docs/SMC_CHOCH_MSS_SPEC_v1.md, P3_S3_CHOCH_MSS_CONFORMANCE.md,
| |||
ml/p3/smc_semantic/output/audit_choch_state.json
| |||
P3-S.4 : docs/SMC_FVG_SPEC_v1.md, P3_S4_FVG_CONFORMANCE.md
| |||
P3-S.5 : docs/SMC_ORDER_BLOCK_SPEC_v1.md, P3_S5_ORDER_BLOCK_CONFORMANCE.md
| |||
P3-S.6 : docs/SMC_DISPLACEMENT_SPEC_v1.md, P3_S6_DISPLACEMENT_CONFORMANCE.md
| |||
P3-S.7 : docs/SMC_MTF_ALIGNMENT_SPEC_v1.md, P3_S7_MTF_ALIGNMENT_CONFORMANCE.md
| |||
P3-S.8 : docs/SMC_CANDIDATE_SETUP_SPEC_v1.md, P3_S8_CANDIDATE_SETUP_CONFORMANCE.md,
| |||
ml/p3/smc_semantic/output/spec_tests_candidate_setup_report.json
| |||
Historical : P3_S_F7_EVENT_LIFECYCLE_FORENSIC.md, P3_2_LABEL_FORENSIC.md,
| |||
P3_FEATURE_LABEL_FORENSIC.md, ml/p3/output/candidate_setup_audit.json
| |||
```
| |||
| |||
*Human verification remains CANCELLED. No production file was modified by
| |||
this session (this document is analysis only).*
|