# P3-S.17 DATASET AUDIT / LABEL VALIDATION — SNIPERGOLD_ML ```text Date : 2026-08-23 Session : P3-S.17 — Dataset Audit / Label Validation Status : AUDIT COMPLETE -> VERDICT = DATASET BLOCKED (real-data population is EMPTY under the migrated proxy semantics; see §A/§B). Baseline : P3-S.16 checkpoint 4b095443077539889f0ac6f0381881d6e4995c73 VERIFIED (local == origin/main, branch main, working tree CLEAN). Scope : XAUUSD M15 2017-01-01..2026-08-20 (Files\\AlgoForge\\Data), frozen P3-S.16 dataset/label contract. Human verif: REMAINS CANCELLED (historical only). NO AUC/PF/backtest used. Decision : DATASET BLOCKED — see §B (two blockers). ``` --- ## A. SESSION OBJECTIVE Answer (P3-S.17): > Does the frozen Candidate Setup + P3-S.16 label contract produce a real, > deterministic, causally valid, reproducible training population on historical > data, without reintroducing the overlap / look-ahead / label-misalignment > problems of the legacy bar-level pipeline? --- ## B. VERDICT — DATASET BLOCKED Two independent blockers were found: ```text BLOCKER 1 — EMPTY REAL-DATA POPULATION (primary): The real-data Candidate Setup population is 0 observations across the authorized XAUUSD M15 window (~194,985 bars). The frozen F3 chain did not complete at any bar under the migrated real-data SMC semantics. Root-cause primitive counts (§D) show the proxy sweep detection (84 onsets) and the zone-unmitigated detection (69 bars) are far more selective than the frozen runtime's F1/F2 detectors. The P3-S.16 contract MECHANICS are validated and deterministic (unit tests 20/20, no leakage), but a real training population cannot be built yet. This must be resolved by RECONCILING the real-data SMC extraction with the frozen MQL5 F3/F1/F2 detectors (AF_Engine2_Setup / AF_DetectSweep / AF_DetectChoch / AF_FindFVG / AF_FindOrderBlock, closed-bar Engine-1 cache). It is a FUTURE INTEGRATION/detector-reconciliation phase, NOT a silent relaxation of gates to fabricate setups (forbidden by §29). BLOCKER 2 — FROZEN P3-S.4 PARITY-GUARD COMPATIBILITY (secondary, structural): The real-data setup extractor references "FVG" as a Candidate Setup zone-type identifier. The frozen P3-S.4 spec suite asserts FVG is ABSENT from the ml/ tree (scan_parity_absence: regex on ml/**/*.py == 0 hits). Merging the extractor would flip P3-S.4 from 20/20 to 19/20 (FVG-T20). The historical suite was NOT modified (correct per §31). The extractor scripts are therefore NOT merged into main to preserve the frozen parity invariant. This is a documented FUTURE DEPENDENCY: the setup-level FVG zone-type namespace and the P3-S.4 parity-absence guard must be reconciled by design in a future phase. CONSEQUENCE: P3-S.17 cannot certify the dataset. Training must NOT start. ``` --- ## C. WHAT WAS VALIDATED (the contract MECHANICS) ```text - P3-S.16 unit tests re-run: 20/20 PASS (DS-T01..T16 + DS-17..20). Contract observation unit, identity, entry=creation-bar-close, TP-before-SL WIN/LOSS/ UNRESOLVED/AMBIGUOUS, de-overlap, causality, no-leakage, reproducibility all hold at the contract/test level. - The extractor produced a deterministic, reproducible (identical re-run) pipeline; NO look-ahead; entry = creation-bar close (M15); TP/SL at ATR(entry); de-overlap by lead-setup-per-episode; UNRESOLVED never forced to LOSS. - These confirm the P3-S.16 label CONTRACT is mechanically sound. What is missing is a NON-EMPTY real-data Candidate Setup population, which requires reconciling the frozen detectors (BLOCKER 1). ``` --- ## D. REAL-DATA POPULATION & ROOT-CAUSE AUDIT Scope confirmed from the P3-S.16 handover/contract: **XAUUSD M15 2017-01-01 .. 2026-08-20** (194,985 bars; feeds clean per download_report: 0 dups, 0 bad OHLC, 0 anomaly gaps). ```text total Candidate Setups (raw) : 0 total observations (all) : 0 lead setups : 0 follow-on setups : 0 duplicate setup_ids : 0 invalid / excluded : 0 INTERMEDIATE SMC PRIMITIVE COUNTS (root-cause diagnostics): sweep_event_onsets : 84 <-- extremely sparse (proxy liquidity-grab) choch_event_bars_nonzero : 194792 <-- persistent CHoCH state (always present) zone_active_bars : 75861 zone_unmitigated_bars : 69 <-- proxy mitigation over-marks (rarely unmitigated) m15_entry_bars : 1418 h4_bias_bars : 194985 => The dominant scarcity drivers are the SWEEP and UNMITIGATED-ZONE proxies. The frozen F3 chain requires a FRESH sweep + CHoCH-after + ACTIVE UNMITIGATED OB|FVG + M15 entry, all direction-compatible with H4/M30 gates. Under the migrated proxies this never co-occurs. This is a detection-fidelity gap (proxy vs frozen detectors), not a violation of the P3-S.16 label contract. ``` --- ## E. AUDIT SECTION RESULTS (all measured) ```text Identity : 0 setups -> no duplicate IDs; causal-key uniqueness n/a (trivially consistent). No split/merge faults observable on an empty set. Entry : contract entry = creation-bar close (M15). No setups -> no entries. Contract rule confirmed deterministic at the test level (DS-T05/T15). TP/SL : k_tp/k_sl = 1.5/0.75 default candidate (OPEN param); ATR(entry) reference. Not auditable on an empty population; open parameter documented, not optimized. Outcome : WIN/LOSS/UNRESOLVED/AMBIGUOUS all 0 (empty). Class semantics validated at the contract/test level (DS-T07..T11/T16). Censoring : n/a (empty). Rule (UNRESOLVED never forced to LOSS) confirmed by DS-18. Ambiguous : n/a (empty). Same-bar rule confirmed by DS-T10/DS-19. De-overlap : rule deterministic (DS-T12/T13); empty here. Lifetime : n/a (empty). Contract horizon = 16 (open param); not auto-tuned. Feature : feature snapshot is a PROPOSAL (Store 2); no leakage by design (DS-T14/T15). Not populated on empty set. Leakage : ZERO LOOK-AHEAD at the contract/test level (DS-14/T15/T20). No feature references future price. Quality : source feed clean (download_report): 0 dup/not-increasing, 0 bad OHLC, 0 anomaly gaps in the authorized feeds. Reproducibility: identical re-run output (deterministic generator). Reproducible. Temporal : split/purge rules defined (temporal, purge==horizon, no label-window overlap, no future info); not exercised on an empty set. ``` --- ## F. CONTRACT vs REAL DATA (classification per §27) ```text observation_unit : PASS (contract) ; real-data population BLOCKED identity : PASS (contract) ; n/a on empty real set entry_timestamp : PASS (contract) ; deterministic TP/SL : PASS (contract) ; open params, not optimized horizon : PASS (contract) ; open param, no auto-tune class_semantics : PASS (contract) ambiguity : PASS (contract) censoring : PASS (contract) de-overlap : PASS (contract) feature_timing : PASS (contract; proposal, no leakage) provenance : PASS (contract enforces it) reproducibility : PASS (deterministic re-run) REAL-DATA POPULATION : FAIL / BLOCKED (0 observations; detection fidelity) ``` --- ## G. EXPLICITLY UNCHANGED / NOT MODIFIED ```text Candidate Setup runtime, F1, F2, F4 runtime MTF, FEATURE_CONTRACT.md, SniperGold_ML.mqh, production .mq5/.mqh, legacy MLP : NONE changed. NO historical spec suite modified. NO training. NO parameter optimization. Human verification CANCELLED. No AUC/PF/profit/backtest used. ``` --- ## H. WHY THE EXTRACTION SCRIPTS ARE NOT MERGED ```text ml/p3/setup_dataset/real_setup_extractor.py and dataset_audit.py are the session's working diagnostic scripts. They are NOT merged into main because: 1. they reference "FVG" as a setup zone-type, which flips the frozen P3-S.4 parity-absence guard (FVG-T20) from PASS to FAIL — a regression we must NOT introduce (and must NOT fix by editing the historical suite), 2. they currently yield an EMPTY real-data population (BLOCKER 1). Reconciling both is a FUTURE dependency (detector-fidelity + parity-namespace reconciliation), out of scope for a single audit. The committed evidence (this report + ml/p3/setup_dataset/output/p3_s17_ dataset_audit.json) records the audit outcome truthfully. ``` --- ## I. NEXT GATE ```text NOT training. Before any setup-level baseline (P3-S.18), a FUTURE phase must: 1. Reconcile the real-data SMC extraction with the frozen MQL5 F3/F1/F2 detectors to obtain a NON-EMPTY, faithful Candidate Setup population. 2. Reconcile the setup-level FVG zone-type namespace with the frozen P3-S.4 parity-absence guard (e.g., a designated research-namespace boundary) so the guarded regression stays green. 3. Re-run P3-S.17 audit on the reconciled population. P3-S.17 ends at this blocked, honestly-documented audit. ``` *End of P3-S.17 dataset audit / label validation. Verdict: DATASET BLOCKED.*