335 lines
20 KiB
Markdown
335 lines
20 KiB
Markdown
|
|
# P3-S.7 MTF ALIGNMENT — FORMAL SPECIFICATION & CODE-CONFORMANCE REPORT
|
||
|
|
|
||
|
|
```text
|
||
|
|
Date : 2026-08-22
|
||
|
|
Session : P3-S.7 — MTF Alignment semantic validation (H4 Narrative -> M30
|
||
|
|
Context -> M15 Entry -> M3 Price Action)
|
||
|
|
Principle : SPECIFICATION FIRST, CODE AUDIT SECOND
|
||
|
|
Scope : SEMANTIC/ARCHITECTURAL conformance ONLY. No AUC/PF/backtest, no
|
||
|
|
ML, no optimization, no production code changes, no human
|
||
|
|
verification (CANCELLED).
|
||
|
|
Question : Does the current implementation genuinely implement the intended
|
||
|
|
H4 Narrative -> M30 Context -> M15 Entry -> M3 Price Action
|
||
|
|
hierarchy with correct timestamp alignment, timeframe semantics,
|
||
|
|
and cross-timeframe consumption?
|
||
|
|
Artifacts : docs/SMC_MTF_ALIGNMENT_SPEC_v1.md (specification)
|
||
|
|
ml/p3/smc_semantic/spec_tests_mtf_alignment.py (+ .json) (tests)
|
||
|
|
ml/p3/smc_semantic/output/spec_tests_mtf_alignment_report.json
|
||
|
|
docs/SESSION_HANDOVER_2026-08-22_P3_S7_MTF_ALIGNMENT.md
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 0. CHECKPOINT & PROVENANCE (session-start verification)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Forge HEAD : 533c8c6647a552d01a1a290cb2d0505f94887666 (P3-S.6) VERIFIED
|
||
|
|
Branch / remote : main == origin/main (533c8c6) VERIFIED
|
||
|
|
Working tree : CLEAN at start VERIFIED
|
||
|
|
P3-S.6 artifacts : spec/conformance/tests/report/handover INTACT VERIFIED
|
||
|
|
HUMAN VERIFICATION : CANCELLED VERIFIED
|
||
|
|
No production change after P3-S.6 : VERIFIED (clean tree, single commit)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## A. SOURCE MATERIAL (Phase A — inventory & reconciliation)
|
||
|
|
|
||
|
|
| # | Source | Location | TF(s) | Semantic role | Inputs | Outputs | State | Consumer |
|
||
|
|
|---|--------|----------|-------|---------------|--------|---------|-------|----------|
|
||
|
|
| 1 | AFEngine1MTF (Register/Refresh/Build) | Include\AlgoForge\AF_Engine1_MTFData.mqh | any explicit TF (H4/M30/M15/M3/D1/W1) | MTF cache + closed-bar lock + anti-freeze | CopyRates per (symbol,TF) | AFBar cache bars[0]=newest closed | lastBars/count/ready | Engine 2 agents, Engine 3, EA |
|
||
|
|
| 2 | AF_E2_TF_S1..S4 | Include\AlgoForge\AF_Defines.mqh:47-50 | H4/M30/M15/M3 | hardcoded agent TF contract | — | macros | — | indicator + unit tests |
|
||
|
|
| 3 | AFAgentNarrative::Compute | AF_Engine2_Agents.mqh:430-490 | H4 (slot S1) | "Which way is the market?" (trend/CHoCH/BOS/sweep/PD) | H4 slot only | AFSignalOut | none | Aggregator |
|
||
|
|
| 4 | AFAgentContext::Compute | AF_Engine2_Agents.mqh:492-575 | M30 (slot S2) | "Which zone is price in?" (OB/FVG/SR/PD) | M30 slot only | AFSignalOut | none | Aggregator |
|
||
|
|
| 5 | AFAgentEntry::Compute | AF_Engine2_Agents.mqh:583-663 | M15 (slot S3) | "Entry confirmation?" (sweep/CHoCH/disp/OB/FVG; ZONE+CONF) | M15 slot only | AFSignalOut | none | Aggregator |
|
||
|
|
| 6 | AFAgentPriceAction::Compute | AF_Engine2_Agents.mqh:665-745 | M3 (slot S4) | "When to open?" (candle patterns) | M3 slot only | AFSignalOut | none | Aggregator |
|
||
|
|
| 7 | AFAggregator::Compute | Include\AlgoForge\AF_Engine2_Aggregator.mqh:77-170 | — | 2-pass weighted vote + 1.5x majority boost (0.30/0.30/0.25/0.15) | 4 AFSignalOut + slotE | AFAggOut (dir/buy/sell/entry/SL/TP) | none | Engine 3 display |
|
||
|
|
| 8 | AFEngine2Signals::Compute | AF_Engine2_Aggregator.mqh:183-199 | — | facade (4 agents + aggregator) | e1 + 4 slots | signals + agg | none | indicator/EA |
|
||
|
|
| 9 | AF_BuildDisplayData | Include\AlgoForge\AF_Engine2_Display.mqh:308-395 | sDisp (chart=M15) + sD1 + sW1 | display context (structure/zones on sDisp; D1/W1 levels; agent biases) | e1 + agent outputs | AFDisplayData | none | Engine 3 render |
|
||
|
|
| 10 | AF_Engine3_Display.mq5 OnCalculate | Indicators\AlgoForge\AF_Engine3_Display.mq5:181-207 | H4/M30/M15/M3 + chart + D1/W1 | driver: refresh + compute on new closed display bar | e1 slots | display objects | g_lastDispBar | chart |
|
||
|
|
| 11 | AlgoForge_Backtest_Baseline.mq5 | Experts\AlgoForge_Backtest_Baseline.mq5 | M15 + D1/H4/H1 | ML runtime (19 features; NO Engine 2) | e1 slots (M15/H1/H4/D1) | g_feat[19], probs | persistent structure state | MLP SniperGold_ML.mqh |
|
||
|
|
| 12 | build_features.py / train_model.py | ml/build_features.py, ml/train_model.py | M15 + D1/H4/H1 | training features (f0-f2 HTF biases; f3-f18 M15) | npz data | F(n,19) | none | MLP training |
|
||
|
|
| 13 | FEATURE_CONTRACT.md | docs/FEATURE_CONTRACT.md | M15 + D1/H4/H1 | authoritative feature contract (E_ea as-of) | — | f0-f18 | — | runtime + training |
|
||
|
|
| 14 | v4.5 legacy | Indicators\Downloads\SniperGold_SMC_ProPlus_v4_5.mq5 | D1/H4/H1 + M15 | legacy per-TF structure + TFBias | CopyRates per TF | TFStruct cache | lastIndex/TF | legacy signal/display |
|
||
|
|
| 15 | v4.3/v4.4 legacy | Indicators\Downloads\SniperGold_SMC_ProPlus_v4_3/4_4.mq5 | chart TF + TFBias(D1/H4/H1) | legacy chart structure + HTF bias | chart rates + 3 HTF | features | state | legacy signal |
|
||
|
|
| 16 | P3-S.2..S.6 specs | docs/SMC_*_SPEC_v1.md | per concept | canonical timeframe statements (see §H) | — | — | — | this audit |
|
||
|
|
| 17 | parity report | ml/parity/RUNTIME_TRAINING_PARITY_REPORT.md | M15 + D1/H4/H1 | ML path parity (SB-06) | — | — | — | this audit |
|
||
|
|
|
||
|
|
**Layer separation:**
|
||
|
|
|
||
|
|
```text
|
||
|
|
INTENDED MTF SEMANTICS : DESIGN.md §8-9 — four role agents (N/C/E/P) on
|
||
|
|
H4/M30/M15/M3, independent, aggregated separately.
|
||
|
|
LEGACY MTF SEMANTICS : v4.5 = D1/H4/H1 structure + M15 chart; v4.3/v4.4 =
|
||
|
|
M15 chart + TFBias(D1/H4/H1). No M30/M3.
|
||
|
|
CURRENT IMPLEMENTATION : Engine 2 agents H4/M30/M15/M3 (same per-TF detector
|
||
|
|
suite + role composition) + flat vote aggregator;
|
||
|
|
ML path M15 + D1/H4/H1.
|
||
|
|
TRAINING SEMANTICS : M15 + D1/H4/H1 (f0-f2). No M30/M3.
|
||
|
|
DISPLAY SEMANTICS : M15 structure/zones + D1/W1 levels + N/C/E/P biases.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## B. FORMAL SPECIFICATION (Phase B)
|
||
|
|
|
||
|
|
Full document: **docs/SMC_MTF_ALIGNMENT_SPEC_v1.md** (PROJECT SEMANTIC
|
||
|
|
SPECIFICATION — not universal SMC truth).
|
||
|
|
|
||
|
|
Spec decision summary (S-N..S-ST):
|
||
|
|
|
||
|
|
```text
|
||
|
|
S-N H4 = Narrative directional VOTE (0.30); can trigger entry alone; NO gate.
|
||
|
|
S-C M30 = Context zone VOTE (0.30); can trigger alone; NO filter on M15.
|
||
|
|
S-E M15 = Entry VOTE (0.25) + internal ZONE+CONFIRMATION; contradiction NOT
|
||
|
|
blocked.
|
||
|
|
S-P M3 = Price Action VOTE (0.15); timing role; not mandatory; no override.
|
||
|
|
S-H Hierarchy = top-down ANALYSIS order; DECISION = flat vote; no REQUIRED
|
||
|
|
stage.
|
||
|
|
S-D Direction = aggregator 2-pass weighted vote; 1.5x majority boost;
|
||
|
|
thresholds bias 0.20 / support 0.50.
|
||
|
|
S-X Conflict policy = NONE (SPECIFICATION AMBIGUOUS; arithmetic resolution).
|
||
|
|
S-T As-of = closed-bar lock per slot; H4/M30/M15/M3_asof(t) <= t; deterministic
|
||
|
|
HTF-close visibility (e.g., H4 04:00 close visible at first decision t>=04:00).
|
||
|
|
S-A Aggregation = SAME-LEVEL VOTES; hierarchical gate NOT implemented.
|
||
|
|
S-R Cross-TF references = NONE (no LTF event reads HTF structure).
|
||
|
|
S-I TF substitution = explicit per-slot contract via macros; runtime identity
|
||
|
|
by convention.
|
||
|
|
S-V Display = M15 structure + D1/W1 levels + biases; H4/M30 structure not drawn.
|
||
|
|
S-PR Parity = ML path (D1/H4/H1/M15) parity-verified; agent path (H4/M30/M15/M3)
|
||
|
|
N/A by absence; FEATURE_CONTRACT MTF MISMATCH (two MTF models).
|
||
|
|
S-XC Cross-concept = 5 concepts across 3 MTF models; no unified canonical TF.
|
||
|
|
S-ST Stale state = agent path stateless; no stale HTF consumption by construction.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## C. CURRENT CODE BEHAVIOR (Phase C — code audit)
|
||
|
|
|
||
|
|
```mql5
|
||
|
|
// AF_Defines.mqh:47-50 — hardcoded agent TFs
|
||
|
|
#define AF_E2_TF_S1 PERIOD_H4 // S1 = Narrative (N)
|
||
|
|
#define AF_E2_TF_S2 PERIOD_M30 // S2 = Context (C)
|
||
|
|
#define AF_E2_TF_S3 PERIOD_M15 // S3 = Entry (E)
|
||
|
|
#define AF_E2_TF_S4 PERIOD_M3 // S4 = Price Action (P)
|
||
|
|
|
||
|
|
// AF_Engine1_MTFData.mqh — closed-bar lock (Build):
|
||
|
|
if(!IsBarClosed(rates[0].time, tf, TimeCurrent())) skip=1; // drop forming bar
|
||
|
|
|
||
|
|
// AF_Engine2_Aggregator.mqh:77-170 — flat weighted vote:
|
||
|
|
baseW[0]=AF_AGG_W_N(0.30); baseW[1]=AF_AGG_W_C(0.30);
|
||
|
|
baseW[2]=AF_AGG_W_E(0.25); baseW[3]=AF_AGG_W_P(0.15);
|
||
|
|
// pass1: bias1 = SUM(baseW*conf*bias)/SUM(baseW*conf); majDir = +-1/0 at 0.05
|
||
|
|
// pass2: boost 1.5 for agents with dir==majDir; buy/sell = weighted sums
|
||
|
|
// final: dir = +1 if bias>=0.20 && buy>=0.50 ; -1 mirror ; else 0
|
||
|
|
```
|
||
|
|
|
||
|
|
Observations:
|
||
|
|
- The four agent classes read exactly one Engine-1 slot each; no agent calls
|
||
|
|
another; no agent reads a second TF. Verified in source (AF_Engine2_Agents.mqh).
|
||
|
|
- All structural detectors (AF_BuildSwing, AF_DetectSweep, AF_DetectChoch,
|
||
|
|
AF_FindOrderBlock, AF_FindFVG, AF_RangeStat) are per-TF pure functions; the
|
||
|
|
same algorithm executes on whichever slot the agent passes.
|
||
|
|
- The aggregator combines four AFSignalOut as a weighted vote with agreement
|
||
|
|
boost. Any single agent (including the 0.15-weight P) can produce a final
|
||
|
|
BUY/SELL when confident (verified arithmetically; unit test T6 asserts the
|
||
|
|
N-only -> BUY case).
|
||
|
|
- Entry/SL/TP levels use slotE (M15) only.
|
||
|
|
- The backtest baseline EA does NOT use Engine 2 at all (0 references) — the
|
||
|
|
ML path is separate (M15 + D1/H4/H1).
|
||
|
|
- Python training has 0 M30/M3 references; the Feature Contract HTF set is
|
||
|
|
D1/H4/H1.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## D. CONFORMANCE MATRIX (Phase C)
|
||
|
|
|
||
|
|
| Requirement | Specification | Code Location | Actual Behavior | Verdict |
|
||
|
|
|---|---|---|---|---|
|
||
|
|
| H4 role | Narrative directional VOTE 0.30; can trigger alone; NO gate (S-N) | AFAgentNarrative::Compute (H4 slot); aggregator baseW[0]=0.30 | H4 reads only its slot; contributes vote; unit test T6: N-only -> BUY | **CONFORMING** |
|
||
|
|
| M30 role | Context zone VOTE 0.30; NO filter on M15 (S-C) | AFAgentContext::Compute (M30 slot); baseW[1]=0.30 | M30 OB/FVG/SR/PD vote; can trigger alone; no direct M15 coupling | **CONFORMING** |
|
||
|
|
| M15 role | Entry VOTE 0.25 + ZONE+CONF internal; contradiction not blocked (S-E) | AFAgentEntry::Compute (M15 slot); baseW[2]=0.25 | ZONE+CONFIRMATION rule internal; M15 never reads H4/M30 | **CONFORMING** |
|
||
|
|
| M3 role | Price Action VOTE 0.15; timing; not mandatory (S-P) | AFAgentPriceAction::Compute (M3 slot); baseW[3]=0.15 | Candle patterns vote; alone can pass 0.20/0.50 thresholds at conf>=~0.57 | **CONFORMING** |
|
||
|
|
| Hierarchy | Top-down ANALYSIS order; DECISION = flat vote; no REQUIRED stage (S-H) | DESIGN.md §8; aggregator | Analysis order H4->M30->M15->M3 is documentation; decision is flat vote | **PARTIALLY CONFORMING** (D-1: decision hierarchy absent; HIERARCHICAL-TO-VOTING DRIFT) |
|
||
|
|
| Direction propagation | 2-pass weighted vote + 1.5x boost; 0.20/0.50 (S-D) | AFAggregator::Compute pass1/pass2 | exact formula match; single-agent permissiveness verified (MTF-T19..T22) | **CONFORMING** |
|
||
|
|
| Conflict policy | NONE defined; arithmetic resolution (S-X) | no conflict branch in aggregator | contradictions resolved by vote; no BLOCK/WAIT/OVERRIDE | **SPECIFICATION AMBIGUOUS** (D-2) |
|
||
|
|
| As-of timestamp | H4/M30/M15/M3_asof(t) <= t; deterministic HTF visibility (S-T) | AFEngine1MTF::Build/IsBarClosed; Refresh on Bars() change | closed-bar lock per slot; forming bar dropped; cache = newest closed bars at t | **CONFORMING** |
|
||
|
|
| Cache alignment | slot <-> TF explicit; macros H4/M30/M15/M3 (S-I) | Register(tf,..); AF_E2_TF_S1..S4 in all consumers | idempotent per (symbol,tf); consumers use the same macros | **CONFORMING** (D-3: runtime TF identity by convention — UNVERIFIABLE per MTF-T11) |
|
||
|
|
| Stale state | agent path stateless; no stale HTF consumption (S-ST) | agents stateless; no cross-TF reads | no HTF state exists to go stale in the agent path | **CONFORMING** |
|
||
|
|
| Aggregation | SAME-LEVEL VOTES; hierarchical gate NOT implemented (S-A) | AFAggregator::Compute | flat weighted vote + boost; entry levels on M15 only | **PARTIALLY CONFORMING** (D-1: drift vs strict-hierarchy reading) |
|
||
|
|
| Display consistency | M15 structure + D1/W1 levels + biases; H4/M30 structure not drawn (S-V) | AF_BuildDisplayData (sDisp/sD1/sW1); AFR_DrawAll | display shows M15 structure/zones + D1/W1 levels + N/C/E/P biases; H4/M30 structures absent | **PARTIALLY CONFORMING** (D-4: V-1..V-4 documented) |
|
||
|
|
| Training/runtime parity | ML path parity-verified; agent path N/A by absence (S-PR) | SB-06 report; build_features.py; EA | ML path (D1/H4/H1/M15) parity OK; agent path (H4/M30/M15/M3) has no training surface; contract TF set differs | **PARTIALLY CONFORMING** (D-5: FEATURE_CONTRACT MTF MISMATCH) |
|
||
|
|
| Cross-concept consistency | 5 concepts / 3 MTF models; no unified canonical TF (S-XC) | P3-S.2..S.6 + this audit | f7/f8/f9 M15-only (contract) vs per-TF Engine 2 vs legacy D1/H4/H1; FVG/OB/Displacement multi-TF | **NON-CONFORMING** (D-6: X-1..X-5 documented) |
|
||
|
|
| Consumer semantics | no LTF->HTF structural consumption; confluence at vote level (S-R) | agent slots single-TF; aggregator | no cross-TF structural reference anywhere | **CONFORMING** (to S-R as defined) |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## E. CONFIRMED FINDINGS (Phase D — DOCUMENT ONLY, no code changes)
|
||
|
|
|
||
|
|
```text
|
||
|
|
D-1 HIERARCHICAL-TO-VOTING DRIFT [MEDIUM]
|
||
|
|
The session brief posits "H4 Narrative -> M30 Context -> M15 Entry -> M3
|
||
|
|
Price Action" as a DECISION chain. The implementation (and DESIGN.md)
|
||
|
|
model it as a FLAT weighted vote of four independent role-labeled agents.
|
||
|
|
H4/M30/M15/M3 each can trigger a final BUY/SELL alone (verified: MTF-T19,
|
||
|
|
MTF-T20, MTF-T22); no stage is REQUIRED; no stage gates another. If the
|
||
|
|
project intends a strict top-down gate, the implementation drifts; per
|
||
|
|
DESIGN.md the vote IS the design. Not adjudicated (A-2).
|
||
|
|
|
||
|
|
D-2 CONFLICT POLICY UNDEFINED [MEDIUM]
|
||
|
|
No BLOCK/WAIT/LOWER-OVERRIDES/HIGHER-OVERRIDES/CONFLICT-STATE policy
|
||
|
|
exists in spec or code. Contradictions (e.g., H4 bull + M15 bear) are
|
||
|
|
resolved arithmetically by the weighted vote; the aligned majority gets
|
||
|
|
a 1.5x boost. A strong H4+M30 bullish pair can produce BUY over a bearish
|
||
|
|
M15+M3 pair (MTF-T21). Not adjudicated (A-1).
|
||
|
|
|
||
|
|
D-3 RUNTIME TF-IDENTITY BY CONVENTION [LOW]
|
||
|
|
Register() is idempotent per (symbol, tf); consumers pass slot indexes
|
||
|
|
without re-checking the TF. A wrong TF injected into a slot would be
|
||
|
|
silently consumed. All production consumers use the same macros, so the
|
||
|
|
risk is latent; the contract is not enforced at consume time (MTF-T11).
|
||
|
|
|
||
|
|
D-4 DISPLAY VS DECISION INCONSISTENCY [LOW]
|
||
|
|
V-1 display shows D1/W1 levels not used by the decision engine;
|
||
|
|
V-2 display does not render H4 structure or M30 zones (top agent TFs);
|
||
|
|
V-3 the drawn structure TF (sDisp = chart) coincides with the E agent TF
|
||
|
|
by default, not by contract;
|
||
|
|
V-4 no stale re-render within a bar (non-repaint gate works).
|
||
|
|
|
||
|
|
D-5 FEATURE_CONTRACT MTF MISMATCH [MEDIUM]
|
||
|
|
FEATURE_CONTRACT / training / ML runtime use D1/H4/H1 + M15; Engine 2
|
||
|
|
uses H4/M30/M15/M3. Two MTF models coexist; the "intended" hierarchy is
|
||
|
|
NOT the trained/parity-verified model. The agent path has no Python
|
||
|
|
counterpart (PARITY = N/A BY ABSENCE, same class as displacement).
|
||
|
|
|
||
|
|
D-6 CROSS-CONCEPT TIMEFRAME INCONSISTENCY [MEDIUM]
|
||
|
|
f7 sweep = M15 only (contract) vs per-TF AF_DetectSweep (Engine 2);
|
||
|
|
f8/f9 CHoCH = M15 only (contract) vs per-TF AF_DetectChoch + display TF
|
||
|
|
(three implementations, P3-S.3);
|
||
|
|
FVG/OB = multiple per-TF implementations (Engine 2 C/E, display, legacy
|
||
|
|
v4.5 D1/H4/H1, legacy chart) with no canonical TF;
|
||
|
|
Displacement = per-TF function, M15-only consumer (P3-S.6 A-1).
|
||
|
|
The three layers (contract D1/H4/H1/M15, Engine 2 H4/M30/M15/M3, legacy
|
||
|
|
D1/H4/H1+M15) use different TF sets for the same concepts.
|
||
|
|
|
||
|
|
D-7 SAME DETECTOR vs DIFFERENT ROLE [INFORMATIONAL]
|
||
|
|
The structural detectors are the same per-TF algorithms; the role
|
||
|
|
differentiation is at the AGENT composition level (which detectors +
|
||
|
|
weights + question) and at the labels. There is NO structural cross-TF
|
||
|
|
relationship (S-R). The model is "role-labeled per-TF votes", not
|
||
|
|
"genuine multi-timeframe structural analysis". MTF ROLE DIVERGENCE
|
||
|
|
recorded: the project assigns roles by agent, but the underlying
|
||
|
|
primitive is per-TF identical logic.
|
||
|
|
|
||
|
|
NO stale-HTf-state bug: the agent path is stateless; the f7/CHoCH/FVG/OB
|
||
|
|
stale-consumer bug class does not apply to the Engine-2 MTF hierarchy.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## F. SEMANTIC AMBIGUITIES
|
||
|
|
|
||
|
|
```text
|
||
|
|
A-1 Conflict policy (D-2) — no BLOCK/WAIT/OVERRIDE policy defined; arithmetic
|
||
|
|
resolution only.
|
||
|
|
A-2 Strict-hierarchy intent (D-1) — brief's decision-chain reading vs
|
||
|
|
DESIGN.md flat-vote design; not adjudicated.
|
||
|
|
A-3 Canonical concept TF (D-6) — three MTF models; no single canonical TF per
|
||
|
|
concept.
|
||
|
|
A-4 Runtime TF-identity enforcement (D-3) — by convention.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## G. VERDICT (Phase E)
|
||
|
|
|
||
|
|
```text
|
||
|
|
PARTIALLY CONFORMING
|
||
|
|
|
||
|
|
H4 role : CONFORMING (narrative vote, 0.30; per spec S-N)
|
||
|
|
M30 role : CONFORMING (context vote, 0.30; per spec S-C)
|
||
|
|
M15 role : CONFORMING (entry vote, 0.25 + ZONE+CONF; per spec S-E)
|
||
|
|
M3 role : CONFORMING (price-action vote, 0.15; per spec S-P)
|
||
|
|
Hierarchy : PARTIALLY CONFORMING (analysis order yes; decision
|
||
|
|
hierarchy absent — D-1)
|
||
|
|
Timestamp semantics : CONFORMING (closed-bar as-of per slot; S-T)
|
||
|
|
Cache alignment : CONFORMING (explicit slot-TF contract; D-3 note)
|
||
|
|
Conflict policy : SPECIFICATION AMBIGUOUS (no policy; D-2)
|
||
|
|
Aggregation : PARTIALLY CONFORMING (flat vote per design; drift
|
||
|
|
vs strict hierarchy — D-1)
|
||
|
|
Consumer semantics : CONFORMING (stateless; no stale; no cross-TF refs
|
||
|
|
per S-R)
|
||
|
|
Cross-concept consistency : NON-CONFORMING (three MTF models; D-6)
|
||
|
|
Runtime/training parity : PARTIALLY CONFORMING (ML path parity-verified;
|
||
|
|
agent path N/A by absence; contract mismatch D-5)
|
||
|
|
Display consistency : PARTIALLY CONFORMING (V-1..V-4; D-4)
|
||
|
|
|
||
|
|
Interpretation:
|
||
|
|
The four role labels ARE implemented with the correct timeframe assignments
|
||
|
|
and the per-slot closed-bar/as-of handling is sound. What is NOT
|
||
|
|
implemented is a genuine multi-timeframe SEMANTIC hierarchy: the model is a
|
||
|
|
flat vote of four independent, role-labeled, same-detector-per-TF agents
|
||
|
|
with no cross-timeframe structural references, no defined conflict policy,
|
||
|
|
and a training/runtime surface that uses a DIFFERENT MTF model
|
||
|
|
(D1/H4/H1/M15). The verdict is conformance to the PROJECT semantic
|
||
|
|
specification (as derived from DESIGN.md + code), NOT an endorsement of the
|
||
|
|
MTF concept as an edge.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## H. CROSS-CONCEPT TIMEFRAME MATRIX (brief §28)
|
||
|
|
|
||
|
|
| Concept | Contract/ML canonical | Engine 2 agent use | Legacy v4.5 | H4 role | M30 role | M15 role | M3 role |
|
||
|
|
|---|---|---|---|---|---|---|---|
|
||
|
|
| Liquidity Sweep | M15 ONLY (f7) | per-TF (N,E); display M15 | per-TF D1/H4/H1 | N input | not in C | E input | not in P |
|
||
|
|
| CHoCH/MSS | M15 ONLY (f8/f9) | per-TF (N,E); display M15 | per-TF D1/H4/H1 | N input | not in C | E input | not in P |
|
||
|
|
| FVG | NOT in contract | per-TF (C 40, E 20); display M15 | chart + D1/H4/H1 | not in N | C zone | E zone | not in P |
|
||
|
|
| OB | NOT in contract | per-TF (C,E); display M15 | chart + D1/H4/H1 | not in N | C zone | E zone | not in P |
|
||
|
|
| Displacement | NOT in contract | M15-only consumer (E); per-slot fn | none | not in N | not in C | E confirmation | not in P |
|
||
|
|
|
||
|
|
Contradictions X-1..X-5 (see D-6) are DOCUMENTED, not resolved.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## I. PREVIOUS BUG-CLASS CHECK (brief §31)
|
||
|
|
|
||
|
|
```text
|
||
|
|
detector correct -> MTF consumer wrong : NOT FOUND in the agent path
|
||
|
|
(agents stateless; no MTF consumer of HTF events). The ML path f9/f18
|
||
|
|
stale-consumer class was already documented (P3-S.0/S.3) and is M15-internal.
|
||
|
|
correct HTF state -> wrong as-of timestamp : NOT FOUND (closed-bar lock;
|
||
|
|
as-of verified by cache construction and MTF-T07/T08/T16).
|
||
|
|
correct timeframe -> wrong cache slot : NOT FOUND in production consumers
|
||
|
|
(single macro source); latent by-convention risk (D-3, MTF-T11).
|
||
|
|
correct hierarchical semantics -> flat aggregation : FOUND (D-1) — the
|
||
|
|
aggregator is flat voting; the strict-hierarchy reading is not implemented.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## J. NEXT GATE
|
||
|
|
|
||
|
|
```text
|
||
|
|
After the MTF Alignment verdict (PARTIALLY CONFORMING):
|
||
|
|
P3-S.8 = Candidate Setup.
|
||
|
|
DO NOT perform consolidated repairs (D-1..D-7 stay open); DO NOT return to ML;
|
||
|
|
DO NOT modify production code.
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## K. CHECKPOINT & PROVENANCE (P3-S.7)
|
||
|
|
|
||
|
|
```text
|
||
|
|
Forge HEAD (session start) : 533c8c6647a552d01a1a290cb2d0505f94887666 (P3-S.6)
|
||
|
|
Branch / remote : main == origin/main
|
||
|
|
Working tree : CLEAN at session start
|
||
|
|
P3-S.6 artifacts : intact
|
||
|
|
FEATURE_CONTRACT : NOT modified
|
||
|
|
No production change : AF_Engine1_MTFData / AF_Engine2_Agents /
|
||
|
|
AF_Engine2_Aggregator / AF_Engine2_Display /
|
||
|
|
AF_Engine3_Render / f7-f18 / FVG / OB / CHoCH /
|
||
|
|
Displacement / ML : NOT touched
|
||
|
|
Human verification : CANCELLED
|
||
|
|
```
|