228 lines
9.9 KiB
Markdown
228 lines
9.9 KiB
Markdown
|
|
# P3-S.10 REPAIR IMPLEMENTATION SPECIFICATION — SNIPERGOLD_ML
|
||
|
|
|
||
|
|
```text
|
||
|
|
Date : 2026-08-22
|
||
|
|
Session : P3-S.10 — Owner Adjudication & Canonical Setup Contract Freeze
|
||
|
|
Status : IMPLEMENTATION SPECIFICATION ONLY. NOT executed.
|
||
|
|
Purpose : Translate the frozen canonical contract
|
||
|
|
(docs/SNIPERGOLD_CANONICAL_SETUP_CONTRACT_v1.md) and the
|
||
|
|
adjudicated OD-1..OD-5 (docs/P3_S10_OWNER_ADJUDICATION.md)
|
||
|
|
into concrete repair families, tests, and an execution order
|
||
|
|
for the FUTURE implementation sessions (P3-S.11+).
|
||
|
|
Inputs : docs/P3_S9_CONSOLIDATED_REPAIR_PLAN.md (master classification),
|
||
|
|
docs/P3_S9_ROOT_CAUSE_MATRIX.md, docs/P3_S9_ARCHITECTURE_REVIEW.md,
|
||
|
|
SMC_*_SPEC_v1.md (P3-S.2..S.8, immutable).
|
||
|
|
Rule : SPEC -> TEST -> IMPLEMENTATION -> REGRESSION -> PARITY.
|
||
|
|
No direct hot-fix. No performance-based selection.
|
||
|
|
Historical evidence and prior checkpoints preserved.
|
||
|
|
Human verification : CANCELLED.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. REPAIR FAMILIES (frozen scope)
|
||
|
|
|
||
|
|
### F1 — EVENT CONTRACT
|
||
|
|
|
||
|
|
```text
|
||
|
|
Objective : Introduce the EVENT contract {timestamp, direction,
|
||
|
|
valid_until, superseded, source} for Liquidity Sweep and
|
||
|
|
CHoCH/MSS; make every consumer apply the validity window.
|
||
|
|
Fixes : BUG-P3S2-001 (stale sweep in f9/f18), BUG-P3S3-001 (stale CHoCH,
|
||
|
|
34.7%/58.0%), D-12 (no freshness window in Engine 2).
|
||
|
|
Root causes: A (event/state confusion), C (duplicate emission), D (stale
|
||
|
|
consumption), J (missing lifecycle) — sweep/choch columns.
|
||
|
|
Files likely affected : ml EA AlgoForge_Backtest_Baseline.mq5 (f9/f18 legs),
|
||
|
|
AF_Engine2_Agents.mqh (sweep/choch consumption), shared
|
||
|
|
event contract include (new), Engine-2 defs (W_sweep/W_choch).
|
||
|
|
Tests required : extend P3-S.2/P3-S.3 synthetic suites —
|
||
|
|
expiry-at-40 (f9/f18 assert 0 after window),
|
||
|
|
supersession (newer onset replaces), ordering
|
||
|
|
(chochBar >= swpBar), no-duplicate-onset per reference.
|
||
|
|
Dependencies : OD-3 (windows), OD-4 (no arithmetic for setup-layer).
|
||
|
|
Risk : LOW-MEDIUM — touching f9/f18 changes ML-path behavior;
|
||
|
|
parity re-run required (SB-06 class).
|
||
|
|
```
|
||
|
|
|
||
|
|
### F2 — ZONE CONTRACT
|
||
|
|
|
||
|
|
```text
|
||
|
|
Objective : Introduce the ZONE contract {timestamp, direction,
|
||
|
|
upper_bound, lower_bound, mitigation_state, invalidated};
|
||
|
|
make Engine-2 C/E consumers mitigation-aware and
|
||
|
|
timing-unified.
|
||
|
|
Fixes : BUG-P3S4-001 (FVG consumed without mitigation), BUG-P3S4-002
|
||
|
|
(FVG timing C3 vs lag-1), BUG-P3S5-001 (OB without
|
||
|
|
mitigation/age). Resolves P3-S.4 A-2/A-6, P3-S.5 A-3/A-5
|
||
|
|
(consumer scope), P3-S.4 A-5 (timestamp convention).
|
||
|
|
Root causes: B (zone/mitigation consumer error), D (stale zones).
|
||
|
|
Files likely affected : AF_Engine2_Agents.mqh (C/E zone queries),
|
||
|
|
AF_FindFVG/AF_FindOrderBlock consumers, display collector
|
||
|
|
alignment (AF_CollectFVG close-variant vs wick canonical).
|
||
|
|
Tests required : extend P3-S.4/P3-S.5 suites — mitigation cases
|
||
|
|
(close-through OB / wick full-fill FVG), partial-fill NOT
|
||
|
|
mitigation, zone selection scope (newest-unmitigated),
|
||
|
|
formation timestamp convention.
|
||
|
|
Dependencies : OD-5 (OB semantics; FVG per P3-S.4 S-9).
|
||
|
|
Risk : MEDIUM — changes zone availability in Engine 2.
|
||
|
|
```
|
||
|
|
|
||
|
|
### F3 — SETUP LAYER (core of the canonical contract)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Objective : Materialize the Candidate Setup ENTITY: identity (§K),
|
||
|
|
lifecycle state machine (§L), H4/M30 context gates (OD-1),
|
||
|
|
per-stage validity windows (OD-3), conflict policy (OD-4);
|
||
|
|
re-scope the aggregator to a scoring layer over valid setups
|
||
|
|
(D-9); expose the setup predicate explicitly (D-11).
|
||
|
|
Fixes : D-8 (two definitions -> canonical chain), D-9 (score can
|
||
|
|
produce signal without setup), D-10 (no identity),
|
||
|
|
D-11 (E-vote saturation), D-1 (aggregator re-scope).
|
||
|
|
Root causes: F (flat score as setup), I (missing identity),
|
||
|
|
J (missing lifecycle) — candidate-setup columns.
|
||
|
|
Files likely affected : new setup entity (struct/state machine), aggregator
|
||
|
|
(signal emission bound to setups), M15 chain consumer,
|
||
|
|
Engine-2 defs (W_setup, W_m3), f7/f8/f9 consumers via contracts.
|
||
|
|
Tests required : re-express P3-S.8 CS-T01..T25 against the entity
|
||
|
|
semantics; gate-fail matrix (OD-4); one-entry rule;
|
||
|
|
identity dedup (one setup not recreated per bar);
|
||
|
|
stage expiry before CANDIDATE_SETUP discards.
|
||
|
|
Dependencies : F1, F2 (events/zones must be contract-correct first).
|
||
|
|
Risk : HIGH (semantic change to the setup/signal path) — the
|
||
|
|
reason this session froze the contract before code.
|
||
|
|
```
|
||
|
|
|
||
|
|
### F4 — MTF / TRAINING ALIGNMENT
|
||
|
|
|
||
|
|
```text
|
||
|
|
Objective : Enforce the canonical MTF model (OD-2) and the gate-fail
|
||
|
|
conflict policy (OD-4); reconcile training semantics or
|
||
|
|
document the divergence; enforce slot->TF identity (D-3);
|
||
|
|
align training/runtime pivot semantics (BUG-P3S3-002) and
|
||
|
|
window semantics (BUG-P3S2-003).
|
||
|
|
Fixes : D-2, D-3, D-5, D-6, BUG-P3S2-003, BUG-P3S3-002.
|
||
|
|
Root causes: E (multiple definitions), G (role drift), H (training/runtime
|
||
|
|
drift) — MTF/CHoCH columns.
|
||
|
|
Files likely affected : FEATURE_CONTRACT.md (alignment OR explicit
|
||
|
|
divergence record — NOT modified this session), train_model.py
|
||
|
|
build_structure (strict vs equal pivots), Engine-1 slot
|
||
|
|
registration (assert TF at consume time), MTF conflict module.
|
||
|
|
Tests required : MTF-T07/T08/T16 (as-of) re-run; new conflict-policy
|
||
|
|
tests; training-vs-runtime pivot parity tests.
|
||
|
|
Dependencies : F3 (setup layer consumes the policy), OD-2/OD-4.
|
||
|
|
Risk : MEDIUM — training alignment is data-path sensitive;
|
||
|
|
parity must be re-verified.
|
||
|
|
```
|
||
|
|
|
||
|
|
### F5 — DISPLAY / EXPLAINABILITY
|
||
|
|
|
||
|
|
```text
|
||
|
|
Objective : Render the setup entity (id, stages, lifecycle) instead of the
|
||
|
|
bare vote signal in the "TRADE SETUP" panel; draw H4/M30
|
||
|
|
structures; align display with decision semantics.
|
||
|
|
Fixes : D-4 (V-1..V-4), P3-S.8 D-9 display side.
|
||
|
|
Root causes: F (flat score displayed as setup).
|
||
|
|
Files likely affected : AF_Engine3_Render.mqh, AF_Engine2_Display.mqh.
|
||
|
|
Tests required : panel renders setup id/stages; display of H4/M30 context;
|
||
|
|
no stale re-render within a bar.
|
||
|
|
Dependencies : F3 (setup entity must exist).
|
||
|
|
Risk : LOW-MEDIUM.
|
||
|
|
```
|
||
|
|
|
||
|
|
### F6 — DOCUMENTATION / DEFINITIONS / CLEANUP
|
||
|
|
|
||
|
|
```text
|
||
|
|
Objective : Record the adjudicated definitions: canonical vs legacy OB
|
||
|
|
(OD-5), 1.5 vs 1.6 constant role split (OD-5); deprecate
|
||
|
|
legacy D1/H4/H1 to reference (D-6); clean terminology
|
||
|
|
(BUG-P3S2-004/-005, BUG-P3S3-003, BUG-P3S4-003/-004,
|
||
|
|
BUG-P3S5-003, D-7, D-14).
|
||
|
|
Fixes : BUG-P3S5-002, BUG-P3S6-001 (DOCUMENT ONLY — decided),
|
||
|
|
misc P3 items.
|
||
|
|
Files likely affected : docs only (spec addenda/notes, terminology audit).
|
||
|
|
Tests required : none (documentation family); verify no code change.
|
||
|
|
Dependencies : none.
|
||
|
|
Risk : LOW.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. IMPLEMENTATION ORDER (frozen)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Phase I : F1 EVENT Contract Repair (P1 correctness)
|
||
|
|
Phase II : F2 Zone Contract Repair (P1 correctness)
|
||
|
|
Phase III : F3 Candidate Setup Layer (P1/P2 architecture)
|
||
|
|
Phase IV : F4 MTF / Training Alignment (P2 architecture)
|
||
|
|
Phase V : F5 Display / Explainability (P2)
|
||
|
|
Phase VI : Regression + parity + setup dataset rebuild
|
||
|
|
|
||
|
|
Gate rule : a phase starts only when the previous phase's regression is
|
||
|
|
green. F6 documentation may be interleaved at any phase but
|
||
|
|
must not be the vehicle for code changes.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. TEST-FIRST REQUIREMENT (mandatory for every phase)
|
||
|
|
|
||
|
|
```text
|
||
|
|
SPEC -> TEST -> IMPLEMENTATION -> REGRESSION -> PARITY
|
||
|
|
|
||
|
|
1. SPEC : the repair behavior is defined by the frozen contract section.
|
||
|
|
2. TEST : synthetic tests are written/extended FIRST (P3-S.2/S.3/S.4/S.5/
|
||
|
|
S.8 suites) asserting the contract behavior (expiry, mitigation,
|
||
|
|
gates, identity, lifecycle, one-entry, conflict matrix).
|
||
|
|
3. IMPL : the minimal code change that satisfies the tests.
|
||
|
|
4. REGRESSION : Engine 1/2/3 unit tests re-run; non-target behavior preserved.
|
||
|
|
5. PARITY : ML-path parity re-verified (SB-06 class) when f7-f18 or
|
||
|
|
training semantics are touched.
|
||
|
|
|
||
|
|
Preservation rules:
|
||
|
|
- historical evidence and prior checkpoints are IMMUTABLE;
|
||
|
|
- no direct hot-fix (every repair is a spec'd, tested phase);
|
||
|
|
- no performance-based selection of any constant;
|
||
|
|
- no human verification restart.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. NON-GOALS (unchanged from P3-S.9, re-confirmed)
|
||
|
|
|
||
|
|
```text
|
||
|
|
- No AUC/PF/profit-based selection of any repair or constant.
|
||
|
|
- No human annotation restart.
|
||
|
|
- No ML retraining / parameter optimization.
|
||
|
|
- No restoring legacy v4.x code as-is (semantics extracted only).
|
||
|
|
- No "best of both" grab-bag (brief §21).
|
||
|
|
- No modification of FEATURE_CONTRACT.md, .mq5/.mqh/.py production files
|
||
|
|
by THIS session.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. OPEN NUMERIC PARAMETERS (must be set by contract tests, NOT performance)
|
||
|
|
|
||
|
|
```text
|
||
|
|
W_setup : Candidate Setup post-formation validity (M15 bars) — F3.
|
||
|
|
W_m3 : M3 confirmation lookback (M3 bars) — F3.
|
||
|
|
W_zone_age : optional zone-age cap (default none) — F2.
|
||
|
|
FVG min-gap / OB min-size / zone scope : F2/F6 (P3-S.4 A-1, P3-S.5 A-1/A-3/A-5).
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. ARTIFACTS REFERENCED
|
||
|
|
|
||
|
|
```text
|
||
|
|
Canonical contract : docs/SNIPERGOLD_CANONICAL_SETUP_CONTRACT_v1.md
|
||
|
|
Adjudication : docs/P3_S10_OWNER_ADJUDICATION.md
|
||
|
|
Handover : docs/SESSION_HANDOVER_2026-08-22_P3_S10_OWNER_ADJUDICATION.md
|
||
|
|
P3-S.9 (immutable) : docs/P3_S9_ARCHITECTURE_REVIEW.md,
|
||
|
|
docs/P3_S9_ROOT_CAUSE_MATRIX.md,
|
||
|
|
docs/P3_S9_CONSOLIDATED_REPAIR_PLAN.md
|
||
|
|
P3-S.2..S.8 (immutable) : docs/SMC_*_SPEC_v1.md
|
||
|
|
```
|
||
|
|
|
||
|
|
*End of P3-S.10 repair implementation specification. No production file
|
||
|
|
modified by this session.*
|