522 lines
24 KiB
Markdown
522 lines
24 KiB
Markdown
# P3-S.9 CROSS-PRIMITIVE ARCHITECTURE REVIEW — SNIPERGOLD_ML
|
|
|
|
```text
|
|
Date : 2026-08-22
|
|
Session : P3-S.9 — Consolidated Architecture & Repair-Design Review
|
|
Status : ANALYSIS + ARCHITECTURE DESIGN ONLY. No production change.
|
|
Question : What should SniperGold consider to be ONE valid Candidate Setup,
|
|
how should H4/M30/M15/M3 participate in creating it, and what
|
|
existing code must change to implement that definition
|
|
consistently?
|
|
Method : EVIDENCE -> CONSOLIDATION -> ARCHITECTURE DECISION -> REPAIR
|
|
SPECIFICATION -> (future implementation).
|
|
Human verification : CANCELLED. No AUC/PF/profit used as a criterion.
|
|
Artifacts : docs/P3_S9_ROOT_CAUSE_MATRIX.md (root causes)
|
|
docs/P3_S9_ARCHITECTURE_REVIEW.md (this document)
|
|
docs/P3_S9_CONSOLIDATED_REPAIR_PLAN.md (repair matrix)
|
|
```
|
|
|
|
---
|
|
|
|
## A. CURRENT ARCHITECTURE
|
|
|
|
```text
|
|
Three layers exist today, plus a legacy reference:
|
|
|
|
1. DETECTION (Engine 1 + pure functions in AF_Engine2_Agents.mqh):
|
|
- AFEngine1MTF: closed-bar multi-TF cache (CONFORMING, P3-S.7 S-T).
|
|
- Per-TF detectors: AF_DetectSweep, AF_DetectChoch, AF_FindFVG,
|
|
AF_FindOrderBlock, AF_DetectDisplacement, AF_BuildSwing, AF_RangeStat.
|
|
- All detectors are per-TF pure functions; the SAME algorithm runs on
|
|
every timeframe slot (P3-S.7 D-7).
|
|
|
|
2. AGENT/VOTE (Engine 2):
|
|
- 4 independent agents N(C)/C/M15/E/P on H4/M30/M15/M3, each one slot,
|
|
stateless, fuzzy-weighted (P3-S.7 CONFORMING role labels).
|
|
- E-agent "ZONE + CONFIRMATION = setup" is a fuzzy weight contribution
|
|
(min(zone, max(sweep,choch)) * wSetup=0.30) — NOT an entity
|
|
(P3-S.8 D-9/D-10/D-11).
|
|
- AFAggregator: flat 2-pass weighted vote + 1.5x boost; thresholds
|
|
0.20/0.50; entry/SL/TP on M15 (P3-S.7 S-D).
|
|
|
|
3. DISPLAY (Engine 3): renders M15 structure/zones + D1/W1 levels + biases
|
|
+ aggregated signal; "TRADE SETUP" panel = the vote signal (P3-S.8 D-9).
|
|
|
|
4. LEGACY REFERENCE (v4.3/v4.4/v4.5, NOT in the current runtime):
|
|
- Hard-gated SETUP SEQUENCE: HTF-align(D1/H4/H1) -> sweep -> CHoCH
|
|
(after sweep) -> OB/FVG tap -> not-premium -> score>=threshold,
|
|
SeqWindow=40 (P3-S.8 Definition B; the ONLY real setup state machine
|
|
in the repository).
|
|
```
|
|
|
|
---
|
|
|
|
## B. EVIDENCE FROM P3-S.2..P3-S.8 (consolidated)
|
|
|
|
| Primitive | Detection | Lifecycle | Consumer | Timeframe | Training/Runtime | Setup Role | Known Bug | Ambiguity | Verdict |
|
|
|---|---|---|---|---|---|---|---|---|---|
|
|
| Liquidity Sweep | CONFORMING (P3S2 E-1..E-8) | f7 40-bar OK; in-function PARTIAL (E-9) | f9/f18 stale (E-10) | f7 M15-only; canonical AMBIGUOUS (A-2) | parity feed OK; window doc risk (E-13) | confirmation leg (A) / gate (B) | BUG-P3S2-001 | canonical TF, rejection for f10/f11 | PARTIALLY CONFORMING |
|
|
| CHoCH/MSS | CONFORMING (P3S3 E-1..E-10) | f8 state per contract; consumers stale (E-11) | f9/f18 stale | f8/f9 M15; Engine 2 per-TF | strict-vs-equal pivot drift (BUG-P3S3-002) | confirmation leg (A) / gate (B) | BUG-P3S3-001/-002 | MSS synonym, 2-3 definitions | PARTIALLY CONFORMING |
|
|
| FVG | CONFORMING geometry (P3S4 E-1/E-2/E-4/E-5/E-7) | zone persistent; invalidation not modeled | Engine 2 no mitigation (E-9) | per-TF; canonical AMBIGUOUS (A-3) | N/A by absence | zone leg (A) / gate (B) | BUG-P3S4-001/-002 | min-gap, timestamp, consumer scope | PARTIALLY CONFORMING |
|
|
| Order Block | CONFORMING current definition (P3S5 E-1..E-7) | zone persistent; invalidation not modeled | Engine 2 no mitigation/age (E-9) | per-TF; canonical AMBIGUOUS (A-4) | N/A by absence | zone leg (A) / gate (B) | BUG-P3S5-001; two OB defs (A-2) | strong-move vs structure-break | PARTIALLY CONFORMING |
|
|
| Displacement | CONFORMING (P3S6 E-1..E-7/E-10..E-12) | candle attribute, no stale | CONFORMING (E-14) | per-TF; canonical AMBIGUOUS (A-1) | N/A by absence | confirmation boost (A); not in B | BUG-P3S6-001 (1.5 vs 1.6) | terminology | CONFORMING |
|
|
| MTF | TF assignment/as-of CONFORMING (P3S7 S-T) | stateless agents; no stale | flat vote only; no cross-TF refs (S-R) | Engine 2 H4/M30/M15/M3 vs contract D1/H4/H1 | agent path N/A by absence (D-5) | vote layers; setup needs hierarchy | D-1/D-5/D-6/D-7 | conflict policy, strict hierarchy intent | PARTIALLY CONFORMING |
|
|
| Candidate Setup | E-rule (A) / gate chain (B) (P3S8 CS-1/CS-2) | A: none; B: freshness window | score-only downstream (D-9) | M15 chain; H4/M30 context | no setup layer anywhere (N/A by absence) | the central concept | D-8/D-9/D-10/D-11/D-12 | onset/completion/lifecycle/identity | SPECIFICATION AMBIGUOUS |
|
|
|
|
(Each row cites the corresponding docs/P3_S*_CONFORMANCE.md; historical
|
|
verdicts are NOT rewritten.)
|
|
|
|
---
|
|
|
|
## C. ROOT CAUSES
|
|
|
|
Ten shared root causes were identified and cross-referenced (full matrix in
|
|
docs/P3_S9_ROOT_CAUSE_MATRIX.md):
|
|
|
|
```text
|
|
A. Event/state confusion (Sweep, CHoCH, Candidate Setup)
|
|
B. Zone/mitigation consumer err (FVG, OB, Candidate Setup)
|
|
C. Duplicate event emission (Sweep, CHoCH, Candidate Setup)
|
|
D. Stale state consumption (Sweep, CHoCH, FVG, OB, Candidate Setup)
|
|
E. Multiple incompatible defs (ALL primitives)
|
|
F. Flat score as setup (MTF, Candidate Setup)
|
|
G. Timeframe role drift (MTF, Candidate Setup)
|
|
H. Training/runtime drift (CHoCH, MTF)
|
|
I. Missing setup identity (Candidate Setup)
|
|
J. Missing explicit lifecycle (Sweep, CHoCH, Candidate Setup)
|
|
```
|
|
|
|
Dominant conclusion: the DETECTORS are validated; the CONSUMER/CONTRACT layer
|
|
is where the bugs live. One consumer-contract layer (event/zone/state/
|
|
attribute contracts + setup entity) addresses A, B, C, D, I, J together.
|
|
|
|
---
|
|
|
|
## D. CANONICAL CANDIDATE SETUP PROPOSAL
|
|
|
|
### D.1 Definition (proposed canonical)
|
|
|
|
```text
|
|
A Candidate Setup is a discrete, causally-ordered entity created on the M15
|
|
entry layer when a COMPLETE sequence completes within its validity windows:
|
|
|
|
H4 context (narrative state, direction-compatible)
|
|
AND M30 context (zone state, direction-compatible)
|
|
AND liquidity sweep EVENT (fresh)
|
|
AND CHoCH/MSS EVENT (after the sweep, fresh, same direction)
|
|
AND price inside an UNMITIGATED OB or FVG zone (direction-compatible)
|
|
AND M15 entry condition (the zone membership + confirmation conjunction)
|
|
-> CANDIDATE SETUP (direction = chain direction)
|
|
[M3 micro-confirmation: OPTIONAL — moves the setup to CONFIRMED; its
|
|
absence does NOT invalidate the Candidate Setup.]
|
|
|
|
It is distinguished from (P3-S.8 R-1..R-5 kept):
|
|
market state : H4/M30 context states are INPUTS, not the setup.
|
|
event : sweep/CHoCH are STAGES of the setup, not the setup.
|
|
zone : OB/FVG membership is the ZONE stage, not the setup.
|
|
confirmation : the CHoCH/M15 confirmation is a STAGE, not the setup.
|
|
score : confluence/score may rank setups but does NOT create one.
|
|
signal : an ENTRY SIGNAL may only be emitted for a valid setup
|
|
(resolves D-9).
|
|
trade : execution (lot/SL/TP/result) is outside setup validity.
|
|
```
|
|
|
|
Source & justification:
|
|
```text
|
|
- The chain shape = the project's OWN legacy v4.x institutional gate
|
|
(P3-S.8 Definition B), the only real setup state machine in the repo.
|
|
- The direction-compatible context gates = the brief's causal order
|
|
(Liquidity -> Structure Change -> Zone -> Return -> Confirmation) and
|
|
the project's "top-down to the chart" analysis order (DESIGN.md §8).
|
|
- M3 optional = P3-S.7 S-P evidence ("M3 is NOT mandatory; can only reduce
|
|
support arithmetically") — NOT made mandatory here.
|
|
- The E-rule (Definition A) is retained ONLY as the M15 entry-condition
|
|
predicate inside the chain; it is no longer the whole setup.
|
|
```
|
|
|
|
### D.2 Why Definition A alone is insufficient (evidence)
|
|
|
|
```text
|
|
- No identity (P3-S.8 D-10), no lifecycle (A-5..A-7), no expiry (D-12),
|
|
no dedup (CS-T13), E-vote saturation hides the setup (D-11), score can
|
|
fire without it (D-9). It is a fuzzy contribution, not "ONE setup".
|
|
```
|
|
|
|
### D.3 Why Definition B is not restored verbatim (evidence)
|
|
|
|
```text
|
|
- Its HTF model is D1/H4/H1 (legacy), not the canonical H4/M30/M15/M3.
|
|
- Its score threshold is a signal filter entangled with the ML score (v4.4).
|
|
- It has no M3 layer, no setup identity, no setup lifecycle beyond
|
|
freshness, and no invalidation model.
|
|
- We EXTRACT its semantics (gates + sequence + freshness), we do NOT
|
|
restore its code (P3-S.9 §18).
|
|
```
|
|
|
|
---
|
|
|
|
## E. PRIMITIVE ROLES (proposed canonical)
|
|
|
|
| Primitive | Role (canonical) | Required? | Produces | Notes / evidence |
|
|
|---|---|---|---|---|
|
|
| H4 | CONTEXT (narrative state) | REQUIRED (direction-compatible for setup; per architecture decision, see F) | STATE | overrides P3-S.7 S-N permissiveness for the SETUP layer (signal layer unchanged) |
|
|
| M30 | CONTEXT (zone state) | REQUIRED (direction-compatible) | STATE | overrides P3-S.7 S-C permissiveness for the SETUP layer |
|
|
| Liquidity Sweep | EVENT (stage 1 of chain) | REQUIRED (with validity window) | EVENT | f7 semantics + 40-bar window (P3-S.0/P3-S.2) |
|
|
| CHoCH/MSS | STRUCTURAL CONFIRMATION EVENT (stage 2) | REQUIRED (after sweep, fresh) | EVENT | f8/f9 semantics + 40-bar window (P3-S.3 BUG-001 fix) |
|
|
| FVG | ZONE (stage 3, one of OB/FVG) | ALTERNATIVE (OB OR FVG) | ZONE | mitigation-aware membership (P3-S.4 BUG-001 fix) |
|
|
| OB | ZONE (stage 3, one of OB/FVG) | ALTERNATIVE (OB OR FVG) | ZONE | mitigation-aware membership (P3-S.5 BUG-001 fix) |
|
|
| Displacement | OPTIONAL CONFIRMATION (candle attribute) | OPTIONAL | ATTRIBUTE | boosts M15 confirmation; 1.6x constant (P3-S.6) |
|
|
| M15 | ENTRY CONDITION (the chain carrier) | REQUIRED (the setup layer) | CONDITION | E-rule retained as the entry predicate |
|
|
| M3 | MICRO CONFIRMATION (optional) | OPTIONAL | EVENT/CONDITION | S-P: not mandatory (P3-S.7) |
|
|
|
|
Rules:
|
|
```text
|
|
- No primitive may hold two conflicting roles without explicit justification;
|
|
the table above is the single role map.
|
|
- "NOT USED": none of the nine is unused in the canonical model (M3 is
|
|
optional but used; H4/M30 are context gates).
|
|
- FILTER: premium/discount position is a FILTER on the M15 entry (not in
|
|
premium for buy / not in discount for sell), carried from legacy B.
|
|
- SCORE CONTRIBUTION: confluence may RANK setups (post-creation); it never
|
|
creates one (resolves F/D-9).
|
|
```
|
|
|
|
---
|
|
|
|
## F. MTF HIERARCHY (decision proposal)
|
|
|
|
```text
|
|
Target: TRUE top-down dependencies, not labels.
|
|
|
|
H4 (Narrative STATE) -> direction-compatible context gate
|
|
M30 (Context STATE) -> direction-compatible context gate
|
|
M15 (Entry layer) -> the setup chain lives here
|
|
M3 (Price Action) -> optional micro-confirmation on the M15 setup
|
|
|
|
Answers (canonical proposal):
|
|
Can H4 alone create a setup? NO (context only; a state cannot be a setup)
|
|
Can M30 alone create a setup? NO (context only)
|
|
Can M15 alone create a setup? NO (chain requires H4+M30 context gates;
|
|
the E-rule alone = entry condition,
|
|
not a complete setup)
|
|
Can M3 alone create a setup? NO (micro-confirmation only)
|
|
|
|
Contradiction policy (proposal):
|
|
H4 vs M30 conflict -> NO setup (context gate fails) [B semantics]
|
|
M15 chain vs H4/M30 conflict -> NO setup (gate fails), NOT arithmetic
|
|
M3 vs setup conflict -> setup remains CANDIDATE (M3 optional);
|
|
a CONTRARY M3 only reduces the micro-score
|
|
|
|
Explicit override of P3-S.7 S-N/S-C permissiveness:
|
|
S-N/S-C ("CAN trigger entry alone; NO gate") described the CURRENT vote
|
|
model. The canonical SETUP layer replaces vote-permissiveness with gates;
|
|
the flat vote is retained ONLY as a signal-scoring mechanism on top of
|
|
valid setups (see D.1). This is an architecture DECISION PROPOSAL
|
|
(owner adjudication required — open decision OD-1).
|
|
|
|
Canonical MTF model (proposal):
|
|
Agent/setup path : H4/M30/M15/M3 (P3-S.7 assignments).
|
|
Training/contract: must be re-aligned to the same model in the future
|
|
implementation phase (D-5); the legacy D1/H4/H1 model is deprecated to
|
|
reference status (D-6).
|
|
```
|
|
|
|
---
|
|
|
|
## G. SETUP IDENTITY (design contract — not implemented)
|
|
|
|
```text
|
|
setup_id : monotonic integer, assigned at creation (CANDIDATE state).
|
|
direction : +1 bullish / -1 bearish (chain direction).
|
|
originating liquidity event : {sweep onset timestamp, sweep direction,
|
|
sweep validity window}
|
|
structure event : {choch onset timestamp, choch direction}
|
|
zone : {zone type (OB|FVG), zone id (formation timestamp),
|
|
boundaries, mitigation state at creation}
|
|
entry timeframe : M15 (fixed by construction)
|
|
creation timestamp: M15 bar timestamp when the chain completed
|
|
confirmation timestamp : M3 bar timestamp when M3_CONFIRMED (nullable)
|
|
expiry/invalidation reason : enumerated (EXPIRED|INVALIDATED|CONSUMED|NONE)
|
|
|
|
Uniqueness: two setups differ iff (direction, sweep onset, choch onset,
|
|
zone formation timestamp, creation timestamp) differ. This identity is
|
|
causal — every component is a dated event/zone/state from the chain.
|
|
```
|
|
|
|
---
|
|
|
|
## H. SETUP LIFECYCLE (proposed state machine, derived from evidence)
|
|
|
|
```text
|
|
NONE
|
|
|
|
|
v
|
|
CONTEXT_VALID (H4 + M30 direction-compatible states; as-of <= t)
|
|
|
|
|
v
|
|
LIQUIDITY_TRIGGERED (sweep EVENT fresh; validity window W_sweep)
|
|
|
|
|
v
|
|
STRUCTURE_CONFIRMED (CHoCH EVENT after sweep, fresh; window W_choch)
|
|
|
|
|
v
|
|
ZONE_READY (price inside an UNMITIGATED OB|FVG zone;
|
|
zone mitigation terminates ZONE_READY -> INVALIDATED)
|
|
|
|
|
v
|
|
ENTRY_ARMED (M15 entry condition holds; displacement may boost)
|
|
|
|
|
v
|
|
CANDIDATE_SETUP (COMPLETE — the chain is whole; direction fixed)
|
|
|--(optional M3 alignment)--> M3_CONFIRMED (micro-confirmed)
|
|
|--(setup validity window exceeded)-------> EXPIRED
|
|
|--(zone mitigated / contrary CHoCH / context break) -> INVALIDATED
|
|
|--(entry signal emitted from this setup)--> CONSUMED
|
|
```
|
|
|
|
Transitions (explicit):
|
|
```text
|
|
- Every stage requires the previous stage to be ACTIVE (no skipping).
|
|
- Sweep and CHoCH are EVENTS: they set the stage when they ONSET and the
|
|
stage expires when their validity window lapses.
|
|
- ZONE_READY requires an UNMITIGATED zone at every decision bar (a
|
|
mitigation mid-chain invalidates).
|
|
- ENTRY_ARMED is re-evaluated per M15 closed bar (price may leave the zone;
|
|
the setup is not destroyed by exit, it waits for re-entry while within
|
|
the setup validity window).
|
|
- CANDIDATE_SETUP is the terminal formation state; EXPIRED/INVALIDATED/
|
|
CONSUMED are terminal, non-reversible (no reactivation).
|
|
- A setup may emit AT MOST ONE entry signal (CONSUMED); a NEW setup requires
|
|
a new chain (dedup by identity, G).
|
|
```
|
|
|
|
Evidence basis: stage order = legacy B gates + brief causal order; M3
|
|
optional = S-P; mitigation invalidation = P3-S.4/S.5 mitigation semantics;
|
|
expiry = f7/f8 validity windows (P3-S.0/P3-S.3).
|
|
|
|
---
|
|
|
|
## I. EVENT / ZONE / STATE / ATTRIBUTE CONTRACTS
|
|
|
|
```text
|
|
EVENT (sweep, choch, m3): {timestamp, direction, validity_window,
|
|
superseded_by}. Consumers may read ONLY within [onset,
|
|
onset+window] and only if not superseded (fixes A/C/D).
|
|
ZONE (OB, FVG): {formation_timestamp, direction, top, bottom,
|
|
mitigation_state (UNMITIGATED|MITIGATED), invalidated(bool)}.
|
|
Consumers may read ONLY unmitigated, non-invalidated zones
|
|
(fixes B/D).
|
|
STATE (H4 narrative, M30 context): {value, as_of_bar}. Consumers may
|
|
read the newest closed value only (fixes A).
|
|
ATTRIBUTE (displacement): {value_at_closed_bar, direction}. No persistence,
|
|
no expiry (already conforming, P3-S.6).
|
|
CONDITION (M15 entry): {in_zone, confirmation, as_of_bar} — the E-rule
|
|
output, re-evaluated each closed bar (fixes D-11 by exposing the
|
|
setup predicate explicitly).
|
|
|
|
Consumer contract (the rule that prevents the f7/f9/f18 bug class):
|
|
A consumer of an EVENT must apply its validity window.
|
|
A consumer of a ZONE must apply mitigation/invalidation.
|
|
A consumer of a STATE must use the as-of closed value.
|
|
A consumer of a SETUP must use the setup identity + lifecycle, never the
|
|
raw detector states.
|
|
```
|
|
|
|
---
|
|
|
|
## J. LEGACY vs CURRENT ANALYSIS (P3-S.9 §18)
|
|
|
|
| Aspect | Legacy v4.x (B) | Current Engine 2 (A) | Verdict for canonical |
|
|
|---|---|---|---|
|
|
| Setup gate chain | YES (institutional gate) | NO (fuzzy rule) | REUSE the gate semantics |
|
|
| Causal order sweep->CHoCH->zone | YES (SeqWindow=40) | NO (same-bar OR) | REUSE the ordering |
|
|
| Freshness windows | YES (SeqWindow=40) | NO | REUSE, split per stage |
|
|
| HTF gate | D1/H4/H1 align | none (vote only) | REUSE as H4/M30 context gates |
|
|
| M3 | not used | vote 0.15 | ADD as optional confirmation |
|
|
| Setup identity | none | none | NEW (design contract G) |
|
|
| Lifecycle | freshness only | none | NEW (state machine H) |
|
|
| Score threshold | 70/60 + ML blend | 0.20/0.50 vote | REDESIGN: score ranks, does not create |
|
|
| D1/H4/H1 MTF | yes | H4/M30/M15/M3 | DEPRECATE D1/H4/H1 for the agent path |
|
|
| Detectors | per-TF legacy | per-TF Engine 2 | RETAIN Engine 2 detectors (validated) |
|
|
|
|
Must NOT be copied: the legacy ML-score entanglement, the InpOBStyle
|
|
volume-OB, the D1/H4/H1 model, the "score>=threshold fires" pattern, the
|
|
single SeqWindow reuse for every stage.
|
|
|
|
---
|
|
|
|
## K. ARCHITECTURE OPTIONS
|
|
|
|
### OPTION A — Hard Sequential Setup State Machine
|
|
|
|
```text
|
|
H4 Narrative -> M30 Context -> Liquidity -> CHoCH -> OB/FVG Zone -> M15
|
|
Entry -> [M3 optional] -> ONE CANDIDATE SETUP (state machine, §H)
|
|
```
|
|
|
|
### OPTION B — Hierarchical Candidate + Optional Confirmations
|
|
|
|
```text
|
|
H4 Narrative -> M30 Context -> M15 Candidate Setup
|
|
├── required structural conditions (soft conjunction, same-bar)
|
|
└── optional confirmations -> M3
|
|
(closest to Definition A with explicit required conditions)
|
|
```
|
|
|
|
Evaluation (semantic criteria only — no performance):
|
|
|
|
| Criterion | Option A | Option B | Evidence basis |
|
|
|---|---|---|---|
|
|
| Semantic clarity | HIGH (causal chain) | MEDIUM (soft conjunction) | brief §9 causal order; legacy B precedent |
|
|
| Causality | HIGH (explicit order + windows) | LOW-MED (same-bar) | P3-S.3 A-2, P3-S.8 D-8 |
|
|
| Deduplication | BY CONSTRUCTION (one chain -> one setup) | needs machinery | P3-S.8 CS-T13/D-10 |
|
|
| Setup identity | DERIVABLE (chain timestamps) | needs machinery | P3-S.8 D-10 |
|
|
| Lifecycle clarity | HIGH (explicit states) | LOW (undefined) | P3-S.8 A-5..A-7 |
|
|
| MTF hierarchy | HIGH (true dependencies) | MEDIUM (labels) | P3-S.7 D-1/G |
|
|
| Compatibility with primitives | HIGH (all 9 have a role) | MEDIUM (M15-only core) | §E table |
|
|
| Testability | HIGH (deterministic gates) | MEDIUM | P3-S.8 CS-T01..T25 method |
|
|
| Runtime determinism | HIGH (closed-bar + windows) | HIGH | Engine 1 lock |
|
|
| Training compatibility | MEDIUM (event->outcome mapping) | MEDIUM | P3-S.7 D-5 |
|
|
| Explainability | HIGH | MEDIUM | reason = chain stages |
|
|
| Minimal change to validated parts | MEDIUM (aggregator semantics change) | HIGH (aggregator kept) | detectors kept in both; D-9/D-1 implicate the aggregator |
|
|
|
|
### OPTION C (rejected without justification) — "Best of both" grab-bag
|
|
```text
|
|
Any architecture that mixes vote permissiveness + gates + arbitrary SMC
|
|
theory without per-behavior source/reason/testability is rejected by §21
|
|
of the brief. Options A and B are the two evaluated; no third option is
|
|
introduced "because it backtests better".
|
|
```
|
|
|
|
---
|
|
|
|
## L. RECOMMENDED ARCHITECTURE
|
|
|
|
```text
|
|
RECOMMENDATION: OPTION A — Hard Sequential Setup State Machine, with M3
|
|
OPTIONAL (per S-P evidence) and the flat vote retained ONLY as a
|
|
signal-scoring layer on top of valid setups.
|
|
|
|
Rationale (evidence-based):
|
|
1. Option A matches the project's ONLY real setup implementation (legacy B)
|
|
and the brief's own causal order — it is not an imported theory.
|
|
2. Root causes A (event/state), C (duplicate emission), D (stale), I
|
|
(identity), J (lifecycle) are structurally solved by a state machine
|
|
with per-stage windows and an identity; Option B solves none of them
|
|
without additional machinery.
|
|
3. Root cause F (score as setup) and the P3-S.8 D-9 drift are solved by
|
|
making the setup the gate for entry signals.
|
|
4. Detectors (the validated part, P3-S.2..S.6) are RETAINED unchanged; only
|
|
the consumer/aggregation semantics change.
|
|
5. The MTF hierarchy question (Q: H4/M30/M15/M3 participation) is answered
|
|
with TRUE dependencies (F), satisfying P3-S.7's "hierarchy not
|
|
implemented" finding.
|
|
|
|
EXPLICIT RESERVATIONS (owner adjudication required before implementation):
|
|
OD-1 Override of P3-S.7 S-N/S-C permissiveness (H4/M30 become gates for
|
|
the SETUP layer).
|
|
OD-2 Canonical MTF model for training (H4/M30/M15/M3 vs D1/H4/H1).
|
|
OD-3 Validity-window VALUES (W_sweep, W_choch, W_setup) — the state
|
|
machine is defined; the constants are design decisions.
|
|
OD-4 Conflict policy values (context-compatible thresholds).
|
|
```
|
|
|
|
---
|
|
|
|
## M. CONSEQUENCES
|
|
|
|
```text
|
|
1. Engine 2 aggregator semantics change: a BUY/SELL entry signal is only
|
|
valid when bound to a CANDIDATE_SETUP (or M3_CONFIRMED) entity; the
|
|
flat vote becomes a scoring/ranking function (resolves D-1 partially,
|
|
D-9 fully).
|
|
2. The E-rule is re-scoped to the M15 ENTRY CONDITION inside the chain;
|
|
the "setup" name is no longer a fuzzy weight (resolves D-8/D-11).
|
|
3. f7/f8/f9/f18 consumers get a shared EVENT contract with validity windows
|
|
(resolves BUG-P3S2-001, BUG-P3S3-001, and the D stale class).
|
|
4. Engine-2 FVG/OB consumers get a ZONE contract with mitigation
|
|
(resolves BUG-P3S4-001, BUG-P3S5-001).
|
|
5. Training surface: future feature/target design may move from
|
|
"all bars -> outcome" to "candidate setups -> outcome/meta-label"
|
|
(§17). This is PLANNING ONLY; no ML change now.
|
|
6. Display: "TRADE SETUP" panel must render the setup entity (id, stages,
|
|
lifecycle) rather than the bare vote signal (resolves D-9 display side).
|
|
7. Legacy v4.x remains a reference; its semantics are extracted, its code
|
|
is not restored (D-14 documented).
|
|
```
|
|
|
|
---
|
|
|
|
## N. FUTURE IMPLEMENTATION PHASES (design only — NOT started)
|
|
|
|
```text
|
|
PHASE 1 — Contracts (foundation):
|
|
- Introduce EVENT/ZONE/STATE/ATTRIBUTE contract structs + validity
|
|
helpers; wire the ML-path f7/f8/f9/f18 consumers to the contracts.
|
|
- Tests first: port P3-S.2/S.3 synthetic tests to assert expiry in
|
|
f9/f18.
|
|
|
|
PHASE 2 — Zone contract in Engine 2:
|
|
- AF_FindFVG/AF_FindOrderBlock mitigation-aware (or a consumer-side
|
|
filter); unify formation timing (BUG-P3S4-002) and OB definition
|
|
(BUG-P3S5-002 adjudication).
|
|
- Tests: extend P3-S.4/S.5 suites with mitigation cases.
|
|
|
|
PHASE 3 — Setup entity + state machine (Option A):
|
|
- Setup struct with identity (G), lifecycle (H), per-stage windows;
|
|
M15 chain consumer; H4/M30 context gates.
|
|
- Aggregator re-scoped to signal scoring on valid setups.
|
|
- Tests: P3-S.8 CS-T01..T25 re-expressed against the entity semantics.
|
|
|
|
PHASE 4 — MTF/training alignment:
|
|
- Adjudicate OD-1..OD-4; align FEATURE_CONTRACT/training to the canonical
|
|
MTF model (or document the divergence as intentional).
|
|
|
|
PHASE 5 — Regression + parity:
|
|
- Re-run Engine 1/2/3 unit tests, ML parity (SB-06 class), rebuild the
|
|
setup dataset; preserve historical evidence (immutable checkpoints).
|
|
```
|
|
|
|
*Each phase: tests first, one repair family at a time, historical evidence
|
|
preserved. NO implementation was performed in P3-S.9.*
|
|
|
|
---
|
|
|
|
## OPEN DESIGN DECISIONS (feed the final status)
|
|
|
|
```text
|
|
OD-1 H4/M30 as hard context gates (overrides P3-S.7 S-N/S-C for the SETUP
|
|
layer; the vote remains for signal scoring).
|
|
OD-2 Canonical MTF model (H4/M30/M15/M3 for agent+setup; D1/H4/H1
|
|
deprecated for the agent path).
|
|
OD-3 Validity window values (W_sweep, W_choch, W_setup, zone max age).
|
|
OD-4 Conflict policy (context-compatible thresholds; M3 contrary handling).
|
|
OD-5 OB canonical definition (strong-move vs structure-break) and the
|
|
OB/displacement constant unification (1.5 vs 1.6).
|
|
```
|
|
|
|
---
|
|
|
|
## ARCHITECTURE STATUS
|
|
|
|
```text
|
|
B. DESIGN DECISION REQUIRED
|
|
|
|
The architecture review is COMPLETE and actionable (Option A recommended,
|
|
setup identity + lifecycle + contracts + repair plan defined), but the
|
|
final architecture cannot be locked because:
|
|
- OD-1 overrides a previously verified spec statement (P3-S.7 S-N/S-C);
|
|
- OD-2 conflicts two verified MTF models (D-5) that affect training;
|
|
- OD-3/OD-4 require value/threshold decisions;
|
|
- primitive semantics still conflict (two OB definitions, FVG gap
|
|
filters, sweep canonical TF) per root cause E.
|
|
Per the brief, these must NOT be resolved with performance; they require
|
|
explicit owner/design adjudication before the implementation phase may
|
|
start. Candidate Setup semantics are now EXPLICITLY DEFINED as a proposal
|
|
(D.1) — the ambiguity recorded in P3-S.8 is resolved at the design level;
|
|
what remains is the decision to adopt it.
|
|
```
|
|
|
|
*Provenance: Forge HEAD 533c8c6647a552d01a1a290cb2d0505f94887666 (P3-S.6);
|
|
P3-S.7/P3-S.8 artifacts intact (uncommitted). No production file modified.
|
|
Human verification CANCELLED.*
|