{
  "metadata": {
    "purpose": "v2_multistrategy_reviews",
    "generated_at": "2026-07-18T04:46:53Z",
    "source": "/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/candidates/candidates_v2_multistrategy.json",
    "review_count": 1155,
    "breakdown": {
      "needs_more_context": 66,
      "confirmed": 400,
      "shadow": 687,
      "rejected": 2
    },
    "isFinalBacktest": false
  },
  "reviews": [
    {
      "candidate_id": "candidate_v2_2026-01-02T12-30-00Z_long_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-02T12:40:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-02T12:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4387.898,
      "stop": 4385.755,
      "target": 4392.182,
      "r": null,
      "entry_touch_time": "2026-01-02T12:40:00Z",
      "outcome_time": "2026-01-02T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-02T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4387.898, stop=4385.755, target=4392.182. Pre-M15 range high=4399.39, low=4375.465.",
      "candidate": {
        "id": "candidate_v2_2026-01-02T12-30-00Z_long_order_block_reclaim",
        "date": "2026-01-02",
        "timestamp": "2026-01-02T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4385.755,
          "ob_high": 4390.04,
          "displacement_high": 4396.785
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-02T13-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-01-02T13:20:00Z; outcome=tp_first",
      "timestamp": "2026-01-02T13:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4385.173,
      "stop": 4402.295,
      "target": 4350.928,
      "r": 2.0,
      "entry_touch_time": "2026-01-02T13:20:00Z",
      "outcome_time": "2026-01-02T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-02T13:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4385.173, stop=4402.295, target=4350.928. Pre-M15 range high=4402.295, low=4373.28.",
      "candidate": {
        "id": "candidate_v2_2026-01-02T13-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-01-02",
        "timestamp": "2026-01-02T13:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4402.295,
          "fvg_low": 4377.625,
          "fvg_high": 4392.72
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-02T13-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Short: entry touched 2026-01-05T00:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-02T13:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4386.5,
      "stop": 4399.72,
      "target": 4360.06,
      "r": -1.0,
      "entry_touch_time": "2026-01-05T00:25:00Z",
      "outcome_time": "2026-01-05T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-02T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4386.5, stop=4399.72, target=4360.06. Pre-M15 range high=4402.295, low=4362.165.",
      "candidate": {
        "id": "candidate_v2_2026-01-02T13-45-00Z_short_breaker_continuation",
        "date": "2026-01-02",
        "timestamp": "2026-01-02T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4402.295,
          "breaker_low": 4373.28,
          "breaker_high": 4399.72,
          "break_low": 4384.745
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-05T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-05T05:40:00Z; outcome=sl_first",
      "timestamp": "2026-01-05T05:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4407.736,
      "stop": 4403.695,
      "target": 4413.798,
      "r": -1.0,
      "entry_touch_time": "2026-01-05T05:40:00Z",
      "outcome_time": "2026-01-05T05:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-05T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4407.736, stop=4403.695, target=4413.798. Pre-M15 range high=4421.605, low=4384.905.",
      "candidate": {
        "id": "candidate_v2_2026-01-05T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-05",
        "timestamp": "2026-01-05T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4403.695,
          "impulse_high": 4412.88,
          "fib50": 4408.2875,
          "fib62": 4407.1853
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-05T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-05T06:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-05T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4418.114,
      "stop": 4411.565,
      "target": 4427.938,
      "r": 1.5,
      "entry_touch_time": "2026-01-05T06:35:00Z",
      "outcome_time": "2026-01-05T08:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-05T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4418.114, stop=4411.565, target=4427.938. Pre-M15 range high=4426.52, low=4388.575.",
      "candidate": {
        "id": "candidate_v2_2026-01-05T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-05",
        "timestamp": "2026-01-05T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4411.565,
          "impulse_high": 4426.45,
          "fib50": 4419.0075,
          "fib62": 4417.221299999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-06T02:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-06T02:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4454.075,
      "stop": 4448.72,
      "target": 4462.107,
      "r": 1.5,
      "entry_touch_time": "2026-01-06T02:35:00Z",
      "outcome_time": "2026-01-06T03:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4454.075, stop=4448.72, target=4462.107. Pre-M15 range high=4461.385, low=4427.635.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4448.72,
          "impulse_high": 4460.89,
          "fib50": 4454.805,
          "fib62": 4453.3446
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T05-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-01-06T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-06T05:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4465.818,
      "stop": 4474.265,
      "target": 4448.922,
      "r": -1.0,
      "entry_touch_time": "2026-01-06T05:35:00Z",
      "outcome_time": "2026-01-06T08:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4465.818, stop=4474.265, target=4448.922. Pre-M15 range high=4474.265, low=4427.635.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T05-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4474.265,
          "fvg_low": 4464.83,
          "fvg_high": 4466.805
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-06T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-01-06T08:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4465.475,
      "stop": 4457.37,
      "target": 4477.632,
      "r": -1.0,
      "entry_touch_time": "2026-01-06T08:40:00Z",
      "outcome_time": "2026-01-06T09:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4465.475, stop=4457.37, target=4477.632. Pre-M15 range high=4475.79, low=4449.51.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4457.37,
          "impulse_high": 4475.79,
          "fib50": 4466.58,
          "fib62": 4464.3696
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-06T11:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-06T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4461.297,
      "stop": 4468.46,
      "target": 4450.552,
      "r": -1.0,
      "entry_touch_time": "2026-01-06T11:35:00Z",
      "outcome_time": "2026-01-06T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4461.297, stop=4468.46, target=4450.552. Pre-M15 range high=4475.79, low=4442.665.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4452.18,
          "impulse_high": 4468.46,
          "fib50": 4460.32,
          "fib62": 4462.2736
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T13-45-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-01-06T13:50:00Z; outcome=sl_first",
      "timestamp": "2026-01-06T13:45:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4464.363,
      "stop": 4453.965,
      "target": 4485.158,
      "r": -1.0,
      "entry_touch_time": "2026-01-06T13:50:00Z",
      "outcome_time": "2026-01-06T13:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4464.363, stop=4453.965, target=4485.158. Pre-M15 range high=4470.63, low=4442.665.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T13-45-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4453.965,
          "fvg_low": 4462.295,
          "fvg_high": 4466.43
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-06T15:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-06T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4476.012,
      "stop": 4465.195,
      "target": 4492.238,
      "r": -1.0,
      "entry_touch_time": "2026-01-06T15:15:00Z",
      "outcome_time": "2026-01-06T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4476.012, stop=4465.195, target=4492.238. Pre-M15 range high=4491.205, low=4448.52.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4465.195,
          "impulse_high": 4489.78,
          "fib50": 4477.487499999999,
          "fib62": 4474.5373
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-06T15-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-06T15:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-06T15:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4468.88,
      "stop": 4464.405,
      "target": 4477.83,
      "r": -1.0,
      "entry_touch_time": "2026-01-06T15:35:00Z",
      "outcome_time": "2026-01-06T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-06T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4468.88, stop=4464.405, target=4477.83. Pre-M15 range high=4491.205, low=4448.78.",
      "candidate": {
        "id": "candidate_v2_2026-01-06T15-30-00Z_long_order_block_reclaim",
        "date": "2026-01-06",
        "timestamp": "2026-01-06T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4464.405,
          "ob_high": 4473.355,
          "displacement_high": 4483.205
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-07T00:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4489.596,
      "stop": 4483.88,
      "target": 4498.169,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T00:35:00Z",
      "outcome_time": "2026-01-07T00:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4489.596, stop=4483.88, target=4498.169. Pre-M15 range high=4500.56, low=4477.49.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4483.88,
          "impulse_high": 4496.87,
          "fib50": 4490.375,
          "fib62": 4488.8162
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T01-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-07T02:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T01:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4474.955,
      "stop": 4479.115,
      "target": 4466.635,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T02:10:00Z",
      "outcome_time": "2026-01-07T03:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T01:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4474.955, stop=4479.115, target=4466.635. Pre-M15 range high=4500.56, low=4460.985.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T01-45-00Z_short_order_block_reclaim",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4470.795,
          "ob_high": 4479.115,
          "displacement_low": 4464.9
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-07T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4470.499,
      "stop": 4477.975,
      "target": 4459.286,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T02:05:00Z",
      "outcome_time": "2026-01-07T02:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4470.499, stop=4477.975, target=4459.286. Pre-M15 range high=4500.56, low=4459.71.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4460.985,
          "impulse_high": 4477.975,
          "fib50": 4469.48,
          "fib62": 4471.5188
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T04-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-07T04:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T04:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4466.708,
      "stop": 4459.71,
      "target": 4477.206,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T04:20:00Z",
      "outcome_time": "2026-01-07T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T04:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4466.708, stop=4459.71, target=4477.206. Pre-M15 range high=4500.56, low=4459.71.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T04-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T04:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4459.71,
          "impulse_high": 4475.615,
          "fib50": 4467.6625,
          "fib62": 4465.7539
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-07T06:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4457.943,
      "stop": 4469.495,
      "target": 4440.615,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T06:05:00Z",
      "outcome_time": "2026-01-07T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4457.943, stop=4469.495, target=4440.615. Pre-M15 range high=4480.52, low=4443.24.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4443.24,
          "impulse_high": 4469.495,
          "fib50": 4456.3675,
          "fib62": 4459.5181
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-07T07:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T07:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4449.445,
      "stop": 4455.73,
      "target": 4440.016,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T07:05:00Z",
      "outcome_time": "2026-01-07T07:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4449.445, stop=4455.73, target=4440.016. Pre-M15 range high=4480.52, low=4441.445.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4441.445,
          "impulse_high": 4455.73,
          "fib50": 4448.5875,
          "fib62": 4450.3017
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T08-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-07T08:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T08:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4467.938,
      "stop": 4470.55,
      "target": 4462.712,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T08:15:00Z",
      "outcome_time": "2026-01-07T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4467.938, stop=4470.55, target=4462.712. Pre-M15 range high=4480.52, low=4441.445.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T08-00-00Z_short_order_block_reclaim",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4465.325,
          "ob_high": 4470.55,
          "displacement_low": 4448.685
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-07T12:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-07T12:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4454.281,
      "stop": 4460.3,
      "target": 4445.252,
      "r": 1.5,
      "entry_touch_time": "2026-01-07T12:35:00Z",
      "outcome_time": "2026-01-07T12:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4454.281, stop=4460.3, target=4445.252. Pre-M15 range high=4474.875, low=4439.45.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4446.62,
          "impulse_high": 4460.3,
          "fib50": 4453.46,
          "fib62": 4455.1016
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-07T15-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-07T15:30:00Z; outcome=sl_first",
      "timestamp": "2026-01-07T15:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4447.005,
      "stop": 4453.15,
      "target": 4434.715,
      "r": -1.0,
      "entry_touch_time": "2026-01-07T15:30:00Z",
      "outcome_time": "2026-01-07T16:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-07T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4447.005, stop=4453.15, target=4434.715. Pre-M15 range high=4467.745, low=4423.385.",
      "candidate": {
        "id": "candidate_v2_2026-01-07T15-15-00Z_short_order_block_reclaim",
        "date": "2026-01-07",
        "timestamp": "2026-01-07T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4440.86,
          "ob_high": 4453.15,
          "displacement_low": 4426.61
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T00-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-01-08T00:20:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T00:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4460.688,
      "stop": 4466.485,
      "target": 4449.093,
      "r": 2.0,
      "entry_touch_time": "2026-01-08T00:20:00Z",
      "outcome_time": "2026-01-08T00:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4460.688, stop=4466.485, target=4449.093. Pre-M15 range high=4466.485, low=4445.545.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T00-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4466.485,
          "fvg_low": 4458.82,
          "fvg_high": 4462.555
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-08T16:30:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4460.959,
      "stop": 4466.485,
      "target": 4452.669,
      "r": 1.5,
      "entry_touch_time": "2026-01-08T16:30:00Z",
      "outcome_time": "2026-01-08T16:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4460.959, stop=4466.485, target=4452.669. Pre-M15 range high=4466.485, low=4444.22.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4453.925,
          "impulse_high": 4466.485,
          "fib50": 4460.205,
          "fib62": 4461.7122
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T01-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-01-08T01:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-08T01:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4453.505,
      "stop": 4444.22,
      "target": 4472.075,
      "r": -1.0,
      "entry_touch_time": "2026-01-08T01:05:00Z",
      "outcome_time": "2026-01-08T01:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4453.505, stop=4444.22, target=4472.075. Pre-M15 range high=4466.485, low=4444.22.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T01-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4444.22,
          "fvg_low": 4452.515,
          "fvg_high": 4454.495
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-08T03:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4445.608,
      "stop": 4449.61,
      "target": 4439.606,
      "r": 1.5,
      "entry_touch_time": "2026-01-08T03:10:00Z",
      "outcome_time": "2026-01-08T03:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4445.608, stop=4449.61, target=4439.606. Pre-M15 range high=4466.485, low=4433.735.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4440.515,
          "impulse_high": 4449.61,
          "fib50": 4445.0625,
          "fib62": 4446.1539
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T04-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-08T07:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T04:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4438.622,
      "stop": 4440.55,
      "target": 4434.767,
      "r": 2.0,
      "entry_touch_time": "2026-01-08T07:05:00Z",
      "outcome_time": "2026-01-08T07:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4438.622, stop=4440.55, target=4434.767. Pre-M15 range high=4466.485, low=4432.12.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T04-30-00Z_short_order_block_reclaim",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4436.695,
          "ob_high": 4440.55,
          "displacement_low": 4436.54
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-08T08:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T08:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4433.175,
      "stop": 4436.915,
      "target": 4427.565,
      "r": 1.5,
      "entry_touch_time": "2026-01-08T08:10:00Z",
      "outcome_time": "2026-01-08T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4433.175, stop=4436.915, target=4427.565. Pre-M15 range high=4446.565, low=4415.405.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4428.415,
          "impulse_high": 4436.915,
          "fib50": 4432.665,
          "fib62": 4433.685
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-08T11:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T10:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4428.548,
      "stop": 4432.88,
      "target": 4422.051,
      "r": 1.5,
      "entry_touch_time": "2026-01-08T11:10:00Z",
      "outcome_time": "2026-01-08T12:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4428.548, stop=4432.88, target=4422.051. Pre-M15 range high=4439.765, low=4415.745.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4423.035,
          "impulse_high": 4432.88,
          "fib50": 4427.9575,
          "fib62": 4429.1389
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T13-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-08T13:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-08T13:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4423.635,
      "stop": 4417.405,
      "target": 4436.095,
      "r": 2.0,
      "entry_touch_time": "2026-01-08T13:55:00Z",
      "outcome_time": "2026-01-08T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4423.635, stop=4417.405, target=4436.095. Pre-M15 range high=4436.205, low=4407.835.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T13-30-00Z_long_order_block_reclaim",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4417.405,
          "ob_high": 4429.865,
          "displacement_high": 4436.205
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-08T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-08T14:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-08T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4429.537,
      "stop": 4435.84,
      "target": 4420.083,
      "r": -1.0,
      "entry_touch_time": "2026-01-08T14:25:00Z",
      "outcome_time": "2026-01-08T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-08T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4429.537, stop=4435.84, target=4420.083. Pre-M15 range high=4436.205, low=4407.835.",
      "candidate": {
        "id": "candidate_v2_2026-01-08T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-08",
        "timestamp": "2026-01-08T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4421.515,
          "impulse_high": 4435.84,
          "fib50": 4428.6775,
          "fib62": 4430.3965
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-09T00:50:00Z; outcome=tp_first",
      "timestamp": "2026-01-09T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4461.384,
      "stop": 4451.565,
      "target": 4476.111,
      "r": 1.5,
      "entry_touch_time": "2026-01-09T00:50:00Z",
      "outcome_time": "2026-01-09T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4461.384, stop=4451.565, target=4476.111. Pre-M15 range high=4479.735, low=4444.715.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4451.565,
          "impulse_high": 4473.88,
          "fib50": 4462.7225,
          "fib62": 4460.0446999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T01-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-09T01:50:00Z; outcome=sl_first",
      "timestamp": "2026-01-09T01:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4466.368,
      "stop": 4468.82,
      "target": 4461.463,
      "r": -1.0,
      "entry_touch_time": "2026-01-09T01:50:00Z",
      "outcome_time": "2026-01-09T01:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4466.368, stop=4468.82, target=4461.463. Pre-M15 range high=4479.735, low=4444.715.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T01-00-00Z_short_order_block_reclaim",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4463.915,
          "ob_high": 4468.82,
          "displacement_low": 4460.085
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-09T03:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-09T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4462.312,
      "stop": 4456.22,
      "target": 4471.449,
      "r": 1.5,
      "entry_touch_time": "2026-01-09T03:10:00Z",
      "outcome_time": "2026-01-09T05:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4462.312, stop=4456.22, target=4471.449. Pre-M15 range high=4479.735, low=4452.92.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4456.22,
          "impulse_high": 4470.065,
          "fib50": 4463.1425,
          "fib62": 4461.4811
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T07-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-09T08:00:00Z; outcome=tp_first",
      "timestamp": "2026-01-09T07:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4468.57,
      "stop": 4466.1,
      "target": 4473.51,
      "r": 2.0,
      "entry_touch_time": "2026-01-09T08:00:00Z",
      "outcome_time": "2026-01-09T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4468.57, stop=4466.1, target=4473.51. Pre-M15 range high=4477.545, low=4458.295.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T07-00-00Z_long_order_block_reclaim",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4466.1,
          "ob_high": 4471.04,
          "displacement_high": 4473.715
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-09T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-09T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4472.562,
      "stop": 4468.525,
      "target": 4478.618,
      "r": -1.0,
      "entry_touch_time": "2026-01-09T09:35:00Z",
      "outcome_time": "2026-01-09T10:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4472.562, stop=4468.525, target=4478.618. Pre-M15 range high=4477.7, low=4458.295.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4468.525,
          "impulse_high": 4477.7,
          "fib50": 4473.112499999999,
          "fib62": 4472.0115
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-09T12:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-09T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4472.128,
      "stop": 4468.775,
      "target": 4477.157,
      "r": -1.0,
      "entry_touch_time": "2026-01-09T12:20:00Z",
      "outcome_time": "2026-01-09T12:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4472.128, stop=4468.775, target=4477.157. Pre-M15 range high=4480.615, low=4464.2.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4468.775,
          "impulse_high": 4476.395,
          "fib50": 4472.585,
          "fib62": 4471.6706
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T13-00-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-01-09T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-09T13:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4473.835,
      "stop": 4475.495,
      "target": 4470.515,
      "r": 2.0,
      "entry_touch_time": "2026-01-09T13:05:00Z",
      "outcome_time": "2026-01-09T13:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4473.835, stop=4475.495, target=4470.515. Pre-M15 range high=4480.615, low=4461.045.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T13-00-00Z_short_breaker_continuation",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4480.615,
          "breaker_low": 4472.175,
          "breaker_high": 4475.495,
          "break_low": 4467.12
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-09T13:25:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-09T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4474.682,
      "stop": 4480.615,
      "target": 4465.782,
      "r": null,
      "entry_touch_time": "2026-01-09T13:25:00Z",
      "outcome_time": "2026-01-09T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4474.682, stop=4480.615, target=4465.782. Pre-M15 range high=4480.615, low=4461.045.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4467.13,
          "impulse_high": 4480.615,
          "fib50": 4473.8724999999995,
          "fib62": 4475.4907
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T13-15-00Z_long_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-09T13:20:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-09T13:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4470.667,
      "stop": 4469.315,
      "target": 4473.372,
      "r": null,
      "entry_touch_time": "2026-01-09T13:20:00Z",
      "outcome_time": "2026-01-09T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T13:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4470.667, stop=4469.315, target=4473.372. Pre-M15 range high=4480.615, low=4461.045.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T13-15-00Z_long_order_block_reclaim",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T13:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4469.315,
          "ob_high": 4472.02,
          "displacement_high": 4476.395
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-09T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4462.03,
          "impulse_high": 4474.93,
          "fib50": 4468.48,
          "fib62": 4466.932
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4467.706,
      "stop": 4462.03,
      "target": 4476.220000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T13-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-09T13-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4458.935,
          "fvg_low": 4474.93,
          "fvg_high": 4478.86
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4476.895,
      "stop": 4458.935,
      "target": 4512.8150000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T14-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-01-09T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-09T14:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4482.823,
      "stop": 4473.51,
      "target": 4501.448,
      "r": 2.0,
      "entry_touch_time": "2026-01-09T14:05:00Z",
      "outcome_time": "2026-01-09T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4482.823, stop=4473.51, target=4501.448. Pre-M15 range high=4496.71, low=4458.935.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T14-00-00Z_long_breaker_continuation",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4458.935,
          "breaker_low": 4473.51,
          "breaker_high": 4492.135,
          "break_high": 4480.615
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-09T14:40:00Z; outcome=sl_first",
      "timestamp": "2026-01-09T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4487.655,
      "stop": 4480.54,
      "target": 4498.327,
      "r": -1.0,
      "entry_touch_time": "2026-01-09T14:40:00Z",
      "outcome_time": "2026-01-09T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4487.655, stop=4480.54, target=4498.327. Pre-M15 range high=4498.425, low=4458.935.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4480.54,
          "impulse_high": 4496.71,
          "fib50": 4488.625,
          "fib62": 4486.6846
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-09T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-09T17:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-09T16:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4499.382,
      "stop": 4490.1,
      "target": 4513.305,
      "r": -1.0,
      "entry_touch_time": "2026-01-09T17:45:00Z",
      "outcome_time": "2026-01-09T17:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-09T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4499.382, stop=4490.1, target=4513.305. Pre-M15 range high=4517.25, low=4458.935.",
      "candidate": {
        "id": "candidate_v2_2026-01-09T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-09",
        "timestamp": "2026-01-09T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4490.1,
          "impulse_high": 4511.195,
          "fib50": 4500.6475,
          "fib62": 4498.1161
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-12T01:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-12T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4579.698,
      "stop": 4562.415,
      "target": 4605.623,
      "r": -1.0,
      "entry_touch_time": "2026-01-12T01:10:00Z",
      "outcome_time": "2026-01-12T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4579.698, stop=4562.415, target=4605.623. Pre-M15 range high=4601.695, low=4495.945.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4562.415,
          "impulse_high": 4601.695,
          "fib50": 4582.055,
          "fib62": 4577.3414
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-12T09:55:00Z; outcome=sl_first",
      "timestamp": "2026-01-12T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4589.196,
      "stop": 4581.925,
      "target": 4600.102,
      "r": -1.0,
      "entry_touch_time": "2026-01-12T09:55:00Z",
      "outcome_time": "2026-01-12T11:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4589.196, stop=4581.925, target=4600.102. Pre-M15 range high=4599.475, low=4566.145.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4581.925,
          "impulse_high": 4598.45,
          "fib50": 4590.1875,
          "fib62": 4588.2045
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-12T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-12T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4598.626,
      "stop": 4588.715,
      "target": 4613.493,
      "r": -1.0,
      "entry_touch_time": "2026-01-12T14:05:00Z",
      "outcome_time": "2026-01-12T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4598.626, stop=4588.715, target=4613.493. Pre-M15 range high=4620.38, low=4578.485.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4588.715,
          "impulse_high": 4611.24,
          "fib50": 4599.9775,
          "fib62": 4597.2745
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T14-15-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-01-12T14:25:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-12T14:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4586.122,
      "stop": 4585.365,
      "target": 4587.637,
      "r": null,
      "entry_touch_time": "2026-01-12T14:25:00Z",
      "outcome_time": "2026-01-12T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4586.122, stop=4585.365, target=4587.637. Pre-M15 range high=4620.38, low=4578.485.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T14-15-00Z_long_breaker_continuation",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4579.07,
          "breaker_low": 4585.365,
          "breaker_high": 4586.88,
          "break_high": 4599.475
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T14-30-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-01-12T20:45:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-12T14:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4592.135,
      "stop": 4592.12,
      "target": 4592.165,
      "r": null,
      "entry_touch_time": "2026-01-12T20:45:00Z",
      "outcome_time": "2026-01-12T20:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4592.135, stop=4592.12, target=4592.165. Pre-M15 range high=4620.38, low=4578.485.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T14-30-00Z_long_breaker_continuation",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4581.75,
          "breaker_low": 4592.12,
          "breaker_high": 4592.15,
          "break_high": 4599.475
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-12T16:40:00Z; outcome=sl_first",
      "timestamp": "2026-01-12T16:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4610.894,
      "stop": 4601.905,
      "target": 4624.378,
      "r": -1.0,
      "entry_touch_time": "2026-01-12T16:40:00Z",
      "outcome_time": "2026-01-12T18:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4610.894, stop=4601.905, target=4624.378. Pre-M15 range high=4630.19, low=4578.485.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4601.905,
          "impulse_high": 4622.335,
          "fib50": 4612.12,
          "fib62": 4609.6684
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-12T23:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-12T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4599.021,
      "stop": 4604.805,
      "target": 4590.345,
      "r": 1.5,
      "entry_touch_time": "2026-01-12T23:55:00Z",
      "outcome_time": "2026-01-13T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4599.021, stop=4604.805, target=4590.345. Pre-M15 range high=4620.655, low=4578.095.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4591.66,
          "impulse_high": 4604.805,
          "fib50": 4598.2325,
          "fib62": 4599.8099
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-12T23-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-12T23:50:00Z; outcome=sl_first",
      "timestamp": "2026-01-12T23:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4593.738,
      "stop": 4598.06,
      "target": 4585.092,
      "r": -1.0,
      "entry_touch_time": "2026-01-12T23:50:00Z",
      "outcome_time": "2026-01-12T23:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-12T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4593.738, stop=4598.06, target=4585.092. Pre-M15 range high=4620.655, low=4578.095.",
      "candidate": {
        "id": "candidate_v2_2026-01-12T23-30-00Z_short_order_block_reclaim",
        "date": "2026-01-12",
        "timestamp": "2026-01-12T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4589.415,
          "ob_high": 4598.06,
          "displacement_low": 4578.095
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-13T00:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-13T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4591.107,
      "stop": 4584.12,
      "target": 4601.588,
      "r": -1.0,
      "entry_touch_time": "2026-01-13T00:20:00Z",
      "outcome_time": "2026-01-13T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4591.107, stop=4584.12, target=4601.588. Pre-M15 range high=4618.985, low=4578.095.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4584.12,
          "impulse_high": 4600.0,
          "fib50": 4592.0599999999995,
          "fib62": 4590.1544
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T05-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-13T05:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-13T05:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4595.148,
      "stop": 4591.775,
      "target": 4601.893,
      "r": -1.0,
      "entry_touch_time": "2026-01-13T05:45:00Z",
      "outcome_time": "2026-01-13T05:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4595.148, stop=4591.775, target=4601.893. Pre-M15 range high=4602.195, low=4575.585.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T05-30-00Z_long_order_block_reclaim",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4591.775,
          "ob_high": 4598.52,
          "displacement_high": 4601.54
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T07-30-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-01-13T08:30:00Z; outcome=tp_first",
      "timestamp": "2026-01-13T07:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "London",
      "entry": 4593.575,
      "stop": 4601.385,
      "target": 4577.955,
      "r": 2.0,
      "entry_touch_time": "2026-01-13T08:30:00Z",
      "outcome_time": "2026-01-13T12:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4593.575, stop=4601.385, target=4577.955. Pre-M15 range high=4602.195, low=4573.605.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T07-30-00Z_short_breaker_continuation",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4602.195,
          "breaker_low": 4585.765,
          "breaker_high": 4601.385,
          "break_low": 4581.96
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T08-30-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-01-13T08:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-13T08:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "London",
      "entry": 4594.432,
      "stop": 4594.495,
      "target": 4594.307,
      "r": null,
      "entry_touch_time": "2026-01-13T08:35:00Z",
      "outcome_time": "2026-01-13T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4594.432, stop=4594.495, target=4594.307. Pre-M15 range high=4602.195, low=4573.605.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T08-30-00Z_short_breaker_continuation",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4601.54,
          "breaker_low": 4594.37,
          "breaker_high": 4594.495,
          "break_low": 4581.96
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-13T08:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-13T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4594.966,
      "stop": 4602.195,
      "target": 4584.122,
      "r": 1.5,
      "entry_touch_time": "2026-01-13T08:35:00Z",
      "outcome_time": "2026-01-13T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4594.966, stop=4602.195, target=4584.122. Pre-M15 range high=4602.195, low=4573.605.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4585.765,
          "impulse_high": 4602.195,
          "fib50": 4593.98,
          "fib62": 4595.9516
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-13T12:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-13T12:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4584.34,
      "stop": 4589.38,
      "target": 4576.779,
      "r": -1.0,
      "entry_touch_time": "2026-01-13T12:35:00Z",
      "outcome_time": "2026-01-13T12:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4584.34, stop=4589.38, target=4576.779. Pre-M15 range high=4597.095, low=4577.54.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4577.925,
          "impulse_high": 4589.38,
          "fib50": 4583.6525,
          "fib62": 4585.0271
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-13T15:15:00Z; outcome=tp_first",
      "timestamp": "2026-01-13T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4609.771,
      "stop": 4600.925,
      "target": 4623.041,
      "r": 1.5,
      "entry_touch_time": "2026-01-13T15:15:00Z",
      "outcome_time": "2026-01-13T15:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4609.771, stop=4600.925, target=4623.041. Pre-M15 range high=4621.03, low=4577.925.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4600.925,
          "impulse_high": 4621.03,
          "fib50": 4610.9775,
          "fib62": 4608.5649
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-13T15:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-13T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4621.96,
      "stop": 4611.8,
      "target": 4637.199,
      "r": -1.0,
      "entry_touch_time": "2026-01-13T15:05:00Z",
      "outcome_time": "2026-01-13T15:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4621.96, stop=4611.8, target=4637.199. Pre-M15 range high=4634.89, low=4577.925.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4611.8,
          "impulse_high": 4634.89,
          "fib50": 4623.345,
          "fib62": 4620.5742
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-13T15-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-13T15:20:00Z; outcome=tp_first",
      "timestamp": "2026-01-13T15:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4603.025,
      "stop": 4599.505,
      "target": 4610.065,
      "r": 2.0,
      "entry_touch_time": "2026-01-13T15:20:00Z",
      "outcome_time": "2026-01-13T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-13T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4603.025, stop=4599.505, target=4610.065. Pre-M15 range high=4634.89, low=4577.925.",
      "candidate": {
        "id": "candidate_v2_2026-01-13T15-15-00Z_long_order_block_reclaim",
        "date": "2026-01-13",
        "timestamp": "2026-01-13T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4599.505,
          "ob_high": 4606.545,
          "displacement_high": 4620.605
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-14T05:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T05:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4621.751,
      "stop": 4614.99,
      "target": 4631.891,
      "r": 1.5,
      "entry_touch_time": "2026-01-14T05:55:00Z",
      "outcome_time": "2026-01-14T05:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4621.751, stop=4614.99, target=4631.891. Pre-M15 range high=4639.89, low=4604.73.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4614.99,
          "impulse_high": 4630.355,
          "fib50": 4622.6725,
          "fib62": 4620.8287
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T05-45-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-14T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T05:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4617.64,
      "stop": 4613.51,
      "target": 4625.9,
      "r": 2.0,
      "entry_touch_time": "2026-01-14T14:35:00Z",
      "outcome_time": "2026-01-14T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T05:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4617.64, stop=4613.51, target=4625.9. Pre-M15 range high=4639.89, low=4606.18.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T05-45-00Z_long_order_block_reclaim",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T05:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4613.51,
          "ob_high": 4621.77,
          "displacement_high": 4625.69
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T06-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-14T06:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T06:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4635.837,
      "stop": 4639.89,
      "target": 4627.732,
      "r": 2.0,
      "entry_touch_time": "2026-01-14T06:55:00Z",
      "outcome_time": "2026-01-14T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4635.837, stop=4639.89, target=4627.732. Pre-M15 range high=4639.89, low=4611.99.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T06-00-00Z_short_order_block_reclaim",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4631.785,
          "ob_high": 4639.89,
          "displacement_low": 4617.945
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-14T08:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4625.967,
      "stop": 4618.575,
      "target": 4637.055,
      "r": 1.5,
      "entry_touch_time": "2026-01-14T08:05:00Z",
      "outcome_time": "2026-01-14T08:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4625.967, stop=4618.575, target=4637.055. Pre-M15 range high=4639.89, low=4613.51.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4618.575,
          "impulse_high": 4635.375,
          "fib50": 4626.975,
          "fib62": 4624.959
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-14T15:15:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4622.893,
      "stop": 4635.365,
      "target": 4604.186,
      "r": 1.5,
      "entry_touch_time": "2026-01-14T15:15:00Z",
      "outcome_time": "2026-01-14T17:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4622.893, stop=4635.365, target=4604.186. Pre-M15 range high=4641.985, low=4599.5.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4607.02,
          "impulse_high": 4635.365,
          "fib50": 4621.1925,
          "fib62": 4624.5939
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T21-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-14T21:30:00Z; outcome=sl_first",
      "timestamp": "2026-01-14T21:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4620.526,
      "stop": 4612.905,
      "target": 4631.957,
      "r": -1.0,
      "entry_touch_time": "2026-01-14T21:30:00Z",
      "outcome_time": "2026-01-14T23:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T21:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4620.526, stop=4612.905, target=4631.957. Pre-M15 range high=4642.97, low=4601.22.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T21-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T21:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4612.905,
          "impulse_high": 4630.225,
          "fib50": 4621.5650000000005,
          "fib62": 4619.4866
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T21-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-14T21-15-00Z_short_order_block_reclaim",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T21:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4625.825,
          "ob_high": 4633.12,
          "displacement_low": 4624.47
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4629.4725,
      "stop": 4633.12,
      "target": 4622.1775,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T21-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-14T21:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T21:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4627.706,
      "stop": 4633.05,
      "target": 4619.691,
      "r": 1.5,
      "entry_touch_time": "2026-01-14T21:55:00Z",
      "outcome_time": "2026-01-14T23:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T21:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4627.706, stop=4633.05, target=4619.691. Pre-M15 range high=4642.97, low=4601.22.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T21-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T21:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4620.905,
          "impulse_high": 4633.05,
          "fib50": 4626.9775,
          "fib62": 4628.4349
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-14T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-14T23:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-14T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4615.94,
      "stop": 4624.17,
      "target": 4603.595,
      "r": 1.5,
      "entry_touch_time": "2026-01-14T23:55:00Z",
      "outcome_time": "2026-01-15T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-14T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4615.94, stop=4624.17, target=4603.595. Pre-M15 range high=4642.97, low=4602.88.",
      "candidate": {
        "id": "candidate_v2_2026-01-14T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-14",
        "timestamp": "2026-01-14T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4605.465,
          "impulse_high": 4624.17,
          "fib50": 4614.8175,
          "fib62": 4617.0621
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-15T02:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-15T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4608.529,
      "stop": 4617.54,
      "target": 4595.012,
      "r": 1.5,
      "entry_touch_time": "2026-01-15T02:05:00Z",
      "outcome_time": "2026-01-15T03:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4608.529, stop=4617.54, target=4595.012. Pre-M15 range high=4638.025, low=4583.565.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4597.06,
          "impulse_high": 4617.54,
          "fib50": 4607.3,
          "fib62": 4609.7576
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-15T03:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-15T03:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4594.194,
      "stop": 4604.38,
      "target": 4578.915,
      "r": -1.0,
      "entry_touch_time": "2026-01-15T03:35:00Z",
      "outcome_time": "2026-01-15T06:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4594.194, stop=4604.38, target=4578.915. Pre-M15 range high=4629.195, low=4581.065.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4581.23,
          "impulse_high": 4604.38,
          "fib50": 4592.805,
          "fib62": 4595.583
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T11-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-15T12:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-15T11:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4613.575,
      "stop": 4611.28,
      "target": 4618.165,
      "r": -1.0,
      "entry_touch_time": "2026-01-15T12:45:00Z",
      "outcome_time": "2026-01-15T13:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T11:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4613.575, stop=4611.28, target=4618.165. Pre-M15 range high=4623.11, low=4597.865.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T11-45-00Z_long_order_block_reclaim",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T11:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4611.28,
          "ob_high": 4615.87,
          "displacement_high": 4619.455
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-15T12:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-15T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4615.051,
      "stop": 4610.655,
      "target": 4621.644,
      "r": -1.0,
      "entry_touch_time": "2026-01-15T12:10:00Z",
      "outcome_time": "2026-01-15T13:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4615.051, stop=4610.655, target=4621.644. Pre-M15 range high=4623.11, low=4597.865.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4610.655,
          "impulse_high": 4620.645,
          "fib50": 4615.65,
          "fib62": 4614.4512
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T12-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-15T12:25:00Z; outcome=tp_first",
      "timestamp": "2026-01-15T12:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4618.132,
      "stop": 4620.56,
      "target": 4613.277,
      "r": 2.0,
      "entry_touch_time": "2026-01-15T12:25:00Z",
      "outcome_time": "2026-01-15T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4618.132, stop=4620.56, target=4613.277. Pre-M15 range high=4623.11, low=4597.865.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T12-15-00Z_short_order_block_reclaim",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4615.705,
          "ob_high": 4620.56,
          "displacement_low": 4614.69
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-15T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-15T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4595.253,
      "stop": 4605.96,
      "target": 4579.191,
      "r": -1.0,
      "entry_touch_time": "2026-01-15T14:05:00Z",
      "outcome_time": "2026-01-15T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4595.253, stop=4605.96, target=4579.191. Pre-M15 range high=4623.11, low=4581.625.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4581.625,
          "impulse_high": 4605.96,
          "fib50": 4593.7925,
          "fib62": 4596.7127
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-15T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-15T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4610.252,
      "stop": 4616.32,
      "target": 4601.151,
      "r": 1.5,
      "entry_touch_time": "2026-01-15T14:35:00Z",
      "outcome_time": "2026-01-15T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4610.252, stop=4616.32, target=4601.151. Pre-M15 range high=4623.11, low=4581.625.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4602.53,
          "impulse_high": 4616.32,
          "fib50": 4609.424999999999,
          "fib62": 4611.0797999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T20-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-15T21:00:00Z; outcome=sl_first",
      "timestamp": "2026-01-15T20:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4609.51,
      "stop": 4616.425,
      "target": 4599.139,
      "r": -1.0,
      "entry_touch_time": "2026-01-15T21:00:00Z",
      "outcome_time": "2026-01-15T21:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4609.51, stop=4616.425, target=4599.139. Pre-M15 range high=4625.015, low=4600.71.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T20-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4600.71,
          "impulse_high": 4616.425,
          "fib50": 4608.5675,
          "fib62": 4610.4533
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-15T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-15T23:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-15T23:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4609.452,
      "stop": 4604.5,
      "target": 4616.88,
      "r": -1.0,
      "entry_touch_time": "2026-01-15T23:25:00Z",
      "outcome_time": "2026-01-16T00:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-15T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4609.452, stop=4604.5, target=4616.88. Pre-M15 range high=4621.72, low=4600.71.",
      "candidate": {
        "id": "candidate_v2_2026-01-15T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-15",
        "timestamp": "2026-01-15T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4604.5,
          "impulse_high": 4615.755,
          "fib50": 4610.1275000000005,
          "fib62": 4608.7769
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-16T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-16T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4603.935,
      "stop": 4608.19,
      "target": 4597.553,
      "r": 1.5,
      "entry_touch_time": "2026-01-16T01:05:00Z",
      "outcome_time": "2026-01-16T01:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4603.935, stop=4608.19, target=4597.553. Pre-M15 range high=4620.975, low=4593.78.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4598.52,
          "impulse_high": 4608.19,
          "fib50": 4603.355,
          "fib62": 4604.5154
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T01-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-16T01:40:00Z; outcome=tp_first",
      "timestamp": "2026-01-16T01:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4608.362,
      "stop": 4611.32,
      "target": 4602.447,
      "r": 2.0,
      "entry_touch_time": "2026-01-16T01:40:00Z",
      "outcome_time": "2026-01-16T01:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4608.362, stop=4611.32, target=4602.447. Pre-M15 range high=4620.975, low=4593.78.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T01-15-00Z_short_order_block_reclaim",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4605.405,
          "ob_high": 4611.32,
          "displacement_low": 4601.155
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-16T06:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-16T06:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4605.247,
      "stop": 4596.55,
      "target": 4618.292,
      "r": -1.0,
      "entry_touch_time": "2026-01-16T06:10:00Z",
      "outcome_time": "2026-01-16T06:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4605.247, stop=4596.55, target=4618.292. Pre-M15 range high=4616.315, low=4591.37.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4596.55,
          "impulse_high": 4616.315,
          "fib50": 4606.4325,
          "fib62": 4604.0607
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-16T07:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-16T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4608.54,
      "stop": 4612.41,
      "target": 4602.735,
      "r": 1.5,
      "entry_touch_time": "2026-01-16T07:10:00Z",
      "outcome_time": "2026-01-16T07:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4608.54, stop=4612.41, target=4602.735. Pre-M15 range high=4616.315, low=4591.37.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4603.615,
          "impulse_high": 4612.41,
          "fib50": 4608.0125,
          "fib62": 4609.0679
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-16T07:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-16T07:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4601.963,
      "stop": 4608.145,
      "target": 4592.69,
      "r": -1.0,
      "entry_touch_time": "2026-01-16T07:05:00Z",
      "outcome_time": "2026-01-16T07:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4601.963, stop=4608.145, target=4592.69. Pre-M15 range high=4616.315, low=4591.37.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4594.095,
          "impulse_high": 4608.145,
          "fib50": 4601.120000000001,
          "fib62": 4602.8060000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-16T07:40:00Z; outcome=tp_first",
      "timestamp": "2026-01-16T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4603.666,
      "stop": 4596.925,
      "target": 4613.777,
      "r": 1.5,
      "entry_touch_time": "2026-01-16T07:40:00Z",
      "outcome_time": "2026-01-16T11:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4603.666, stop=4596.925, target=4613.777. Pre-M15 range high=4616.315, low=4591.96.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4596.925,
          "impulse_high": 4612.245,
          "fib50": 4604.585,
          "fib62": 4602.7466
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-16T12:30:00Z; outcome=sl_first",
      "timestamp": "2026-01-16T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4604.346,
      "stop": 4598.6,
      "target": 4612.966,
      "r": -1.0,
      "entry_touch_time": "2026-01-16T12:30:00Z",
      "outcome_time": "2026-01-16T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4604.346, stop=4598.6, target=4612.966. Pre-M15 range high=4616.33, low=4598.6.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4598.6,
          "impulse_high": 4611.66,
          "fib50": 4605.13,
          "fib62": 4603.562800000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T12-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-01-16T12:30:00Z; outcome=sl_first",
      "timestamp": "2026-01-16T12:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4603.53,
      "stop": 4600.28,
      "target": 4610.03,
      "r": -1.0,
      "entry_touch_time": "2026-01-16T12:30:00Z",
      "outcome_time": "2026-01-16T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4603.53, stop=4600.28, target=4610.03. Pre-M15 range high=4616.33, low=4598.6.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T12-15-00Z_long_breaker_continuation",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4598.6,
          "breaker_low": 4600.28,
          "breaker_high": 4606.78,
          "break_high": 4611.215
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-16T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-16T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4595.606,
      "stop": 4605.77,
      "target": 4580.36,
      "r": -1.0,
      "entry_touch_time": "2026-01-16T13:35:00Z",
      "outcome_time": "2026-01-16T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4595.606, stop=4605.77, target=4580.36. Pre-M15 range high=4616.33, low=4582.67.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4582.67,
          "impulse_high": 4605.77,
          "fib50": 4594.22,
          "fib62": 4596.992
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T14-15-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-01-16T14:30:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-16T14:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4606.057,
      "stop": 4606.59,
      "target": 4604.992,
      "r": null,
      "entry_touch_time": "2026-01-16T14:30:00Z",
      "outcome_time": "2026-01-16T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4606.057, stop=4606.59, target=4604.992. Pre-M15 range high=4616.33, low=4582.67.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T14-15-00Z_short_breaker_continuation",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4611.66,
          "breaker_low": 4605.525,
          "breaker_high": 4606.59,
          "break_low": 4598.6
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T14-30-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-01-16T14:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-16T14:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4610.493,
      "stop": 4611.28,
      "target": 4608.918,
      "r": null,
      "entry_touch_time": "2026-01-16T14:35:00Z",
      "outcome_time": "2026-01-16T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4610.493, stop=4611.28, target=4608.918. Pre-M15 range high=4616.33, low=4582.67.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T14-30-00Z_short_breaker_continuation",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4616.005,
          "breaker_low": 4609.705,
          "breaker_high": 4611.28,
          "break_low": 4598.6
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T14-45-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-01-16T14:50:00Z; outcome=tp_first",
      "timestamp": "2026-01-16T14:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4614.02,
      "stop": 4615.605,
      "target": 4610.85,
      "r": 2.0,
      "entry_touch_time": "2026-01-16T14:50:00Z",
      "outcome_time": "2026-01-16T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T14:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4614.02, stop=4615.605, target=4610.85. Pre-M15 range high=4616.33, low=4582.67.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T14-45-00Z_short_breaker_continuation",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T14:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4616.33,
          "breaker_low": 4612.435,
          "breaker_high": 4615.605,
          "break_low": 4598.6
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-16T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-16T16:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-16T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4595.831,
      "stop": 4620.39,
      "target": 4558.993,
      "r": -1.0,
      "entry_touch_time": "2026-01-16T16:25:00Z",
      "outcome_time": "2026-01-18T23:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-16T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4595.831, stop=4620.39, target=4558.993. Pre-M15 range high=4620.39, low=4536.49.",
      "candidate": {
        "id": "candidate_v2_2026-01-16T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-16",
        "timestamp": "2026-01-16T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4564.575,
          "impulse_high": 4620.39,
          "fib50": 4592.4825,
          "fib62": 4599.1803
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-18T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-19T00:15:00Z; outcome=unresolved",
      "timestamp": "2026-01-18T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4662.901,
      "stop": 4646.135,
      "target": 4688.051,
      "r": null,
      "entry_touch_time": "2026-01-19T00:15:00Z",
      "outcome_time": null,
      "htf_context": "H1/M30 context mechanically checked around 2026-01-18T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4662.901, stop=4646.135, target=4688.051. Pre-M15 range high=4690.94, low=4578.9.",
      "candidate": {
        "id": "candidate_v2_2026-01-18T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-18",
        "timestamp": "2026-01-18T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4646.135,
          "impulse_high": 4684.24,
          "fib50": 4665.1875,
          "fib62": 4660.6149000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-19T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-19T07:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-19T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4673.913,
      "stop": 4669.83,
      "target": 4680.038,
      "r": -1.0,
      "entry_touch_time": "2026-01-19T07:10:00Z",
      "outcome_time": "2026-01-19T07:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-19T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4673.913, stop=4669.83, target=4680.038. Pre-M15 range high=4679.11, low=4655.06.",
      "candidate": {
        "id": "candidate_v2_2026-01-19T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-19",
        "timestamp": "2026-01-19T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4669.83,
          "impulse_high": 4679.11,
          "fib50": 4674.469999999999,
          "fib62": 4673.3564
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-19T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-19T13:50:00Z; outcome=tp_first",
      "timestamp": "2026-01-19T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4665.509,
      "stop": 4660.185,
      "target": 4673.495,
      "r": 1.5,
      "entry_touch_time": "2026-01-19T13:50:00Z",
      "outcome_time": "2026-01-19T15:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-19T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4665.509, stop=4660.185, target=4673.495. Pre-M15 range high=4673.85, low=4659.73.",
      "candidate": {
        "id": "candidate_v2_2026-01-19T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-19",
        "timestamp": "2026-01-19T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4660.185,
          "impulse_high": 4672.285,
          "fib50": 4666.235000000001,
          "fib62": 4664.783
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-19T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-19T16:15:00Z; outcome=tp_first",
      "timestamp": "2026-01-19T16:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4670.495,
      "stop": 4665.95,
      "target": 4677.313,
      "r": 1.5,
      "entry_touch_time": "2026-01-19T16:15:00Z",
      "outcome_time": "2026-01-19T17:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-19T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4670.495, stop=4665.95, target=4677.313. Pre-M15 range high=4676.28, low=4659.73.",
      "candidate": {
        "id": "candidate_v2_2026-01-19T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-19",
        "timestamp": "2026-01-19T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4665.95,
          "impulse_high": 4676.28,
          "fib50": 4671.115,
          "fib62": 4669.8754
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-19T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-19T18:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-19T18:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4674.492,
      "stop": 4670.99,
      "target": 4679.746,
      "r": 1.5,
      "entry_touch_time": "2026-01-19T18:05:00Z",
      "outcome_time": "2026-01-19T18:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-19T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4674.492, stop=4670.99, target=4679.746. Pre-M15 range high=4678.95, low=4661.55.",
      "candidate": {
        "id": "candidate_v2_2026-01-19T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-19",
        "timestamp": "2026-01-19T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4670.99,
          "impulse_high": 4678.95,
          "fib50": 4674.969999999999,
          "fib62": 4674.0148
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-19T23-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-20T01:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-19T23:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4669.773,
      "stop": 4671.71,
      "target": 4665.898,
      "r": -1.0,
      "entry_touch_time": "2026-01-20T01:05:00Z",
      "outcome_time": "2026-01-20T01:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-19T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4669.773, stop=4671.71, target=4665.898. Pre-M15 range high=4680.405, low=4664.35.",
      "candidate": {
        "id": "candidate_v2_2026-01-19T23-30-00Z_short_order_block_reclaim",
        "date": "2026-01-19",
        "timestamp": "2026-01-19T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4667.835,
          "ob_high": 4671.71,
          "displacement_low": 4664.76
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-20T00:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-20T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4664.253,
      "stop": 4668.07,
      "target": 4658.528,
      "r": -1.0,
      "entry_touch_time": "2026-01-20T00:35:00Z",
      "outcome_time": "2026-01-20T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4664.253, stop=4668.07, target=4658.528. Pre-M15 range high=4680.405, low=4659.395.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4659.395,
          "impulse_high": 4668.07,
          "fib50": 4663.7325,
          "fib62": 4664.7735
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T00-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-20T00:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T00:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4666.083,
      "stop": 4668.065,
      "target": 4662.118,
      "r": 2.0,
      "entry_touch_time": "2026-01-20T00:35:00Z",
      "outcome_time": "2026-01-20T00:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4666.083, stop=4668.065, target=4662.118. Pre-M15 range high=4680.405, low=4659.395.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T00-30-00Z_short_order_block_reclaim",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4664.1,
          "ob_high": 4668.065,
          "displacement_low": 4659.395
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-20T01:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4666.0,
      "stop": 4659.915,
      "target": 4675.128,
      "r": 1.5,
      "entry_touch_time": "2026-01-20T01:55:00Z",
      "outcome_time": "2026-01-20T03:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4666.0, stop=4659.915, target=4675.128. Pre-M15 range high=4680.405, low=4659.395.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4659.915,
          "impulse_high": 4673.745,
          "fib50": 4666.83,
          "fib62": 4665.1704
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T08-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-20T08:25:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T08:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4718.89,
      "stop": 4714.935,
      "target": 4726.8,
      "r": 2.0,
      "entry_touch_time": "2026-01-20T08:25:00Z",
      "outcome_time": "2026-01-20T08:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T08:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4718.89, stop=4714.935, target=4726.8. Pre-M15 range high=4725.76, low=4672.825.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T08-15-00Z_long_order_block_reclaim",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T08:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4714.935,
          "ob_high": 4722.845,
          "displacement_high": 4725.76
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-20T09:15:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T09:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4722.949,
      "stop": 4716.065,
      "target": 4733.275,
      "r": 1.5,
      "entry_touch_time": "2026-01-20T09:15:00Z",
      "outcome_time": "2026-01-20T09:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4722.949, stop=4716.065, target=4733.275. Pre-M15 range high=4731.795, low=4680.53.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4716.065,
          "impulse_high": 4731.71,
          "fib50": 4723.8875,
          "fib62": 4722.0100999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T10-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-20T10:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-20T10:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4728.005,
      "stop": 4724.215,
      "target": 4735.585,
      "r": -1.0,
      "entry_touch_time": "2026-01-20T10:25:00Z",
      "outcome_time": "2026-01-20T10:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4728.005, stop=4724.215, target=4735.585. Pre-M15 range high=4737.57, low=4694.315.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T10-00-00Z_long_order_block_reclaim",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4724.215,
          "ob_high": 4731.795,
          "displacement_high": 4734.025
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-20T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-20T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4730.092,
      "stop": 4725.87,
      "target": 4736.425,
      "r": -1.0,
      "entry_touch_time": "2026-01-20T12:05:00Z",
      "outcome_time": "2026-01-20T12:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4730.092, stop=4725.87, target=4736.425. Pre-M15 range high=4737.57, low=4714.87.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4725.87,
          "impulse_high": 4735.465,
          "fib50": 4730.6675,
          "fib62": 4729.5161
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T13-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-20T13:30:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T13:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4727.807,
      "stop": 4729.615,
      "target": 4724.193,
      "r": 2.0,
      "entry_touch_time": "2026-01-20T13:30:00Z",
      "outcome_time": "2026-01-20T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T13:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4727.807, stop=4729.615, target=4724.193. Pre-M15 range high=4737.57, low=4716.005.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T13-15-00Z_short_order_block_reclaim",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T13:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4726.0,
          "ob_high": 4729.615,
          "displacement_low": 4722.15
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T13-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-01-20T13:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T13:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4726.903,
      "stop": 4715.035,
      "target": 4750.638,
      "r": 2.0,
      "entry_touch_time": "2026-01-20T13:35:00Z",
      "outcome_time": "2026-01-20T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4726.903, stop=4715.035, target=4750.638. Pre-M15 range high=4737.57, low=4715.035.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T13-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4715.035,
          "fvg_low": 4726.405,
          "fvg_high": 4727.4
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T14-30-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-01-20T15:25:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T14:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4724.952,
      "stop": 4719.38,
      "target": 4736.097,
      "r": 2.0,
      "entry_touch_time": "2026-01-20T15:25:00Z",
      "outcome_time": "2026-01-20T15:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4724.952, stop=4719.38, target=4736.097. Pre-M15 range high=4751.37, low=4715.035.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T14-30-00Z_long_breaker_continuation",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4715.035,
          "breaker_low": 4719.38,
          "breaker_high": 4730.525,
          "break_high": 4735.465
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-20T14:40:00Z; outcome=sl_first",
      "timestamp": "2026-01-20T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4740.501,
      "stop": 4732.37,
      "target": 4752.698,
      "r": -1.0,
      "entry_touch_time": "2026-01-20T14:40:00Z",
      "outcome_time": "2026-01-20T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4740.501, stop=4732.37, target=4752.698. Pre-M15 range high=4751.37, low=4715.035.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4732.37,
          "impulse_high": 4750.85,
          "fib50": 4741.610000000001,
          "fib62": 4739.3924
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-20T15:25:00Z; outcome=tp_first",
      "timestamp": "2026-01-20T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4725.377,
      "stop": 4715.035,
      "target": 4740.89,
      "r": 1.5,
      "entry_touch_time": "2026-01-20T15:25:00Z",
      "outcome_time": "2026-01-20T16:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4725.377, stop=4715.035, target=4740.89. Pre-M15 range high=4751.37, low=4715.035.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4715.035,
          "impulse_high": 4738.54,
          "fib50": 4726.7875,
          "fib62": 4723.966899999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T15-15-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-01-20T15:25:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-20T15:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4724.972,
      "stop": 4723.54,
      "target": 4727.837,
      "r": null,
      "entry_touch_time": "2026-01-20T15:25:00Z",
      "outcome_time": "2026-01-20T15:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4724.972, stop=4723.54, target=4727.837. Pre-M15 range high=4751.37, low=4715.035.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T15-15-00Z_long_breaker_continuation",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4716.005,
          "breaker_low": 4723.54,
          "breaker_high": 4726.405,
          "break_high": 4735.465
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-20T15-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-20T16:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-20T15:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4743.67,
      "stop": 4748.765,
      "target": 4733.48,
      "r": -1.0,
      "entry_touch_time": "2026-01-20T16:15:00Z",
      "outcome_time": "2026-01-20T16:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-20T15:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4743.67, stop=4748.765, target=4733.48. Pre-M15 range high=4751.37, low=4715.035.",
      "candidate": {
        "id": "candidate_v2_2026-01-20T15-45-00Z_short_order_block_reclaim",
        "date": "2026-01-20",
        "timestamp": "2026-01-20T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4738.575,
          "ob_high": 4748.765,
          "displacement_low": 4722.51
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T09-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-21T13:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-21T09:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4879.358,
      "stop": 4888.545,
      "target": 4860.983,
      "r": 2.0,
      "entry_touch_time": "2026-01-21T13:55:00Z",
      "outcome_time": "2026-01-21T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T09:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4879.358, stop=4888.545, target=4860.983. Pre-M15 range high=4888.545, low=4832.725.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T09-15-00Z_short_order_block_reclaim",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T09:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4870.17,
          "ob_high": 4888.545,
          "displacement_low": 4859.105
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-21T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-01-21T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4863.142,
      "stop": 4852.43,
      "target": 4879.209,
      "r": 1.5,
      "entry_touch_time": "2026-01-21T09:45:00Z",
      "outcome_time": "2026-01-21T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4863.142, stop=4852.43, target=4879.209. Pre-M15 range high=4888.545, low=4832.725.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4852.43,
          "impulse_high": 4876.775,
          "fib50": 4864.6025,
          "fib62": 4861.6811
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T13-45-00Z_long_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-21T14:00:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-21T13:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4866.64,
      "stop": 4861.71,
      "target": 4876.5,
      "r": null,
      "entry_touch_time": "2026-01-21T14:00:00Z",
      "outcome_time": "2026-01-21T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4866.64, stop=4861.71, target=4876.5. Pre-M15 range high=4880.415, low=4852.43.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T13-45-00Z_long_order_block_reclaim",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4861.71,
          "ob_high": 4871.57,
          "displacement_high": 4879.155
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-21T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4866.87,
          "impulse_high": 4880.415,
          "fib50": 4873.6425,
          "fib62": 4872.0171
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4872.8297999999995,
      "stop": 4866.87,
      "target": 4881.7694999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T14-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-01-21T14:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-21T14:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4867.37,
      "stop": 4880.935,
      "target": 4840.24,
      "r": 2.0,
      "entry_touch_time": "2026-01-21T14:10:00Z",
      "outcome_time": "2026-01-21T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4867.37, stop=4880.935, target=4840.24. Pre-M15 range high=4880.935, low=4839.395.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T14-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4880.935,
          "fvg_low": 4864.695,
          "fvg_high": 4870.045
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T14-30-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-01-21T14:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-21T14:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4867.495,
      "stop": 4868.12,
      "target": 4866.245,
      "r": null,
      "entry_touch_time": "2026-01-21T14:35:00Z",
      "outcome_time": "2026-01-21T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4867.495, stop=4868.12, target=4866.245. Pre-M15 range high=4880.935, low=4839.395.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T14-30-00Z_short_breaker_continuation",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4879.155,
          "breaker_low": 4866.87,
          "breaker_high": 4868.12,
          "break_low": 4855.19
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T14-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-21T14-30-00Z_short_order_block_reclaim",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4870.045,
          "ob_high": 4880.415,
          "displacement_low": 4839.395
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4875.23,
      "stop": 4880.415,
      "target": 4864.859999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T15-00-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-01-21T15:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-21T15:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4859.347,
      "stop": 4879.3,
      "target": 4819.442,
      "r": 2.0,
      "entry_touch_time": "2026-01-21T15:10:00Z",
      "outcome_time": "2026-01-21T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4859.347, stop=4879.3, target=4819.442. Pre-M15 range high=4880.935, low=4839.395.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T15-00-00Z_short_breaker_continuation",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4880.935,
          "breaker_low": 4839.395,
          "breaker_high": 4879.3,
          "break_low": 4855.19
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T15-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-21T15-45-00Z_short_order_block_reclaim",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4847.155,
          "ob_high": 4868.83,
          "displacement_low": 4813.355
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4857.9925,
      "stop": 4868.83,
      "target": 4836.317500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-21T16:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-21T16:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4840.393,
      "stop": 4829.175,
      "target": 4857.22,
      "r": -1.0,
      "entry_touch_time": "2026-01-21T16:15:00Z",
      "outcome_time": "2026-01-21T16:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4840.393, stop=4829.175, target=4857.22. Pre-M15 range high=4880.935, low=4813.355.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4829.175,
          "impulse_high": 4854.67,
          "fib50": 4841.922500000001,
          "fib62": 4838.8631000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T19-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-01-21T19:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-21T19:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 4832.48,
      "stop": 4854.165,
      "target": 4789.11,
      "r": -1.0,
      "entry_touch_time": "2026-01-21T19:25:00Z",
      "outcome_time": "2026-01-21T19:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T19:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4832.48, stop=4854.165, target=4789.11. Pre-M15 range high=4872.525, low=4802.62.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T19-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4854.165,
          "fvg_low": 4821.735,
          "fvg_high": 4843.225
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-21T20:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-21T20:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4792.405,
      "stop": 4821.735,
      "target": 4748.409,
      "r": -1.0,
      "entry_touch_time": "2026-01-21T20:15:00Z",
      "outcome_time": "2026-01-21T20:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4792.405, stop=4821.735, target=4748.409. Pre-M15 range high=4861.89, low=4755.075.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4755.075,
          "impulse_high": 4821.735,
          "fib50": 4788.405,
          "fib62": 4796.4042
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T20-30-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-01-21T20:50:00Z; outcome=tp_first",
      "timestamp": "2026-01-21T20:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY PM",
      "entry": 4827.183,
      "stop": 4849.055,
      "target": 4783.438,
      "r": 2.0,
      "entry_touch_time": "2026-01-21T20:50:00Z",
      "outcome_time": "2026-01-21T23:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4827.183, stop=4849.055, target=4783.438. Pre-M15 range high=4855.8, low=4755.075.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T20-30-00Z_short_breaker_continuation",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4854.165,
          "breaker_low": 4805.31,
          "breaker_high": 4849.055,
          "break_low": 4802.62
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-21T21-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-21T21:20:00Z; outcome=tp_first",
      "timestamp": "2026-01-21T21:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4832.669,
      "stop": 4854.165,
      "target": 4800.425,
      "r": 1.5,
      "entry_touch_time": "2026-01-21T21:20:00Z",
      "outcome_time": "2026-01-21T23:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-21T21:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4832.669, stop=4854.165, target=4800.425. Pre-M15 range high=4854.165, low=4755.075.",
      "candidate": {
        "id": "candidate_v2_2026-01-21T21-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-21",
        "timestamp": "2026-01-21T21:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4805.31,
          "impulse_high": 4854.165,
          "fib50": 4829.7375,
          "fib62": 4835.600100000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-22T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-22T07:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-22T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4831.21,
      "stop": 4825.75,
      "target": 4839.401,
      "r": -1.0,
      "entry_touch_time": "2026-01-22T07:45:00Z",
      "outcome_time": "2026-01-22T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-22T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4831.21, stop=4825.75, target=4839.401. Pre-M15 range high=4839.71, low=4781.95.",
      "candidate": {
        "id": "candidate_v2_2026-01-22T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-22",
        "timestamp": "2026-01-22T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4825.75,
          "impulse_high": 4838.16,
          "fib50": 4831.955,
          "fib62": 4830.4658
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-22T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-22T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-22T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4824.453,
      "stop": 4815.805,
      "target": 4837.425,
      "r": -1.0,
      "entry_touch_time": "2026-01-22T13:35:00Z",
      "outcome_time": "2026-01-22T13:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-22T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4824.453, stop=4815.805, target=4837.425. Pre-M15 range high=4838.095, low=4810.895.",
      "candidate": {
        "id": "candidate_v2_2026-01-22T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-22",
        "timestamp": "2026-01-22T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4815.805,
          "impulse_high": 4835.46,
          "fib50": 4825.6325,
          "fib62": 4823.2739
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-22T14-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-22T14:30:00Z; outcome=sl_first",
      "timestamp": "2026-01-22T14:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4830.74,
      "stop": 4835.46,
      "target": 4821.3,
      "r": -1.0,
      "entry_touch_time": "2026-01-22T14:30:00Z",
      "outcome_time": "2026-01-22T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-22T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4830.74, stop=4835.46, target=4821.3. Pre-M15 range high=4836.43, low=4810.74.",
      "candidate": {
        "id": "candidate_v2_2026-01-22T14-00-00Z_short_order_block_reclaim",
        "date": "2026-01-22",
        "timestamp": "2026-01-22T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4826.02,
          "ob_high": 4835.46,
          "displacement_low": 4810.895
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-22T15-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-22T15-00-00Z_long_breaker_continuation",
        "date": "2026-01-22",
        "timestamp": "2026-01-22T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4815.805,
          "breaker_low": 4819.685,
          "breaker_high": 4827.67,
          "break_high": 4836.43
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4823.6775,
      "stop": 4819.685,
      "target": 4831.6624999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-23T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-23T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4943.965,
      "stop": 4930.84,
      "target": 4963.653,
      "r": 1.5,
      "entry_touch_time": "2026-01-23T01:05:00Z",
      "outcome_time": "2026-01-23T05:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-23T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4943.965, stop=4930.84, target=4963.653. Pre-M15 range high=4967.52, low=4905.985.",
      "candidate": {
        "id": "candidate_v2_2026-01-23T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4930.84,
          "impulse_high": 4960.67,
          "fib50": 4945.755,
          "fib62": 4942.1754
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T01-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-23T01:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-23T01:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4951.852,
      "stop": 4947.58,
      "target": 4960.398,
      "r": -1.0,
      "entry_touch_time": "2026-01-23T01:15:00Z",
      "outcome_time": "2026-01-23T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-23T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4951.852, stop=4947.58, target=4960.398. Pre-M15 range high=4967.52, low=4905.985.",
      "candidate": {
        "id": "candidate_v2_2026-01-23T01-00-00Z_long_order_block_reclaim",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4947.58,
          "ob_high": 4956.125,
          "displacement_high": 4965.985
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-23T10:25:00Z; outcome=sl_first",
      "timestamp": "2026-01-23T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4927.178,
      "stop": 4947.825,
      "target": 4896.208,
      "r": -1.0,
      "entry_touch_time": "2026-01-23T10:25:00Z",
      "outcome_time": "2026-01-23T13:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-23T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4927.178, stop=4947.825, target=4896.208. Pre-M15 range high=4967.28, low=4900.9.",
      "candidate": {
        "id": "candidate_v2_2026-01-23T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4900.9,
          "impulse_high": 4947.825,
          "fib50": 4924.362499999999,
          "fib62": 4929.9935
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-23T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4903.405,
          "impulse_high": 4921.72,
          "fib50": 4912.5625,
          "fib62": 4910.3647
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4911.4636,
      "stop": 4903.405,
      "target": 4923.5515000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T13-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-23T13:20:00Z; outcome=tp_first",
      "timestamp": "2026-01-23T13:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4923.775,
      "stop": 4921.11,
      "target": 4929.105,
      "r": 2.0,
      "entry_touch_time": "2026-01-23T13:20:00Z",
      "outcome_time": "2026-01-23T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-23T13:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4923.775, stop=4921.11, target=4929.105. Pre-M15 range high=4947.98, low=4899.795.",
      "candidate": {
        "id": "candidate_v2_2026-01-23T13-15-00Z_long_order_block_reclaim",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T13:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4921.11,
          "ob_high": 4926.44,
          "displacement_high": 4934.425
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T15-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-23T15-45-00Z_long_order_block_reclaim",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4942.47,
          "ob_high": 4954.37,
          "displacement_high": 4961.055
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4948.42,
      "stop": 4942.47,
      "target": 4960.32,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-23T17:50:00Z; outcome=sl_first",
      "timestamp": "2026-01-23T17:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4971.229,
      "stop": 4959.155,
      "target": 4989.339,
      "r": -1.0,
      "entry_touch_time": "2026-01-23T17:50:00Z",
      "outcome_time": "2026-01-23T18:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-23T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4971.229, stop=4959.155, target=4989.339. Pre-M15 range high=4988.44, low=4923.77.",
      "candidate": {
        "id": "candidate_v2_2026-01-23T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4959.155,
          "impulse_high": 4986.595,
          "fib50": 4972.875,
          "fib62": 4969.5822
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-23T18-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-23T19:50:00Z; outcome=sl_first",
      "timestamp": "2026-01-23T18:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4985.247,
      "stop": 4988.16,
      "target": 4979.422,
      "r": -1.0,
      "entry_touch_time": "2026-01-23T19:50:00Z",
      "outcome_time": "2026-01-23T19:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-23T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4985.247, stop=4988.16, target=4979.422. Pre-M15 range high=4988.44, low=4923.77.",
      "candidate": {
        "id": "candidate_v2_2026-01-23T18-00-00Z_short_order_block_reclaim",
        "date": "2026-01-23",
        "timestamp": "2026-01-23T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4982.335,
          "ob_high": 4988.16,
          "displacement_low": 4962.005
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-26T13:00:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5076.647,
      "stop": 5066.925,
      "target": 5091.23,
      "r": -1.0,
      "entry_touch_time": "2026-01-26T13:00:00Z",
      "outcome_time": "2026-01-26T13:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5076.647, stop=5066.925, target=5091.23. Pre-M15 range high=5092.975, low=4978.185.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5066.925,
          "impulse_high": 5089.02,
          "fib50": 5077.9725,
          "fib62": 5075.3211
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T06-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-26T13:30:00Z; outcome=tp_first",
      "timestamp": "2026-01-26T06:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5060.555,
      "stop": 5053.005,
      "target": 5075.655,
      "r": 2.0,
      "entry_touch_time": "2026-01-26T13:30:00Z",
      "outcome_time": "2026-01-26T13:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5060.555, stop=5053.005, target=5075.655. Pre-M15 range high=5092.975, low=5052.365.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T06-00-00Z_long_order_block_reclaim",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5053.005,
          "ob_high": 5068.105,
          "displacement_high": 5076.69
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-26T11:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T08:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5083.583,
      "stop": 5073.94,
      "target": 5098.047,
      "r": -1.0,
      "entry_touch_time": "2026-01-26T11:15:00Z",
      "outcome_time": "2026-01-26T13:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5083.583, stop=5073.94, target=5098.047. Pre-M15 range high=5111.51, low=5052.365.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5073.94,
          "impulse_high": 5095.855,
          "fib50": 5084.897499999999,
          "fib62": 5082.267699999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-26T11:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5088.777,
      "stop": 5082.34,
      "target": 5098.433,
      "r": -1.0,
      "entry_touch_time": "2026-01-26T11:10:00Z",
      "outcome_time": "2026-01-26T11:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5088.777, stop=5082.34, target=5098.433. Pre-M15 range high=5111.51, low=5052.365.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5082.34,
          "impulse_high": 5096.97,
          "fib50": 5089.655000000001,
          "fib62": 5087.8994
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-26T15:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5084.615,
      "stop": 5074.865,
      "target": 5099.241,
      "r": -1.0,
      "entry_touch_time": "2026-01-26T15:20:00Z",
      "outcome_time": "2026-01-26T15:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5084.615, stop=5074.865, target=5099.241. Pre-M15 range high=5097.46, low=5054.67.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5074.865,
          "impulse_high": 5097.025,
          "fib50": 5085.945,
          "fib62": 5083.2858
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-26T18:10:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T18:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5078.185,
      "stop": 5065.385,
      "target": 5097.384,
      "r": -1.0,
      "entry_touch_time": "2026-01-26T18:10:00Z",
      "outcome_time": "2026-01-26T18:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5078.185, stop=5065.385, target=5097.384. Pre-M15 range high=5105.34, low=5054.67.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5065.385,
          "impulse_high": 5094.475,
          "fib50": 5079.93,
          "fib62": 5076.439200000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T18-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-27T05:50:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T18:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 5083.655,
      "stop": 5090.76,
      "target": 5069.445,
      "r": -1.0,
      "entry_touch_time": "2026-01-27T05:50:00Z",
      "outcome_time": "2026-01-27T06:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T18:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5083.655, stop=5090.76, target=5069.445. Pre-M15 range high=5105.34, low=5057.935.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T18-45-00Z_short_order_block_reclaim",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T18:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5076.55,
          "ob_high": 5090.76,
          "displacement_low": 5057.935
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-26T20:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-26T20:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5048.195,
      "stop": 5069.85,
      "target": 5015.714,
      "r": 1.5,
      "entry_touch_time": "2026-01-26T20:10:00Z",
      "outcome_time": "2026-01-26T21:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5048.195, stop=5069.85, target=5015.714. Pre-M15 range high=5105.34, low=5008.275.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5020.635,
          "impulse_high": 5069.85,
          "fib50": 5045.2425,
          "fib62": 5051.148300000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-26T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-26T23:05:00Z; outcome=sl_first",
      "timestamp": "2026-01-26T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5037.988,
      "stop": 5059.165,
      "target": 5006.222,
      "r": -1.0,
      "entry_touch_time": "2026-01-26T23:05:00Z",
      "outcome_time": "2026-01-26T23:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-26T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5037.988, stop=5059.165, target=5006.222. Pre-M15 range high=5105.15, low=4990.215.",
      "candidate": {
        "id": "candidate_v2_2026-01-26T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-26",
        "timestamp": "2026-01-26T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5011.035,
          "impulse_high": 5059.165,
          "fib50": 5035.1,
          "fib62": 5040.8756
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T08-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-27T08:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-27T08:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5083.708,
      "stop": 5088.165,
      "target": 5074.793,
      "r": -1.0,
      "entry_touch_time": "2026-01-27T08:45:00Z",
      "outcome_time": "2026-01-27T09:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5083.708, stop=5088.165, target=5074.793. Pre-M15 range high=5100.84, low=5057.195.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T08-30-00Z_short_order_block_reclaim",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5079.25,
          "ob_high": 5088.165,
          "displacement_low": 5075.495
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-27T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-01-27T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5082.829,
      "stop": 5078.165,
      "target": 5089.825,
      "r": 1.5,
      "entry_touch_time": "2026-01-27T09:45:00Z",
      "outcome_time": "2026-01-27T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5082.829, stop=5078.165, target=5089.825. Pre-M15 range high=5100.84, low=5057.195.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5078.165,
          "impulse_high": 5088.765,
          "fib50": 5083.465,
          "fib62": 5082.193
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-27T10:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-27T10:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5090.203,
      "stop": 5082.78,
      "target": 5101.337,
      "r": -1.0,
      "entry_touch_time": "2026-01-27T10:20:00Z",
      "outcome_time": "2026-01-27T10:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5090.203, stop=5082.78, target=5101.337. Pre-M15 range high=5100.84, low=5058.045.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5082.78,
          "impulse_high": 5099.65,
          "fib50": 5091.215,
          "fib62": 5089.1906
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T10-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-27T10:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-27T10:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5090.288,
      "stop": 5086.175,
      "target": 5098.513,
      "r": -1.0,
      "entry_touch_time": "2026-01-27T10:20:00Z",
      "outcome_time": "2026-01-27T10:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5090.288, stop=5086.175, target=5098.513. Pre-M15 range high=5100.84, low=5058.045.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T10-00-00Z_long_order_block_reclaim",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5086.175,
          "ob_high": 5094.4,
          "displacement_high": 5099.65
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-27T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-27T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5064.066,
      "stop": 5077.6,
      "target": 5043.764,
      "r": -1.0,
      "entry_touch_time": "2026-01-27T14:35:00Z",
      "outcome_time": "2026-01-27T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5064.066, stop=5077.6, target=5043.764. Pre-M15 range high=5099.65, low=5046.84.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5046.84,
          "impulse_high": 5077.6,
          "fib50": 5062.22,
          "fib62": 5065.9112000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T14-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-27T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-27T14:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5076.98,
      "stop": 5082.34,
      "target": 5066.26,
      "r": 2.0,
      "entry_touch_time": "2026-01-27T14:35:00Z",
      "outcome_time": "2026-01-27T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5076.98, stop=5082.34, target=5066.26. Pre-M15 range high=5099.65, low=5046.84.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T14-30-00Z_short_order_block_reclaim",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5071.62,
          "ob_high": 5082.34,
          "displacement_low": 5055.365
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-27T17-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-27T17:45:00Z; outcome=tp_first",
      "timestamp": "2026-01-27T17:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5078.695,
      "stop": 5068.775,
      "target": 5093.574,
      "r": 1.5,
      "entry_touch_time": "2026-01-27T17:45:00Z",
      "outcome_time": "2026-01-27T18:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-27T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5078.695, stop=5068.775, target=5093.574. Pre-M15 range high=5103.355, low=5046.84.",
      "candidate": {
        "id": "candidate_v2_2026-01-27T17-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-27",
        "timestamp": "2026-01-27T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5068.775,
          "impulse_high": 5091.32,
          "fib50": 5080.0475,
          "fib62": 5077.3421
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-28T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5133.105,
          "impulse_high": 5182.795,
          "fib50": 5157.95,
          "fib62": 5151.9872
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 5154.9686,
      "stop": 5133.105,
      "target": 5187.764000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-28T11:00:00Z; outcome=sl_first",
      "timestamp": "2026-01-28T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5262.232,
      "stop": 5254.95,
      "target": 5273.155,
      "r": -1.0,
      "entry_touch_time": "2026-01-28T11:00:00Z",
      "outcome_time": "2026-01-28T11:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-28T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5262.232, stop=5254.95, target=5273.155. Pre-M15 range high=5275.675, low=5207.765.",
      "candidate": {
        "id": "candidate_v2_2026-01-28T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5254.95,
          "impulse_high": 5271.5,
          "fib50": 5263.225,
          "fib62": 5261.239
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T12-45-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-01-28T13:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-28T12:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5263.71,
      "stop": 5258.375,
      "target": 5274.38,
      "r": 2.0,
      "entry_touch_time": "2026-01-28T13:35:00Z",
      "outcome_time": "2026-01-28T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-28T12:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5263.71, stop=5258.375, target=5274.38. Pre-M15 range high=5311.665, low=5238.59.",
      "candidate": {
        "id": "candidate_v2_2026-01-28T12-45-00Z_long_order_block_reclaim",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T12:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5258.375,
          "ob_high": 5269.045,
          "displacement_high": 5273.17
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-28T13:10:00Z; outcome=tp_first",
      "timestamp": "2026-01-28T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5269.388,
      "stop": 5261.45,
      "target": 5281.294,
      "r": 1.5,
      "entry_touch_time": "2026-01-28T13:10:00Z",
      "outcome_time": "2026-01-28T13:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-28T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5269.388, stop=5261.45, target=5281.294. Pre-M15 range high=5311.665, low=5238.59.",
      "candidate": {
        "id": "candidate_v2_2026-01-28T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5261.45,
          "impulse_high": 5279.49,
          "fib50": 5270.469999999999,
          "fib62": 5268.3052
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-28T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-01-28T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5267.096,
      "stop": 5250.29,
      "target": 5292.305,
      "r": null,
      "entry_touch_time": "2026-01-28T15:05:00Z",
      "outcome_time": "2026-01-28T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-28T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5267.096, stop=5250.29, target=5292.305. Pre-M15 range high=5298.35, low=5235.75.",
      "candidate": {
        "id": "candidate_v2_2026-01-28T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5250.29,
          "impulse_high": 5288.485,
          "fib50": 5269.3875,
          "fib62": 5264.8041
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T17-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-01-28T17:15:00Z; outcome=sl_first",
      "timestamp": "2026-01-28T17:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY PM",
      "entry": 5292.138,
      "stop": 5285.925,
      "target": 5304.563,
      "r": -1.0,
      "entry_touch_time": "2026-01-28T17:15:00Z",
      "outcome_time": "2026-01-28T17:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-28T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5292.138, stop=5285.925, target=5304.563. Pre-M15 range high=5307.285, low=5235.75.",
      "candidate": {
        "id": "candidate_v2_2026-01-28T17-00-00Z_long_breaker_continuation",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5235.75,
          "breaker_low": 5285.925,
          "breaker_high": 5298.35,
          "break_high": 5289.71
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-28T19-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-28T19:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-28T19:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 5312.475,
      "stop": 5325.97,
      "target": 5285.485,
      "r": -1.0,
      "entry_touch_time": "2026-01-28T19:45:00Z",
      "outcome_time": "2026-01-28T19:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-28T19:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5312.475, stop=5325.97, target=5285.485. Pre-M15 range high=5325.97, low=5235.75.",
      "candidate": {
        "id": "candidate_v2_2026-01-28T19-15-00Z_short_order_block_reclaim",
        "date": "2026-01-28",
        "timestamp": "2026-01-28T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5298.98,
          "ob_high": 5325.97,
          "displacement_low": 5268.45
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-29T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-29T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-29T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5460.604,
      "stop": 5432.455,
      "target": 5502.828,
      "r": 1.5,
      "entry_touch_time": "2026-01-29T01:05:00Z",
      "outcome_time": "2026-01-29T01:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-29T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5460.604, stop=5432.455, target=5502.828. Pre-M15 range high=5602.225, low=5268.45.",
      "candidate": {
        "id": "candidate_v2_2026-01-29T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-29",
        "timestamp": "2026-01-29T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5432.455,
          "impulse_high": 5496.43,
          "fib50": 5464.4425,
          "fib62": 5456.7655
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-29T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-01-29T15:00:00Z; outcome=sl_first",
      "timestamp": "2026-01-29T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5491.056,
      "stop": 5470.9,
      "target": 5521.291,
      "r": -1.0,
      "entry_touch_time": "2026-01-29T15:00:00Z",
      "outcome_time": "2026-01-29T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-29T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5491.056, stop=5470.9, target=5521.291. Pre-M15 range high=5549.565, low=5470.9.",
      "candidate": {
        "id": "candidate_v2_2026-01-29T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-29",
        "timestamp": "2026-01-29T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5470.9,
          "impulse_high": 5516.71,
          "fib50": 5493.805,
          "fib62": 5488.3078
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-29T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-29T17:15:00Z; outcome=tp_first",
      "timestamp": "2026-01-29T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5320.904,
      "stop": 5496.66,
      "target": 5057.271,
      "r": 1.5,
      "entry_touch_time": "2026-01-29T17:15:00Z",
      "outcome_time": "2026-01-30T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-29T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5320.904, stop=5496.66, target=5057.271. Pre-M15 range high=5549.565, low=5097.215.",
      "candidate": {
        "id": "candidate_v2_2026-01-29T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-29",
        "timestamp": "2026-01-29T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5097.215,
          "impulse_high": 5496.66,
          "fib50": 5296.9375,
          "fib62": 5344.8709
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-01-30T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5361.95,
      "stop": 5410.625,
      "target": 5288.938,
      "r": 1.5,
      "entry_touch_time": "2026-01-30T01:35:00Z",
      "outcome_time": "2026-01-30T02:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5361.95, stop=5410.625, target=5288.938. Pre-M15 range high=5451.16, low=5282.98.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5300.0,
          "impulse_high": 5410.625,
          "fib50": 5355.3125,
          "fib62": 5368.5875
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T02:40:00Z; outcome=tp_first",
      "timestamp": "2026-01-30T02:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5224.452,
      "stop": 5312.725,
      "target": 5092.043,
      "r": 1.5,
      "entry_touch_time": "2026-01-30T02:40:00Z",
      "outcome_time": "2026-01-30T08:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5224.452, stop=5312.725, target=5092.043. Pre-M15 range high=5451.16, low=5112.105.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5112.105,
          "impulse_high": 5312.725,
          "fib50": 5212.415,
          "fib62": 5236.4894
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T06-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-01-30T06-30-00Z_short_order_block_reclaim",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5173.35,
          "ob_high": 5205.81,
          "displacement_low": 5156.565
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 5189.58,
      "stop": 5205.81,
      "target": 5157.119999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T09:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-30T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5110.772,
      "stop": 5155.04,
      "target": 5044.369,
      "r": 1.5,
      "entry_touch_time": "2026-01-30T09:05:00Z",
      "outcome_time": "2026-01-30T09:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5110.772, stop=5155.04, target=5044.369. Pre-M15 range high=5241.85, low=5014.465.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5054.43,
          "impulse_high": 5155.04,
          "fib50": 5104.735000000001,
          "fib62": 5116.8082
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T10:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-30T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5080.873,
      "stop": 5133.05,
      "target": 5002.607,
      "r": -1.0,
      "entry_touch_time": "2026-01-30T10:35:00Z",
      "outcome_time": "2026-01-30T11:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5080.873, stop=5133.05, target=5002.607. Pre-M15 range high=5241.85, low=4941.5.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5014.465,
          "impulse_high": 5133.05,
          "fib50": 5073.7575,
          "fib62": 5087.987700000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T10-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-30T10:55:00Z; outcome=sl_first",
      "timestamp": "2026-01-30T10:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5110.82,
      "stop": 5129.2,
      "target": 5074.06,
      "r": -1.0,
      "entry_touch_time": "2026-01-30T10:55:00Z",
      "outcome_time": "2026-01-30T11:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5110.82, stop=5129.2, target=5074.06. Pre-M15 range high=5236.21, low=4941.5.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T10-30-00Z_short_order_block_reclaim",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5092.44,
          "ob_high": 5129.2,
          "displacement_low": 5014.465
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T14:30:00Z; outcome=tp_first",
      "timestamp": "2026-01-30T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5100.701,
      "stop": 5136.315,
      "target": 5047.281,
      "r": 1.5,
      "entry_touch_time": "2026-01-30T14:30:00Z",
      "outcome_time": "2026-01-30T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5100.701, stop=5136.315, target=5047.281. Pre-M15 range high=5170.755, low=4941.5.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5055.375,
          "impulse_high": 5136.315,
          "fib50": 5095.844999999999,
          "fib62": 5105.5578
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T14-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-30T14:20:00Z; outcome=sl_first",
      "timestamp": "2026-01-30T14:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5077.128,
      "stop": 5100.2,
      "target": 5030.983,
      "r": -1.0,
      "entry_touch_time": "2026-01-30T14:20:00Z",
      "outcome_time": "2026-01-30T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5077.128, stop=5100.2, target=5030.983. Pre-M15 range high=5145.98, low=4941.5.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T14-00-00Z_short_order_block_reclaim",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5054.055,
          "ob_high": 5100.2,
          "displacement_low": 5014.15
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T18:05:00Z; outcome=tp_first",
      "timestamp": "2026-01-30T18:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4870.771,
      "stop": 4925.705,
      "target": 4788.37,
      "r": 1.5,
      "entry_touch_time": "2026-01-30T18:05:00Z",
      "outcome_time": "2026-01-30T18:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4870.771, stop=4925.705, target=4788.37. Pre-M15 range high=5113.795, low=4787.015.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4800.855,
          "impulse_high": 4925.705,
          "fib50": 4863.28,
          "fib62": 4878.262
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T18-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T18:45:00Z; outcome=sl_first",
      "timestamp": "2026-01-30T18:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4803.108,
      "stop": 4890.6,
      "target": 4671.871,
      "r": -1.0,
      "entry_touch_time": "2026-01-30T18:45:00Z",
      "outcome_time": "2026-01-30T18:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4803.108, stop=4890.6, target=4671.871. Pre-M15 range high=5113.795, low=4679.51.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T18-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4691.755,
          "impulse_high": 4890.6,
          "fib50": 4791.1775,
          "fib62": 4815.0389000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T19-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-01-30T19:35:00Z; outcome=sl_first",
      "timestamp": "2026-01-30T19:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4919.92,
      "stop": 4940.845,
      "target": 4878.07,
      "r": -1.0,
      "entry_touch_time": "2026-01-30T19:35:00Z",
      "outcome_time": "2026-01-30T19:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T19:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4919.92, stop=4940.845, target=4878.07. Pre-M15 range high=5113.795, low=4679.51.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T19-00-00Z_short_order_block_reclaim",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T19:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4898.995,
          "ob_high": 4940.845,
          "displacement_low": 4838.62
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-01-30T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-01-30T19:55:00Z; outcome=tp_first",
      "timestamp": "2026-01-30T19:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4948.003,
      "stop": 4986.51,
      "target": 4890.244,
      "r": 1.5,
      "entry_touch_time": "2026-01-30T19:55:00Z",
      "outcome_time": "2026-01-30T20:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-01-30T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4948.003, stop=4986.51, target=4890.244. Pre-M15 range high=5097.4, low=4679.51.",
      "candidate": {
        "id": "candidate_v2_2026-01-30T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-01-30",
        "timestamp": "2026-01-30T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4898.995,
          "impulse_high": 4986.51,
          "fib50": 4942.7525000000005,
          "fib62": 4953.2543000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-01T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-01T23:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-01T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4773.924,
      "stop": 4834.255,
      "target": 4683.428,
      "r": -1.0,
      "entry_touch_time": "2026-02-01T23:35:00Z",
      "outcome_time": "2026-02-02T00:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-01T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4773.924, stop=4834.255, target=4683.428. Pre-M15 range high=4948.545, low=4679.51.",
      "candidate": {
        "id": "candidate_v2_2026-02-01T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-01",
        "timestamp": "2026-02-01T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4697.14,
          "impulse_high": 4834.255,
          "fib50": 4765.6975,
          "fib62": 4782.1513
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T00-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-02T00:20:00Z; outcome=tp_first",
      "timestamp": "2026-02-02T00:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4879.625,
      "stop": 4901.69,
      "target": 4835.495,
      "r": 2.0,
      "entry_touch_time": "2026-02-02T00:20:00Z",
      "outcome_time": "2026-02-02T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4879.625, stop=4901.69, target=4835.495. Pre-M15 range high=4948.545, low=4679.51.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T00-15-00Z_short_order_block_reclaim",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4857.56,
          "ob_high": 4901.69,
          "displacement_low": 4712.805
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-02T06:55:00Z; outcome=sl_first",
      "timestamp": "2026-02-02T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4512.192,
      "stop": 4574.03,
      "target": 4419.436,
      "r": -1.0,
      "entry_touch_time": "2026-02-02T06:55:00Z",
      "outcome_time": "2026-02-02T07:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4512.192, stop=4574.03, target=4419.436. Pre-M15 range high=4773.225, low=4402.38.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4433.49,
          "impulse_high": 4574.03,
          "fib50": 4503.76,
          "fib62": 4520.6248
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-02T07:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-02T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4588.192,
      "stop": 4658.99,
      "target": 4481.995,
      "r": -1.0,
      "entry_touch_time": "2026-02-02T07:40:00Z",
      "outcome_time": "2026-02-02T09:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4588.192, stop=4658.99, target=4481.995. Pre-M15 range high=4764.825, low=4402.38.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4498.085,
          "impulse_high": 4658.99,
          "fib50": 4578.5375,
          "fib62": 4597.8461
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T10-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-02T10:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-02T10:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4695.958,
      "stop": 4678.8,
      "target": 4730.273,
      "r": -1.0,
      "entry_touch_time": "2026-02-02T10:20:00Z",
      "outcome_time": "2026-02-02T10:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4695.958, stop=4678.8, target=4730.273. Pre-M15 range high=4733.805, low=4402.38.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T10-00-00Z_long_order_block_reclaim",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4678.8,
          "ob_high": 4713.115,
          "displacement_high": 4731.64
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T10-45-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-02-02T10:55:00Z; outcome=tp_first",
      "timestamp": "2026-02-02T10:45:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4700.943,
      "stop": 4657.01,
      "target": 4788.807,
      "r": 2.0,
      "entry_touch_time": "2026-02-02T10:55:00Z",
      "outcome_time": "2026-02-02T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T10:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4700.943, stop=4657.01, target=4788.807. Pre-M15 range high=4733.805, low=4402.38.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T10-45-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T10:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4657.01,
          "fvg_low": 4698.615,
          "fvg_high": 4703.27
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-02T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-02T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4767.592,
      "stop": 4804.2,
      "target": 4712.68,
      "r": 1.5,
      "entry_touch_time": "2026-02-02T14:35:00Z",
      "outcome_time": "2026-02-02T14:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4767.592, stop=4804.2, target=4712.68. Pre-M15 range high=4812.265, low=4657.01.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4721.0,
          "impulse_high": 4804.2,
          "fib50": 4762.6,
          "fib62": 4772.584
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-02T16:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-02T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4666.262,
      "stop": 4704.725,
      "target": 4608.568,
      "r": -1.0,
      "entry_touch_time": "2026-02-02T16:05:00Z",
      "outcome_time": "2026-02-02T16:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-02T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4666.262, stop=4704.725, target=4608.568. Pre-M15 range high=4812.265, low=4596.74.",
      "candidate": {
        "id": "candidate_v2_2026-02-02T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4617.31,
          "impulse_high": 4704.725,
          "fib50": 4661.0175,
          "fib62": 4671.5073
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-02T20-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-02-02T20-15-00Z_long_order_block_reclaim",
        "date": "2026-02-02",
        "timestamp": "2026-02-02T20:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4631.55,
          "ob_high": 4654.56,
          "displacement_high": 4699.735
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4643.055,
      "stop": 4631.55,
      "target": 4666.0650000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-02-03T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-03T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-03T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4806.097,
      "stop": 4766.29,
      "target": 4865.807,
      "r": -1.0,
      "entry_touch_time": "2026-02-03T02:05:00Z",
      "outcome_time": "2026-02-03T02:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-03T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4806.097, stop=4766.29, target=4865.807. Pre-M15 range high=4856.76, low=4644.21.",
      "candidate": {
        "id": "candidate_v2_2026-02-03T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-03",
        "timestamp": "2026-02-03T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4766.29,
          "impulse_high": 4856.76,
          "fib50": 4811.525,
          "fib62": 4800.6686
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-03T09-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-03T09:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-03T09:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4916.02,
      "stop": 4924.035,
      "target": 4899.99,
      "r": -1.0,
      "entry_touch_time": "2026-02-03T09:40:00Z",
      "outcome_time": "2026-02-03T09:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-03T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4916.02, stop=4924.035, target=4899.99. Pre-M15 range high=4950.68, low=4807.985.",
      "candidate": {
        "id": "candidate_v2_2026-02-03T09-30-00Z_short_order_block_reclaim",
        "date": "2026-02-03",
        "timestamp": "2026-02-03T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4908.005,
          "ob_high": 4924.035,
          "displacement_low": 4890.37
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-03T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-03T16:50:00Z; outcome=sl_first",
      "timestamp": "2026-02-03T16:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4952.147,
      "stop": 4929.665,
      "target": 4985.87,
      "r": -1.0,
      "entry_touch_time": "2026-02-03T16:50:00Z",
      "outcome_time": "2026-02-03T17:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-03T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4952.147, stop=4929.665, target=4985.87. Pre-M15 range high=4993.835, low=4892.27.",
      "candidate": {
        "id": "candidate_v2_2026-02-03T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-03",
        "timestamp": "2026-02-03T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4929.665,
          "impulse_high": 4980.76,
          "fib50": 4955.2125,
          "fib62": 4949.0811
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-03T17-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-03T18:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-03T17:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4953.66,
      "stop": 4970.05,
      "target": 4920.88,
      "r": 2.0,
      "entry_touch_time": "2026-02-03T18:10:00Z",
      "outcome_time": "2026-02-03T18:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-03T17:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4953.66, stop=4970.05, target=4920.88. Pre-M15 range high=4993.835, low=4893.775.",
      "candidate": {
        "id": "candidate_v2_2026-02-03T17-45-00Z_short_order_block_reclaim",
        "date": "2026-02-03",
        "timestamp": "2026-02-03T17:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4937.27,
          "ob_high": 4970.05,
          "displacement_low": 4913.565
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-04T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-04T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4970.026,
      "stop": 4946.16,
      "target": 5005.824,
      "r": 1.5,
      "entry_touch_time": "2026-02-04T14:35:00Z",
      "outcome_time": "2026-02-04T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4970.026, stop=4946.16, target=5005.824. Pre-M15 range high=5000.4, low=4880.595.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4946.16,
          "impulse_high": 5000.4,
          "fib50": 4973.28,
          "fib62": 4966.7712
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-04T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-04T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4989.642,
      "stop": 4968.515,
      "target": 5021.331,
      "r": 1.5,
      "entry_touch_time": "2026-02-04T14:35:00Z",
      "outcome_time": "2026-02-04T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4989.642, stop=4968.515, target=5021.331. Pre-M15 range high=5053.675, low=4902.11.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4968.515,
          "impulse_high": 5016.53,
          "fib50": 4992.5225,
          "fib62": 4986.7607
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-04T07:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-04T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5065.453,
      "stop": 5053.855,
      "target": 5082.851,
      "r": 1.5,
      "entry_touch_time": "2026-02-04T07:05:00Z",
      "outcome_time": "2026-02-04T07:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5065.453, stop=5053.855, target=5082.851. Pre-M15 range high=5090.435, low=5035.72.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5053.855,
          "impulse_high": 5080.215,
          "fib50": 5067.035,
          "fib62": 5063.8718
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T07-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-04T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-04T07:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5073.083,
      "stop": 5063.235,
      "target": 5092.778,
      "r": -1.0,
      "entry_touch_time": "2026-02-04T07:35:00Z",
      "outcome_time": "2026-02-04T09:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5073.083, stop=5063.235, target=5092.778. Pre-M15 range high=5090.445, low=5035.72.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T07-30-00Z_long_order_block_reclaim",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5063.235,
          "ob_high": 5082.93,
          "displacement_high": 5089.65
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-04T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-04T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5034.574,
      "stop": 5022.06,
      "target": 5053.344,
      "r": 1.5,
      "entry_touch_time": "2026-02-04T13:05:00Z",
      "outcome_time": "2026-02-04T13:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5034.574, stop=5022.06, target=5053.344. Pre-M15 range high=5087.58, low=5013.77.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5022.06,
          "impulse_high": 5050.5,
          "fib50": 5036.280000000001,
          "fib62": 5032.867200000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-04T15:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-04T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5006.925,
      "stop": 5038.29,
      "target": 4959.877,
      "r": 1.5,
      "entry_touch_time": "2026-02-04T15:05:00Z",
      "outcome_time": "2026-02-04T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5006.925, stop=5038.29, target=4959.877. Pre-M15 range high=5063.735, low=4967.005.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4967.005,
          "impulse_high": 5038.29,
          "fib50": 5002.6475,
          "fib62": 5011.2017
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-04T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-04T16:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-04T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4929.564,
      "stop": 4962.52,
      "target": 4880.13,
      "r": 1.5,
      "entry_touch_time": "2026-02-04T16:10:00Z",
      "outcome_time": "2026-02-04T16:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-04T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4929.564, stop=4962.52, target=4880.13. Pre-M15 range high=5063.735, low=4887.62.",
      "candidate": {
        "id": "candidate_v2_2026-02-04T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-04",
        "timestamp": "2026-02-04T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4887.62,
          "impulse_high": 4962.52,
          "fib50": 4925.07,
          "fib62": 4934.058
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-05T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-05T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-05T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5002.575,
      "stop": 4987.85,
      "target": 5024.661,
      "r": -1.0,
      "entry_touch_time": "2026-02-05T00:05:00Z",
      "outcome_time": "2026-02-05T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-05T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5002.575, stop=4987.85, target=5024.661. Pre-M15 range high=5024.03, low=4896.105.",
      "candidate": {
        "id": "candidate_v2_2026-02-05T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-05",
        "timestamp": "2026-02-05T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4987.85,
          "impulse_high": 5021.315,
          "fib50": 5004.5825,
          "fib62": 5000.5667
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-05T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-05T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-05T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4978.658,
      "stop": 5012.325,
      "target": 4928.159,
      "r": 1.5,
      "entry_touch_time": "2026-02-05T01:35:00Z",
      "outcome_time": "2026-02-05T02:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-05T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4978.658, stop=5012.325, target=4928.159. Pre-M15 range high=5024.03, low=4914.245.",
      "candidate": {
        "id": "candidate_v2_2026-02-05T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-05",
        "timestamp": "2026-02-05T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4935.81,
          "impulse_high": 5012.325,
          "fib50": 4974.0675,
          "fib62": 4983.2493
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-05T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-05T03:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-05T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4881.591,
      "stop": 4941.0,
      "target": 4792.478,
      "r": -1.0,
      "entry_touch_time": "2026-02-05T03:20:00Z",
      "outcome_time": "2026-02-05T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-05T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4881.591, stop=4941.0, target=4792.478. Pre-M15 range high=5024.03, low=4789.655.",
      "candidate": {
        "id": "candidate_v2_2026-02-05T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-05",
        "timestamp": "2026-02-05T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4805.98,
          "impulse_high": 4941.0,
          "fib50": 4873.49,
          "fib62": 4889.6924
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-05T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-05T09:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-05T09:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4887.365,
      "stop": 4914.15,
      "target": 4847.188,
      "r": 1.5,
      "entry_touch_time": "2026-02-05T09:35:00Z",
      "outcome_time": "2026-02-05T12:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-05T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4887.365, stop=4914.15, target=4847.188. Pre-M15 range high=4943.735, low=4825.83.",
      "candidate": {
        "id": "candidate_v2_2026-02-05T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-05",
        "timestamp": "2026-02-05T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4853.275,
          "impulse_high": 4914.15,
          "fib50": 4883.7125,
          "fib62": 4891.0175
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-05T14-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-02-05T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-05T14:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4838.88,
      "stop": 4806.26,
      "target": 4904.12,
      "r": -1.0,
      "entry_touch_time": "2026-02-05T14:35:00Z",
      "outcome_time": "2026-02-05T15:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-05T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4838.88, stop=4806.26, target=4904.12. Pre-M15 range high=4894.805, low=4802.06.",
      "candidate": {
        "id": "candidate_v2_2026-02-05T14-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-02-05",
        "timestamp": "2026-02-05T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4806.26,
          "fvg_low": 4838.54,
          "fvg_high": 4839.22
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-05T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-05T16:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-05T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4843.371,
      "stop": 4866.825,
      "target": 4808.19,
      "r": -1.0,
      "entry_touch_time": "2026-02-05T16:20:00Z",
      "outcome_time": "2026-02-05T16:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-05T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4843.371, stop=4866.825, target=4808.19. Pre-M15 range high=4894.805, low=4800.535.",
      "candidate": {
        "id": "candidate_v2_2026-02-05T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-05",
        "timestamp": "2026-02-05T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4813.52,
          "impulse_high": 4866.825,
          "fib50": 4840.172500000001,
          "fib62": 4846.5691
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-06T00:30:00Z; outcome=sl_first",
      "timestamp": "2026-02-06T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4733.479,
      "stop": 4757.045,
      "target": 4698.129,
      "r": -1.0,
      "entry_touch_time": "2026-02-06T00:30:00Z",
      "outcome_time": "2026-02-06T00:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-06T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4733.479, stop=4757.045, target=4698.129. Pre-M15 range high=4875.23, low=4679.745.",
      "candidate": {
        "id": "candidate_v2_2026-02-06T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4703.485,
          "impulse_high": 4757.045,
          "fib50": 4730.264999999999,
          "fib62": 4736.6921999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T00-15-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-02-06T00:25:00Z; outcome=tp_first",
      "timestamp": "2026-02-06T00:15:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4707.898,
      "stop": 4655.23,
      "target": 4813.233,
      "r": 2.0,
      "entry_touch_time": "2026-02-06T00:25:00Z",
      "outcome_time": "2026-02-06T02:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-06T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4707.898, stop=4655.23, target=4813.233. Pre-M15 range high=4873.325, low=4655.23.",
      "candidate": {
        "id": "candidate_v2_2026-02-06T00-15-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4655.23,
          "fvg_low": 4707.695,
          "fvg_high": 4708.1
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-06T01:55:00Z; outcome=sl_first",
      "timestamp": "2026-02-06T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4784.935,
      "stop": 4804.935,
      "target": 4754.935,
      "r": -1.0,
      "entry_touch_time": "2026-02-06T01:55:00Z",
      "outcome_time": "2026-02-06T02:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-06T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4784.935, stop=4804.935, target=4754.935. Pre-M15 range high=4843.93, low=4655.23.",
      "candidate": {
        "id": "candidate_v2_2026-02-06T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4759.48,
          "impulse_high": 4804.935,
          "fib50": 4782.2075,
          "fib62": 4787.6621000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T13-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-06T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-06T13:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4916.702,
      "stop": 4904.98,
      "target": 4940.147,
      "r": -1.0,
      "entry_touch_time": "2026-02-06T14:05:00Z",
      "outcome_time": "2026-02-06T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-06T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4916.702, stop=4904.98, target=4940.147. Pre-M15 range high=4938.505, low=4838.68.",
      "candidate": {
        "id": "candidate_v2_2026-02-06T13-45-00Z_long_order_block_reclaim",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4904.98,
          "ob_high": 4928.425,
          "displacement_high": 4938.505
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-06T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-06T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4921.887,
      "stop": 4908.83,
      "target": 4941.472,
      "r": -1.0,
      "entry_touch_time": "2026-02-06T14:05:00Z",
      "outcome_time": "2026-02-06T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-06T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4921.887, stop=4908.83, target=4941.472. Pre-M15 range high=4938.505, low=4838.68.",
      "candidate": {
        "id": "candidate_v2_2026-02-06T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4908.83,
          "impulse_high": 4938.505,
          "fib50": 4923.6675,
          "fib62": 4920.1065
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-02-06T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4897.55,
          "impulse_high": 4949.975,
          "fib50": 4923.762500000001,
          "fib62": 4917.471500000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4920.617,
      "stop": 4897.55,
      "target": 4955.217500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-02-06T20-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-06T20:50:00Z; outcome=sl_first",
      "timestamp": "2026-02-06T20:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4952.083,
      "stop": 4957.465,
      "target": 4941.318,
      "r": -1.0,
      "entry_touch_time": "2026-02-06T20:50:00Z",
      "outcome_time": "2026-02-06T21:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-06T20:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4952.083, stop=4957.465, target=4941.318. Pre-M15 range high=4971.34, low=4921.85.",
      "candidate": {
        "id": "candidate_v2_2026-02-06T20-45-00Z_short_order_block_reclaim",
        "date": "2026-02-06",
        "timestamp": "2026-02-06T20:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4946.7,
          "ob_high": 4957.465,
          "displacement_low": 4936.69
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-09T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-09T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4993.109,
      "stop": 4965.42,
      "target": 5034.643,
      "r": 1.5,
      "entry_touch_time": "2026-02-09T01:35:00Z",
      "outcome_time": "2026-02-09T05:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4993.109, stop=4965.42, target=5034.643. Pre-M15 range high=5047.915, low=4936.69.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4965.42,
          "impulse_high": 5028.35,
          "fib50": 4996.885,
          "fib62": 4989.3334
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T01-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-09T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-09T01:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4978.045,
      "stop": 4965.42,
      "target": 5003.295,
      "r": 2.0,
      "entry_touch_time": "2026-02-09T01:35:00Z",
      "outcome_time": "2026-02-09T01:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4978.045, stop=4965.42, target=5003.295. Pre-M15 range high=5047.915, low=4936.69.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T01-30-00Z_long_order_block_reclaim",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4965.42,
          "ob_high": 4990.67,
          "displacement_high": 5028.35
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-09T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-09T09:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5015.811,
      "stop": 5003.0,
      "target": 5035.026,
      "r": -1.0,
      "entry_touch_time": "2026-02-09T09:35:00Z",
      "outcome_time": "2026-02-09T09:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5015.811, stop=5003.0, target=5035.026. Pre-M15 range high=5045.815, low=4997.855.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5003.0,
          "impulse_high": 5032.115,
          "fib50": 5017.5575,
          "fib62": 5014.0637
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T10-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-09T11:25:00Z; outcome=sl_first",
      "timestamp": "2026-02-09T10:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5005.298,
      "stop": 5013.885,
      "target": 4988.123,
      "r": -1.0,
      "entry_touch_time": "2026-02-09T11:25:00Z",
      "outcome_time": "2026-02-09T11:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5005.298, stop=5013.885, target=4988.123. Pre-M15 range high=5045.815, low=4982.495.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T10-30-00Z_short_order_block_reclaim",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4996.71,
          "ob_high": 5013.885,
          "displacement_low": 4986.235
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T13-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-09T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-09T13:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5016.42,
      "stop": 5025.0,
      "target": 4999.26,
      "r": -1.0,
      "entry_touch_time": "2026-02-09T14:05:00Z",
      "outcome_time": "2026-02-09T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5016.42, stop=5025.0, target=4999.26. Pre-M15 range high=5041.4, low=4982.495.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T13-30-00Z_short_order_block_reclaim",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5007.84,
          "ob_high": 5025.0,
          "displacement_low": 5003.57
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T14-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-09T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-09T14:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5013.295,
      "stop": 5007.435,
      "target": 5025.015,
      "r": 2.0,
      "entry_touch_time": "2026-02-09T14:05:00Z",
      "outcome_time": "2026-02-09T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5013.295, stop=5007.435, target=5025.015. Pre-M15 range high=5027.645, low=4982.495.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T14-00-00Z_long_order_block_reclaim",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5007.435,
          "ob_high": 5019.155,
          "displacement_high": 5025.0
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-09T15:15:00Z; outcome=tp_first",
      "timestamp": "2026-02-09T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5025.815,
      "stop": 5014.005,
      "target": 5043.529,
      "r": 1.5,
      "entry_touch_time": "2026-02-09T15:15:00Z",
      "outcome_time": "2026-02-09T15:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5025.815, stop=5014.005, target=5043.529. Pre-M15 range high=5042.37, low=4982.495.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5014.005,
          "impulse_high": 5040.845,
          "fib50": 5027.425,
          "fib62": 5024.2042
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-09T17:55:00Z; outcome=tp_first",
      "timestamp": "2026-02-09T17:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5045.328,
      "stop": 5033.36,
      "target": 5063.28,
      "r": 1.5,
      "entry_touch_time": "2026-02-09T17:55:00Z",
      "outcome_time": "2026-02-09T18:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5045.328, stop=5033.36, target=5063.28. Pre-M15 range high=5080.895, low=4995.125.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5033.36,
          "impulse_high": 5060.56,
          "fib50": 5046.96,
          "fib62": 5043.696
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-09T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-09T23:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-09T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5030.362,
      "stop": 5064.13,
      "target": 4979.71,
      "r": -1.0,
      "entry_touch_time": "2026-02-09T23:40:00Z",
      "outcome_time": "2026-02-10T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-09T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5030.362, stop=5064.13, target=4979.71. Pre-M15 range high=5086.68, low=4987.385.",
      "candidate": {
        "id": "candidate_v2_2026-02-09T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-09",
        "timestamp": "2026-02-09T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4987.385,
          "impulse_high": 5064.13,
          "fib50": 5025.7575,
          "fib62": 5034.9669
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-10T06:50:00Z; outcome=tp_first",
      "timestamp": "2026-02-10T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5025.174,
      "stop": 5012.99,
      "target": 5043.449,
      "r": 1.5,
      "entry_touch_time": "2026-02-10T06:50:00Z",
      "outcome_time": "2026-02-10T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5025.174, stop=5012.99, target=5043.449. Pre-M15 range high=5056.34, low=5011.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5012.99,
          "impulse_high": 5040.68,
          "fib50": 5026.835,
          "fib62": 5023.5122
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-10T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5050.611,
      "stop": 5045.155,
      "target": 5058.795,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T12:05:00Z",
      "outcome_time": "2026-02-10T12:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5050.611, stop=5045.155, target=5058.795. Pre-M15 range high=5063.55, low=5019.56.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5045.155,
          "impulse_high": 5057.555,
          "fib50": 5051.355,
          "fib62": 5049.867
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T12-15-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-10T13:30:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-10T12:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5051.355,
      "stop": 5057.555,
      "target": 5038.955,
      "r": null,
      "entry_touch_time": "2026-02-10T13:30:00Z",
      "outcome_time": "2026-02-10T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5051.355, stop=5057.555, target=5038.955. Pre-M15 range high=5063.55, low=5025.115.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T12-15-00Z_short_order_block_reclaim",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5045.155,
          "ob_high": 5057.555,
          "displacement_low": 5041.22
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-10T13:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5035.629,
      "stop": 5047.96,
      "target": 5017.133,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T13:05:00Z",
      "outcome_time": "2026-02-10T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5035.629, stop=5047.96, target=5017.133. Pre-M15 range high=5063.55, low=5019.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5019.935,
          "impulse_high": 5047.96,
          "fib50": 5033.9475,
          "fib62": 5037.3105000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T13-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-10T13:30:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T13:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5047.05,
      "stop": 5051.555,
      "target": 5038.04,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T13:30:00Z",
      "outcome_time": "2026-02-10T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5047.05, stop=5051.555, target=5038.04. Pre-M15 range high=5063.55, low=5019.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T13-00-00Z_short_order_block_reclaim",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5042.545,
          "ob_high": 5051.555,
          "displacement_low": 5023.815
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-10T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5050.216,
      "stop": 5057.285,
      "target": 5039.614,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T13:35:00Z",
      "outcome_time": "2026-02-10T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5050.216, stop=5057.285, target=5039.614. Pre-M15 range high=5063.55, low=5019.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5041.22,
          "impulse_high": 5057.285,
          "fib50": 5049.2525000000005,
          "fib62": 5051.1803
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-10T14:45:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5047.292,
      "stop": 5038.045,
      "target": 5061.162,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T14:45:00Z",
      "outcome_time": "2026-02-10T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5047.292, stop=5038.045, target=5061.162. Pre-M15 range high=5059.06, low=5019.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5038.045,
          "impulse_high": 5059.06,
          "fib50": 5048.5525,
          "fib62": 5046.0307
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T14-45-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-02-10T14:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-10T14:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5032.157,
      "stop": 5029.82,
      "target": 5036.832,
      "r": null,
      "entry_touch_time": "2026-02-10T14:50:00Z",
      "outcome_time": "2026-02-10T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T14:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5032.157, stop=5029.82, target=5036.832. Pre-M15 range high=5078.745, low=5019.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T14-45-00Z_long_breaker_continuation",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T14:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5019.935,
          "breaker_low": 5029.82,
          "breaker_high": 5034.495,
          "break_high": 5058.195
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T14-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-10T14:50:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T14:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5039.925,
      "stop": 5033.455,
      "target": 5052.865,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T14:50:00Z",
      "outcome_time": "2026-02-10T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T14:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5039.925, stop=5033.455, target=5052.865. Pre-M15 range high=5078.745, low=5019.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T14-45-00Z_long_order_block_reclaim",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T14:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5033.455,
          "ob_high": 5046.395,
          "displacement_high": 5059.06
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T17-45-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-10T17:50:00Z; outcome=tp_first",
      "timestamp": "2026-02-10T17:45:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 5030.052,
      "stop": 5040.22,
      "target": 5009.717,
      "r": 2.0,
      "entry_touch_time": "2026-02-10T17:50:00Z",
      "outcome_time": "2026-02-10T18:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T17:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5030.052, stop=5040.22, target=5009.717. Pre-M15 range high=5078.745, low=4998.95.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T17-45-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T17:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5040.22,
          "fvg_low": 5027.985,
          "fvg_high": 5032.12
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-10T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-10T23:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-10T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5040.362,
      "stop": 5028.975,
      "target": 5057.443,
      "r": -1.0,
      "entry_touch_time": "2026-02-10T23:35:00Z",
      "outcome_time": "2026-02-11T00:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-10T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5040.362, stop=5028.975, target=5057.443. Pre-M15 range high=5054.855, low=5004.73.",
      "candidate": {
        "id": "candidate_v2_2026-02-10T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-10",
        "timestamp": "2026-02-10T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5028.975,
          "impulse_high": 5054.855,
          "fib50": 5041.915,
          "fib62": 5038.8094
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-11T02:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-11T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5041.653,
      "stop": 5032.71,
      "target": 5055.068,
      "r": 1.5,
      "entry_touch_time": "2026-02-11T02:05:00Z",
      "outcome_time": "2026-02-11T02:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5041.653, stop=5032.71, target=5055.068. Pre-M15 range high=5056.885, low=5020.4.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5032.71,
          "impulse_high": 5053.035,
          "fib50": 5042.8724999999995,
          "fib62": 5040.4335
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-11T03:15:00Z; outcome=tp_first",
      "timestamp": "2026-02-11T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5048.518,
      "stop": 5041.245,
      "target": 5059.428,
      "r": 1.5,
      "entry_touch_time": "2026-02-11T03:15:00Z",
      "outcome_time": "2026-02-11T03:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5048.518, stop=5041.245, target=5059.428. Pre-M15 range high=5057.775, low=5020.4.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5041.245,
          "impulse_high": 5057.775,
          "fib50": 5049.51,
          "fib62": 5047.5264
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T07-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-11T07:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-11T07:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5057.16,
      "stop": 5053.56,
      "target": 5064.36,
      "r": -1.0,
      "entry_touch_time": "2026-02-11T07:20:00Z",
      "outcome_time": "2026-02-11T07:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5057.16, stop=5053.56, target=5064.36. Pre-M15 range high=5069.235, low=5032.745.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T07-00-00Z_long_order_block_reclaim",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5053.56,
          "ob_high": 5060.76,
          "displacement_high": 5064.7
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-11T12:40:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-11T10:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5061.875,
      "stop": 5053.775,
      "target": 5074.026,
      "r": null,
      "entry_touch_time": "2026-02-11T12:40:00Z",
      "outcome_time": "2026-02-11T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5061.875, stop=5053.775, target=5074.026. Pre-M15 range high=5072.185, low=5045.92.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5053.775,
          "impulse_high": 5072.185,
          "fib50": 5062.98,
          "fib62": 5060.7708
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T10-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-11T10:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-11T10:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5068.792,
      "stop": 5062.59,
      "target": 5078.095,
      "r": 1.5,
      "entry_touch_time": "2026-02-11T10:35:00Z",
      "outcome_time": "2026-02-11T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5068.792, stop=5062.59, target=5078.095. Pre-M15 range high=5100.28, low=5045.92.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T10-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5062.59,
          "impulse_high": 5076.685,
          "fib50": 5069.637500000001,
          "fib62": 5067.9461
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-11T12:30:00Z; outcome=sl_first",
      "timestamp": "2026-02-11T11:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5082.87,
      "stop": 5068.24,
      "target": 5104.815,
      "r": -1.0,
      "entry_touch_time": "2026-02-11T12:30:00Z",
      "outcome_time": "2026-02-11T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5082.87, stop=5068.24, target=5104.815. Pre-M15 range high=5101.49, low=5045.92.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5068.24,
          "impulse_high": 5101.49,
          "fib50": 5084.865,
          "fib62": 5080.875
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-11T12:15:00Z; outcome=sl_first",
      "timestamp": "2026-02-11T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5093.933,
      "stop": 5082.68,
      "target": 5110.813,
      "r": -1.0,
      "entry_touch_time": "2026-02-11T12:15:00Z",
      "outcome_time": "2026-02-11T12:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5093.933, stop=5082.68, target=5110.813. Pre-M15 range high=5119.345, low=5045.92.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5082.68,
          "impulse_high": 5108.255,
          "fib50": 5095.467500000001,
          "fib62": 5092.3985
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T12-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-11T12:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-11T12:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5089.333,
      "stop": 5082.68,
      "target": 5102.638,
      "r": -1.0,
      "entry_touch_time": "2026-02-11T12:20:00Z",
      "outcome_time": "2026-02-11T12:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5089.333, stop=5082.68, target=5102.638. Pre-M15 range high=5119.345, low=5045.92.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T12-15-00Z_long_order_block_reclaim",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5082.68,
          "ob_high": 5095.985,
          "displacement_high": 5108.255
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T12-30-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-02-11T12:40:00Z; outcome=tp_first",
      "timestamp": "2026-02-11T12:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5052.792,
      "stop": 5051.745,
      "target": 5054.887,
      "r": 2.0,
      "entry_touch_time": "2026-02-11T12:40:00Z",
      "outcome_time": "2026-02-11T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5052.792, stop=5051.745, target=5054.887. Pre-M15 range high=5119.345, low=5045.92.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T12-30-00Z_long_breaker_continuation",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5045.92,
          "breaker_low": 5051.745,
          "breaker_high": 5053.84,
          "break_high": 5069.235
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T23-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-11T23:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-11T23:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 5073.993,
      "stop": 5095.915,
      "target": 5030.148,
      "r": 2.0,
      "entry_touch_time": "2026-02-11T23:10:00Z",
      "outcome_time": "2026-02-12T16:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5073.993, stop=5095.915, target=5030.148. Pre-M15 range high=5099.315, low=5053.89.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T23-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5095.915,
          "fvg_low": 5071.18,
          "fvg_high": 5076.805
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-11T23-30-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-02-12T03:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-11T23:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 5074.693,
      "stop": 5095.495,
      "target": 5033.088,
      "r": 2.0,
      "entry_touch_time": "2026-02-12T03:10:00Z",
      "outcome_time": "2026-02-12T16:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-11T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5074.693, stop=5095.495, target=5033.088. Pre-M15 range high=5097.725, low=5053.89.",
      "candidate": {
        "id": "candidate_v2_2026-02-11T23-30-00Z_short_breaker_continuation",
        "date": "2026-02-11",
        "timestamp": "2026-02-11T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 5095.915,
          "breaker_low": 5053.89,
          "breaker_high": 5095.495,
          "break_low": 5069.965
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-12T08:00:00Z; outcome=tp_first",
      "timestamp": "2026-02-12T07:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5067.184,
      "stop": 5076.475,
      "target": 5053.248,
      "r": 1.5,
      "entry_touch_time": "2026-02-12T08:00:00Z",
      "outcome_time": "2026-02-12T08:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5067.184, stop=5076.475, target=5053.248. Pre-M15 range high=5078.42, low=5047.13.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5055.36,
          "impulse_high": 5076.475,
          "fib50": 5065.9175,
          "fib62": 5068.4513
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T12-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-12T12:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-12T12:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 5059.475,
      "stop": 5068.665,
      "target": 5041.095,
      "r": -1.0,
      "entry_touch_time": "2026-02-12T12:40:00Z",
      "outcome_time": "2026-02-12T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5059.475, stop=5068.665, target=5041.095. Pre-M15 range high=5080.91, low=5052.43.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T12-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5068.665,
          "fvg_low": 5058.76,
          "fvg_high": 5060.19
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-12T13:15:00Z; outcome=sl_first",
      "timestamp": "2026-02-12T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5070.03,
      "stop": 5077.09,
      "target": 5059.441,
      "r": -1.0,
      "entry_touch_time": "2026-02-12T13:15:00Z",
      "outcome_time": "2026-02-12T13:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5070.03, stop=5077.09, target=5059.441. Pre-M15 range high=5080.91, low=5048.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5061.045,
          "impulse_high": 5077.09,
          "fib50": 5069.0675,
          "fib62": 5070.9929
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-12T14:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-12T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5061.634,
      "stop": 5051.485,
      "target": 5076.857,
      "r": 1.5,
      "entry_touch_time": "2026-02-12T14:10:00Z",
      "outcome_time": "2026-02-12T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5061.634, stop=5051.485, target=5076.857. Pre-M15 range high=5080.91, low=5048.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5051.485,
          "impulse_high": 5074.55,
          "fib50": 5063.0175,
          "fib62": 5060.2497
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-12T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-12T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5070.787,
      "stop": 5060.52,
      "target": 5086.189,
      "r": -1.0,
      "entry_touch_time": "2026-02-12T14:05:00Z",
      "outcome_time": "2026-02-12T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5070.787, stop=5060.52, target=5086.189. Pre-M15 range high=5083.855, low=5048.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5060.52,
          "impulse_high": 5083.855,
          "fib50": 5072.1875,
          "fib62": 5069.3873
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T14-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-12T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-12T14:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5068.4,
      "stop": 5062.25,
      "target": 5080.7,
      "r": -1.0,
      "entry_touch_time": "2026-02-12T14:05:00Z",
      "outcome_time": "2026-02-12T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5068.4, stop=5062.25, target=5080.7. Pre-M15 range high=5083.855, low=5048.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T14-00-00Z_long_order_block_reclaim",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5062.25,
          "ob_high": 5074.55,
          "displacement_high": 5077.175
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-12T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-12T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5067.836,
      "stop": 5077.905,
      "target": 5052.732,
      "r": 1.5,
      "entry_touch_time": "2026-02-12T14:35:00Z",
      "outcome_time": "2026-02-12T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5067.836, stop=5077.905, target=5052.732. Pre-M15 range high=5083.855, low=5048.935.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5055.02,
          "impulse_high": 5077.905,
          "fib50": 5066.4625,
          "fib62": 5069.2087
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T15-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-02-12T15:10:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-12T15:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5063.98,
      "stop": 5065.71,
      "target": 5060.52,
      "r": null,
      "entry_touch_time": "2026-02-12T15:10:00Z",
      "outcome_time": "2026-02-12T15:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5063.98, stop=5065.71, target=5060.52. Pre-M15 range high=5083.855, low=5039.7.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T15-00-00Z_short_breaker_continuation",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 5074.55,
          "breaker_low": 5062.25,
          "breaker_high": 5065.71,
          "break_low": 5048.935
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-12T15:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-12T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5057.684,
      "stop": 5071.815,
      "target": 5036.489,
      "r": -1.0,
      "entry_touch_time": "2026-02-12T15:05:00Z",
      "outcome_time": "2026-02-12T15:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5057.684, stop=5071.815, target=5036.489. Pre-M15 range high=5083.855, low=5039.7.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5039.7,
          "impulse_high": 5071.815,
          "fib50": 5055.7575,
          "fib62": 5059.6113
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T15-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Short: entry touched 2026-02-12T15:55:00Z; outcome=sl_first",
      "timestamp": "2026-02-12T15:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5061.688,
      "stop": 5062.855,
      "target": 5059.353,
      "r": -1.0,
      "entry_touch_time": "2026-02-12T15:55:00Z",
      "outcome_time": "2026-02-12T15:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T15:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5061.688, stop=5062.855, target=5059.353. Pre-M15 range high=5083.855, low=5039.7.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T15-45-00Z_short_breaker_continuation",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 5077.175,
          "breaker_low": 5060.52,
          "breaker_high": 5062.855,
          "break_low": 5048.935
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-12T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-13T01:45:00Z; outcome=unresolved",
      "timestamp": "2026-02-12T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4984.822,
      "stop": 5068.36,
      "target": 4859.514,
      "r": null,
      "entry_touch_time": "2026-02-13T01:45:00Z",
      "outcome_time": null,
      "htf_context": "H1/M30 context mechanically checked around 2026-02-12T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4984.822, stop=5068.36, target=4859.514. Pre-M15 range high=5083.855, low=4878.5.",
      "candidate": {
        "id": "candidate_v2_2026-02-12T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-12",
        "timestamp": "2026-02-12T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4878.5,
          "impulse_high": 5068.36,
          "fib50": 4973.43,
          "fib62": 4996.2132
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T05-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-13T07:15:00Z; outcome=sl_first",
      "timestamp": "2026-02-13T05:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4975.735,
      "stop": 4986.555,
      "target": 4954.095,
      "r": -1.0,
      "entry_touch_time": "2026-02-13T07:15:00Z",
      "outcome_time": "2026-02-13T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T05:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4975.735, stop=4986.555, target=4954.095. Pre-M15 range high=4997.555, low=4927.4.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T05-45-00Z_short_order_block_reclaim",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T05:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4964.915,
          "ob_high": 4986.555,
          "displacement_low": 4959.52
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-13T06:55:00Z; outcome=sl_first",
      "timestamp": "2026-02-13T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4964.746,
      "stop": 4980.315,
      "target": 4941.392,
      "r": -1.0,
      "entry_touch_time": "2026-02-13T06:55:00Z",
      "outcome_time": "2026-02-13T07:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4964.746, stop=4980.315, target=4941.392. Pre-M15 range high=4997.555, low=4944.93.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4944.93,
          "impulse_high": 4980.315,
          "fib50": 4962.6224999999995,
          "fib62": 4966.8687
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T08-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-02-13T08:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-13T08:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "London",
      "entry": 4985.468,
      "stop": 4985.97,
      "target": 4984.463,
      "r": null,
      "entry_touch_time": "2026-02-13T08:05:00Z",
      "outcome_time": "2026-02-13T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4985.468, stop=4985.97, target=4984.463. Pre-M15 range high=4997.555, low=4944.93.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T08-00-00Z_short_breaker_continuation",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4997.555,
          "breaker_low": 4984.965,
          "breaker_high": 4985.97,
          "break_low": 4962.05
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-13T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-02-13T09:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4974.82,
      "stop": 4982.975,
      "target": 4962.587,
      "r": 1.5,
      "entry_touch_time": "2026-02-13T09:45:00Z",
      "outcome_time": "2026-02-13T10:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4974.82, stop=4982.975, target=4962.587. Pre-M15 range high=4989.695, low=4944.93.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4964.44,
          "impulse_high": 4982.975,
          "fib50": 4973.7075,
          "fib62": 4975.9317
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-13T12:10:00Z; outcome=sl_first",
      "timestamp": "2026-02-13T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4964.771,
      "stop": 4978.6,
      "target": 4944.027,
      "r": -1.0,
      "entry_touch_time": "2026-02-13T12:10:00Z",
      "outcome_time": "2026-02-13T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4964.771, stop=4978.6, target=4944.027. Pre-M15 range high=4989.695, low=4933.635.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4947.17,
          "impulse_high": 4978.6,
          "fib50": 4962.885,
          "fib62": 4966.6566
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-13T14:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-13T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4981.32,
      "stop": 4966.89,
      "target": 5002.965,
      "r": -1.0,
      "entry_touch_time": "2026-02-13T14:40:00Z",
      "outcome_time": "2026-02-13T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4981.32, stop=4966.89, target=5002.965. Pre-M15 range high=5011.07, low=4933.635.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4966.89,
          "impulse_high": 4999.685,
          "fib50": 4983.2875,
          "fib62": 4979.3521
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-13T14-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-13T14:40:00Z; outcome=tp_first",
      "timestamp": "2026-02-13T14:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4964.34,
      "stop": 4957.71,
      "target": 4977.6,
      "r": 2.0,
      "entry_touch_time": "2026-02-13T14:40:00Z",
      "outcome_time": "2026-02-13T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-13T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4964.34, stop=4957.71, target=4977.6. Pre-M15 range high=5011.07, low=4933.635.",
      "candidate": {
        "id": "candidate_v2_2026-02-13T14-30-00Z_long_order_block_reclaim",
        "date": "2026-02-13",
        "timestamp": "2026-02-13T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4957.71,
          "ob_high": 4970.97,
          "displacement_high": 4999.685
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-15T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-15T23:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-15T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5019.727,
      "stop": 5009.64,
      "target": 5034.857,
      "r": -1.0,
      "entry_touch_time": "2026-02-15T23:40:00Z",
      "outcome_time": "2026-02-16T00:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-15T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5019.727, stop=5009.64, target=5034.857. Pre-M15 range high=5046.48, low=5009.64.",
      "candidate": {
        "id": "candidate_v2_2026-02-15T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-15",
        "timestamp": "2026-02-15T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5009.64,
          "impulse_high": 5032.565,
          "fib50": 5021.1025,
          "fib62": 5018.3515
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-16T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-16T02:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-16T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5017.685,
      "stop": 5006.995,
      "target": 5033.72,
      "r": -1.0,
      "entry_touch_time": "2026-02-16T02:35:00Z",
      "outcome_time": "2026-02-16T02:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-16T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5017.685, stop=5006.995, target=5033.72. Pre-M15 range high=5046.48, low=5000.13.",
      "candidate": {
        "id": "candidate_v2_2026-02-16T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-16",
        "timestamp": "2026-02-16T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5006.995,
          "impulse_high": 5031.29,
          "fib50": 5019.1425,
          "fib62": 5016.2271
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-16T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-16T12:50:00Z; outcome=tp_first",
      "timestamp": "2026-02-16T12:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4999.68,
      "stop": 5005.145,
      "target": 4991.483,
      "r": 1.5,
      "entry_touch_time": "2026-02-16T12:50:00Z",
      "outcome_time": "2026-02-16T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-16T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4999.68, stop=5005.145, target=4991.483. Pre-M15 range high=5017.445, low=4992.725.",
      "candidate": {
        "id": "candidate_v2_2026-02-16T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-16",
        "timestamp": "2026-02-16T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4992.725,
          "impulse_high": 5005.145,
          "fib50": 4998.935,
          "fib62": 5000.4254
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-16T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-16T14:15:00Z; outcome=tp_first",
      "timestamp": "2026-02-16T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4999.234,
      "stop": 5003.905,
      "target": 4992.228,
      "r": 1.5,
      "entry_touch_time": "2026-02-16T14:15:00Z",
      "outcome_time": "2026-02-16T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-16T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4999.234, stop=5003.905, target=4992.228. Pre-M15 range high=5017.445, low=4992.705.",
      "candidate": {
        "id": "candidate_v2_2026-02-16T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-16",
        "timestamp": "2026-02-16T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4993.29,
          "impulse_high": 5003.905,
          "fib50": 4998.5975,
          "fib62": 4999.8713
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-16T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-16T15:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-16T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4979.974,
      "stop": 4988.51,
      "target": 4967.17,
      "r": -1.0,
      "entry_touch_time": "2026-02-16T15:40:00Z",
      "outcome_time": "2026-02-16T16:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-16T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4979.974, stop=4988.51, target=4967.17. Pre-M15 range high=5010.875, low=4969.11.",
      "candidate": {
        "id": "candidate_v2_2026-02-16T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-16",
        "timestamp": "2026-02-16T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4969.11,
          "impulse_high": 4988.51,
          "fib50": 4978.8099999999995,
          "fib62": 4981.138
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-17T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-17T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4958.538,
      "stop": 4979.205,
      "target": 4927.538,
      "r": 1.5,
      "entry_touch_time": "2026-02-17T01:35:00Z",
      "outcome_time": "2026-02-17T05:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4958.538, stop=4979.205, target=4927.538. Pre-M15 range high=5001.24, low=4922.895.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4932.235,
          "impulse_high": 4979.205,
          "fib50": 4955.719999999999,
          "fib62": 4961.3564
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-17T08:00:00Z; outcome=tp_first",
      "timestamp": "2026-02-17T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4925.351,
      "stop": 4954.49,
      "target": 4881.643,
      "r": 1.5,
      "entry_touch_time": "2026-02-17T08:00:00Z",
      "outcome_time": "2026-02-17T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4925.351, stop=4954.49, target=4881.643. Pre-M15 range high=4970.215, low=4859.2.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4888.265,
          "impulse_high": 4954.49,
          "fib50": 4921.3775000000005,
          "fib62": 4929.3245
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-17T11:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-17T11:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4919.393,
      "stop": 4928.435,
      "target": 4905.83,
      "r": -1.0,
      "entry_touch_time": "2026-02-17T11:05:00Z",
      "outcome_time": "2026-02-17T11:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4919.393, stop=4928.435, target=4905.83. Pre-M15 range high=4939.4, low=4886.6.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4907.885,
          "impulse_high": 4928.435,
          "fib50": 4918.16,
          "fib62": 4920.626
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T13-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-02-17T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-17T13:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4922.342,
      "stop": 4921.775,
      "target": 4923.477,
      "r": 2.0,
      "entry_touch_time": "2026-02-17T13:05:00Z",
      "outcome_time": "2026-02-17T13:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4922.342, stop=4921.775, target=4923.477. Pre-M15 range high=4944.7, low=4907.885.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T13-00-00Z_long_breaker_continuation",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4907.885,
          "breaker_low": 4921.775,
          "breaker_high": 4922.91,
          "break_high": 4939.4
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-17T13:45:00Z; outcome=tp_first",
      "timestamp": "2026-02-17T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4923.647,
      "stop": 4933.545,
      "target": 4908.801,
      "r": 1.5,
      "entry_touch_time": "2026-02-17T13:45:00Z",
      "outcome_time": "2026-02-17T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4923.647, stop=4933.545, target=4908.801. Pre-M15 range high=4944.7, low=4907.885.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4911.05,
          "impulse_high": 4933.545,
          "fib50": 4922.297500000001,
          "fib62": 4924.9969
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-17T14:20:00Z; outcome=tp_first",
      "timestamp": "2026-02-17T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4900.575,
      "stop": 4924.625,
      "target": 4864.499,
      "r": 1.5,
      "entry_touch_time": "2026-02-17T14:20:00Z",
      "outcome_time": "2026-02-17T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4900.575, stop=4924.625, target=4864.499. Pre-M15 range high=4944.7, low=4842.6.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4869.965,
          "impulse_high": 4924.625,
          "fib50": 4897.295,
          "fib62": 4903.8542
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-17T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-17T16:00:00Z; outcome=tp_first",
      "timestamp": "2026-02-17T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4884.797,
      "stop": 4907.235,
      "target": 4851.14,
      "r": 1.5,
      "entry_touch_time": "2026-02-17T16:00:00Z",
      "outcome_time": "2026-02-17T17:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-17T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4884.797, stop=4907.235, target=4851.14. Pre-M15 range high=4944.7, low=4842.6.",
      "candidate": {
        "id": "candidate_v2_2026-02-17T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-17",
        "timestamp": "2026-02-17T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4856.24,
          "impulse_high": 4907.235,
          "fib50": 4881.737499999999,
          "fib62": 4887.8569
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-18T00:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-18T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4870.981,
      "stop": 4884.135,
      "target": 4851.251,
      "r": -1.0,
      "entry_touch_time": "2026-02-18T00:20:00Z",
      "outcome_time": "2026-02-18T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-18T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4870.981, stop=4884.135, target=4851.251. Pre-M15 range high=4910.9, low=4854.24.",
      "candidate": {
        "id": "candidate_v2_2026-02-18T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4854.24,
          "impulse_high": 4884.135,
          "fib50": 4869.1875,
          "fib62": 4872.7749
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T01-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-02-18T01-15-00Z_long_order_block_reclaim",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4872.435,
          "ob_high": 4883.4,
          "displacement_high": 4891.485
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4877.9175,
      "stop": 4872.435,
      "target": 4888.882499999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T12-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-18T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-18T12:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4921.352,
      "stop": 4924.66,
      "target": 4914.738,
      "r": -1.0,
      "entry_touch_time": "2026-02-18T12:05:00Z",
      "outcome_time": "2026-02-18T12:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-18T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4921.352, stop=4924.66, target=4914.738. Pre-M15 range high=4942.03, low=4906.425.",
      "candidate": {
        "id": "candidate_v2_2026-02-18T12-00-00Z_short_order_block_reclaim",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4918.045,
          "ob_high": 4924.66,
          "displacement_low": 4909.345
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-18T13:50:00Z; outcome=tp_first",
      "timestamp": "2026-02-18T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4950.379,
      "stop": 4943.2,
      "target": 4961.147,
      "r": 1.5,
      "entry_touch_time": "2026-02-18T13:50:00Z",
      "outcome_time": "2026-02-18T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-18T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4950.379, stop=4943.2, target=4961.147. Pre-M15 range high=4969.1, low=4906.425.",
      "candidate": {
        "id": "candidate_v2_2026-02-18T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4943.2,
          "impulse_high": 4959.515,
          "fib50": 4951.3575,
          "fib62": 4949.3997
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T19-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-19T05:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-18T19:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4989.335,
      "stop": 4994.49,
      "target": 4979.025,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T05:05:00Z",
      "outcome_time": "2026-02-19T05:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-18T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4989.335, stop=4994.49, target=4979.025. Pre-M15 range high=5010.915, low=4972.87.",
      "candidate": {
        "id": "candidate_v2_2026-02-18T19-30-00Z_short_order_block_reclaim",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4984.18,
          "ob_high": 4994.49,
          "displacement_low": 4972.87
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T21-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-18T21:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-18T21:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4981.557,
      "stop": 4976.845,
      "target": 4988.626,
      "r": -1.0,
      "entry_touch_time": "2026-02-18T21:05:00Z",
      "outcome_time": "2026-02-18T21:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-18T21:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4981.557, stop=4976.845, target=4988.626. Pre-M15 range high=5010.915, low=4972.87.",
      "candidate": {
        "id": "candidate_v2_2026-02-18T21-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T21:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4976.845,
          "impulse_high": 4987.555,
          "fib50": 4982.200000000001,
          "fib62": 4980.9148000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-18T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-18T23:55:00Z; outcome=sl_first",
      "timestamp": "2026-02-18T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4974.349,
      "stop": 4966.715,
      "target": 4985.8,
      "r": -1.0,
      "entry_touch_time": "2026-02-18T23:55:00Z",
      "outcome_time": "2026-02-19T00:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-18T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4974.349, stop=4966.715, target=4985.8. Pre-M15 range high=5003.27, low=4966.715.",
      "candidate": {
        "id": "candidate_v2_2026-02-18T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-18",
        "timestamp": "2026-02-18T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4966.715,
          "impulse_high": 4984.065,
          "fib50": 4975.389999999999,
          "fib62": 4973.308
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-19T02:15:00Z; outcome=tp_first",
      "timestamp": "2026-02-19T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4967.922,
      "stop": 4961.865,
      "target": 4977.006,
      "r": 1.5,
      "entry_touch_time": "2026-02-19T02:15:00Z",
      "outcome_time": "2026-02-19T03:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4967.922, stop=4961.865, target=4977.006. Pre-M15 range high=4988.86, low=4960.645.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4961.865,
          "impulse_high": 4975.63,
          "fib50": 4968.7474999999995,
          "fib62": 4967.0957
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-19T07:55:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5009.572,
      "stop": 5001.15,
      "target": 5022.204,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T07:55:00Z",
      "outcome_time": "2026-02-19T09:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5009.572, stop=5001.15, target=5022.204. Pre-M15 range high=5021.805, low=4966.475.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5001.15,
          "impulse_high": 5020.29,
          "fib50": 5010.719999999999,
          "fib62": 5008.4232
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T13-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-02-19T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T13:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4989.63,
      "stop": 4971.125,
      "target": 5026.64,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T13:35:00Z",
      "outcome_time": "2026-02-19T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4989.63, stop=4971.125, target=5026.64. Pre-M15 range high=5022.17, low=4971.125.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T13-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4971.125,
          "fvg_low": 4987.755,
          "fvg_high": 4991.505
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-19T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4983.306,
      "stop": 4971.125,
      "target": 5001.579,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T14:05:00Z",
      "outcome_time": "2026-02-19T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4983.306, stop=4971.125, target=5001.579. Pre-M15 range high=5020.565, low=4971.125.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4971.125,
          "impulse_high": 4998.81,
          "fib50": 4984.967500000001,
          "fib62": 4981.6453
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T14-15-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-02-19T14:20:00Z; outcome=tp_first",
      "timestamp": "2026-02-19T14:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4977.295,
      "stop": 4983.465,
      "target": 4964.955,
      "r": 2.0,
      "entry_touch_time": "2026-02-19T14:20:00Z",
      "outcome_time": "2026-02-19T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4977.295, stop=4983.465, target=4964.955. Pre-M15 range high=5005.86, low=4971.125.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T14-15-00Z_short_breaker_continuation",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4997.285,
          "breaker_low": 4971.125,
          "breaker_high": 4983.465,
          "break_low": 4974.52
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T14-30-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-02-19T14:40:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-19T14:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4985.64,
      "stop": 4985.02,
      "target": 4986.88,
      "r": null,
      "entry_touch_time": "2026-02-19T14:40:00Z",
      "outcome_time": "2026-02-19T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4985.64, stop=4985.02, target=4986.88. Pre-M15 range high=5005.46, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T14-30-00Z_long_breaker_continuation",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4974.52,
          "breaker_low": 4985.02,
          "breaker_high": 4986.26,
          "break_high": 4996.48
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T14-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-19T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T14:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4983.718,
      "stop": 4979.68,
      "target": 4991.793,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T14:35:00Z",
      "outcome_time": "2026-02-19T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4983.718, stop=4979.68, target=4991.793. Pre-M15 range high=5005.46, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T14-30-00Z_long_order_block_reclaim",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4979.68,
          "ob_high": 4987.755,
          "displacement_high": 4997.285
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T14-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-02-19T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-19T14:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4985.1,
      "stop": 4963.445,
      "target": 5028.41,
      "r": 2.0,
      "entry_touch_time": "2026-02-19T14:35:00Z",
      "outcome_time": "2026-02-20T06:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4985.1, stop=4963.445, target=5028.41. Pre-M15 range high=5005.46, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T14-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4963.445,
          "fvg_low": 4982.57,
          "fvg_high": 4987.63
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T15-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-19T16:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T15:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5004.48,
      "stop": 4999.035,
      "target": 5015.37,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T16:05:00Z",
      "outcome_time": "2026-02-19T16:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T15:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5004.48, stop=4999.035, target=5015.37. Pre-M15 range high=5022.385, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T15-45-00Z_long_order_block_reclaim",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4999.035,
          "ob_high": 5009.925,
          "displacement_high": 5016.44
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T16-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-02-19T17:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T16:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4986.94,
      "stop": 4978.49,
      "target": 5003.84,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T17:35:00Z",
      "outcome_time": "2026-02-19T18:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T16:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4986.94, stop=4978.49, target=5003.84. Pre-M15 range high=5022.385, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T16-15-00Z_long_breaker_continuation",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T16:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4963.445,
          "breaker_low": 4978.49,
          "breaker_high": 4995.39,
          "break_high": 4998.81
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-19T17:55:00Z; outcome=tp_first",
      "timestamp": "2026-02-19T17:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4984.123,
      "stop": 4963.445,
      "target": 5015.139,
      "r": 1.5,
      "entry_touch_time": "2026-02-19T17:55:00Z",
      "outcome_time": "2026-02-20T06:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4984.123, stop=4963.445, target=5015.139. Pre-M15 range high=5022.385, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4963.445,
          "impulse_high": 5010.44,
          "fib50": 4986.942499999999,
          "fib62": 4981.3031
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-19T18-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-19T18:50:00Z; outcome=sl_first",
      "timestamp": "2026-02-19T18:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4984.33,
      "stop": 4988.925,
      "target": 4975.14,
      "r": -1.0,
      "entry_touch_time": "2026-02-19T18:50:00Z",
      "outcome_time": "2026-02-19T19:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-19T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4984.33, stop=4988.925, target=4975.14. Pre-M15 range high=5022.385, low=4963.445.",
      "candidate": {
        "id": "candidate_v2_2026-02-19T18-30-00Z_short_order_block_reclaim",
        "date": "2026-02-19",
        "timestamp": "2026-02-19T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4979.735,
          "ob_high": 4988.925,
          "displacement_low": 4976.245
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-20T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4994.506,
      "stop": 5001.535,
      "target": 4983.963,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T00:05:00Z",
      "outcome_time": "2026-02-20T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4994.506, stop=5001.535, target=4983.963. Pre-M15 range high=5008.24, low=4975.41.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4985.56,
          "impulse_high": 5001.535,
          "fib50": 4993.547500000001,
          "fib62": 4995.4645
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-20T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4995.881,
      "stop": 4987.0,
      "target": 5009.204,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T01:35:00Z",
      "outcome_time": "2026-02-20T03:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4995.881, stop=4987.0, target=5009.204. Pre-M15 range high=5014.865, low=4978.325.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4987.0,
          "impulse_high": 5007.185,
          "fib50": 4997.092500000001,
          "fib62": 4994.6703
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T01-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-02-20T03:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T01:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4992.255,
      "stop": 4987.955,
      "target": 5000.855,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T03:05:00Z",
      "outcome_time": "2026-02-20T03:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4992.255, stop=4987.955, target=5000.855. Pre-M15 range high=5014.865, low=4978.325.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T01-15-00Z_long_breaker_continuation",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4985.435,
          "breaker_low": 4987.955,
          "breaker_high": 4996.555,
          "break_high": 5008.24
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-20T07:00:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5019.777,
      "stop": 5011.89,
      "target": 5031.608,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T07:00:00Z",
      "outcome_time": "2026-02-20T07:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5019.777, stop=5011.89, target=5031.608. Pre-M15 range high=5029.815, low=4981.67.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5011.89,
          "impulse_high": 5029.815,
          "fib50": 5020.8525,
          "fib62": 5018.7015
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-20T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-20T08:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5004.194,
      "stop": 4997.915,
      "target": 5013.612,
      "r": null,
      "entry_touch_time": "2026-02-20T15:05:00Z",
      "outcome_time": "2026-02-20T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5004.194, stop=4997.915, target=5013.612. Pre-M15 range high=5030.145, low=4981.67.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4997.915,
          "impulse_high": 5012.185,
          "fib50": 5005.05,
          "fib62": 5003.3376
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T08-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-20T08:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-20T08:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5015.438,
      "stop": 5018.1,
      "target": 5010.112,
      "r": 2.0,
      "entry_touch_time": "2026-02-20T08:05:00Z",
      "outcome_time": "2026-02-20T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5015.438, stop=5018.1, target=5010.112. Pre-M15 range high=5030.145, low=4981.67.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T08-00-00Z_short_order_block_reclaim",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5012.775,
          "ob_high": 5018.1,
          "displacement_low": 5006.145
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-20T12:30:00Z; outcome=tp_first",
      "timestamp": "2026-02-20T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5011.623,
      "stop": 5004.97,
      "target": 5021.602,
      "r": 1.5,
      "entry_touch_time": "2026-02-20T12:30:00Z",
      "outcome_time": "2026-02-20T12:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5011.623, stop=5004.97, target=5021.602. Pre-M15 range high=5042.74, low=5004.97.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5004.97,
          "impulse_high": 5020.09,
          "fib50": 5012.530000000001,
          "fib62": 5010.7156
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-00-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-02-20T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-20T15:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5020.705,
      "stop": 5017.405,
      "target": 5027.305,
      "r": null,
      "entry_touch_time": "2026-02-20T15:05:00Z",
      "outcome_time": "2026-02-20T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5020.705, stop=5017.405, target=5027.305. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-00-00Z_long_breaker_continuation",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5013.84,
          "breaker_low": 5017.405,
          "breaker_high": 5024.005,
          "break_high": 5042.74
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-20T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-20T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5015.817,
      "stop": 5007.285,
      "target": 5028.614,
      "r": null,
      "entry_touch_time": "2026-02-20T15:05:00Z",
      "outcome_time": "2026-02-20T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5015.817, stop=5007.285, target=5028.614. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5007.285,
          "impulse_high": 5026.675,
          "fib50": 5016.98,
          "fib62": 5014.6532
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-00-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-20T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-20T15:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5018.923,
      "stop": 5024.005,
      "target": 5008.758,
      "r": null,
      "entry_touch_time": "2026-02-20T15:05:00Z",
      "outcome_time": "2026-02-20T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5018.923, stop=5024.005, target=5008.758. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-00-00Z_short_order_block_reclaim",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5013.84,
          "ob_high": 5024.005,
          "displacement_low": 5011.73
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-20T15:45:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T15:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 5046.783,
      "stop": 5064.33,
      "target": 5011.688,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T15:45:00Z",
      "outcome_time": "2026-02-20T16:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5046.783, stop=5064.33, target=5011.688. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5064.33,
          "fvg_low": 5045.02,
          "fvg_high": 5048.545
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-15-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-02-20T15:20:00Z; outcome=tp_first",
      "timestamp": "2026-02-20T15:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5023.202,
      "stop": 5022.74,
      "target": 5024.127,
      "r": 2.0,
      "entry_touch_time": "2026-02-20T15:20:00Z",
      "outcome_time": "2026-02-20T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5023.202, stop=5022.74, target=5024.127. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-15-00Z_long_breaker_continuation",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5011.73,
          "breaker_low": 5022.74,
          "breaker_high": 5023.665,
          "break_high": 5042.74
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-20T15:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T15:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5041.89,
      "stop": 5038.865,
      "target": 5047.94,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T15:40:00Z",
      "outcome_time": "2026-02-20T15:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5041.89, stop=5038.865, target=5047.94. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-30-00Z_long_order_block_reclaim",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5038.865,
          "ob_high": 5044.915,
          "displacement_high": 5054.41
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T15-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-20T16:10:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T15:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5054.6,
      "stop": 5060.655,
      "target": 5042.49,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T16:10:00Z",
      "outcome_time": "2026-02-20T16:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T15:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5054.6, stop=5060.655, target=5042.49. Pre-M15 range high=5064.33, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T15-45-00Z_short_order_block_reclaim",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5048.545,
          "ob_high": 5060.655,
          "displacement_low": 4990.585
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-20T16-45-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-02-20T17:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-20T16:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5059.49,
      "stop": 5054.65,
      "target": 5069.17,
      "r": -1.0,
      "entry_touch_time": "2026-02-20T17:20:00Z",
      "outcome_time": "2026-02-20T17:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-20T16:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5059.49, stop=5054.65, target=5069.17. Pre-M15 range high=5069.475, low=4990.585.",
      "candidate": {
        "id": "candidate_v2_2026-02-20T16-45-00Z_long_breaker_continuation",
        "date": "2026-02-20",
        "timestamp": "2026-02-20T16:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4990.585,
          "breaker_low": 5054.65,
          "breaker_high": 5064.33,
          "break_high": 5060.655
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-23T00:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5133.048,
      "stop": 5117.815,
      "target": 5155.897,
      "r": 1.5,
      "entry_touch_time": "2026-02-23T00:10:00Z",
      "outcome_time": "2026-02-23T00:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5133.048, stop=5117.815, target=5155.897. Pre-M15 range high=5172.315, low=5053.79.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5117.815,
          "impulse_high": 5152.435,
          "fib50": 5135.125,
          "fib62": 5130.9706
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T00-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-23T00:25:00Z; outcome=sl_first",
      "timestamp": "2026-02-23T00:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5146.603,
      "stop": 5140.77,
      "target": 5158.268,
      "r": -1.0,
      "entry_touch_time": "2026-02-23T00:25:00Z",
      "outcome_time": "2026-02-23T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5146.603, stop=5140.77, target=5158.268. Pre-M15 range high=5172.315, low=5057.16.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T00-15-00Z_long_order_block_reclaim",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5140.77,
          "ob_high": 5152.435,
          "displacement_high": 5159.585
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T07-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-23T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-02-23T07:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5146.215,
      "stop": 5154.375,
      "target": 5129.895,
      "r": -1.0,
      "entry_touch_time": "2026-02-23T09:10:00Z",
      "outcome_time": "2026-02-23T10:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T07:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5146.215, stop=5154.375, target=5129.895. Pre-M15 range high=5176.05, low=5125.19.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T07-45-00Z_short_order_block_reclaim",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T07:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5138.055,
          "ob_high": 5154.375,
          "displacement_low": 5125.19
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T11-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-23T11:15:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T11:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5151.465,
      "stop": 5145.16,
      "target": 5164.075,
      "r": 2.0,
      "entry_touch_time": "2026-02-23T11:15:00Z",
      "outcome_time": "2026-02-23T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5151.465, stop=5145.16, target=5164.075. Pre-M15 range high=5163.655, low=5122.22.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T11-00-00Z_long_order_block_reclaim",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5145.16,
          "ob_high": 5157.77,
          "displacement_high": 5163.655
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-23T13:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-23T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5156.715,
      "stop": 5149.77,
      "target": 5167.134,
      "r": -1.0,
      "entry_touch_time": "2026-02-23T13:05:00Z",
      "outcome_time": "2026-02-23T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5156.715, stop=5149.77, target=5167.134. Pre-M15 range high=5165.565, low=5122.22.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5149.77,
          "impulse_high": 5165.555,
          "fib50": 5157.6625,
          "fib62": 5155.768300000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T13-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-23T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T13:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 5158.233,
      "stop": 5165.565,
      "target": 5143.568,
      "r": 2.0,
      "entry_touch_time": "2026-02-23T13:05:00Z",
      "outcome_time": "2026-02-23T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5158.233, stop=5165.565, target=5143.568. Pre-M15 range high=5165.565, low=5122.22.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T13-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5165.565,
          "fvg_low": 5156.79,
          "fvg_high": 5159.675
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T14-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-02-23T14:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T14:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 5154.72,
      "stop": 5141.615,
      "target": 5180.93,
      "r": 2.0,
      "entry_touch_time": "2026-02-23T14:10:00Z",
      "outcome_time": "2026-02-23T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5154.72, stop=5141.615, target=5180.93. Pre-M15 range high=5165.565, low=5141.615.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T14-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 5141.615,
          "fvg_low": 5153.41,
          "fvg_high": 5156.03
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-23T16:00:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5180.662,
      "stop": 5164.945,
      "target": 5204.237,
      "r": 1.5,
      "entry_touch_time": "2026-02-23T16:00:00Z",
      "outcome_time": "2026-02-23T16:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5180.662, stop=5164.945, target=5204.237. Pre-M15 range high=5200.665, low=5141.615.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5164.945,
          "impulse_high": 5200.665,
          "fib50": 5182.805,
          "fib62": 5178.518599999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-23T17:35:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T17:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5194.905,
      "stop": 5175.805,
      "target": 5223.556,
      "r": 1.5,
      "entry_touch_time": "2026-02-23T17:35:00Z",
      "outcome_time": "2026-02-23T20:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5194.905, stop=5175.805, target=5223.556. Pre-M15 range high=5219.215, low=5141.615.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5175.805,
          "impulse_high": 5219.215,
          "fib50": 5197.51,
          "fib62": 5192.3008
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-23T21-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-23T21:10:00Z; outcome=tp_first",
      "timestamp": "2026-02-23T21:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5230.51,
      "stop": 5224.665,
      "target": 5239.279,
      "r": 1.5,
      "entry_touch_time": "2026-02-23T21:10:00Z",
      "outcome_time": "2026-02-23T23:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-23T21:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5230.51, stop=5224.665, target=5239.279. Pre-M15 range high=5237.95, low=5191.275.",
      "candidate": {
        "id": "candidate_v2_2026-02-23T21-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-23",
        "timestamp": "2026-02-23T21:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5224.665,
          "impulse_high": 5237.95,
          "fib50": 5231.3075,
          "fib62": 5229.7133
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-24T01:00:00Z; outcome=sl_first",
      "timestamp": "2026-02-24T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5219.781,
      "stop": 5214.875,
      "target": 5227.14,
      "r": -1.0,
      "entry_touch_time": "2026-02-24T01:00:00Z",
      "outcome_time": "2026-02-24T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5219.781, stop=5214.875, target=5227.14. Pre-M15 range high=5250.005, low=5201.015.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5214.875,
          "impulse_high": 5226.025,
          "fib50": 5220.45,
          "fib62": 5219.112
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-24T02:50:00Z; outcome=tp_first",
      "timestamp": "2026-02-24T02:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5189.523,
      "stop": 5224.4,
      "target": 5137.209,
      "r": 1.5,
      "entry_touch_time": "2026-02-24T02:50:00Z",
      "outcome_time": "2026-02-24T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5189.523, stop=5224.4, target=5137.209. Pre-M15 range high=5250.005, low=5145.135.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5145.135,
          "impulse_high": 5224.4,
          "fib50": 5184.7675,
          "fib62": 5194.2793
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-24T17:20:00Z; outcome=tp_first",
      "timestamp": "2026-02-24T12:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5161.938,
      "stop": 5173.58,
      "target": 5144.474,
      "r": 1.5,
      "entry_touch_time": "2026-02-24T17:20:00Z",
      "outcome_time": "2026-02-24T21:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5161.938, stop=5173.58, target=5144.474. Pre-M15 range high=5183.025, low=5147.12.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5147.12,
          "impulse_high": 5173.58,
          "fib50": 5160.35,
          "fib62": 5163.5252
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-24T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-24T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5156.053,
      "stop": 5164.73,
      "target": 5143.038,
      "r": 1.5,
      "entry_touch_time": "2026-02-24T13:05:00Z",
      "outcome_time": "2026-02-24T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5156.053, stop=5164.73, target=5143.038. Pre-M15 range high=5181.955, low=5145.01.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5145.01,
          "impulse_high": 5164.73,
          "fib50": 5154.87,
          "fib62": 5157.2364
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-24T14:40:00Z; outcome=sl_first",
      "timestamp": "2026-02-24T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5137.807,
      "stop": 5158.87,
      "target": 5106.213,
      "r": -1.0,
      "entry_touch_time": "2026-02-24T14:40:00Z",
      "outcome_time": "2026-02-24T17:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5137.807, stop=5158.87, target=5106.213. Pre-M15 range high=5181.49, low=5093.225.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5111.0,
          "impulse_high": 5158.87,
          "fib50": 5134.9349999999995,
          "fib62": 5140.6794
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T20-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-24T21:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-24T20:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5156.997,
      "stop": 5146.65,
      "target": 5172.516,
      "r": -1.0,
      "entry_touch_time": "2026-02-24T21:05:00Z",
      "outcome_time": "2026-02-24T21:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5156.997, stop=5146.65, target=5172.516. Pre-M15 range high=5173.31, low=5130.68.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T20-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5146.65,
          "impulse_high": 5170.165,
          "fib50": 5158.407499999999,
          "fib62": 5155.5857
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-24T21-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-24T21:30:00Z; outcome=sl_first",
      "timestamp": "2026-02-24T21:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5151.3,
      "stop": 5146.65,
      "target": 5160.6,
      "r": -1.0,
      "entry_touch_time": "2026-02-24T21:30:00Z",
      "outcome_time": "2026-02-24T21:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-24T21:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5151.3, stop=5146.65, target=5160.6. Pre-M15 range high=5173.31, low=5130.68.",
      "candidate": {
        "id": "candidate_v2_2026-02-24T21-15-00Z_long_order_block_reclaim",
        "date": "2026-02-24",
        "timestamp": "2026-02-24T21:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5146.65,
          "ob_high": 5155.95,
          "displacement_high": 5170.165
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T06-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-02-25T06:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-25T06:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5182.525,
      "stop": 5179.985,
      "target": 5187.605,
      "r": 2.0,
      "entry_touch_time": "2026-02-25T06:05:00Z",
      "outcome_time": "2026-02-25T06:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5182.525, stop=5179.985, target=5187.605. Pre-M15 range high=5210.68, low=5166.495.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T06-00-00Z_long_order_block_reclaim",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5179.985,
          "ob_high": 5185.065,
          "displacement_high": 5191.645
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T10-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-25T10:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-25T10:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 5186.433,
      "stop": 5195.285,
      "target": 5168.728,
      "r": 2.0,
      "entry_touch_time": "2026-02-25T10:05:00Z",
      "outcome_time": "2026-02-25T11:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5186.433, stop=5195.285, target=5168.728. Pre-M15 range high=5210.68, low=5176.635.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T10-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5195.285,
          "fvg_low": 5184.935,
          "fvg_high": 5187.93
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-25T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-25T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5173.725,
      "stop": 5166.685,
      "target": 5184.285,
      "r": -1.0,
      "entry_touch_time": "2026-02-25T14:35:00Z",
      "outcome_time": "2026-02-25T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5173.725, stop=5166.685, target=5184.285. Pre-M15 range high=5195.285, low=5155.095.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5166.685,
          "impulse_high": 5182.685,
          "fib50": 5174.685,
          "fib62": 5172.765
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-25T15:30:00Z; outcome=tp_first",
      "timestamp": "2026-02-25T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5173.9,
      "stop": 5158.645,
      "target": 5196.782,
      "r": 1.5,
      "entry_touch_time": "2026-02-25T15:30:00Z",
      "outcome_time": "2026-02-25T15:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5173.9, stop=5158.645, target=5196.782. Pre-M15 range high=5202.795, low=5155.095.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5158.645,
          "impulse_high": 5193.315,
          "fib50": 5175.98,
          "fib62": 5171.8196
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T15-15-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-02-25T15:25:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-02-25T15:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5179.452,
      "stop": 5177.755,
      "target": 5182.847,
      "r": null,
      "entry_touch_time": "2026-02-25T15:25:00Z",
      "outcome_time": "2026-02-25T15:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5179.452, stop=5177.755, target=5182.847. Pre-M15 range high=5202.795, low=5155.095.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T15-15-00Z_long_breaker_continuation",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5158.645,
          "breaker_low": 5177.755,
          "breaker_high": 5181.15,
          "break_high": 5191.415
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T15-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-25T15:20:00Z; outcome=sl_first",
      "timestamp": "2026-02-25T15:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5187.413,
      "stop": 5191.15,
      "target": 5179.938,
      "r": -1.0,
      "entry_touch_time": "2026-02-25T15:20:00Z",
      "outcome_time": "2026-02-25T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5187.413, stop=5191.15, target=5179.938. Pre-M15 range high=5202.795, low=5155.095.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T15-15-00Z_short_order_block_reclaim",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5183.675,
          "ob_high": 5191.15,
          "displacement_low": 5174.95
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-25T21-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-25T21:15:00Z; outcome=sl_first",
      "timestamp": "2026-02-25T21:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5170.55,
      "stop": 5190.7,
      "target": 5140.325,
      "r": -1.0,
      "entry_touch_time": "2026-02-25T21:15:00Z",
      "outcome_time": "2026-02-26T00:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-25T21:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5170.55, stop=5190.7, target=5140.325. Pre-M15 range high=5217.78, low=5144.905.",
      "candidate": {
        "id": "candidate_v2_2026-02-25T21-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-25",
        "timestamp": "2026-02-25T21:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5144.905,
          "impulse_high": 5190.7,
          "fib50": 5167.8025,
          "fib62": 5173.2979
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-26T04:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-26T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5195.991,
      "stop": 5206.305,
      "target": 5180.521,
      "r": 1.5,
      "entry_touch_time": "2026-02-26T04:05:00Z",
      "outcome_time": "2026-02-26T07:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5195.991, stop=5206.305, target=5180.521. Pre-M15 range high=5208.445, low=5144.905.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5182.865,
          "impulse_high": 5206.305,
          "fib50": 5194.585,
          "fib62": 5197.3978
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-26T07:40:00Z; outcome=tp_first",
      "timestamp": "2026-02-26T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5189.321,
      "stop": 5194.935,
      "target": 5180.899,
      "r": 1.5,
      "entry_touch_time": "2026-02-26T07:40:00Z",
      "outcome_time": "2026-02-26T07:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5189.321, stop=5194.935, target=5180.899. Pre-M15 range high=5205.64, low=5176.33.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5182.175,
          "impulse_high": 5194.935,
          "fib50": 5188.555,
          "fib62": 5190.086200000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T08-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-26T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-02-26T08:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5185.318,
      "stop": 5191.12,
      "target": 5173.713,
      "r": 2.0,
      "entry_touch_time": "2026-02-26T09:45:00Z",
      "outcome_time": "2026-02-26T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5185.318, stop=5191.12, target=5173.713. Pre-M15 range high=5205.64, low=5170.655.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T08-30-00Z_short_order_block_reclaim",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5179.515,
          "ob_high": 5191.12,
          "displacement_low": 5175.47
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-26T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-02-26T09:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5184.234,
      "stop": 5191.12,
      "target": 5173.905,
      "r": 1.5,
      "entry_touch_time": "2026-02-26T09:45:00Z",
      "outcome_time": "2026-02-26T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5184.234, stop=5191.12, target=5173.905. Pre-M15 range high=5205.64, low=5167.7.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5175.47,
          "impulse_high": 5191.12,
          "fib50": 5183.295,
          "fib62": 5185.173
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-26T11:05:00Z; outcome=tp_first",
      "timestamp": "2026-02-26T11:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5173.503,
      "stop": 5179.595,
      "target": 5164.366,
      "r": 1.5,
      "entry_touch_time": "2026-02-26T11:05:00Z",
      "outcome_time": "2026-02-26T11:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5173.503, stop=5179.595, target=5164.366. Pre-M15 range high=5198.63, low=5165.75.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5165.75,
          "impulse_high": 5179.595,
          "fib50": 5172.672500000001,
          "fib62": 5174.3339000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T13-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-26T13:05:00Z; outcome=sl_first",
      "timestamp": "2026-02-26T13:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5173.66,
      "stop": 5175.53,
      "target": 5169.92,
      "r": -1.0,
      "entry_touch_time": "2026-02-26T13:05:00Z",
      "outcome_time": "2026-02-26T13:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5173.66, stop=5175.53, target=5169.92. Pre-M15 range high=5191.105, low=5157.87.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T13-00-00Z_short_order_block_reclaim",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5171.79,
          "ob_high": 5175.53,
          "displacement_low": 5161.05
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-26T15:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-26T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5153.951,
      "stop": 5172.585,
      "target": 5126.0,
      "r": -1.0,
      "entry_touch_time": "2026-02-26T15:35:00Z",
      "outcome_time": "2026-02-26T15:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5153.951, stop=5172.585, target=5126.0. Pre-M15 range high=5188.095, low=5130.235.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5130.235,
          "impulse_high": 5172.585,
          "fib50": 5151.41,
          "fib62": 5156.492
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-26T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-26T17:55:00Z; outcome=tp_first",
      "timestamp": "2026-02-26T17:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5163.709,
      "stop": 5140.73,
      "target": 5198.177,
      "r": 1.5,
      "entry_touch_time": "2026-02-26T17:55:00Z",
      "outcome_time": "2026-02-26T20:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-26T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5163.709, stop=5140.73, target=5198.177. Pre-M15 range high=5192.955, low=5130.235.",
      "candidate": {
        "id": "candidate_v2_2026-02-26T17-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-26",
        "timestamp": "2026-02-26T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5140.73,
          "impulse_high": 5192.955,
          "fib50": 5166.8425,
          "fib62": 5160.5755
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-27T00:20:00Z; outcome=tp_first",
      "timestamp": "2026-02-27T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5193.781,
      "stop": 5200.755,
      "target": 5183.32,
      "r": 1.5,
      "entry_touch_time": "2026-02-27T00:20:00Z",
      "outcome_time": "2026-02-27T00:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5193.781, stop=5200.755, target=5183.32. Pre-M15 range high=5201.005, low=5160.53.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5184.905,
          "impulse_high": 5200.755,
          "fib50": 5192.83,
          "fib62": 5194.732
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-02-27T01:30:00Z; outcome=sl_first",
      "timestamp": "2026-02-27T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5181.139,
      "stop": 5189.8,
      "target": 5168.147,
      "r": -1.0,
      "entry_touch_time": "2026-02-27T01:30:00Z",
      "outcome_time": "2026-02-27T01:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5181.139, stop=5189.8, target=5168.147. Pre-M15 range high=5201.005, low=5166.995.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5170.115,
          "impulse_high": 5189.8,
          "fib50": 5179.9575,
          "fib62": 5182.3197
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T01-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-02-27T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-02-27T01:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5190.157,
      "stop": 5195.03,
      "target": 5180.412,
      "r": -1.0,
      "entry_touch_time": "2026-02-27T01:35:00Z",
      "outcome_time": "2026-02-27T02:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5190.157, stop=5195.03, target=5180.412. Pre-M15 range high=5201.005, low=5166.995.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T01-30-00Z_short_order_block_reclaim",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5185.285,
          "ob_high": 5195.03,
          "displacement_low": 5170.115
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-27T02:30:00Z; outcome=tp_first",
      "timestamp": "2026-02-27T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5182.781,
      "stop": 5173.345,
      "target": 5196.935,
      "r": 1.5,
      "entry_touch_time": "2026-02-27T02:30:00Z",
      "outcome_time": "2026-02-27T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5182.781, stop=5173.345, target=5196.935. Pre-M15 range high=5201.005, low=5166.995.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5173.345,
          "impulse_high": 5194.79,
          "fib50": 5184.0675,
          "fib62": 5181.4941
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-27T06:50:00Z; outcome=sl_first",
      "timestamp": "2026-02-27T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5187.5,
      "stop": 5181.58,
      "target": 5196.381,
      "r": -1.0,
      "entry_touch_time": "2026-02-27T06:50:00Z",
      "outcome_time": "2026-02-27T07:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5187.5, stop=5181.58, target=5196.381. Pre-M15 range high=5200.64, low=5173.59.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5181.58,
          "impulse_high": 5195.035,
          "fib50": 5188.3075,
          "fib62": 5186.6929
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T09-45-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-02-27T09:50:00Z; outcome=sl_first",
      "timestamp": "2026-02-27T09:45:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 5177.427,
      "stop": 5182.815,
      "target": 5166.653,
      "r": -1.0,
      "entry_touch_time": "2026-02-27T09:50:00Z",
      "outcome_time": "2026-02-27T11:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T09:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5177.427, stop=5182.815, target=5166.653. Pre-M15 range high=5200.64, low=5172.225.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T09-45-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T09:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5182.815,
          "fvg_low": 5176.99,
          "fvg_high": 5177.865
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-02-27T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-02-27T13:40:00Z; outcome=tp_first",
      "timestamp": "2026-02-27T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5210.624,
      "stop": 5186.895,
      "target": 5246.218,
      "r": 1.5,
      "entry_touch_time": "2026-02-27T13:40:00Z",
      "outcome_time": "2026-02-27T15:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-02-27T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5210.624, stop=5186.895, target=5246.218. Pre-M15 range high=5240.825, low=5168.685.",
      "candidate": {
        "id": "candidate_v2_2026-02-27T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-02-27",
        "timestamp": "2026-02-27T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5186.895,
          "impulse_high": 5240.825,
          "fib50": 5213.860000000001,
          "fib62": 5207.3884
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-02T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-02T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-02T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5371.084,
      "stop": 5353.075,
      "target": 5398.098,
      "r": -1.0,
      "entry_touch_time": "2026-03-02T00:05:00Z",
      "outcome_time": "2026-03-02T00:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-02T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5371.084, stop=5353.075, target=5398.098. Pre-M15 range high=5394.005, low=5222.665.",
      "candidate": {
        "id": "candidate_v2_2026-03-02T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-02",
        "timestamp": "2026-03-02T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5353.075,
          "impulse_high": 5394.005,
          "fib50": 5373.54,
          "fib62": 5368.6284
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-02T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-02T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-02T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5400.27,
      "stop": 5385.035,
      "target": 5423.123,
      "r": -1.0,
      "entry_touch_time": "2026-03-02T08:40:00Z",
      "outcome_time": "2026-03-02T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-02T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5400.27, stop=5385.035, target=5423.123. Pre-M15 range high=5419.66, low=5340.82.",
      "candidate": {
        "id": "candidate_v2_2026-03-02T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-02",
        "timestamp": "2026-03-02T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5385.035,
          "impulse_high": 5419.66,
          "fib50": 5402.3475,
          "fib62": 5398.1925
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-02T08-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-02T08:50:00Z; outcome=tp_first",
      "timestamp": "2026-03-02T08:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5409.307,
      "stop": 5416.165,
      "target": 5395.592,
      "r": 2.0,
      "entry_touch_time": "2026-03-02T08:50:00Z",
      "outcome_time": "2026-03-02T08:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-02T08:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5409.307, stop=5416.165, target=5395.592. Pre-M15 range high=5419.66, low=5340.82.",
      "candidate": {
        "id": "candidate_v2_2026-03-02T08-45-00Z_short_order_block_reclaim",
        "date": "2026-03-02",
        "timestamp": "2026-03-02T08:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5402.45,
          "ob_high": 5416.165,
          "displacement_low": 5396.83
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-02T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-03T00:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-02T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5356.446,
      "stop": 5395.375,
      "target": 5298.052,
      "r": 1.5,
      "entry_touch_time": "2026-03-03T00:15:00Z",
      "outcome_time": "2026-03-03T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-02T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5356.446, stop=5395.375, target=5298.052. Pre-M15 range high=5417.045, low=5306.51.",
      "candidate": {
        "id": "candidate_v2_2026-03-02T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-02",
        "timestamp": "2026-03-02T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5306.9,
          "impulse_high": 5395.375,
          "fib50": 5351.1375,
          "fib62": 5361.7545
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-02T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-02T17:10:00Z; outcome=sl_first",
      "timestamp": "2026-03-02T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5298.828,
      "stop": 5311.925,
      "target": 5279.184,
      "r": -1.0,
      "entry_touch_time": "2026-03-02T17:10:00Z",
      "outcome_time": "2026-03-02T17:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-02T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5298.828, stop=5311.925, target=5279.184. Pre-M15 range high=5417.045, low=5260.285.",
      "candidate": {
        "id": "candidate_v2_2026-03-02T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-02",
        "timestamp": "2026-03-02T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5282.16,
          "impulse_high": 5311.925,
          "fib50": 5297.0425,
          "fib62": 5300.6143
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-03T02:30:00Z; outcome=tp_first",
      "timestamp": "2026-03-03T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5360.773,
      "stop": 5378.65,
      "target": 5333.957,
      "r": 1.5,
      "entry_touch_time": "2026-03-03T02:30:00Z",
      "outcome_time": "2026-03-03T05:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5360.773, stop=5378.65, target=5333.957. Pre-M15 range high=5379.975, low=5321.705.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5338.02,
          "impulse_high": 5378.65,
          "fib50": 5358.335,
          "fib62": 5363.2106
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T02-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-03T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-03T02:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5352.903,
      "stop": 5346.05,
      "target": 5366.608,
      "r": -1.0,
      "entry_touch_time": "2026-03-03T02:05:00Z",
      "outcome_time": "2026-03-03T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5352.903, stop=5346.05, target=5366.608. Pre-M15 range high=5379.975, low=5321.705.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T02-00-00Z_long_order_block_reclaim",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5346.05,
          "ob_high": 5359.755,
          "displacement_high": 5372.13
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-03T08:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-03T08:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5335.687,
      "stop": 5359.72,
      "target": 5299.638,
      "r": 1.5,
      "entry_touch_time": "2026-03-03T08:05:00Z",
      "outcome_time": "2026-03-03T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5335.687, stop=5359.72, target=5299.638. Pre-M15 range high=5375.865, low=5279.005.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5305.1,
          "impulse_high": 5359.72,
          "fib50": 5332.41,
          "fib62": 5338.964400000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-03T09:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-03T09:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5269.578,
      "stop": 5304.155,
      "target": 5217.711,
      "r": 1.5,
      "entry_touch_time": "2026-03-03T09:35:00Z",
      "outcome_time": "2026-03-03T11:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5269.578, stop=5304.155, target=5217.711. Pre-M15 range high=5370.035, low=5225.57.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5225.57,
          "impulse_high": 5304.155,
          "fib50": 5264.862499999999,
          "fib62": 5274.2927
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T10-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-03T10-00-00Z_short_order_block_reclaim",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5284.615,
          "ob_high": 5304.155,
          "displacement_low": 5225.57
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 5294.385,
      "stop": 5304.155,
      "target": 5274.845000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-03T12:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-03T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5196.557,
      "stop": 5264.17,
      "target": 5095.138,
      "r": 1.5,
      "entry_touch_time": "2026-03-03T12:20:00Z",
      "outcome_time": "2026-03-03T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5196.557, stop=5264.17, target=5095.138. Pre-M15 range high=5336.12, low=5073.135.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5110.505,
          "impulse_high": 5264.17,
          "fib50": 5187.3375,
          "fib62": 5205.7773
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-03T15:55:00Z; outcome=sl_first",
      "timestamp": "2026-03-03T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5089.029,
      "stop": 5146.31,
      "target": 5003.107,
      "r": -1.0,
      "entry_touch_time": "2026-03-03T15:55:00Z",
      "outcome_time": "2026-03-03T19:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5089.029, stop=5146.31, target=5003.107. Pre-M15 range high=5264.17, low=4996.275.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5016.125,
          "impulse_high": 5146.31,
          "fib50": 5081.217500000001,
          "fib62": 5096.8397
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-03T19-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-03-03T19:10:00Z; outcome=sl_first",
      "timestamp": "2026-03-03T19:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 5124.233,
      "stop": 5149.055,
      "target": 5074.587,
      "r": -1.0,
      "entry_touch_time": "2026-03-03T19:10:00Z",
      "outcome_time": "2026-03-04T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-03T19:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5124.233, stop=5149.055, target=5074.587. Pre-M15 range high=5166.765, low=4996.275.",
      "candidate": {
        "id": "candidate_v2_2026-03-03T19-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-03-03",
        "timestamp": "2026-03-03T19:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5149.055,
          "fvg_low": 5121.36,
          "fvg_high": 5127.105
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-04T02:55:00Z; outcome=sl_first",
      "timestamp": "2026-03-04T02:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5158.472,
      "stop": 5142.485,
      "target": 5182.454,
      "r": -1.0,
      "entry_touch_time": "2026-03-04T02:55:00Z",
      "outcome_time": "2026-03-04T03:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5158.472, stop=5142.485, target=5182.454. Pre-M15 range high=5191.065, low=5083.45.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5142.485,
          "impulse_high": 5178.82,
          "fib50": 5160.6525,
          "fib62": 5156.2923
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-04T03:50:00Z; outcome=tp_first",
      "timestamp": "2026-03-04T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5169.221,
      "stop": 5181.125,
      "target": 5151.364,
      "r": 1.5,
      "entry_touch_time": "2026-03-04T03:50:00Z",
      "outcome_time": "2026-03-04T06:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5169.221, stop=5181.125, target=5151.364. Pre-M15 range high=5191.065, low=5083.45.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5154.07,
          "impulse_high": 5181.125,
          "fib50": 5167.5975,
          "fib62": 5170.8441
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-04T14:55:00Z; outcome=sl_first",
      "timestamp": "2026-03-04T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5141.45,
      "stop": 5160.095,
      "target": 5113.483,
      "r": -1.0,
      "entry_touch_time": "2026-03-04T14:55:00Z",
      "outcome_time": "2026-03-04T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5141.45, stop=5160.095, target=5113.483. Pre-M15 range high=5191.065, low=5117.72.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5117.72,
          "impulse_high": 5160.095,
          "fib50": 5138.9075,
          "fib62": 5143.9925
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T10-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-04T10:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-04T10:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5180.532,
      "stop": 5175.995,
      "target": 5189.607,
      "r": 2.0,
      "entry_touch_time": "2026-03-04T10:35:00Z",
      "outcome_time": "2026-03-04T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5180.532, stop=5175.995, target=5189.607. Pre-M15 range high=5202.425, low=5117.72.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T10-30-00Z_long_order_block_reclaim",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5175.995,
          "ob_high": 5185.07,
          "displacement_high": 5198.325
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T13-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-04T13-00-00Z_short_order_block_reclaim",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5192.21,
          "ob_high": 5206.265,
          "displacement_low": 5174.42
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 5199.2375,
      "stop": 5206.265,
      "target": 5185.1825,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-04T13:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-04T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5182.223,
      "stop": 5170.99,
      "target": 5199.073,
      "r": -1.0,
      "entry_touch_time": "2026-03-04T13:40:00Z",
      "outcome_time": "2026-03-04T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5182.223, stop=5170.99, target=5199.073. Pre-M15 range high=5206.265, low=5156.51.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5170.99,
          "impulse_high": 5196.52,
          "fib50": 5183.755,
          "fib62": 5180.6914
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-04T15:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-04T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5164.936,
      "stop": 5185.33,
      "target": 5134.345,
      "r": 1.5,
      "entry_touch_time": "2026-03-04T15:35:00Z",
      "outcome_time": "2026-03-04T15:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5164.936, stop=5185.33, target=5134.345. Pre-M15 range high=5206.265, low=5131.34.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5138.98,
          "impulse_high": 5185.33,
          "fib50": 5162.155,
          "fib62": 5167.717
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-04T15-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-05T00:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-04T15:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5174.278,
      "stop": 5185.33,
      "target": 5152.173,
      "r": -1.0,
      "entry_touch_time": "2026-03-05T00:15:00Z",
      "outcome_time": "2026-03-05T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-04T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5174.278, stop=5185.33, target=5152.173. Pre-M15 range high=5206.265, low=5131.34.",
      "candidate": {
        "id": "candidate_v2_2026-03-04T15-30-00Z_short_order_block_reclaim",
        "date": "2026-03-04",
        "timestamp": "2026-03-04T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5163.225,
          "ob_high": 5185.33,
          "displacement_low": 5138.98
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-05T02:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-05T02:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5179.122,
      "stop": 5171.895,
      "target": 5189.962,
      "r": 1.5,
      "entry_touch_time": "2026-03-05T02:35:00Z",
      "outcome_time": "2026-03-05T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5179.122, stop=5171.895, target=5189.962. Pre-M15 range high=5188.32, low=5129.595.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5171.895,
          "impulse_high": 5188.32,
          "fib50": 5180.1075,
          "fib62": 5178.1365000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T03-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-05T03:55:00Z; outcome=sl_first",
      "timestamp": "2026-03-05T03:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5180.89,
      "stop": 5174.455,
      "target": 5193.76,
      "r": -1.0,
      "entry_touch_time": "2026-03-05T03:55:00Z",
      "outcome_time": "2026-03-05T04:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5180.89, stop=5174.455, target=5193.76. Pre-M15 range high=5195.22, low=5129.595.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T03-00-00Z_long_order_block_reclaim",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5174.455,
          "ob_high": 5187.325,
          "displacement_high": 5192.62
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-05T06:55:00Z; outcome=tp_first",
      "timestamp": "2026-03-05T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5162.861,
      "stop": 5174.215,
      "target": 5145.83,
      "r": 1.5,
      "entry_touch_time": "2026-03-05T06:55:00Z",
      "outcome_time": "2026-03-05T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5162.861, stop=5174.215, target=5145.83. Pre-M15 range high=5195.22, low=5120.785.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5148.41,
          "impulse_high": 5174.215,
          "fib50": 5161.3125,
          "fib62": 5164.4091
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-05T08:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-05T08:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5152.912,
      "stop": 5140.31,
      "target": 5171.814,
      "r": -1.0,
      "entry_touch_time": "2026-03-05T08:05:00Z",
      "outcome_time": "2026-03-05T08:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5152.912, stop=5140.31, target=5171.814. Pre-M15 range high=5191.34, low=5120.785.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5140.31,
          "impulse_high": 5168.95,
          "fib50": 5154.63,
          "fib62": 5151.193200000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T08-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-05T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-05T08:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5162.613,
      "stop": 5166.425,
      "target": 5154.988,
      "r": -1.0,
      "entry_touch_time": "2026-03-05T08:40:00Z",
      "outcome_time": "2026-03-05T08:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5162.613, stop=5166.425, target=5154.988. Pre-M15 range high=5191.18, low=5120.785.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T08-30-00Z_short_order_block_reclaim",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5158.8,
          "ob_high": 5166.425,
          "displacement_low": 5141.79
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-05T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-05T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5155.444,
      "stop": 5143.81,
      "target": 5172.894,
      "r": -1.0,
      "entry_touch_time": "2026-03-05T09:35:00Z",
      "outcome_time": "2026-03-05T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5155.444, stop=5143.81, target=5172.894. Pre-M15 range high=5180.48, low=5120.785.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5143.81,
          "impulse_high": 5170.25,
          "fib50": 5157.030000000001,
          "fib62": 5153.8572
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-05T13:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-05T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5127.643,
      "stop": 5164.11,
      "target": 5072.942,
      "r": 1.5,
      "entry_touch_time": "2026-03-05T13:35:00Z",
      "outcome_time": "2026-03-05T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5127.643, stop=5164.11, target=5072.942. Pre-M15 range high=5180.48, low=5081.23.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5081.23,
          "impulse_high": 5164.11,
          "fib50": 5122.67,
          "fib62": 5132.615599999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-06T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-05T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5109.146,
      "stop": 5123.765,
      "target": 5087.218,
      "r": -1.0,
      "entry_touch_time": "2026-03-06T01:35:00Z",
      "outcome_time": "2026-03-06T01:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5109.146, stop=5123.765, target=5087.218. Pre-M15 range high=5171.54, low=5060.625.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5090.54,
          "impulse_high": 5123.765,
          "fib50": 5107.1525,
          "fib62": 5111.1395
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-05T15:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-05T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5093.855,
      "stop": 5119.965,
      "target": 5054.691,
      "r": 1.5,
      "entry_touch_time": "2026-03-05T15:35:00Z",
      "outcome_time": "2026-03-05T16:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5093.855, stop=5119.965, target=5054.691. Pre-M15 range high=5171.54, low=5060.625.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5060.625,
          "impulse_high": 5119.965,
          "fib50": 5090.295,
          "fib62": 5097.4158
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-05T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-05T17:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-05T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5085.209,
      "stop": 5104.76,
      "target": 5055.881,
      "r": 1.5,
      "entry_touch_time": "2026-03-05T17:05:00Z",
      "outcome_time": "2026-03-05T17:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-05T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5085.209, stop=5104.76, target=5055.881. Pre-M15 range high=5170.61, low=5054.22.",
      "candidate": {
        "id": "candidate_v2_2026-03-05T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-05",
        "timestamp": "2026-03-05T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5060.325,
          "impulse_high": 5104.76,
          "fib50": 5082.5425,
          "fib62": 5087.8747
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-06T06:00:00Z; outcome=sl_first",
      "timestamp": "2026-03-06T05:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5111.424,
      "stop": 5085.79,
      "target": 5149.876,
      "r": -1.0,
      "entry_touch_time": "2026-03-06T06:00:00Z",
      "outcome_time": "2026-03-06T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5111.424, stop=5085.79, target=5149.876. Pre-M15 range high=5144.05, low=5066.4.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5085.79,
          "impulse_high": 5144.05,
          "fib50": 5114.92,
          "fib62": 5107.9288
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T05-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-06T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-06T05:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5126.66,
      "stop": 5130.38,
      "target": 5119.22,
      "r": -1.0,
      "entry_touch_time": "2026-03-06T13:35:00Z",
      "outcome_time": "2026-03-06T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T05:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5126.66, stop=5130.38, target=5119.22. Pre-M15 range high=5144.05, low=5066.4.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T05-45-00Z_short_order_block_reclaim",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T05:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5122.94,
          "ob_high": 5130.38,
          "displacement_low": 5119.14
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-06T11:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-06T11:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5094.844,
      "stop": 5103.89,
      "target": 5081.274,
      "r": 1.5,
      "entry_touch_time": "2026-03-06T11:20:00Z",
      "outcome_time": "2026-03-06T11:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5094.844, stop=5103.89, target=5081.274. Pre-M15 range high=5123.16, low=5075.66.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5083.33,
          "impulse_high": 5103.89,
          "fib50": 5093.610000000001,
          "fib62": 5096.0772
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-06T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-06T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5083.666,
      "stop": 5099.735,
      "target": 5059.563,
      "r": -1.0,
      "entry_touch_time": "2026-03-06T12:05:00Z",
      "outcome_time": "2026-03-06T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5083.666, stop=5099.735, target=5059.563. Pre-M15 range high=5123.16, low=5063.215.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5063.215,
          "impulse_high": 5099.735,
          "fib50": 5081.475,
          "fib62": 5085.8574
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T13-45-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-03-06T13:55:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-06T13:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5084.27,
      "stop": 5081.285,
      "target": 5090.24,
      "r": null,
      "entry_touch_time": "2026-03-06T13:55:00Z",
      "outcome_time": "2026-03-06T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5084.27, stop=5081.285, target=5090.24. Pre-M15 range high=5131.245, low=5063.215.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T13-45-00Z_long_breaker_continuation",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5063.215,
          "breaker_low": 5081.285,
          "breaker_high": 5087.255,
          "break_high": 5113.9
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-06T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-06T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5093.518,
      "stop": 5080.905,
      "target": 5112.436,
      "r": 1.5,
      "entry_touch_time": "2026-03-06T14:35:00Z",
      "outcome_time": "2026-03-06T14:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5093.518, stop=5080.905, target=5112.436. Pre-M15 range high=5131.245, low=5063.215.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5080.905,
          "impulse_high": 5109.57,
          "fib50": 5095.237499999999,
          "fib62": 5091.7977
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-06T15:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-06T15:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5147.289,
      "stop": 5127.96,
      "target": 5176.283,
      "r": -1.0,
      "entry_touch_time": "2026-03-06T15:45:00Z",
      "outcome_time": "2026-03-06T16:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5147.289, stop=5127.96, target=5176.283. Pre-M15 range high=5171.89, low=5063.215.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5127.96,
          "impulse_high": 5171.89,
          "fib50": 5149.925,
          "fib62": 5144.6534
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-06T19-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-06T19:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-06T19:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 5162.372,
      "stop": 5156.87,
      "target": 5173.377,
      "r": -1.0,
      "entry_touch_time": "2026-03-06T19:35:00Z",
      "outcome_time": "2026-03-06T19:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-06T19:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5162.372, stop=5156.87, target=5173.377. Pre-M15 range high=5174.67, low=5084.185.",
      "candidate": {
        "id": "candidate_v2_2026-03-06T19-15-00Z_long_order_block_reclaim",
        "date": "2026-03-06",
        "timestamp": "2026-03-06T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5156.87,
          "ob_high": 5167.875,
          "displacement_high": 5171.405
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-08T22-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-08T22:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-08T22:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5159.614,
      "stop": 5150.99,
      "target": 5172.55,
      "r": -1.0,
      "entry_touch_time": "2026-03-08T22:05:00Z",
      "outcome_time": "2026-03-08T22:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-08T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5159.614, stop=5150.99, target=5172.55. Pre-M15 range high=5176.63, low=5118.53.",
      "candidate": {
        "id": "candidate_v2_2026-03-08T22-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-08",
        "timestamp": "2026-03-08T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5150.99,
          "impulse_high": 5170.59,
          "fib50": 5160.79,
          "fib62": 5158.438
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-08T22-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-08T22:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-08T22:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5155.755,
      "stop": 5150.695,
      "target": 5165.875,
      "r": -1.0,
      "entry_touch_time": "2026-03-08T22:05:00Z",
      "outcome_time": "2026-03-08T22:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-08T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5155.755, stop=5150.695, target=5165.875. Pre-M15 range high=5176.63, low=5118.53.",
      "candidate": {
        "id": "candidate_v2_2026-03-08T22-00-00Z_long_order_block_reclaim",
        "date": "2026-03-08",
        "timestamp": "2026-03-08T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5150.695,
          "ob_high": 5160.815,
          "displacement_high": 5167.63
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-08T23-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-09T05:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-08T23:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5119.475,
      "stop": 5134.605,
      "target": 5089.215,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T05:40:00Z",
      "outcome_time": "2026-03-09T05:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-08T23:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5119.475, stop=5134.605, target=5089.215. Pre-M15 range high=5176.63, low=5093.745.",
      "candidate": {
        "id": "candidate_v2_2026-03-08T23-15-00Z_short_order_block_reclaim",
        "date": "2026-03-08",
        "timestamp": "2026-03-08T23:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5104.345,
          "ob_high": 5134.605,
          "displacement_low": 5093.745
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-09T01:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5078.518,
      "stop": 5105.53,
      "target": 5038.001,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T01:15:00Z",
      "outcome_time": "2026-03-09T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5078.518, stop=5105.53, target=5038.001. Pre-M15 range high=5176.63, low=5028.54.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5044.14,
          "impulse_high": 5105.53,
          "fib50": 5074.835,
          "fib62": 5082.2018
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-09T00:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5058.119,
      "stop": 5081.36,
      "target": 5023.258,
      "r": 1.5,
      "entry_touch_time": "2026-03-09T00:35:00Z",
      "outcome_time": "2026-03-09T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5058.119, stop=5081.36, target=5023.258. Pre-M15 range high=5176.63, low=5028.54.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5028.54,
          "impulse_high": 5081.36,
          "fib50": 5054.95,
          "fib62": 5061.2883999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T00-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-09T01:10:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T00:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5067.32,
      "stop": 5080.39,
      "target": 5041.18,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T01:10:00Z",
      "outcome_time": "2026-03-09T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5067.32, stop=5080.39, target=5041.18. Pre-M15 range high=5176.63, low=5028.54.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T00-30-00Z_short_order_block_reclaim",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5054.25,
          "ob_high": 5080.39,
          "displacement_low": 5028.54
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T01-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "needs_more_context",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-03-09T01:10:00Z; outcome=unresolved",
      "timestamp": "2026-03-09T01:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 5063.983,
      "stop": 5015.045,
      "target": 5161.858,
      "r": null,
      "entry_touch_time": "2026-03-09T01:10:00Z",
      "outcome_time": null,
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5063.983, stop=5015.045, target=5161.858. Pre-M15 range high=5176.63, low=5015.045.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T01-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 5015.045,
          "fvg_low": 5057.91,
          "fvg_high": 5070.055
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T02-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-09T03:25:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T02:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5101.075,
      "stop": 5107.105,
      "target": 5089.015,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T03:25:00Z",
      "outcome_time": "2026-03-09T03:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5101.075, stop=5107.105, target=5089.015. Pre-M15 range high=5176.63, low=5015.045.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T02-00-00Z_short_order_block_reclaim",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5095.045,
          "ob_high": 5107.105,
          "displacement_low": 5044.14
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T02-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-09T02:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T02:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5073.948,
      "stop": 5065.35,
      "target": 5091.142,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T02:20:00Z",
      "outcome_time": "2026-03-09T02:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T02:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5073.948, stop=5065.35, target=5091.142. Pre-M15 range high=5176.63, low=5015.045.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T02-15-00Z_long_order_block_reclaim",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T02:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5065.35,
          "ob_high": 5082.545,
          "displacement_high": 5095.325
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-09T06:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5113.42,
      "stop": 5091.915,
      "target": 5145.677,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T06:40:00Z",
      "outcome_time": "2026-03-09T07:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5113.42, stop=5091.915, target=5145.677. Pre-M15 range high=5140.79, low=5055.21.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5091.915,
          "impulse_high": 5140.79,
          "fib50": 5116.3525,
          "fib62": 5110.4875
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T06-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-09T07:00:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T06:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5095.952,
      "stop": 5087.3,
      "target": 5113.257,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T07:00:00Z",
      "outcome_time": "2026-03-09T08:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T06:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5095.952, stop=5087.3, target=5113.257. Pre-M15 range high=5140.79, low=5055.21.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T06-45-00Z_long_order_block_reclaim",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T06:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5087.3,
          "ob_high": 5104.605,
          "displacement_high": 5121.51
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-09T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5115.493,
      "stop": 5129.85,
      "target": 5093.957,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T09:10:00Z",
      "outcome_time": "2026-03-09T09:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5115.493, stop=5129.85, target=5093.957. Pre-M15 range high=5140.79, low=5081.185.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5097.22,
          "impulse_high": 5129.85,
          "fib50": 5113.535,
          "fib62": 5117.4506
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T09-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-03-09T09:40:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T09:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 5109.962,
      "stop": 5132.765,
      "target": 5064.357,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T09:40:00Z",
      "outcome_time": "2026-03-09T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5109.962, stop=5132.765, target=5064.357. Pre-M15 range high=5140.79, low=5081.185.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T09-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5132.765,
          "fvg_low": 5107.53,
          "fvg_high": 5112.395
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T12-15-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-03-09T14:40:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T12:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5113.905,
      "stop": 5125.155,
      "target": 5091.405,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T14:40:00Z",
      "outcome_time": "2026-03-09T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5113.905, stop=5125.155, target=5091.405. Pre-M15 range high=5132.765, low=5079.93.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T12-15-00Z_short_breaker_continuation",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 5132.765,
          "breaker_low": 5102.655,
          "breaker_high": 5125.155,
          "break_low": 5087.07
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T13-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-09T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T13:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5091.653,
      "stop": 5098.51,
      "target": 5077.938,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T14:35:00Z",
      "outcome_time": "2026-03-09T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5091.653, stop=5098.51, target=5077.938. Pre-M15 range high=5132.765, low=5067.42.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T13-45-00Z_short_order_block_reclaim",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5084.795,
          "ob_high": 5098.51,
          "displacement_low": 5074.3
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-09T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5092.116,
      "stop": 5111.52,
      "target": 5063.01,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T14:35:00Z",
      "outcome_time": "2026-03-09T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5092.116, stop=5111.52, target=5063.01. Pre-M15 range high=5114.99, low=5060.595.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5067.42,
          "impulse_high": 5111.52,
          "fib50": 5089.47,
          "fib62": 5094.762000000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T14-45-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-03-09T15:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T14:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5081.567,
      "stop": 5074.44,
      "target": 5095.822,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T15:05:00Z",
      "outcome_time": "2026-03-09T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T14:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5081.567, stop=5074.44, target=5095.822. Pre-M15 range high=5116.28, low=5060.595.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T14-45-00Z_long_breaker_continuation",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T14:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5060.595,
          "breaker_low": 5074.44,
          "breaker_high": 5088.695,
          "break_high": 5112.505
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T15-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-03-09T15:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T15:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5080.472,
      "stop": 5076.06,
      "target": 5089.297,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T15:05:00Z",
      "outcome_time": "2026-03-09T15:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5080.472, stop=5076.06, target=5089.297. Pre-M15 range high=5116.28, low=5060.595.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T15-00-00Z_long_breaker_continuation",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5067.42,
          "breaker_low": 5076.06,
          "breaker_high": 5084.885,
          "break_high": 5112.505
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T15-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-03-09T15:50:00Z; outcome=sl_first",
      "timestamp": "2026-03-09T15:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5103.138,
      "stop": 5094.755,
      "target": 5119.903,
      "r": -1.0,
      "entry_touch_time": "2026-03-09T15:50:00Z",
      "outcome_time": "2026-03-09T17:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T15:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5103.138, stop=5094.755, target=5119.903. Pre-M15 range high=5116.28, low=5060.595.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T15-15-00Z_long_breaker_continuation",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T15:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5074.3,
          "breaker_low": 5094.755,
          "breaker_high": 5111.52,
          "break_high": 5112.505
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T19-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-09T19:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T19:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5129.654,
      "stop": 5118.375,
      "target": 5146.573,
      "r": 1.5,
      "entry_touch_time": "2026-03-09T19:35:00Z",
      "outcome_time": "2026-03-09T20:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5129.654, stop=5118.375, target=5146.573. Pre-M15 range high=5144.01, low=5079.585.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T19-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5118.375,
          "impulse_high": 5144.01,
          "fib50": 5131.1925,
          "fib62": 5128.1163
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T19-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-09T22:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T19:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 5124.628,
      "stop": 5118.63,
      "target": 5136.623,
      "r": 2.0,
      "entry_touch_time": "2026-03-09T22:05:00Z",
      "outcome_time": "2026-03-09T22:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5124.628, stop=5118.63, target=5136.623. Pre-M15 range high=5144.01, low=5079.585.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T19-30-00Z_long_order_block_reclaim",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5118.63,
          "ob_high": 5130.625,
          "displacement_high": 5144.01
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-09T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-09T23:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-09T23:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5139.394,
      "stop": 5128.48,
      "target": 5155.765,
      "r": 1.5,
      "entry_touch_time": "2026-03-09T23:05:00Z",
      "outcome_time": "2026-03-09T23:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-09T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5139.394, stop=5128.48, target=5155.765. Pre-M15 range high=5154.825, low=5089.135.",
      "candidate": {
        "id": "candidate_v2_2026-03-09T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-09",
        "timestamp": "2026-03-09T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5128.48,
          "impulse_high": 5153.285,
          "fib50": 5140.8825,
          "fib62": 5137.9059
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T01-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-03-10T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-10T01:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 5140.84,
      "stop": 5124.835,
      "target": 5172.85,
      "r": 2.0,
      "entry_touch_time": "2026-03-10T01:05:00Z",
      "outcome_time": "2026-03-10T01:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5140.84, stop=5124.835, target=5172.85. Pre-M15 range high=5156.21, low=5117.355.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T01-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 5124.835,
          "fvg_low": 5139.365,
          "fvg_high": 5142.315
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-10T02:55:00Z; outcome=tp_first",
      "timestamp": "2026-03-10T02:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5167.835,
      "stop": 5153.205,
      "target": 5189.78,
      "r": 1.5,
      "entry_touch_time": "2026-03-10T02:55:00Z",
      "outcome_time": "2026-03-10T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5167.835, stop=5153.205, target=5189.78. Pre-M15 range high=5187.055, low=5117.355.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5153.205,
          "impulse_high": 5186.455,
          "fib50": 5169.83,
          "fib62": 5165.84
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T06-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-10T07:00:00Z; outcome=tp_first",
      "timestamp": "2026-03-10T06:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5170.915,
      "stop": 5167.465,
      "target": 5177.815,
      "r": 2.0,
      "entry_touch_time": "2026-03-10T07:00:00Z",
      "outcome_time": "2026-03-10T07:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5170.915, stop=5167.465, target=5177.815. Pre-M15 range high=5187.055, low=5142.315.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T06-00-00Z_long_order_block_reclaim",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5167.465,
          "ob_high": 5174.365,
          "displacement_high": 5179.35
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T08-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-03-10T08:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-10T08:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "London",
      "entry": 5176.307,
      "stop": 5174.925,
      "target": 5179.072,
      "r": 2.0,
      "entry_touch_time": "2026-03-10T08:05:00Z",
      "outcome_time": "2026-03-10T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5176.307, stop=5174.925, target=5179.072. Pre-M15 range high=5185.545, low=5154.47.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T08-00-00Z_long_breaker_continuation",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 5158.395,
          "breaker_low": 5174.925,
          "breaker_high": 5177.69,
          "break_high": 5181.1
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-10T10:30:00Z; outcome=sl_first",
      "timestamp": "2026-03-10T10:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5172.75,
      "stop": 5165.675,
      "target": 5183.363,
      "r": -1.0,
      "entry_touch_time": "2026-03-10T10:30:00Z",
      "outcome_time": "2026-03-10T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5172.75, stop=5165.675, target=5183.363. Pre-M15 range high=5195.405, low=5158.395.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5165.675,
          "impulse_high": 5181.755,
          "fib50": 5173.715,
          "fib62": 5171.7854
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-10T13:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-10T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5204.89,
      "stop": 5186.005,
      "target": 5233.217,
      "r": -1.0,
      "entry_touch_time": "2026-03-10T13:45:00Z",
      "outcome_time": "2026-03-10T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5204.89, stop=5186.005, target=5233.217. Pre-M15 range high=5228.925, low=5156.5.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5186.005,
          "impulse_high": 5228.925,
          "fib50": 5207.465,
          "fib62": 5202.3146
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-10T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-10T18:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-10T18:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5214.503,
      "stop": 5203.285,
      "target": 5231.33,
      "r": -1.0,
      "entry_touch_time": "2026-03-10T18:15:00Z",
      "outcome_time": "2026-03-10T18:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-10T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5214.503, stop=5203.285, target=5231.33. Pre-M15 range high=5238.775, low=5185.3.",
      "candidate": {
        "id": "candidate_v2_2026-03-10T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-10",
        "timestamp": "2026-03-10T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5203.285,
          "impulse_high": 5228.78,
          "fib50": 5216.032499999999,
          "fib62": 5212.9731
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-11T02:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5199.457,
      "stop": 5186.66,
      "target": 5218.653,
      "r": 1.5,
      "entry_touch_time": "2026-03-11T02:05:00Z",
      "outcome_time": "2026-03-11T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5199.457, stop=5186.66, target=5218.653. Pre-M15 range high=5223.385, low=5183.47.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5186.66,
          "impulse_high": 5215.745,
          "fib50": 5201.202499999999,
          "fib62": 5197.7123
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T02-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-11T05:30:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T02:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5192.5,
      "stop": 5186.66,
      "target": 5204.18,
      "r": 2.0,
      "entry_touch_time": "2026-03-11T05:30:00Z",
      "outcome_time": "2026-03-11T05:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5192.5, stop=5186.66, target=5204.18. Pre-M15 range high=5223.385, low=5183.47.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T02-00-00Z_long_order_block_reclaim",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5186.66,
          "ob_high": 5198.34,
          "displacement_high": 5215.745
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-11T03:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-11T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5210.171,
      "stop": 5201.945,
      "target": 5222.51,
      "r": -1.0,
      "entry_touch_time": "2026-03-11T03:20:00Z",
      "outcome_time": "2026-03-11T03:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5210.171, stop=5201.945, target=5222.51. Pre-M15 range high=5223.385, low=5185.86.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5201.945,
          "impulse_high": 5220.64,
          "fib50": 5211.2925,
          "fib62": 5209.0491
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T06-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-11T06:55:00Z; outcome=sl_first",
      "timestamp": "2026-03-11T06:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5198.773,
      "stop": 5195.715,
      "target": 5204.887,
      "r": -1.0,
      "entry_touch_time": "2026-03-11T06:55:00Z",
      "outcome_time": "2026-03-11T07:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T06:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5198.773, stop=5195.715, target=5204.887. Pre-M15 range high=5220.64, low=5190.705.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T06-45-00Z_long_order_block_reclaim",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T06:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5195.715,
          "ob_high": 5201.83,
          "displacement_high": 5210.51
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-11T09:30:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5190.918,
      "stop": 5198.695,
      "target": 5179.252,
      "r": 1.5,
      "entry_touch_time": "2026-03-11T09:30:00Z",
      "outcome_time": "2026-03-11T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5190.918, stop=5198.695, target=5179.252. Pre-M15 range high=5210.97, low=5175.35.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5181.02,
          "impulse_high": 5198.695,
          "fib50": 5189.8575,
          "fib62": 5191.9785
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T12-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-03-11T14:00:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T12:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 5184.477,
      "stop": 5197.175,
      "target": 5159.082,
      "r": 2.0,
      "entry_touch_time": "2026-03-11T14:00:00Z",
      "outcome_time": "2026-03-11T17:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5184.477, stop=5197.175, target=5159.082. Pre-M15 range high=5198.695, low=5173.265.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T12-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 5197.175,
          "fvg_low": 5180.955,
          "fvg_high": 5188.0
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T13-00-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-03-11T13:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T13:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 5182.177,
      "stop": 5191.09,
      "target": 5164.352,
      "r": 2.0,
      "entry_touch_time": "2026-03-11T13:20:00Z",
      "outcome_time": "2026-03-11T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5182.177, stop=5191.09, target=5164.352. Pre-M15 range high=5198.4, low=5162.175.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T13-00-00Z_short_breaker_continuation",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 5197.175,
          "breaker_low": 5173.265,
          "breaker_high": 5191.09,
          "break_low": 5175.87
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-11T14:00:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5183.825,
      "stop": 5197.175,
      "target": 5163.801,
      "r": 1.5,
      "entry_touch_time": "2026-03-11T14:00:00Z",
      "outcome_time": "2026-03-11T17:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5183.825, stop=5197.175, target=5163.801. Pre-M15 range high=5198.4, low=5162.175.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5166.835,
          "impulse_high": 5197.175,
          "fib50": 5182.005,
          "fib62": 5185.6458
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-11T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-11T23:10:00Z; outcome=tp_first",
      "timestamp": "2026-03-11T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5152.373,
      "stop": 5170.085,
      "target": 5125.805,
      "r": 1.5,
      "entry_touch_time": "2026-03-11T23:10:00Z",
      "outcome_time": "2026-03-12T00:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-11T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5152.373, stop=5170.085, target=5125.805. Pre-M15 range high=5183.76, low=5129.83.",
      "candidate": {
        "id": "candidate_v2_2026-03-11T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-11",
        "timestamp": "2026-03-11T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5129.83,
          "impulse_high": 5170.085,
          "fib50": 5149.9575,
          "fib62": 5154.7881
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-12T00:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-12T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5147.096,
      "stop": 5157.94,
      "target": 5130.831,
      "r": -1.0,
      "entry_touch_time": "2026-03-12T00:20:00Z",
      "outcome_time": "2026-03-12T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5147.096, stop=5157.94, target=5130.831. Pre-M15 range high=5183.76, low=5125.64.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5133.295,
          "impulse_high": 5157.94,
          "fib50": 5145.6175,
          "fib62": 5148.5749
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-12T01:45:00Z; outcome=tp_first",
      "timestamp": "2026-03-12T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5172.714,
      "stop": 5178.32,
      "target": 5164.306,
      "r": 1.5,
      "entry_touch_time": "2026-03-12T01:45:00Z",
      "outcome_time": "2026-03-12T02:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5172.714, stop=5178.32, target=5164.306. Pre-M15 range high=5183.76, low=5125.64.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5165.58,
          "impulse_high": 5178.32,
          "fib50": 5171.95,
          "fib62": 5173.4788
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T05-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-12T05:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-12T05:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5152.2,
      "stop": 5154.02,
      "target": 5148.56,
      "r": 2.0,
      "entry_touch_time": "2026-03-12T05:35:00Z",
      "outcome_time": "2026-03-12T05:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5152.2, stop=5154.02, target=5148.56. Pre-M15 range high=5175.15, low=5137.17.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T05-30-00Z_short_order_block_reclaim",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5150.38,
          "ob_high": 5154.02,
          "displacement_low": 5143.825
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-12T09:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-12T08:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5175.553,
      "stop": 5167.95,
      "target": 5186.958,
      "r": 1.5,
      "entry_touch_time": "2026-03-12T09:20:00Z",
      "outcome_time": "2026-03-12T09:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5175.553, stop=5167.95, target=5186.958. Pre-M15 range high=5189.86, low=5137.17.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5167.95,
          "impulse_high": 5185.23,
          "fib50": 5176.59,
          "fib62": 5174.5163999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-12T13:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-12T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5176.246,
      "stop": 5168.68,
      "target": 5187.595,
      "r": -1.0,
      "entry_touch_time": "2026-03-12T13:15:00Z",
      "outcome_time": "2026-03-12T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5176.246, stop=5168.68, target=5187.595. Pre-M15 range high=5191.79, low=5163.685.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 5168.68,
          "impulse_high": 5185.875,
          "fib50": 5177.2775,
          "fib62": 5175.2141
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-12T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-12T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5160.253,
      "stop": 5171.385,
      "target": 5143.555,
      "r": 1.5,
      "entry_touch_time": "2026-03-12T14:05:00Z",
      "outcome_time": "2026-03-12T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5160.253, stop=5171.385, target=5143.555. Pre-M15 range high=5191.79, low=5146.085.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5146.085,
          "impulse_high": 5171.385,
          "fib50": 5158.735000000001,
          "fib62": 5161.771
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-12T15:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-12T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5129.528,
      "stop": 5144.99,
      "target": 5106.336,
      "r": 1.5,
      "entry_touch_time": "2026-03-12T15:35:00Z",
      "outcome_time": "2026-03-12T17:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5129.528, stop=5144.99, target=5106.336. Pre-M15 range high=5186.145, low=5109.85.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5109.85,
          "impulse_high": 5144.99,
          "fib50": 5127.42,
          "fib62": 5131.6368
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-12T18:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-12T18:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5112.463,
      "stop": 5120.2,
      "target": 5100.856,
      "r": 1.5,
      "entry_touch_time": "2026-03-12T18:05:00Z",
      "outcome_time": "2026-03-12T18:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5112.463, stop=5120.2, target=5100.856. Pre-M15 range high=5184.71, low=5102.615.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5102.615,
          "impulse_high": 5120.2,
          "fib50": 5111.407499999999,
          "fib62": 5113.517699999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T20-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-12T22:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-12T20:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 5082.352,
      "stop": 5090.925,
      "target": 5069.492,
      "r": -1.0,
      "entry_touch_time": "2026-03-12T22:05:00Z",
      "outcome_time": "2026-03-12T22:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5082.352, stop=5090.925, target=5069.492. Pre-M15 range high=5138.175, low=5055.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T20-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5071.44,
          "impulse_high": 5090.925,
          "fib50": 5081.1825,
          "fib62": 5083.5207
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T22-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-12T22:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-12T22:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5087.318,
      "stop": 5090.925,
      "target": 5080.102,
      "r": -1.0,
      "entry_touch_time": "2026-03-12T22:15:00Z",
      "outcome_time": "2026-03-12T22:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5087.318, stop=5090.925, target=5080.102. Pre-M15 range high=5138.175, low=5055.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T22-00-00Z_short_order_block_reclaim",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5083.71,
          "ob_high": 5090.925,
          "displacement_low": 5071.44
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-12T22-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-13T07:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-12T22:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 5082.255,
      "stop": 5077.79,
      "target": 5091.185,
      "r": -1.0,
      "entry_touch_time": "2026-03-13T07:15:00Z",
      "outcome_time": "2026-03-13T07:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-12T22:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5082.255, stop=5077.79, target=5091.185. Pre-M15 range high=5135.635, low=5055.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-12T22-30-00Z_long_order_block_reclaim",
        "date": "2026-03-12",
        "timestamp": "2026-03-12T22:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5077.79,
          "ob_high": 5086.72,
          "displacement_high": 5095.545
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T02-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-13T02:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-13T02:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 5116.613,
      "stop": 5111.43,
      "target": 5126.977,
      "r": -1.0,
      "entry_touch_time": "2026-03-13T02:20:00Z",
      "outcome_time": "2026-03-13T02:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T02:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5116.613, stop=5111.43, target=5126.977. Pre-M15 range high=5128.475, low=5055.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T02-15-00Z_long_order_block_reclaim",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T02:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5111.43,
          "ob_high": 5121.795,
          "displacement_high": 5124.535
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-13T12:00:00Z; outcome=sl_first",
      "timestamp": "2026-03-13T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5111.832,
      "stop": 5118.175,
      "target": 5102.319,
      "r": -1.0,
      "entry_touch_time": "2026-03-13T12:00:00Z",
      "outcome_time": "2026-03-13T12:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5111.832, stop=5118.175, target=5102.319. Pre-M15 range high=5128.475, low=5100.08.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5103.76,
          "impulse_high": 5118.175,
          "fib50": 5110.967500000001,
          "fib62": 5112.6973
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-13T14:40:00Z; outcome=tp_first",
      "timestamp": "2026-03-13T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5075.017,
      "stop": 5085.465,
      "target": 5059.346,
      "r": 1.5,
      "entry_touch_time": "2026-03-13T14:40:00Z",
      "outcome_time": "2026-03-13T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5075.017, stop=5085.465, target=5059.346. Pre-M15 range high=5118.175, low=5061.72.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5061.72,
          "impulse_high": 5085.465,
          "fib50": 5073.592500000001,
          "fib62": 5076.4419
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-13T13:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-13T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5099.074,
      "stop": 5092.065,
      "target": 5109.588,
      "r": 1.5,
      "entry_touch_time": "2026-03-13T13:35:00Z",
      "outcome_time": "2026-03-13T13:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5099.074, stop=5092.065, target=5109.588. Pre-M15 range high=5122.01, low=5076.145.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5092.065,
          "impulse_high": 5107.995,
          "fib50": 5100.03,
          "fib62": 5098.118399999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T13-30-00Z_long_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-13T14:10:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-13T13:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5094.36,
      "stop": 5092.065,
      "target": 5098.95,
      "r": null,
      "entry_touch_time": "2026-03-13T14:10:00Z",
      "outcome_time": "2026-03-13T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5094.36, stop=5092.065, target=5098.95. Pre-M15 range high=5122.01, low=5076.145.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T13-30-00Z_long_order_block_reclaim",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5092.065,
          "ob_high": 5096.655,
          "displacement_high": 5107.995
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-13T15:10:00Z; outcome=tp_first",
      "timestamp": "2026-03-13T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5067.102,
      "stop": 5091.905,
      "target": 5029.898,
      "r": 1.5,
      "entry_touch_time": "2026-03-13T15:10:00Z",
      "outcome_time": "2026-03-13T16:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5067.102, stop=5091.905, target=5029.898. Pre-M15 range high=5122.01, low=5035.535.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 5035.535,
          "impulse_high": 5091.905,
          "fib50": 5063.719999999999,
          "fib62": 5070.484399999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-13T16-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-13T16:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-13T16:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5051.945,
      "stop": 5068.39,
      "target": 5027.277,
      "r": 1.5,
      "entry_touch_time": "2026-03-13T16:35:00Z",
      "outcome_time": "2026-03-13T19:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-13T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5051.945, stop=5068.39, target=5027.277. Pre-M15 range high=5122.01, low=5019.2.",
      "candidate": {
        "id": "candidate_v2_2026-03-13T16-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-13",
        "timestamp": "2026-03-13T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 5031.015,
          "impulse_high": 5068.39,
          "fib50": 5049.7025,
          "fib62": 5054.1875
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-15T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-16T00:00:00Z; outcome=sl_first",
      "timestamp": "2026-03-15T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 5000.569,
      "stop": 5026.335,
      "target": 4961.919,
      "r": -1.0,
      "entry_touch_time": "2026-03-16T00:00:00Z",
      "outcome_time": "2026-03-16T00:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-15T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5000.569, stop=5026.335, target=4961.919. Pre-M15 range high=5055.49, low=4967.775.",
      "candidate": {
        "id": "candidate_v2_2026-03-15T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-15",
        "timestamp": "2026-03-15T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4967.775,
          "impulse_high": 5026.335,
          "fib50": 4997.055,
          "fib62": 5004.0822
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-16T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-16T01:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-16T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5007.758,
      "stop": 5026.66,
      "target": 4979.404,
      "r": -1.0,
      "entry_touch_time": "2026-03-16T01:45:00Z",
      "outcome_time": "2026-03-16T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-16T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5007.758, stop=5026.66, target=4979.404. Pre-M15 range high=5031.005, low=4967.775.",
      "candidate": {
        "id": "candidate_v2_2026-03-16T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-16",
        "timestamp": "2026-03-16T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4983.7,
          "impulse_high": 5026.66,
          "fib50": 5005.18,
          "fib62": 5010.3351999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-16T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-16T10:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-16T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4983.326,
      "stop": 4991.805,
      "target": 4970.608,
      "r": -1.0,
      "entry_touch_time": "2026-03-16T10:20:00Z",
      "outcome_time": "2026-03-16T10:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-16T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4983.326, stop=4991.805, target=4970.608. Pre-M15 range high=5036.01, low=4970.23.",
      "candidate": {
        "id": "candidate_v2_2026-03-16T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-16",
        "timestamp": "2026-03-16T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4972.535,
          "impulse_high": 4991.805,
          "fib50": 4982.17,
          "fib62": 4984.4824
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-16T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-16T12:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-16T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5008.046,
      "stop": 5020.04,
      "target": 4990.054,
      "r": -1.0,
      "entry_touch_time": "2026-03-16T12:15:00Z",
      "outcome_time": "2026-03-16T12:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-16T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5008.046, stop=5020.04, target=4990.054. Pre-M15 range high=5022.825, low=4970.23.",
      "candidate": {
        "id": "candidate_v2_2026-03-16T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-16",
        "timestamp": "2026-03-16T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4992.78,
          "impulse_high": 5020.04,
          "fib50": 5006.41,
          "fib62": 5009.6812
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-16T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-16T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-16T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5007.919,
      "stop": 4994.55,
      "target": 5027.974,
      "r": -1.0,
      "entry_touch_time": "2026-03-16T14:35:00Z",
      "outcome_time": "2026-03-16T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-16T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5007.919, stop=4994.55, target=5027.974. Pre-M15 range high=5038.145, low=4970.23.",
      "candidate": {
        "id": "candidate_v2_2026-03-16T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-16",
        "timestamp": "2026-03-16T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4994.55,
          "impulse_high": 5024.935,
          "fib50": 5009.7425,
          "fib62": 5006.0963
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-16T16-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-16T16:50:00Z; outcome=sl_first",
      "timestamp": "2026-03-16T16:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4992.273,
      "stop": 4998.8,
      "target": 4979.217,
      "r": -1.0,
      "entry_touch_time": "2026-03-16T16:50:00Z",
      "outcome_time": "2026-03-16T17:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-16T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4992.273, stop=4998.8, target=4979.217. Pre-M15 range high=5038.145, low=4974.235.",
      "candidate": {
        "id": "candidate_v2_2026-03-16T16-30-00Z_short_order_block_reclaim",
        "date": "2026-03-16",
        "timestamp": "2026-03-16T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4985.745,
          "ob_high": 4998.8,
          "displacement_low": 4978.25
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-16T22-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-17T01:00:00Z; outcome=tp_first",
      "timestamp": "2026-03-16T22:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4998.027,
      "stop": 4990.045,
      "target": 5009.999,
      "r": 1.5,
      "entry_touch_time": "2026-03-17T01:00:00Z",
      "outcome_time": "2026-03-17T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-16T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4998.027, stop=4990.045, target=5009.999. Pre-M15 range high=5021.835, low=4974.235.",
      "candidate": {
        "id": "candidate_v2_2026-03-16T22-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-16",
        "timestamp": "2026-03-16T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4990.045,
          "impulse_high": 5008.185,
          "fib50": 4999.115,
          "fib62": 4996.9382000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-17T01-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-03-17T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-17T01:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 5007.08,
      "stop": 4994.935,
      "target": 5031.37,
      "r": 2.0,
      "entry_touch_time": "2026-03-17T01:05:00Z",
      "outcome_time": "2026-03-17T03:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-17T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5007.08, stop=4994.935, target=5031.37. Pre-M15 range high=5021.835, low=4994.935.",
      "candidate": {
        "id": "candidate_v2_2026-03-17T01-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-03-17",
        "timestamp": "2026-03-17T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4994.935,
          "fvg_low": 5006.535,
          "fvg_high": 5007.625
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-17T09-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-17T12:30:00Z; outcome=tp_first",
      "timestamp": "2026-03-17T09:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 5022.148,
      "stop": 5025.61,
      "target": 5015.223,
      "r": 2.0,
      "entry_touch_time": "2026-03-17T12:30:00Z",
      "outcome_time": "2026-03-17T12:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-17T09:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5022.148, stop=5025.61, target=5015.223. Pre-M15 range high=5044.9, low=5005.04.",
      "candidate": {
        "id": "candidate_v2_2026-03-17T09-15-00Z_short_order_block_reclaim",
        "date": "2026-03-17",
        "timestamp": "2026-03-17T09:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5018.685,
          "ob_high": 5025.61,
          "displacement_low": 5013.265
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-17T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-17T13:50:00Z; outcome=tp_first",
      "timestamp": "2026-03-17T12:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5008.789,
      "stop": 4999.485,
      "target": 5022.745,
      "r": 1.5,
      "entry_touch_time": "2026-03-17T13:50:00Z",
      "outcome_time": "2026-03-17T13:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-17T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5008.789, stop=4999.485, target=5022.745. Pre-M15 range high=5029.625, low=4992.06.",
      "candidate": {
        "id": "candidate_v2_2026-03-17T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-17",
        "timestamp": "2026-03-17T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4999.485,
          "impulse_high": 5020.63,
          "fib50": 5010.0575,
          "fib62": 5007.5201
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-17T13-45-00Z_long_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-17T13:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-17T13:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 5015.087,
      "stop": 5010.505,
      "target": 5024.252,
      "r": null,
      "entry_touch_time": "2026-03-17T13:50:00Z",
      "outcome_time": "2026-03-17T13:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-17T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5015.087, stop=5010.505, target=5024.252. Pre-M15 range high=5031.59, low=4992.06.",
      "candidate": {
        "id": "candidate_v2_2026-03-17T13-45-00Z_long_order_block_reclaim",
        "date": "2026-03-17",
        "timestamp": "2026-03-17T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5010.505,
          "ob_high": 5019.67,
          "displacement_high": 5031.59
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-17T16-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-17T17:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-17T16:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 5007.202,
      "stop": 5017.65,
      "target": 4991.53,
      "r": 1.5,
      "entry_touch_time": "2026-03-17T17:20:00Z",
      "outcome_time": "2026-03-18T01:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-17T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5007.202, stop=5017.65, target=4991.53. Pre-M15 range high=5031.59, low=4973.72.",
      "candidate": {
        "id": "candidate_v2_2026-03-17T16-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-17",
        "timestamp": "2026-03-17T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4993.905,
          "impulse_high": 5017.65,
          "fib50": 5005.7775,
          "fib62": 5008.626899999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-17T17-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-18T00:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-17T17:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 5011.99,
      "stop": 5017.65,
      "target": 5000.67,
      "r": 2.0,
      "entry_touch_time": "2026-03-18T00:05:00Z",
      "outcome_time": "2026-03-18T00:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-17T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5011.99, stop=5017.65, target=5000.67. Pre-M15 range high=5031.59, low=4973.72.",
      "candidate": {
        "id": "candidate_v2_2026-03-17T17-00-00Z_short_order_block_reclaim",
        "date": "2026-03-17",
        "timestamp": "2026-03-17T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 5006.33,
          "ob_high": 5017.65,
          "displacement_low": 4993.905
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T00-15-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-03-18T01:00:00Z; outcome=tp_first",
      "timestamp": "2026-03-18T00:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 5000.085,
      "stop": 4996.555,
      "target": 5007.145,
      "r": 2.0,
      "entry_touch_time": "2026-03-18T01:00:00Z",
      "outcome_time": "2026-03-18T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5000.085, stop=4996.555, target=5007.145. Pre-M15 range high=5012.24, low=4993.39.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T00-15-00Z_long_breaker_continuation",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4993.39,
          "breaker_low": 4996.555,
          "breaker_high": 5003.615,
          "break_high": 5008.45
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T00-30-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-03-18T00:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-18T00:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 5002.028,
      "stop": 5002.02,
      "target": 5002.042,
      "r": null,
      "entry_touch_time": "2026-03-18T00:35:00Z",
      "outcome_time": "2026-03-18T00:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5002.028, stop=5002.02, target=5002.042. Pre-M15 range high=5012.24, low=4993.39.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T00-30-00Z_long_breaker_continuation",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4995.69,
          "breaker_low": 5002.02,
          "breaker_high": 5002.035,
          "break_high": 5008.45
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-18T02:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-18T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 5001.627,
      "stop": 5009.62,
      "target": 4989.639,
      "r": 1.5,
      "entry_touch_time": "2026-03-18T02:15:00Z",
      "outcome_time": "2026-03-18T03:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5001.627, stop=5009.62, target=4989.639. Pre-M15 range high=5016.29, low=4991.455.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4991.455,
          "impulse_high": 5009.62,
          "fib50": 5000.5375,
          "fib62": 5002.7173
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-18T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-18T03:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4998.304,
      "stop": 5004.345,
      "target": 4989.242,
      "r": -1.0,
      "entry_touch_time": "2026-03-18T05:35:00Z",
      "outcome_time": "2026-03-18T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4998.304, stop=5004.345, target=4989.242. Pre-M15 range high=5016.29, low=4986.305.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4990.615,
          "impulse_high": 5004.345,
          "fib50": 4997.48,
          "fib62": 4999.1276
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T05-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-18T05:10:00Z; outcome=tp_first",
      "timestamp": "2026-03-18T05:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4992.077,
      "stop": 4993.66,
      "target": 4988.912,
      "r": 2.0,
      "entry_touch_time": "2026-03-18T05:10:00Z",
      "outcome_time": "2026-03-18T05:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4992.077, stop=4993.66, target=4988.912. Pre-M15 range high=5016.29, low=4981.83.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T05-00-00Z_short_order_block_reclaim",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4990.495,
          "ob_high": 4993.66,
          "displacement_low": 4981.83
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-18T07:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-18T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 5002.737,
      "stop": 4996.19,
      "target": 5012.558,
      "r": -1.0,
      "entry_touch_time": "2026-03-18T07:40:00Z",
      "outcome_time": "2026-03-18T07:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=5002.737, stop=4996.19, target=5012.558. Pre-M15 range high=5016.53, low=4981.83.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4996.19,
          "impulse_high": 5011.07,
          "fib50": 5003.629999999999,
          "fib62": 5001.8444
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T07-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-18T07:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-18T07:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4998.808,
      "stop": 4994.77,
      "target": 5006.883,
      "r": -1.0,
      "entry_touch_time": "2026-03-18T07:45:00Z",
      "outcome_time": "2026-03-18T07:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4998.808, stop=4994.77, target=5006.883. Pre-M15 range high=5016.53, low=4981.83.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T07-30-00Z_long_order_block_reclaim",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4994.77,
          "ob_high": 5002.845,
          "displacement_high": 5009.335
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-18T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4980.985,
          "impulse_high": 4992.27,
          "fib50": 4986.6275000000005,
          "fib62": 4987.9817
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4987.3046,
      "stop": 4992.27,
      "target": 4979.8565,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-18T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4958.83,
          "impulse_high": 4987.685,
          "fib50": 4973.2575,
          "fib62": 4976.7201000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4974.9888,
      "stop": 4987.685,
      "target": 4955.9445,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-18T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4946.475,
          "impulse_high": 4974.135,
          "fib50": 4960.305,
          "fib62": 4963.6242
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4961.9646,
      "stop": 4974.135,
      "target": 4943.709000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T11-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-18T11-30-00Z_short_order_block_reclaim",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4950.48,
          "ob_high": 4970.625,
          "displacement_low": 4946.475
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4960.5525,
      "stop": 4970.625,
      "target": 4940.407499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T13-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-18T13:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-18T13:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4881.288,
      "stop": 4891.705,
      "target": 4860.453,
      "r": -1.0,
      "entry_touch_time": "2026-03-18T13:40:00Z",
      "outcome_time": "2026-03-18T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4881.288, stop=4891.705, target=4860.453. Pre-M15 range high=4995.85, low=4834.38.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T13-30-00Z_short_order_block_reclaim",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4870.87,
          "ob_high": 4891.705,
          "displacement_low": 4849.645
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-18T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-18T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4888.672,
      "stop": 4902.66,
      "target": 4867.691,
      "r": 1.5,
      "entry_touch_time": "2026-03-18T14:05:00Z",
      "outcome_time": "2026-03-18T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4888.672, stop=4902.66, target=4867.691. Pre-M15 range high=4995.85, low=4834.38.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4870.87,
          "impulse_high": 4902.66,
          "fib50": 4886.764999999999,
          "fib62": 4890.5797999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-18T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-18T22:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-18T22:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4831.36,
      "stop": 4848.94,
      "target": 4804.99,
      "r": 1.5,
      "entry_touch_time": "2026-03-18T22:05:00Z",
      "outcome_time": "2026-03-18T22:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-18T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4831.36, stop=4848.94, target=4804.99. Pre-M15 range high=4899.46, low=4806.845.",
      "candidate": {
        "id": "candidate_v2_2026-03-18T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-18",
        "timestamp": "2026-03-18T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4808.985,
          "impulse_high": 4848.94,
          "fib50": 4828.9625,
          "fib62": 4833.7571
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-19T06:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-19T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4838.051,
      "stop": 4846.635,
      "target": 4825.174,
      "r": 1.5,
      "entry_touch_time": "2026-03-19T06:05:00Z",
      "outcome_time": "2026-03-19T06:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-19T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4838.051, stop=4846.635, target=4825.174. Pre-M15 range high=4867.225, low=4827.045.",
      "candidate": {
        "id": "candidate_v2_2026-03-19T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4827.125,
          "impulse_high": 4846.635,
          "fib50": 4836.88,
          "fib62": 4839.2212
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-19T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4747.72,
          "impulse_high": 4820.26,
          "fib50": 4783.99,
          "fib62": 4792.6948
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4788.3423999999995,
      "stop": 4820.26,
      "target": 4740.4659999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T08-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-19T09:30:00Z; outcome=tp_first",
      "timestamp": "2026-03-19T08:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4724.952,
      "stop": 4736.58,
      "target": 4701.697,
      "r": 2.0,
      "entry_touch_time": "2026-03-19T09:30:00Z",
      "outcome_time": "2026-03-19T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-19T08:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4724.952, stop=4736.58, target=4701.697. Pre-M15 range high=4853.995, low=4686.885.",
      "candidate": {
        "id": "candidate_v2_2026-03-19T08-45-00Z_short_order_block_reclaim",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T08:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4713.325,
          "ob_high": 4736.58,
          "displacement_low": 4686.885
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-19T13:25:00Z; outcome=sl_first",
      "timestamp": "2026-03-19T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4579.813,
      "stop": 4617.95,
      "target": 4522.608,
      "r": -1.0,
      "entry_touch_time": "2026-03-19T13:25:00Z",
      "outcome_time": "2026-03-19T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-19T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4579.813, stop=4617.95, target=4522.608. Pre-M15 range high=4736.58, low=4502.365.",
      "candidate": {
        "id": "candidate_v2_2026-03-19T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4531.275,
          "impulse_high": 4617.95,
          "fib50": 4574.612499999999,
          "fib62": 4585.0135
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-19T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-19T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4631.696,
      "stop": 4654.25,
      "target": 4597.864,
      "r": 1.5,
      "entry_touch_time": "2026-03-19T14:05:00Z",
      "outcome_time": "2026-03-19T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-19T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4631.696, stop=4654.25, target=4597.864. Pre-M15 range high=4726.02, low=4502.365.",
      "candidate": {
        "id": "candidate_v2_2026-03-19T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4602.99,
          "impulse_high": 4654.25,
          "fib50": 4628.62,
          "fib62": 4634.7712
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-19T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-19T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4620.695,
      "stop": 4649.31,
      "target": 4577.771,
      "r": 1.5,
      "entry_touch_time": "2026-03-19T14:35:00Z",
      "outcome_time": "2026-03-19T15:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-19T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4620.695, stop=4649.31, target=4577.771. Pre-M15 range high=4719.865, low=4502.365.",
      "candidate": {
        "id": "candidate_v2_2026-03-19T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4584.275,
          "impulse_high": 4649.31,
          "fib50": 4616.7925,
          "fib62": 4624.5967
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-19T14-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-19T14-30-00Z_long_order_block_reclaim",
        "date": "2026-03-19",
        "timestamp": "2026-03-19T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4546.525,
          "ob_high": 4583.335,
          "displacement_high": 4621.305
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4564.93,
      "stop": 4546.525,
      "target": 4601.740000000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-20T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-20T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-20T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4653.179,
      "stop": 4666.465,
      "target": 4633.251,
      "r": -1.0,
      "entry_touch_time": "2026-03-20T00:05:00Z",
      "outcome_time": "2026-03-20T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-20T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4653.179, stop=4666.465, target=4633.251. Pre-M15 range high=4677.205, low=4596.115.",
      "candidate": {
        "id": "candidate_v2_2026-03-20T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-20",
        "timestamp": "2026-03-20T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4636.27,
          "impulse_high": 4666.465,
          "fib50": 4651.3675,
          "fib62": 4654.990900000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-20T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-20T02:05:00Z; outcome=tp_first",
      "timestamp": "2026-03-20T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4677.97,
      "stop": 4661.03,
      "target": 4703.38,
      "r": 1.5,
      "entry_touch_time": "2026-03-20T02:05:00Z",
      "outcome_time": "2026-03-20T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-20T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4677.97, stop=4661.03, target=4703.38. Pre-M15 range high=4699.53, low=4634.355.",
      "candidate": {
        "id": "candidate_v2_2026-03-20T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-20",
        "timestamp": "2026-03-20T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4661.03,
          "impulse_high": 4699.53,
          "fib50": 4680.28,
          "fib62": 4675.66
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-20T05-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-20T05:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-20T05:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4712.013,
      "stop": 4693.225,
      "target": 4740.195,
      "r": -1.0,
      "entry_touch_time": "2026-03-20T05:05:00Z",
      "outcome_time": "2026-03-20T05:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-20T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4712.013, stop=4693.225, target=4740.195. Pre-M15 range high=4736.175, low=4639.42.",
      "candidate": {
        "id": "candidate_v2_2026-03-20T05-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-20",
        "timestamp": "2026-03-20T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4693.225,
          "impulse_high": 4735.925,
          "fib50": 4714.575000000001,
          "fib62": 4709.451
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-20T11-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-20T11:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-20T11:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4659.852,
      "stop": 4670.135,
      "target": 4639.287,
      "r": -1.0,
      "entry_touch_time": "2026-03-20T11:05:00Z",
      "outcome_time": "2026-03-20T11:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-20T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4659.852, stop=4670.135, target=4639.287. Pre-M15 range high=4734.96, low=4637.245.",
      "candidate": {
        "id": "candidate_v2_2026-03-20T11-00-00Z_short_order_block_reclaim",
        "date": "2026-03-20",
        "timestamp": "2026-03-20T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4649.57,
          "ob_high": 4670.135,
          "displacement_low": 4638.195
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-20T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-20T16:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-20T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4591.337,
      "stop": 4622.74,
      "target": 4544.233,
      "r": 1.5,
      "entry_touch_time": "2026-03-20T16:15:00Z",
      "outcome_time": "2026-03-20T18:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-20T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4591.337, stop=4622.74, target=4544.233. Pre-M15 range high=4695.705, low=4540.785.",
      "candidate": {
        "id": "candidate_v2_2026-03-20T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-20",
        "timestamp": "2026-03-20T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4551.37,
          "impulse_high": 4622.74,
          "fib50": 4587.055,
          "fib62": 4595.6194
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-20T17-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-20T18:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-20T17:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4553.548,
      "stop": 4544.5,
      "target": 4571.643,
      "r": -1.0,
      "entry_touch_time": "2026-03-20T18:20:00Z",
      "outcome_time": "2026-03-20T18:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-20T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4553.548, stop=4544.5, target=4571.643. Pre-M15 range high=4681.96, low=4540.785.",
      "candidate": {
        "id": "candidate_v2_2026-03-20T17-30-00Z_long_order_block_reclaim",
        "date": "2026-03-20",
        "timestamp": "2026-03-20T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4544.5,
          "ob_high": 4562.595,
          "displacement_high": 4588.545
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-22T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-22T22:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-22T22:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4522.284,
      "stop": 4557.44,
      "target": 4469.55,
      "r": 1.5,
      "entry_touch_time": "2026-03-22T22:20:00Z",
      "outcome_time": "2026-03-22T23:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-22T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4522.284, stop=4557.44, target=4469.55. Pre-M15 range high=4614.065, low=4471.95.",
      "candidate": {
        "id": "candidate_v2_2026-03-22T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-22",
        "timestamp": "2026-03-22T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4477.54,
          "impulse_high": 4557.44,
          "fib50": 4517.49,
          "fib62": 4527.0779999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-22T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-23T14:25:00Z; outcome=tp_first",
      "timestamp": "2026-03-22T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4510.472,
      "stop": 4526.675,
      "target": 4486.168,
      "r": 1.5,
      "entry_touch_time": "2026-03-23T14:25:00Z",
      "outcome_time": "2026-03-23T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-22T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4510.472, stop=4526.675, target=4486.168. Pre-M15 range high=4583.17, low=4471.95.",
      "candidate": {
        "id": "candidate_v2_2026-03-22T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-22",
        "timestamp": "2026-03-22T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4489.85,
          "impulse_high": 4526.675,
          "fib50": 4508.262500000001,
          "fib62": 4512.681500000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T00-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-23T12:50:00Z; outcome=tp_first",
      "timestamp": "2026-03-23T00:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4481.762,
      "stop": 4491.105,
      "target": 4463.078,
      "r": 2.0,
      "entry_touch_time": "2026-03-23T12:50:00Z",
      "outcome_time": "2026-03-23T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4481.762, stop=4491.105, target=4463.078. Pre-M15 range high=4568.43, low=4425.415.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T00-00-00Z_short_order_block_reclaim",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4472.42,
          "ob_high": 4491.105,
          "displacement_low": 4452.08
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-23T01:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-23T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4443.097,
      "stop": 4473.16,
      "target": 4398.002,
      "r": 1.5,
      "entry_touch_time": "2026-03-23T01:20:00Z",
      "outcome_time": "2026-03-23T01:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4443.097, stop=4473.16, target=4398.002. Pre-M15 range high=4536.415, low=4319.92.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4404.835,
          "impulse_high": 4473.16,
          "fib50": 4438.9974999999995,
          "fib62": 4447.1965
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-23T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-23T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4168.226,
      "stop": 4222.52,
      "target": 4086.785,
      "r": -1.0,
      "entry_touch_time": "2026-03-23T07:35:00Z",
      "outcome_time": "2026-03-23T07:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4168.226, stop=4222.52, target=4086.785. Pre-M15 range high=4384.855, low=4099.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4099.125,
          "impulse_high": 4222.52,
          "fib50": 4160.8225,
          "fib62": 4175.6299
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T07-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-23T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-23T07:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4196.59,
      "stop": 4230.11,
      "target": 4129.55,
      "r": -1.0,
      "entry_touch_time": "2026-03-23T07:35:00Z",
      "outcome_time": "2026-03-23T07:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4196.59, stop=4230.11, target=4129.55. Pre-M15 range high=4384.855, low=4099.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T07-30-00Z_short_order_block_reclaim",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4163.07,
          "ob_high": 4230.11,
          "displacement_low": 4126.63
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-23T09:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-23T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4278.99,
      "stop": 4310.52,
      "target": 4231.694,
      "r": 1.5,
      "entry_touch_time": "2026-03-23T09:15:00Z",
      "outcome_time": "2026-03-23T09:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4278.99, stop=4310.52, target=4231.694. Pre-M15 range high=4382.22, low=4099.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4238.86,
          "impulse_high": 4310.52,
          "fib50": 4274.6900000000005,
          "fib62": 4283.2892
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T09-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-03-23T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-23T09:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4262.538,
      "stop": 4308.625,
      "target": 4170.363,
      "r": -1.0,
      "entry_touch_time": "2026-03-23T09:35:00Z",
      "outcome_time": "2026-03-23T11:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4262.538, stop=4308.625, target=4170.363. Pre-M15 range high=4380.155, low=4099.125.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T09-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4308.625,
          "fvg_low": 4257.32,
          "fvg_high": 4267.755
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-23T13:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-23T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4426.201,
      "stop": 4373.775,
      "target": 4504.84,
      "r": 1.5,
      "entry_touch_time": "2026-03-23T13:15:00Z",
      "outcome_time": "2026-03-23T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4426.201, stop=4373.775, target=4504.84. Pre-M15 range high=4492.925, low=4211.41.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4373.775,
          "impulse_high": 4492.925,
          "fib50": 4433.35,
          "fib62": 4419.052
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-23T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-23T17:25:00Z; outcome=sl_first",
      "timestamp": "2026-03-23T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4409.772,
      "stop": 4456.24,
      "target": 4340.069,
      "r": -1.0,
      "entry_touch_time": "2026-03-23T17:25:00Z",
      "outcome_time": "2026-03-23T18:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-23T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4409.772, stop=4456.24, target=4340.069. Pre-M15 range high=4513.165, low=4350.63.",
      "candidate": {
        "id": "candidate_v2_2026-03-23T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-23",
        "timestamp": "2026-03-23T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4350.63,
          "impulse_high": 4456.24,
          "fib50": 4403.4349999999995,
          "fib62": 4416.1082
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-24T00:25:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4384.362,
      "stop": 4359.74,
      "target": 4421.296,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T00:25:00Z",
      "outcome_time": "2026-03-24T00:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4384.362, stop=4359.74, target=4421.296. Pre-M15 range high=4467.27, low=4359.74.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4359.74,
          "impulse_high": 4415.7,
          "fib50": 4387.719999999999,
          "fib62": 4381.0048
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T01-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-24T01:25:00Z; outcome=tp_first",
      "timestamp": "2026-03-24T01:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4365.202,
      "stop": 4387.035,
      "target": 4321.537,
      "r": 2.0,
      "entry_touch_time": "2026-03-24T01:25:00Z",
      "outcome_time": "2026-03-24T01:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4365.202, stop=4387.035, target=4321.537. Pre-M15 range high=4448.355, low=4328.49.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T01-15-00Z_short_order_block_reclaim",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4343.37,
          "ob_high": 4387.035,
          "displacement_low": 4328.49
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-24T02:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4341.957,
      "stop": 4368.645,
      "target": 4301.924,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T02:20:00Z",
      "outcome_time": "2026-03-24T02:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4341.957, stop=4368.645, target=4301.924. Pre-M15 range high=4448.355, low=4305.88.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4307.99,
          "impulse_high": 4368.645,
          "fib50": 4338.3175,
          "fib62": 4345.5961
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T05-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-03-24T05-45-00Z_long_order_block_reclaim",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T05:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4333.905,
          "ob_high": 4346.735,
          "displacement_high": 4374.06
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4340.32,
      "stop": 4333.905,
      "target": 4353.15,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T08-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-24T11:00:00Z; outcome=tp_first",
      "timestamp": "2026-03-24T08:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4385.81,
      "stop": 4374.49,
      "target": 4408.45,
      "r": 2.0,
      "entry_touch_time": "2026-03-24T11:00:00Z",
      "outcome_time": "2026-03-24T11:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T08:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4385.81, stop=4374.49, target=4408.45. Pre-M15 range high=4433.31, low=4320.04.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T08-15-00Z_long_order_block_reclaim",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T08:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4374.49,
          "ob_high": 4397.13,
          "displacement_high": 4405.26
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-24T08:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4408.018,
      "stop": 4421.165,
      "target": 4388.297,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T08:45:00Z",
      "outcome_time": "2026-03-24T09:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4408.018, stop=4421.165, target=4388.297. Pre-M15 range high=4433.31, low=4320.04.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4391.285,
          "impulse_high": 4421.165,
          "fib50": 4406.225,
          "fib62": 4409.8106
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T12-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Short: entry touched 2026-03-24T14:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T12:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4406.68,
      "stop": 4438.62,
      "target": 4342.8,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T14:20:00Z",
      "outcome_time": "2026-03-24T20:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T12:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4406.68, stop=4438.62, target=4342.8. Pre-M15 range high=4442.245, low=4362.065.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T12-45-00Z_short_breaker_continuation",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T12:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4442.245,
          "breaker_low": 4374.74,
          "breaker_high": 4438.62,
          "break_low": 4391.285
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-24T14:00:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4387.147,
      "stop": 4406.855,
      "target": 4357.586,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T14:00:00Z",
      "outcome_time": "2026-03-24T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4387.147, stop=4406.855, target=4357.586. Pre-M15 range high=4442.245, low=4362.065.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4362.065,
          "impulse_high": 4406.855,
          "fib50": 4384.459999999999,
          "fib62": 4389.8348
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T14-30-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-03-24T14:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-24T14:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4423.302,
      "stop": 4427.89,
      "target": 4414.127,
      "r": null,
      "entry_touch_time": "2026-03-24T14:50:00Z",
      "outcome_time": "2026-03-24T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4423.302, stop=4427.89, target=4414.127. Pre-M15 range high=4442.245, low=4351.09.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T14-30-00Z_short_breaker_continuation",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4441.73,
          "breaker_low": 4418.715,
          "breaker_high": 4427.89,
          "break_low": 4391.285
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-24T17:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4395.929,
      "stop": 4380.855,
      "target": 4418.541,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T17:05:00Z",
      "outcome_time": "2026-03-24T17:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4395.929, stop=4380.855, target=4418.541. Pre-M15 range high=4442.245, low=4351.09.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4380.855,
          "impulse_high": 4415.115,
          "fib50": 4397.985,
          "fib62": 4393.873799999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T17-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-24T18:20:00Z; outcome=sl_first",
      "timestamp": "2026-03-24T17:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4400.038,
      "stop": 4406.015,
      "target": 4388.083,
      "r": -1.0,
      "entry_touch_time": "2026-03-24T18:20:00Z",
      "outcome_time": "2026-03-24T18:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T17:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4400.038, stop=4406.015, target=4388.083. Pre-M15 range high=4434.31, low=4351.09.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T17-45-00Z_short_order_block_reclaim",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T17:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4394.06,
          "ob_high": 4406.015,
          "displacement_low": 4375.195
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-24T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-24T18:25:00Z; outcome=tp_first",
      "timestamp": "2026-03-24T18:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4409.831,
      "stop": 4426.69,
      "target": 4384.543,
      "r": 1.5,
      "entry_touch_time": "2026-03-24T18:25:00Z",
      "outcome_time": "2026-03-24T18:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-24T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4409.831, stop=4426.69, target=4384.543. Pre-M15 range high=4434.31, low=4351.09.",
      "candidate": {
        "id": "candidate_v2_2026-03-24T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-24",
        "timestamp": "2026-03-24T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4388.375,
          "impulse_high": 4426.69,
          "fib50": 4407.532499999999,
          "fib62": 4412.1303
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-25T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4553.005,
      "stop": 4544.885,
      "target": 4565.185,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T07:35:00Z",
      "outcome_time": "2026-03-25T07:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4553.005, stop=4544.885, target=4565.185. Pre-M15 range high=4602.645, low=4533.145.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4544.885,
          "impulse_high": 4563.34,
          "fib50": 4554.1125,
          "fib62": 4551.8979
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T08-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-03-25T08:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T08:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4553.888,
      "stop": 4536.05,
      "target": 4589.563,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T08:05:00Z",
      "outcome_time": "2026-03-25T09:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4553.888, stop=4536.05, target=4589.563. Pre-M15 range high=4579.685, low=4533.145.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T08-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4536.05,
          "fvg_low": 4550.39,
          "fvg_high": 4557.385
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-25T09:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4550.211,
      "stop": 4536.05,
      "target": 4571.453,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T09:40:00Z",
      "outcome_time": "2026-03-25T09:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4550.211, stop=4536.05, target=4571.453. Pre-M15 range high=4574.04, low=4533.145.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4536.05,
          "impulse_high": 4568.235,
          "fib50": 4552.1425,
          "fib62": 4548.2803
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-25T12:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4568.024,
      "stop": 4556.21,
      "target": 4585.745,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T12:15:00Z",
      "outcome_time": "2026-03-25T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4568.024, stop=4556.21, target=4585.745. Pre-M15 range high=4585.6, low=4527.89.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4556.21,
          "impulse_high": 4583.06,
          "fib50": 4569.635,
          "fib62": 4566.4130000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T13-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-03-25T13:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-25T13:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4553.185,
      "stop": 4550.73,
      "target": 4558.095,
      "r": 2.0,
      "entry_touch_time": "2026-03-25T13:20:00Z",
      "outcome_time": "2026-03-25T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4553.185, stop=4550.73, target=4558.095. Pre-M15 range high=4585.6, low=4521.88.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T13-00-00Z_long_breaker_continuation",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4527.89,
          "breaker_low": 4550.73,
          "breaker_high": 4555.64,
          "break_high": 4568.235
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-25T13:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4554.533,
      "stop": 4541.3,
      "target": 4574.382,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T13:45:00Z",
      "outcome_time": "2026-03-25T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4554.533, stop=4541.3, target=4574.382. Pre-M15 range high=4585.6, low=4521.88.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4541.3,
          "impulse_high": 4571.375,
          "fib50": 4556.3375,
          "fib62": 4552.7285
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-25T19:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T19:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4516.354,
      "stop": 4539.74,
      "target": 4481.275,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T19:35:00Z",
      "outcome_time": "2026-03-25T20:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4516.354, stop=4539.74, target=4481.275. Pre-M15 range high=4579.44, low=4486.59.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4486.59,
          "impulse_high": 4539.74,
          "fib50": 4513.165,
          "fib62": 4519.543
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-25T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-25T22:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-25T22:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4511.735,
      "stop": 4525.12,
      "target": 4491.658,
      "r": -1.0,
      "entry_touch_time": "2026-03-25T22:05:00Z",
      "outcome_time": "2026-03-25T22:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-25T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4511.735, stop=4525.12, target=4491.658. Pre-M15 range high=4569.025, low=4486.59.",
      "candidate": {
        "id": "candidate_v2_2026-03-25T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-25",
        "timestamp": "2026-03-25T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4494.7,
          "impulse_high": 4525.12,
          "fib50": 4509.91,
          "fib62": 4513.5604
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-26T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-26T04:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-26T03:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4519.65,
      "stop": 4530.63,
      "target": 4503.18,
      "r": 1.5,
      "entry_touch_time": "2026-03-26T04:15:00Z",
      "outcome_time": "2026-03-26T05:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-26T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4519.65, stop=4530.63, target=4503.18. Pre-M15 range high=4544.815, low=4489.075.",
      "candidate": {
        "id": "candidate_v2_2026-03-26T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-26",
        "timestamp": "2026-03-26T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4505.675,
          "impulse_high": 4530.63,
          "fib50": 4518.1525,
          "fib62": 4521.1471
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-26T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-26T10:25:00Z; outcome=tp_first",
      "timestamp": "2026-03-26T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4444.418,
      "stop": 4459.455,
      "target": 4421.862,
      "r": 1.5,
      "entry_touch_time": "2026-03-26T10:25:00Z",
      "outcome_time": "2026-03-26T11:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-26T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4444.418, stop=4459.455, target=4421.862. Pre-M15 range high=4511.45, low=4412.44.",
      "candidate": {
        "id": "candidate_v2_2026-03-26T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-26",
        "timestamp": "2026-03-26T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4425.28,
          "impulse_high": 4459.455,
          "fib50": 4442.3675,
          "fib62": 4446.4685
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-26T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-26T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-26T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4437.663,
      "stop": 4452.06,
      "target": 4416.068,
      "r": -1.0,
      "entry_touch_time": "2026-03-26T12:05:00Z",
      "outcome_time": "2026-03-26T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-26T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4437.663, stop=4452.06, target=4416.068. Pre-M15 range high=4463.995, low=4412.44.",
      "candidate": {
        "id": "candidate_v2_2026-03-26T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-26",
        "timestamp": "2026-03-26T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4419.34,
          "impulse_high": 4452.06,
          "fib50": 4435.700000000001,
          "fib62": 4439.6264
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-26T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-26T20:35:00Z; outcome=tp_first",
      "timestamp": "2026-03-26T20:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4418.059,
      "stop": 4442.785,
      "target": 4380.97,
      "r": 1.5,
      "entry_touch_time": "2026-03-26T20:35:00Z",
      "outcome_time": "2026-03-26T20:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-26T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4418.059, stop=4442.785, target=4380.97. Pre-M15 range high=4458.74, low=4351.355.",
      "candidate": {
        "id": "candidate_v2_2026-03-26T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-26",
        "timestamp": "2026-03-26T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4386.59,
          "impulse_high": 4442.785,
          "fib50": 4414.6875,
          "fib62": 4421.4309
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-26T20-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-03-26T20:10:00Z; outcome=tp_first",
      "timestamp": "2026-03-26T20:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 4380.215,
      "stop": 4351.355,
      "target": 4437.935,
      "r": 2.0,
      "entry_touch_time": "2026-03-26T20:10:00Z",
      "outcome_time": "2026-03-27T02:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-26T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4380.215, stop=4351.355, target=4437.935. Pre-M15 range high=4458.74, low=4351.355.",
      "candidate": {
        "id": "candidate_v2_2026-03-26T20-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-03-26",
        "timestamp": "2026-03-26T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4351.355,
          "fvg_low": 4380.17,
          "fvg_high": 4380.26
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-26T20-30-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-03-26T20:50:00Z; outcome=tp_first",
      "timestamp": "2026-03-26T20:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY PM",
      "entry": 4389.182,
      "stop": 4364.075,
      "target": 4439.398,
      "r": 2.0,
      "entry_touch_time": "2026-03-26T20:50:00Z",
      "outcome_time": "2026-03-27T02:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-26T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4389.182, stop=4364.075, target=4439.398. Pre-M15 range high=4446.895, low=4351.355.",
      "candidate": {
        "id": "candidate_v2_2026-03-26T20-30-00Z_long_breaker_continuation",
        "date": "2026-03-26",
        "timestamp": "2026-03-26T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4351.355,
          "breaker_low": 4364.075,
          "breaker_high": 4414.29,
          "break_high": 4402.32
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-27T07-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-27T07:50:00Z; outcome=tp_first",
      "timestamp": "2026-03-27T07:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4443.96,
      "stop": 4440.74,
      "target": 4450.4,
      "r": 2.0,
      "entry_touch_time": "2026-03-27T07:50:00Z",
      "outcome_time": "2026-03-27T07:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-27T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4443.96, stop=4440.74, target=4450.4. Pre-M15 range high=4475.3, low=4421.39.",
      "candidate": {
        "id": "candidate_v2_2026-03-27T07-30-00Z_long_order_block_reclaim",
        "date": "2026-03-27",
        "timestamp": "2026-03-27T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4440.74,
          "ob_high": 4447.18,
          "displacement_high": 4475.3
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-27T09-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-27T09:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-27T09:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4434.48,
      "stop": 4440.13,
      "target": 4423.18,
      "r": 2.0,
      "entry_touch_time": "2026-03-27T09:15:00Z",
      "outcome_time": "2026-03-27T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-27T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4434.48, stop=4440.13, target=4423.18. Pre-M15 range high=4475.3, low=4420.885.",
      "candidate": {
        "id": "candidate_v2_2026-03-27T09-00-00Z_short_order_block_reclaim",
        "date": "2026-03-27",
        "timestamp": "2026-03-27T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4428.83,
          "ob_high": 4440.13,
          "displacement_low": 4424.025
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-27T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-27T11:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-27T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4421.785,
      "stop": 4430.605,
      "target": 4408.556,
      "r": -1.0,
      "entry_touch_time": "2026-03-27T11:40:00Z",
      "outcome_time": "2026-03-27T12:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-27T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4421.785, stop=4430.605, target=4408.556. Pre-M15 range high=4465.38, low=4404.58.",
      "candidate": {
        "id": "candidate_v2_2026-03-27T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-27",
        "timestamp": "2026-03-27T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4410.56,
          "impulse_high": 4430.605,
          "fib50": 4420.5825,
          "fib62": 4422.9879
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-27T11-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-27T12:15:00Z; outcome=sl_first",
      "timestamp": "2026-03-27T11:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4427.805,
      "stop": 4431.61,
      "target": 4420.195,
      "r": -1.0,
      "entry_touch_time": "2026-03-27T12:15:00Z",
      "outcome_time": "2026-03-27T12:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-27T11:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4427.805, stop=4431.61, target=4420.195. Pre-M15 range high=4463.14, low=4404.58.",
      "candidate": {
        "id": "candidate_v2_2026-03-27T11-45-00Z_short_order_block_reclaim",
        "date": "2026-03-27",
        "timestamp": "2026-03-27T11:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4424.0,
          "ob_high": 4431.61,
          "displacement_low": 4412.49
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-27T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-27T15:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-27T15:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4525.474,
      "stop": 4501.78,
      "target": 4561.015,
      "r": -1.0,
      "entry_touch_time": "2026-03-27T15:45:00Z",
      "outcome_time": "2026-03-27T17:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-27T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4525.474, stop=4501.78, target=4561.015. Pre-M15 range high=4555.63, low=4404.58.",
      "candidate": {
        "id": "candidate_v2_2026-03-27T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-27",
        "timestamp": "2026-03-27T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4501.78,
          "impulse_high": 4555.63,
          "fib50": 4528.705,
          "fib62": 4522.2429999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-03-30T00:20:00Z; outcome=tp_first",
      "timestamp": "2026-03-30T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4459.897,
      "stop": 4472.43,
      "target": 4441.096,
      "r": 1.5,
      "entry_touch_time": "2026-03-30T00:20:00Z",
      "outcome_time": "2026-03-30T00:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4459.897, stop=4472.43, target=4441.096. Pre-M15 range high=4528.755, low=4417.43.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4443.945,
          "impulse_high": 4472.43,
          "fib50": 4458.1875,
          "fib62": 4461.6057
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T03-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-30T03:55:00Z; outcome=tp_first",
      "timestamp": "2026-03-30T03:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4496.29,
      "stop": 4479.095,
      "target": 4522.083,
      "r": 1.5,
      "entry_touch_time": "2026-03-30T03:55:00Z",
      "outcome_time": "2026-03-30T05:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4496.29, stop=4479.095, target=4522.083. Pre-M15 range high=4518.175, low=4417.43.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T03-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4479.095,
          "impulse_high": 4518.175,
          "fib50": 4498.635,
          "fib62": 4493.9454000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T03-45-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-30T04:10:00Z; outcome=tp_first",
      "timestamp": "2026-03-30T03:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4487.698,
      "stop": 4479.015,
      "target": 4505.062,
      "r": 2.0,
      "entry_touch_time": "2026-03-30T04:10:00Z",
      "outcome_time": "2026-03-30T05:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T03:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4487.698, stop=4479.015, target=4505.062. Pre-M15 range high=4518.175, low=4417.43.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T03-45-00Z_long_order_block_reclaim",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T03:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4479.015,
          "ob_high": 4496.38,
          "displacement_high": 4508.93
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T06-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-30T07:00:00Z; outcome=sl_first",
      "timestamp": "2026-03-30T06:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4531.278,
      "stop": 4526.89,
      "target": 4540.052,
      "r": -1.0,
      "entry_touch_time": "2026-03-30T07:00:00Z",
      "outcome_time": "2026-03-30T07:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T06:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4531.278, stop=4526.89, target=4540.052. Pre-M15 range high=4550.855, low=4458.89.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T06-45-00Z_long_order_block_reclaim",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T06:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4526.89,
          "ob_high": 4535.665,
          "displacement_high": 4541.965
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-30T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-30T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4557.157,
      "stop": 4538.635,
      "target": 4584.939,
      "r": -1.0,
      "entry_touch_time": "2026-03-30T12:05:00Z",
      "outcome_time": "2026-03-30T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4557.157, stop=4538.635, target=4584.939. Pre-M15 range high=4580.73, low=4515.87.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4538.635,
          "impulse_high": 4580.73,
          "fib50": 4559.6825,
          "fib62": 4554.6311
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-30T13:45:00Z; outcome=sl_first",
      "timestamp": "2026-03-30T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4535.734,
      "stop": 4525.645,
      "target": 4550.868,
      "r": -1.0,
      "entry_touch_time": "2026-03-30T13:45:00Z",
      "outcome_time": "2026-03-30T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4535.734, stop=4525.645, target=4550.868. Pre-M15 range high=4580.73, low=4523.605.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4525.645,
          "impulse_high": 4548.575,
          "fib50": 4537.110000000001,
          "fib62": 4534.3584
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-30T15:15:00Z; outcome=tp_first",
      "timestamp": "2026-03-30T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4528.144,
      "stop": 4517.615,
      "target": 4543.938,
      "r": 1.5,
      "entry_touch_time": "2026-03-30T15:15:00Z",
      "outcome_time": "2026-03-30T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4528.144, stop=4517.615, target=4543.938. Pre-M15 range high=4580.73, low=4512.57.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4517.615,
          "impulse_high": 4541.545,
          "fib50": 4529.58,
          "fib62": 4526.7083999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T16-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-30T17:10:00Z; outcome=sl_first",
      "timestamp": "2026-03-30T16:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4529.493,
      "stop": 4524.7,
      "target": 4539.078,
      "r": -1.0,
      "entry_touch_time": "2026-03-30T17:10:00Z",
      "outcome_time": "2026-03-30T17:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4529.493, stop=4524.7, target=4539.078. Pre-M15 range high=4580.73, low=4512.57.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T16-30-00Z_long_order_block_reclaim",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4524.7,
          "ob_high": 4534.285,
          "displacement_high": 4554.025
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T19-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-30T19:55:00Z; outcome=tp_first",
      "timestamp": "2026-03-30T19:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4516.085,
      "stop": 4519.58,
      "target": 4509.095,
      "r": 2.0,
      "entry_touch_time": "2026-03-30T19:55:00Z",
      "outcome_time": "2026-03-30T19:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4516.085, stop=4519.58, target=4509.095. Pre-M15 range high=4556.895, low=4493.1.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T19-30-00Z_short_order_block_reclaim",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4512.59,
          "ob_high": 4519.58,
          "displacement_low": 4498.505
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-30T23-15-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-30T23:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-30T23:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4512.075,
      "stop": 4515.525,
      "target": 4505.175,
      "r": null,
      "entry_touch_time": "2026-03-30T23:35:00Z",
      "outcome_time": "2026-03-30T23:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-30T23:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4512.075, stop=4515.525, target=4505.175. Pre-M15 range high=4528.635, low=4492.8.",
      "candidate": {
        "id": "candidate_v2_2026-03-30T23-15-00Z_short_order_block_reclaim",
        "date": "2026-03-30",
        "timestamp": "2026-03-30T23:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4508.625,
          "ob_high": 4515.525,
          "displacement_low": 4492.8
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-31T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-31T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-03-31T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4595.836,
      "stop": 4577.435,
      "target": 4623.437,
      "r": -1.0,
      "entry_touch_time": "2026-03-31T02:05:00Z",
      "outcome_time": "2026-03-31T02:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-31T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4595.836, stop=4577.435, target=4623.437. Pre-M15 range high=4619.255, low=4482.66.",
      "candidate": {
        "id": "candidate_v2_2026-03-31T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-31",
        "timestamp": "2026-03-31T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4577.435,
          "impulse_high": 4619.255,
          "fib50": 4598.345,
          "fib62": 4593.3266
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-31T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-31T03:40:00Z; outcome=sl_first",
      "timestamp": "2026-03-31T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4555.697,
      "stop": 4532.15,
      "target": 4591.016,
      "r": -1.0,
      "entry_touch_time": "2026-03-31T03:40:00Z",
      "outcome_time": "2026-03-31T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-31T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4555.697, stop=4532.15, target=4591.016. Pre-M15 range high=4619.255, low=4482.66.",
      "candidate": {
        "id": "candidate_v2_2026-03-31T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-31",
        "timestamp": "2026-03-31T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4532.15,
          "impulse_high": 4585.665,
          "fib50": 4558.907499999999,
          "fib62": 4552.4857
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-31T03-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-03-31T10:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-31T03:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4541.507,
      "stop": 4532.15,
      "target": 4560.222,
      "r": -1.0,
      "entry_touch_time": "2026-03-31T10:35:00Z",
      "outcome_time": "2026-03-31T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-31T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4541.507, stop=4532.15, target=4560.222. Pre-M15 range high=4619.255, low=4482.66.",
      "candidate": {
        "id": "candidate_v2_2026-03-31T03-30-00Z_long_order_block_reclaim",
        "date": "2026-03-31",
        "timestamp": "2026-03-31T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4532.15,
          "ob_high": 4550.865,
          "displacement_high": 4585.665
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-31T05-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-31T05:25:00Z; outcome=sl_first",
      "timestamp": "2026-03-31T05:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4565.188,
      "stop": 4569.39,
      "target": 4556.782,
      "r": -1.0,
      "entry_touch_time": "2026-03-31T05:25:00Z",
      "outcome_time": "2026-03-31T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-31T05:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4565.188, stop=4569.39, target=4556.782. Pre-M15 range high=4619.255, low=4506.465.",
      "candidate": {
        "id": "candidate_v2_2026-03-31T05-15-00Z_short_order_block_reclaim",
        "date": "2026-03-31",
        "timestamp": "2026-03-31T05:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4560.985,
          "ob_high": 4569.39,
          "displacement_low": 4547.9
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-31T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-03-31T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-03-31T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4558.209,
      "stop": 4552.005,
      "target": 4567.515,
      "r": -1.0,
      "entry_touch_time": "2026-03-31T09:35:00Z",
      "outcome_time": "2026-03-31T09:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-31T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4558.209, stop=4552.005, target=4567.515. Pre-M15 range high=4581.94, low=4543.51.",
      "candidate": {
        "id": "candidate_v2_2026-03-31T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-03-31",
        "timestamp": "2026-03-31T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4552.005,
          "impulse_high": 4566.105,
          "fib50": 4559.055,
          "fib62": 4557.363
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-03-31T11-00-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-03-31T11:10:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-03-31T11:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4558.333,
      "stop": 4561.115,
      "target": 4552.768,
      "r": null,
      "entry_touch_time": "2026-03-31T11:10:00Z",
      "outcome_time": "2026-03-31T11:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-03-31T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4558.333, stop=4561.115, target=4552.768. Pre-M15 range high=4575.4, low=4529.545.",
      "candidate": {
        "id": "candidate_v2_2026-03-31T11-00-00Z_short_order_block_reclaim",
        "date": "2026-03-31",
        "timestamp": "2026-03-31T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4555.55,
          "ob_high": 4561.115,
          "displacement_low": 4529.545
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-01T00:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-01T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4706.106,
      "stop": 4693.52,
      "target": 4724.985,
      "r": -1.0,
      "entry_touch_time": "2026-04-01T00:35:00Z",
      "outcome_time": "2026-04-01T01:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4706.106, stop=4693.52, target=4724.985. Pre-M15 range high=4722.6, low=4661.86.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4693.52,
          "impulse_high": 4722.125,
          "fib50": 4707.8225,
          "fib62": 4704.3899
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-01T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-01T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4689.702,
      "stop": 4681.63,
      "target": 4701.809,
      "r": 1.5,
      "entry_touch_time": "2026-04-01T01:05:00Z",
      "outcome_time": "2026-04-01T01:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4689.702, stop=4681.63, target=4701.809. Pre-M15 range high=4724.52, low=4662.125.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4681.63,
          "impulse_high": 4699.975,
          "fib50": 4690.8025,
          "fib62": 4688.6011
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T01-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-01T02:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-01T01:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4700.743,
      "stop": 4708.59,
      "target": 4685.048,
      "r": 2.0,
      "entry_touch_time": "2026-04-01T02:05:00Z",
      "outcome_time": "2026-04-01T02:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T01:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4700.743, stop=4708.59, target=4685.048. Pre-M15 range high=4724.52, low=4662.125.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T01-45-00Z_short_order_block_reclaim",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4692.895,
          "ob_high": 4708.59,
          "displacement_low": 4681.225
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-01T07:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-01T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4715.844,
      "stop": 4702.18,
      "target": 4736.341,
      "r": 1.5,
      "entry_touch_time": "2026-04-01T07:05:00Z",
      "outcome_time": "2026-04-01T07:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4715.844, stop=4702.18, target=4736.341. Pre-M15 range high=4733.235, low=4667.195.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4702.18,
          "impulse_high": 4733.235,
          "fib50": 4717.7075,
          "fib62": 4713.9809000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T07-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-02T01:25:00Z; outcome=sl_first",
      "timestamp": "2026-04-01T07:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4707.595,
      "stop": 4702.18,
      "target": 4718.425,
      "r": -1.0,
      "entry_touch_time": "2026-04-02T01:25:00Z",
      "outcome_time": "2026-04-02T01:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T07:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4707.595, stop=4702.18, target=4718.425. Pre-M15 range high=4747.815, low=4667.195.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T07-45-00Z_long_order_block_reclaim",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T07:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4702.18,
          "ob_high": 4713.01,
          "displacement_high": 4733.235
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-01T09:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-01T09:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4721.771,
      "stop": 4710.445,
      "target": 4738.759,
      "r": 1.5,
      "entry_touch_time": "2026-04-01T09:05:00Z",
      "outcome_time": "2026-04-01T11:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4721.771, stop=4710.445, target=4738.759. Pre-M15 range high=4747.815, low=4667.195.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4710.445,
          "impulse_high": 4736.185,
          "fib50": 4723.3150000000005,
          "fib62": 4720.2262
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T18-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-01T18:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-01T18:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4750.004,
      "stop": 4735.18,
      "target": 4772.239,
      "r": 1.5,
      "entry_touch_time": "2026-04-01T18:35:00Z",
      "outcome_time": "2026-04-01T19:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4750.004, stop=4735.18, target=4772.239. Pre-M15 range high=4793.195, low=4724.3.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T18-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4735.18,
          "impulse_high": 4768.87,
          "fib50": 4752.025,
          "fib62": 4747.9822
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-01T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-01T23:45:00Z; outcome=sl_first",
      "timestamp": "2026-04-01T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4785.09,
      "stop": 4773.795,
      "target": 4802.032,
      "r": -1.0,
      "entry_touch_time": "2026-04-01T23:45:00Z",
      "outcome_time": "2026-04-02T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-01T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4785.09, stop=4773.795, target=4802.032. Pre-M15 range high=4800.8, low=4742.17.",
      "candidate": {
        "id": "candidate_v2_2026-04-01T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-01",
        "timestamp": "2026-04-01T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4773.795,
          "impulse_high": 4799.465,
          "fib50": 4786.63,
          "fib62": 4783.5496
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-02T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-02T01:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-02T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4762.555,
      "stop": 4751.98,
      "target": 4778.418,
      "r": -1.0,
      "entry_touch_time": "2026-04-02T01:10:00Z",
      "outcome_time": "2026-04-02T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-02T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4762.555, stop=4751.98, target=4778.418. Pre-M15 range high=4800.8, low=4724.635.",
      "candidate": {
        "id": "candidate_v2_2026-04-02T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-02",
        "timestamp": "2026-04-02T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4751.98,
          "impulse_high": 4776.015,
          "fib50": 4763.9974999999995,
          "fib62": 4761.1133
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-02T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-02T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-02T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4638.059,
      "stop": 4679.155,
      "target": 4576.415,
      "r": -1.0,
      "entry_touch_time": "2026-04-02T07:35:00Z",
      "outcome_time": "2026-04-02T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-02T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4638.059, stop=4679.155, target=4576.415. Pre-M15 range high=4699.52, low=4553.85.",
      "candidate": {
        "id": "candidate_v2_2026-04-02T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-02",
        "timestamp": "2026-04-02T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4585.755,
          "impulse_high": 4679.155,
          "fib50": 4632.455,
          "fib62": 4643.663
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-02T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-02T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-02T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4606.929,
      "stop": 4617.955,
      "target": 4590.389,
      "r": -1.0,
      "entry_touch_time": "2026-04-02T12:05:00Z",
      "outcome_time": "2026-04-02T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-02T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4606.929, stop=4617.955, target=4590.389. Pre-M15 range high=4651.505, low=4592.895.",
      "candidate": {
        "id": "candidate_v2_2026-04-02T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-02",
        "timestamp": "2026-04-02T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4592.895,
          "impulse_high": 4617.955,
          "fib50": 4605.425,
          "fib62": 4608.4322
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-02T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-02T13:45:00Z; outcome=sl_first",
      "timestamp": "2026-04-02T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4615.276,
      "stop": 4627.055,
      "target": 4597.608,
      "r": -1.0,
      "entry_touch_time": "2026-04-02T13:45:00Z",
      "outcome_time": "2026-04-02T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-02T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4615.276, stop=4627.055, target=4597.608. Pre-M15 range high=4645.195, low=4580.65.",
      "candidate": {
        "id": "candidate_v2_2026-04-02T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-02",
        "timestamp": "2026-04-02T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4600.285,
          "impulse_high": 4627.055,
          "fib50": 4613.67,
          "fib62": 4616.8824
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-06T00-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-06T00:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-06T00:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4616.852,
      "stop": 4626.67,
      "target": 4597.217,
      "r": -1.0,
      "entry_touch_time": "2026-04-06T00:40:00Z",
      "outcome_time": "2026-04-06T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-06T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4616.852, stop=4626.67, target=4597.217. Pre-M15 range high=4682.01, low=4600.85.",
      "candidate": {
        "id": "candidate_v2_2026-04-06T00-30-00Z_short_order_block_reclaim",
        "date": "2026-04-06",
        "timestamp": "2026-04-06T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4607.035,
          "ob_high": 4626.67,
          "displacement_low": 4600.85
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-06T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-06T01:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-06T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4632.924,
      "stop": 4651.415,
      "target": 4605.188,
      "r": -1.0,
      "entry_touch_time": "2026-04-06T01:05:00Z",
      "outcome_time": "2026-04-06T02:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-06T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4632.924, stop=4651.415, target=4605.188. Pre-M15 range high=4678.26, low=4600.85.",
      "candidate": {
        "id": "candidate_v2_2026-04-06T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-06",
        "timestamp": "2026-04-06T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4609.39,
          "impulse_high": 4651.415,
          "fib50": 4630.4025,
          "fib62": 4635.4455
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-06T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-06T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-06T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4630.564,
      "stop": 4620.605,
      "target": 4645.503,
      "r": 1.5,
      "entry_touch_time": "2026-04-06T01:35:00Z",
      "outcome_time": "2026-04-06T02:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-06T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4630.564, stop=4620.605, target=4645.503. Pre-M15 range high=4678.11, low=4600.85.",
      "candidate": {
        "id": "candidate_v2_2026-04-06T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-06",
        "timestamp": "2026-04-06T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4620.605,
          "impulse_high": 4643.24,
          "fib50": 4631.9225,
          "fib62": 4629.2063
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-06T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-06T02:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-06T02:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4644.898,
      "stop": 4623.815,
      "target": 4676.521,
      "r": 1.5,
      "entry_touch_time": "2026-04-06T02:35:00Z",
      "outcome_time": "2026-04-06T05:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-06T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4644.898, stop=4623.815, target=4676.521. Pre-M15 range high=4678.11, low=4600.85.",
      "candidate": {
        "id": "candidate_v2_2026-04-06T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-06",
        "timestamp": "2026-04-06T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4623.815,
          "impulse_high": 4671.73,
          "fib50": 4647.772499999999,
          "fib62": 4642.0226999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-06T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-06T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-06T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4670.065,
      "stop": 4660.79,
      "target": 4683.978,
      "r": -1.0,
      "entry_touch_time": "2026-04-06T14:05:00Z",
      "outcome_time": "2026-04-06T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-06T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4670.065, stop=4660.79, target=4683.978. Pre-M15 range high=4706.875, low=4659.655.",
      "candidate": {
        "id": "candidate_v2_2026-04-06T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-06",
        "timestamp": "2026-04-06T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4660.79,
          "impulse_high": 4681.87,
          "fib50": 4671.33,
          "fib62": 4668.8004
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-06T23-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-06T23:50:00Z; outcome=tp_first",
      "timestamp": "2026-04-06T23:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4659.198,
      "stop": 4661.31,
      "target": 4654.972,
      "r": 2.0,
      "entry_touch_time": "2026-04-06T23:50:00Z",
      "outcome_time": "2026-04-07T00:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-06T23:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4659.198, stop=4661.31, target=4654.972. Pre-M15 range high=4667.97, low=4645.805.",
      "candidate": {
        "id": "candidate_v2_2026-04-06T23-45-00Z_short_order_block_reclaim",
        "date": "2026-04-06",
        "timestamp": "2026-04-06T23:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4657.085,
          "ob_high": 4661.31,
          "displacement_low": 4653.39
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-07T02:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-07T02:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4642.304,
      "stop": 4662.555,
      "target": 4611.927,
      "r": -1.0,
      "entry_touch_time": "2026-04-07T02:35:00Z",
      "outcome_time": "2026-04-07T04:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-07T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4642.304, stop=4662.555, target=4611.927. Pre-M15 range high=4667.97, low=4616.53.",
      "candidate": {
        "id": "candidate_v2_2026-04-07T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4616.53,
          "impulse_high": 4662.555,
          "fib50": 4639.5425,
          "fib62": 4645.0655
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-07T06:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-07T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4647.821,
      "stop": 4661.36,
      "target": 4627.513,
      "r": -1.0,
      "entry_touch_time": "2026-04-07T06:10:00Z",
      "outcome_time": "2026-04-07T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-07T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4647.821, stop=4661.36, target=4627.513. Pre-M15 range high=4664.53, low=4616.53.",
      "candidate": {
        "id": "candidate_v2_2026-04-07T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4630.59,
          "impulse_high": 4661.36,
          "fib50": 4645.975,
          "fib62": 4649.6674
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-07T09:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-07T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4665.0,
      "stop": 4644.395,
      "target": 4695.908,
      "r": -1.0,
      "entry_touch_time": "2026-04-07T09:40:00Z",
      "outcome_time": "2026-04-07T11:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-07T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4665.0, stop=4644.395, target=4695.908. Pre-M15 range high=4694.905, low=4623.475.",
      "candidate": {
        "id": "candidate_v2_2026-04-07T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4644.395,
          "impulse_high": 4691.225,
          "fib50": 4667.81,
          "fib62": 4662.1904
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T13-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-07T14:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-07T13:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4656.852,
      "stop": 4663.08,
      "target": 4644.398,
      "r": 2.0,
      "entry_touch_time": "2026-04-07T14:35:00Z",
      "outcome_time": "2026-04-07T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-07T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4656.852, stop=4663.08, target=4644.398. Pre-M15 range high=4694.905, low=4629.02.",
      "candidate": {
        "id": "candidate_v2_2026-04-07T13-45-00Z_short_order_block_reclaim",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4650.625,
          "ob_high": 4663.08,
          "displacement_low": 4635.625
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T14-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-07T14:25:00Z; outcome=sl_first",
      "timestamp": "2026-04-07T14:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4645.712,
      "stop": 4654.23,
      "target": 4628.677,
      "r": -1.0,
      "entry_touch_time": "2026-04-07T14:25:00Z",
      "outcome_time": "2026-04-07T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-07T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4645.712, stop=4654.23, target=4628.677. Pre-M15 range high=4687.215, low=4607.63.",
      "candidate": {
        "id": "candidate_v2_2026-04-07T14-15-00Z_short_order_block_reclaim",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4637.195,
          "ob_high": 4654.23,
          "displacement_low": 4607.63
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T18-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-07T18:50:00Z; outcome=sl_first",
      "timestamp": "2026-04-07T18:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4671.869,
      "stop": 4660.18,
      "target": 4689.401,
      "r": -1.0,
      "entry_touch_time": "2026-04-07T18:50:00Z",
      "outcome_time": "2026-04-07T18:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-07T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4671.869, stop=4660.18, target=4689.401. Pre-M15 range high=4686.745, low=4607.63.",
      "candidate": {
        "id": "candidate_v2_2026-04-07T18-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4660.18,
          "impulse_high": 4686.745,
          "fib50": 4673.4625,
          "fib62": 4670.2747
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-07T19-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-07T19-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-07",
        "timestamp": "2026-04-07T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4660.735,
          "impulse_high": 4703.015,
          "fib50": 4681.875,
          "fib62": 4676.8014
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4679.3382,
      "stop": 4660.735,
      "target": 4707.243,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-08T00-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-08T00:45:00Z; outcome=tp_first",
      "timestamp": "2026-04-08T00:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4811.185,
      "stop": 4804.535,
      "target": 4824.485,
      "r": 2.0,
      "entry_touch_time": "2026-04-08T00:45:00Z",
      "outcome_time": "2026-04-08T00:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-08T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4811.185, stop=4804.535, target=4824.485. Pre-M15 range high=4858.215, low=4657.63.",
      "candidate": {
        "id": "candidate_v2_2026-04-08T00-30-00Z_long_order_block_reclaim",
        "date": "2026-04-08",
        "timestamp": "2026-04-08T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4804.535,
          "ob_high": 4817.835,
          "displacement_high": 4836.505
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-08T01-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-08T02:00:00Z; outcome=sl_first",
      "timestamp": "2026-04-08T01:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4815.733,
      "stop": 4825.325,
      "target": 4796.548,
      "r": -1.0,
      "entry_touch_time": "2026-04-08T02:00:00Z",
      "outcome_time": "2026-04-08T02:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-08T01:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4815.733, stop=4825.325, target=4796.548. Pre-M15 range high=4858.215, low=4697.415.",
      "candidate": {
        "id": "candidate_v2_2026-04-08T01-45-00Z_short_order_block_reclaim",
        "date": "2026-04-08",
        "timestamp": "2026-04-08T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4806.14,
          "ob_high": 4825.325,
          "displacement_low": 4792.13
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-08T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-08T13:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-08T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4792.121,
      "stop": 4783.695,
      "target": 4804.76,
      "r": -1.0,
      "entry_touch_time": "2026-04-08T13:10:00Z",
      "outcome_time": "2026-04-08T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-08T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4792.121, stop=4783.695, target=4804.76. Pre-M15 range high=4819.935, low=4768.4.",
      "candidate": {
        "id": "candidate_v2_2026-04-08T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-08",
        "timestamp": "2026-04-08T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4783.695,
          "impulse_high": 4802.845,
          "fib50": 4793.27,
          "fib62": 4790.972
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-08T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-08T15:15:00Z; outcome=tp_first",
      "timestamp": "2026-04-08T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4753.495,
      "stop": 4770.145,
      "target": 4728.521,
      "r": 1.5,
      "entry_touch_time": "2026-04-08T15:15:00Z",
      "outcome_time": "2026-04-08T18:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-08T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4753.495, stop=4770.145, target=4728.521. Pre-M15 range high=4807.42, low=4732.305.",
      "candidate": {
        "id": "candidate_v2_2026-04-08T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-08",
        "timestamp": "2026-04-08T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4732.305,
          "impulse_high": 4770.145,
          "fib50": 4751.225,
          "fib62": 4755.7658
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-08T19-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-09T10:20:00Z; outcome=sl_first",
      "timestamp": "2026-04-08T19:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4735.87,
      "stop": 4744.605,
      "target": 4718.4,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T10:20:00Z",
      "outcome_time": "2026-04-09T10:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-08T19:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4735.87, stop=4744.605, target=4718.4. Pre-M15 range high=4765.675, low=4699.305.",
      "candidate": {
        "id": "candidate_v2_2026-04-08T19-45-00Z_short_order_block_reclaim",
        "date": "2026-04-08",
        "timestamp": "2026-04-08T19:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4727.135,
          "ob_high": 4744.605,
          "displacement_low": 4717.32
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T00-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-09T00:40:00Z; outcome=tp_first",
      "timestamp": "2026-04-09T00:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4716.468,
      "stop": 4720.345,
      "target": 4708.713,
      "r": 2.0,
      "entry_touch_time": "2026-04-09T00:40:00Z",
      "outcome_time": "2026-04-09T00:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4716.468, stop=4720.345, target=4708.713. Pre-M15 range high=4732.365, low=4698.725.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T00-15-00Z_short_order_block_reclaim",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4712.59,
          "ob_high": 4720.345,
          "displacement_low": 4698.725
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T01-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-09T03:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-09T01:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4712.81,
      "stop": 4706.32,
      "target": 4725.79,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T03:10:00Z",
      "outcome_time": "2026-04-09T03:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4712.81, stop=4706.32, target=4725.79. Pre-M15 range high=4732.365, low=4698.725.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T01-30-00Z_long_order_block_reclaim",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4706.32,
          "ob_high": 4719.3,
          "displacement_high": 4722.065
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T02-45-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-04-09T02:55:00Z; outcome=sl_first",
      "timestamp": "2026-04-09T02:45:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4722.93,
      "stop": 4733.04,
      "target": 4702.71,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T02:55:00Z",
      "outcome_time": "2026-04-09T08:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T02:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4722.93, stop=4733.04, target=4702.71. Pre-M15 range high=4733.04, low=4698.725.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T02-45-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T02:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4733.04,
          "fvg_low": 4720.32,
          "fvg_high": 4725.54
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T05-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-09T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-09T05:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4717.335,
      "stop": 4710.87,
      "target": 4730.265,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T05:35:00Z",
      "outcome_time": "2026-04-09T05:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4717.335, stop=4710.87, target=4730.265. Pre-M15 range high=4733.04, low=4699.905.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T05-30-00Z_long_order_block_reclaim",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4710.87,
          "ob_high": 4723.8,
          "displacement_high": 4726.575
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-09T06:15:00Z; outcome=tp_first",
      "timestamp": "2026-04-09T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4717.508,
      "stop": 4726.565,
      "target": 4703.921,
      "r": 1.5,
      "entry_touch_time": "2026-04-09T06:15:00Z",
      "outcome_time": "2026-04-09T06:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4717.508, stop=4726.565, target=4703.921. Pre-M15 range high=4733.04, low=4703.065.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4705.98,
          "impulse_high": 4726.565,
          "fib50": 4716.272499999999,
          "fib62": 4718.7427
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-09T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-09T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4749.542,
      "stop": 4743.16,
      "target": 4759.115,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T12:05:00Z",
      "outcome_time": "2026-04-09T12:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4749.542, stop=4743.16, target=4759.115. Pre-M15 range high=4759.87, low=4705.53.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4743.16,
          "impulse_high": 4757.665,
          "fib50": 4750.4125,
          "fib62": 4748.6719
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T12-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-04-09T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-09T12:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4747.615,
      "stop": 4759.87,
      "target": 4723.105,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T12:05:00Z",
      "outcome_time": "2026-04-09T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4747.615, stop=4759.87, target=4723.105. Pre-M15 range high=4759.87, low=4705.53.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T12-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4759.87,
          "fvg_low": 4744.32,
          "fvg_high": 4750.91
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T14-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-09T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-09T14:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4755.37,
      "stop": 4751.945,
      "target": 4762.22,
      "r": -1.0,
      "entry_touch_time": "2026-04-09T14:35:00Z",
      "outcome_time": "2026-04-09T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4755.37, stop=4751.945, target=4762.22. Pre-M15 range high=4777.085, low=4723.765.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T14-30-00Z_long_order_block_reclaim",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4751.945,
          "ob_high": 4758.795,
          "displacement_high": 4777.085
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-09T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-09T16:40:00Z; outcome=tp_first",
      "timestamp": "2026-04-09T16:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4787.06,
      "stop": 4778.28,
      "target": 4800.23,
      "r": 1.5,
      "entry_touch_time": "2026-04-09T16:40:00Z",
      "outcome_time": "2026-04-09T17:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-09T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4787.06, stop=4778.28, target=4800.23. Pre-M15 range high=4801.28, low=4735.065.",
      "candidate": {
        "id": "candidate_v2_2026-04-09T16-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-09",
        "timestamp": "2026-04-09T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4778.28,
          "impulse_high": 4798.235,
          "fib50": 4788.2575,
          "fib62": 4785.8629
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T00-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-10T00:55:00Z; outcome=sl_first",
      "timestamp": "2026-04-10T00:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4761.54,
      "stop": 4764.41,
      "target": 4755.8,
      "r": -1.0,
      "entry_touch_time": "2026-04-10T00:55:00Z",
      "outcome_time": "2026-04-10T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4761.54, stop=4764.41, target=4755.8. Pre-M15 range high=4782.59, low=4750.535.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T00-30-00Z_short_order_block_reclaim",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4758.67,
          "ob_high": 4764.41,
          "displacement_low": 4750.535
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-10T01:10:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4758.09,
      "stop": 4753.84,
      "target": 4764.466,
      "r": 1.5,
      "entry_touch_time": "2026-04-10T01:10:00Z",
      "outcome_time": "2026-04-10T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4758.09, stop=4753.84, target=4764.466. Pre-M15 range high=4780.79, low=4750.535.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4753.84,
          "impulse_high": 4763.5,
          "fib50": 4758.67,
          "fib62": 4757.5108
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T03-00-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-04-10T03:10:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T03:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4761.495,
      "stop": 4762.63,
      "target": 4759.225,
      "r": 2.0,
      "entry_touch_time": "2026-04-10T03:10:00Z",
      "outcome_time": "2026-04-10T03:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4761.495, stop=4762.63, target=4759.225. Pre-M15 range high=4777.42, low=4738.105.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T03-00-00Z_short_breaker_continuation",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4777.42,
          "breaker_low": 4760.36,
          "breaker_high": 4762.63,
          "break_low": 4750.535
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-10T03:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-10T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4755.351,
      "stop": 4765.59,
      "target": 4739.993,
      "r": -1.0,
      "entry_touch_time": "2026-04-10T03:05:00Z",
      "outcome_time": "2026-04-10T03:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4755.351, stop=4765.59, target=4739.993. Pre-M15 range high=4777.42, low=4738.105.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4742.32,
          "impulse_high": 4765.59,
          "fib50": 4753.955,
          "fib62": 4756.7474
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-10T09:15:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4759.795,
      "stop": 4766.01,
      "target": 4750.472,
      "r": 1.5,
      "entry_touch_time": "2026-04-10T09:15:00Z",
      "outcome_time": "2026-04-10T09:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4759.795, stop=4766.01, target=4750.472. Pre-M15 range high=4770.9, low=4730.74.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4751.885,
          "impulse_high": 4766.01,
          "fib50": 4758.9475,
          "fib62": 4760.6425
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T11-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-10T15:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T11:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4756.577,
      "stop": 4753.38,
      "target": 4762.972,
      "r": 2.0,
      "entry_touch_time": "2026-04-10T15:35:00Z",
      "outcome_time": "2026-04-10T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4756.577, stop=4753.38, target=4762.972. Pre-M15 range high=4767.48, low=4730.74.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T11-30-00Z_long_order_block_reclaim",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4753.38,
          "ob_high": 4759.775,
          "displacement_high": 4762.56
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T12-45-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-10T12:50:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T12:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4765.628,
      "stop": 4759.845,
      "target": 4777.193,
      "r": 2.0,
      "entry_touch_time": "2026-04-10T12:50:00Z",
      "outcome_time": "2026-04-10T13:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T12:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4765.628, stop=4759.845, target=4777.193. Pre-M15 range high=4782.605, low=4730.74.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T12-45-00Z_long_order_block_reclaim",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T12:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4759.845,
          "ob_high": 4771.41,
          "displacement_high": 4782.605
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-10T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4771.111,
      "stop": 4762.08,
      "target": 4784.657,
      "r": 1.5,
      "entry_touch_time": "2026-04-10T13:05:00Z",
      "outcome_time": "2026-04-10T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4771.111, stop=4762.08, target=4784.657. Pre-M15 range high=4782.605, low=4730.74.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4762.08,
          "impulse_high": 4782.605,
          "fib50": 4772.3425,
          "fib62": 4769.8795
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-10T14:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-10T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4778.603,
      "stop": 4767.35,
      "target": 4795.483,
      "r": -1.0,
      "entry_touch_time": "2026-04-10T14:40:00Z",
      "outcome_time": "2026-04-10T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4778.603, stop=4767.35, target=4795.483. Pre-M15 range high=4794.98, low=4742.33.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4767.35,
          "impulse_high": 4792.925,
          "fib50": 4780.137500000001,
          "fib62": 4777.0685
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-10T20-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-10T20:40:00Z; outcome=tp_first",
      "timestamp": "2026-04-10T20:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4751.714,
      "stop": 4760.125,
      "target": 4739.099,
      "r": 1.5,
      "entry_touch_time": "2026-04-10T20:40:00Z",
      "outcome_time": "2026-04-12T22:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-10T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4751.714, stop=4760.125, target=4739.099. Pre-M15 range high=4773.35, low=4741.01.",
      "candidate": {
        "id": "candidate_v2_2026-04-10T20-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-10",
        "timestamp": "2026-04-10T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4741.01,
          "impulse_high": 4760.125,
          "fib50": 4750.5675,
          "fib62": 4752.8613000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-12T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-12T23:50:00Z; outcome=sl_first",
      "timestamp": "2026-04-12T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4667.451,
      "stop": 4685.41,
      "target": 4640.514,
      "r": -1.0,
      "entry_touch_time": "2026-04-12T23:50:00Z",
      "outcome_time": "2026-04-13T00:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-12T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4667.451, stop=4685.41, target=4640.514. Pre-M15 range high=4773.35, low=4644.465.",
      "candidate": {
        "id": "candidate_v2_2026-04-12T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-12",
        "timestamp": "2026-04-12T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4644.595,
          "impulse_high": 4685.41,
          "fib50": 4665.0025000000005,
          "fib62": 4669.9003
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-12T23-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-13T00:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-12T23:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4675.727,
      "stop": 4685.41,
      "target": 4656.363,
      "r": -1.0,
      "entry_touch_time": "2026-04-13T00:15:00Z",
      "outcome_time": "2026-04-13T00:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-12T23:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4675.727, stop=4685.41, target=4656.363. Pre-M15 range high=4773.35, low=4644.465.",
      "candidate": {
        "id": "candidate_v2_2026-04-12T23-45-00Z_short_order_block_reclaim",
        "date": "2026-04-12",
        "timestamp": "2026-04-12T23:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4666.045,
          "ob_high": 4685.41,
          "displacement_low": 4644.595
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-13T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-13T13:00:00Z; outcome=sl_first",
      "timestamp": "2026-04-13T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4729.415,
      "stop": 4736.475,
      "target": 4718.826,
      "r": -1.0,
      "entry_touch_time": "2026-04-13T13:00:00Z",
      "outcome_time": "2026-04-13T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-13T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4729.415, stop=4736.475, target=4718.826. Pre-M15 range high=4740.03, low=4709.215.",
      "candidate": {
        "id": "candidate_v2_2026-04-13T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-13",
        "timestamp": "2026-04-13T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4720.43,
          "impulse_high": 4736.475,
          "fib50": 4728.4525,
          "fib62": 4730.3779
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-13T11-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-04-13T13:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-13T11:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4730.385,
      "stop": 4732.365,
      "target": 4726.425,
      "r": null,
      "entry_touch_time": "2026-04-13T13:05:00Z",
      "outcome_time": "2026-04-13T13:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-13T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4730.385, stop=4732.365, target=4726.425. Pre-M15 range high=4740.03, low=4708.365.",
      "candidate": {
        "id": "candidate_v2_2026-04-13T11-00-00Z_short_breaker_continuation",
        "date": "2026-04-13",
        "timestamp": "2026-04-13T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4740.03,
          "breaker_low": 4728.405,
          "breaker_high": 4732.365,
          "break_low": 4716.24
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-13T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-13T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-13T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4714.046,
      "stop": 4722.43,
      "target": 4701.469,
      "r": -1.0,
      "entry_touch_time": "2026-04-13T12:05:00Z",
      "outcome_time": "2026-04-13T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-13T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4714.046, stop=4722.43, target=4701.469. Pre-M15 range high=4740.03, low=4703.375.",
      "candidate": {
        "id": "candidate_v2_2026-04-13T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-13",
        "timestamp": "2026-04-13T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4703.375,
          "impulse_high": 4722.43,
          "fib50": 4712.9025,
          "fib62": 4715.1891000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-13T14-15-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-04-13T14:20:00Z; outcome=tp_first",
      "timestamp": "2026-04-13T14:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4709.915,
      "stop": 4707.68,
      "target": 4714.385,
      "r": 2.0,
      "entry_touch_time": "2026-04-13T14:20:00Z",
      "outcome_time": "2026-04-13T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-13T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4709.915, stop=4707.68, target=4714.385. Pre-M15 range high=4744.64, low=4703.375.",
      "candidate": {
        "id": "candidate_v2_2026-04-13T14-15-00Z_long_breaker_continuation",
        "date": "2026-04-13",
        "timestamp": "2026-04-13T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4703.375,
          "breaker_low": 4707.68,
          "breaker_high": 4712.15,
          "break_high": 4730.02
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-13T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-13T14:40:00Z; outcome=tp_first",
      "timestamp": "2026-04-13T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4721.756,
      "stop": 4731.37,
      "target": 4707.335,
      "r": 1.5,
      "entry_touch_time": "2026-04-13T14:40:00Z",
      "outcome_time": "2026-04-13T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-13T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4721.756, stop=4731.37, target=4707.335. Pre-M15 range high=4744.64, low=4703.375.",
      "candidate": {
        "id": "candidate_v2_2026-04-13T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-13",
        "timestamp": "2026-04-13T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4709.52,
          "impulse_high": 4731.37,
          "fib50": 4720.445,
          "fib62": 4723.067
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-13T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-13T15:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-13T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4711.533,
      "stop": 4720.15,
      "target": 4698.607,
      "r": -1.0,
      "entry_touch_time": "2026-04-13T15:35:00Z",
      "outcome_time": "2026-04-13T16:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-13T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4711.533, stop=4720.15, target=4698.607. Pre-M15 range high=4744.64, low=4700.565.",
      "candidate": {
        "id": "candidate_v2_2026-04-13T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-13",
        "timestamp": "2026-04-13T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4700.565,
          "impulse_high": 4720.15,
          "fib50": 4710.3575,
          "fib62": 4712.7077
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-14T10:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-14T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4752.271,
      "stop": 4746.355,
      "target": 4761.145,
      "r": 1.5,
      "entry_touch_time": "2026-04-14T10:35:00Z",
      "outcome_time": "2026-04-14T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4752.271, stop=4746.355, target=4761.145. Pre-M15 range high=4765.805, low=4723.54.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4746.355,
          "impulse_high": 4759.8,
          "fib50": 4753.077499999999,
          "fib62": 4751.4641
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-14T01:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-14T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4767.871,
      "stop": 4761.425,
      "target": 4777.54,
      "r": -1.0,
      "entry_touch_time": "2026-04-14T01:05:00Z",
      "outcome_time": "2026-04-14T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4767.871, stop=4761.425, target=4777.54. Pre-M15 range high=4777.385, low=4734.955.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4761.425,
          "impulse_high": 4776.075,
          "fib50": 4768.75,
          "fib62": 4766.992
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T04-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-14T05:00:00Z; outcome=sl_first",
      "timestamp": "2026-04-14T04:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4771.491,
      "stop": 4767.095,
      "target": 4778.084,
      "r": -1.0,
      "entry_touch_time": "2026-04-14T05:00:00Z",
      "outcome_time": "2026-04-14T05:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4771.491, stop=4767.095, target=4778.084. Pre-M15 range high=4777.385, low=4751.77.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T04-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4767.095,
          "impulse_high": 4777.085,
          "fib50": 4772.09,
          "fib62": 4770.8912
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-14T07:20:00Z; outcome=tp_first",
      "timestamp": "2026-04-14T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4772.532,
      "stop": 4764.335,
      "target": 4784.828,
      "r": 1.5,
      "entry_touch_time": "2026-04-14T07:20:00Z",
      "outcome_time": "2026-04-14T07:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4772.532, stop=4764.335, target=4784.828. Pre-M15 range high=4796.63, low=4757.855.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4764.335,
          "impulse_high": 4782.965,
          "fib50": 4773.65,
          "fib62": 4771.4144
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T07-15-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-04-14T10:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-14T07:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "London",
      "entry": 4766.862,
      "stop": 4765.57,
      "target": 4769.447,
      "r": null,
      "entry_touch_time": "2026-04-14T10:35:00Z",
      "outcome_time": "2026-04-14T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T07:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4766.862, stop=4765.57, target=4769.447. Pre-M15 range high=4796.63, low=4757.855.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T07-15-00Z_long_breaker_continuation",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T07:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4761.71,
          "breaker_low": 4765.57,
          "breaker_high": 4768.155,
          "break_high": 4777.305
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T07-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-14T07:20:00Z; outcome=sl_first",
      "timestamp": "2026-04-14T07:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4774.382,
      "stop": 4776.055,
      "target": 4771.037,
      "r": -1.0,
      "entry_touch_time": "2026-04-14T07:20:00Z",
      "outcome_time": "2026-04-14T07:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T07:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4774.382, stop=4776.055, target=4771.037. Pre-M15 range high=4796.63, low=4757.855.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T07-15-00Z_short_order_block_reclaim",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T07:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4772.71,
          "ob_high": 4776.055,
          "displacement_low": 4763.375
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T11-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-14T13:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-14T11:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4784.417,
      "stop": 4788.31,
      "target": 4776.632,
      "r": -1.0,
      "entry_touch_time": "2026-04-14T13:15:00Z",
      "outcome_time": "2026-04-14T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T11:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4784.417, stop=4788.31, target=4776.632. Pre-M15 range high=4796.63, low=4751.22.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T11-15-00Z_short_order_block_reclaim",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T11:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4780.525,
          "ob_high": 4788.31,
          "displacement_low": 4751.22
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-14T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4771.185,
          "impulse_high": 4792.55,
          "fib50": 4781.8675,
          "fib62": 4779.3037
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4780.5856,
      "stop": 4771.185,
      "target": 4794.6865,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-14T14:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-14T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4800.906,
      "stop": 4793.065,
      "target": 4812.667,
      "r": -1.0,
      "entry_touch_time": "2026-04-14T14:40:00Z",
      "outcome_time": "2026-04-14T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4800.906, stop=4793.065, target=4812.667. Pre-M15 range high=4818.33, low=4751.22.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4793.065,
          "impulse_high": 4810.885,
          "fib50": 4801.975,
          "fib62": 4799.8366
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-15T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-04-14T15:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4790.647,
      "stop": 4780.32,
      "target": 4806.137,
      "r": 1.5,
      "entry_touch_time": "2026-04-15T09:45:00Z",
      "outcome_time": "2026-04-15T11:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4790.647, stop=4780.32, target=4806.137. Pre-M15 range high=4818.33, low=4751.22.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4780.32,
          "impulse_high": 4803.79,
          "fib50": 4792.055,
          "fib62": 4789.2386
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T18-45-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-15T00:30:00Z; outcome=tp_first",
      "timestamp": "2026-04-14T18:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4828.507,
      "stop": 4824.95,
      "target": 4835.622,
      "r": 2.0,
      "entry_touch_time": "2026-04-15T00:30:00Z",
      "outcome_time": "2026-04-15T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T18:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4828.507, stop=4824.95, target=4835.622. Pre-M15 range high=4843.64, low=4791.115.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T18-45-00Z_long_order_block_reclaim",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T18:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4824.95,
          "ob_high": 4832.065,
          "displacement_high": 4841.705
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-14T23-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-14T23:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-14T23:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4840.505,
      "stop": 4843.3,
      "target": 4834.915,
      "r": -1.0,
      "entry_touch_time": "2026-04-14T23:05:00Z",
      "outcome_time": "2026-04-14T23:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-14T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4840.505, stop=4843.3, target=4834.915. Pre-M15 range high=4850.88, low=4824.95.",
      "candidate": {
        "id": "candidate_v2_2026-04-14T23-00-00Z_short_order_block_reclaim",
        "date": "2026-04-14",
        "timestamp": "2026-04-14T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4837.71,
          "ob_high": 4843.3,
          "displacement_low": 4833.195
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-15T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-15T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4847.275,
      "stop": 4828.335,
      "target": 4875.685,
      "r": -1.0,
      "entry_touch_time": "2026-04-15T01:35:00Z",
      "outcome_time": "2026-04-15T02:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4847.275, stop=4828.335, target=4875.685. Pre-M15 range high=4871.38, low=4827.285.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4828.335,
          "impulse_high": 4871.38,
          "fib50": 4849.8575,
          "fib62": 4844.6921
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T01-45-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-04-15T02:20:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-15T01:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4838.747,
      "stop": 4837.315,
      "target": 4841.612,
      "r": null,
      "entry_touch_time": "2026-04-15T02:20:00Z",
      "outcome_time": "2026-04-15T02:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T01:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4838.747, stop=4837.315, target=4841.612. Pre-M15 range high=4871.38, low=4827.285.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T01-45-00Z_long_breaker_continuation",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4831.67,
          "breaker_low": 4837.315,
          "breaker_high": 4840.18,
          "break_high": 4850.88
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T02-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-04-15T02:25:00Z; outcome=sl_first",
      "timestamp": "2026-04-15T02:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4835.105,
      "stop": 4833.705,
      "target": 4837.905,
      "r": -1.0,
      "entry_touch_time": "2026-04-15T02:25:00Z",
      "outcome_time": "2026-04-15T02:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T02:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4835.105, stop=4833.705, target=4837.905. Pre-M15 range high=4871.38, low=4827.285.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T02-15-00Z_long_breaker_continuation",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T02:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4828.625,
          "breaker_low": 4833.705,
          "breaker_high": 4836.505,
          "break_high": 4850.88
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T03-30-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-15T03-30-00Z_short_breaker_continuation",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4852.775,
          "breaker_low": 4828.335,
          "breaker_high": 4835.52,
          "break_low": 4827.285
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4831.9275,
      "stop": 4835.52,
      "target": 4824.7424999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-15T09:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-15T09:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4812.739,
      "stop": 4805.56,
      "target": 4823.507,
      "r": -1.0,
      "entry_touch_time": "2026-04-15T09:05:00Z",
      "outcome_time": "2026-04-15T09:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4812.739, stop=4805.56, target=4823.507. Pre-M15 range high=4830.53, low=4792.82.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4805.56,
          "impulse_high": 4821.875,
          "fib50": 4813.717500000001,
          "fib62": 4811.7597000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-15T11:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-15T11:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4807.797,
      "stop": 4819.565,
      "target": 4790.145,
      "r": -1.0,
      "entry_touch_time": "2026-04-15T11:30:00Z",
      "outcome_time": "2026-04-15T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4807.797, stop=4819.565, target=4790.145. Pre-M15 range high=4822.25, low=4786.08.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4792.82,
          "impulse_high": 4819.565,
          "fib50": 4806.192499999999,
          "fib62": 4809.4019
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T14-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-15T14:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-15T14:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4820.743,
      "stop": 4815.935,
      "target": 4830.358,
      "r": -1.0,
      "entry_touch_time": "2026-04-15T14:30:00Z",
      "outcome_time": "2026-04-15T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4820.743, stop=4815.935, target=4830.358. Pre-M15 range high=4830.31, low=4786.08.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T14-00-00Z_long_order_block_reclaim",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4815.935,
          "ob_high": 4825.55,
          "displacement_high": 4830.31
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-15T14:50:00Z; outcome=sl_first",
      "timestamp": "2026-04-15T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4814.536,
      "stop": 4808.57,
      "target": 4823.486,
      "r": -1.0,
      "entry_touch_time": "2026-04-15T14:50:00Z",
      "outcome_time": "2026-04-15T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4814.536, stop=4808.57, target=4823.486. Pre-M15 range high=4830.615, low=4786.08.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4808.57,
          "impulse_high": 4822.13,
          "fib50": 4815.35,
          "fib62": 4813.7228
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-15T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-15T16:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-15T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4808.037,
      "stop": 4816.155,
      "target": 4795.86,
      "r": 1.5,
      "entry_touch_time": "2026-04-15T16:05:00Z",
      "outcome_time": "2026-04-15T17:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-15T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4808.037, stop=4816.155, target=4795.86. Pre-M15 range high=4830.615, low=4787.145.",
      "candidate": {
        "id": "candidate_v2_2026-04-15T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-15",
        "timestamp": "2026-04-15T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4797.705,
          "impulse_high": 4816.155,
          "fib50": 4806.93,
          "fib62": 4809.144
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-16T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-16T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4819.969,
      "stop": 4814.605,
      "target": 4828.014,
      "r": -1.0,
      "entry_touch_time": "2026-04-16T01:35:00Z",
      "outcome_time": "2026-04-16T01:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4819.969, stop=4814.605, target=4828.014. Pre-M15 range high=4837.81, low=4787.895.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4814.605,
          "impulse_high": 4826.795,
          "fib50": 4820.7,
          "fib62": 4819.2372
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-16T01:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-16T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4828.03,
      "stop": 4820.345,
      "target": 4839.556,
      "r": -1.0,
      "entry_touch_time": "2026-04-16T01:15:00Z",
      "outcome_time": "2026-04-16T01:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4828.03, stop=4820.345, target=4839.556. Pre-M15 range high=4837.81, low=4787.895.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4820.345,
          "impulse_high": 4837.81,
          "fib50": 4829.0775,
          "fib62": 4826.9817
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-16T08:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-16T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4811.276,
      "stop": 4807.615,
      "target": 4816.767,
      "r": -1.0,
      "entry_touch_time": "2026-04-16T08:05:00Z",
      "outcome_time": "2026-04-16T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4811.276, stop=4807.615, target=4816.767. Pre-M15 range high=4837.81, low=4787.895.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4807.615,
          "impulse_high": 4815.935,
          "fib50": 4811.775,
          "fib62": 4810.7766
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T06-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-16T06:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-16T06:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4824.712,
      "stop": 4828.16,
      "target": 4817.817,
      "r": -1.0,
      "entry_touch_time": "2026-04-16T06:40:00Z",
      "outcome_time": "2026-04-16T06:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4824.712, stop=4828.16, target=4817.817. Pre-M15 range high=4838.56, low=4812.465.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T06-30-00Z_short_order_block_reclaim",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4821.265,
          "ob_high": 4828.16,
          "displacement_low": 4814.46
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-16T07:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-16T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4821.898,
      "stop": 4814.99,
      "target": 4832.26,
      "r": -1.0,
      "entry_touch_time": "2026-04-16T07:15:00Z",
      "outcome_time": "2026-04-16T08:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4821.898, stop=4814.99, target=4832.26. Pre-M15 range high=4838.56, low=4812.465.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4814.99,
          "impulse_high": 4830.69,
          "fib50": 4822.84,
          "fib62": 4820.956
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-16T09:00:00Z; outcome=tp_first",
      "timestamp": "2026-04-16T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4815.554,
      "stop": 4822.07,
      "target": 4805.779,
      "r": 1.5,
      "entry_touch_time": "2026-04-16T09:00:00Z",
      "outcome_time": "2026-04-16T10:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4815.554, stop=4822.07, target=4805.779. Pre-M15 range high=4838.56, low=4806.59.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4807.26,
          "impulse_high": 4822.07,
          "fib50": 4814.665,
          "fib62": 4816.4421999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-16T13:45:00Z; outcome=tp_first",
      "timestamp": "2026-04-16T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4810.645,
      "stop": 4805.165,
      "target": 4818.865,
      "r": 1.5,
      "entry_touch_time": "2026-04-16T13:45:00Z",
      "outcome_time": "2026-04-16T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4810.645, stop=4805.165, target=4818.865. Pre-M15 range high=4824.04, low=4805.165.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4805.165,
          "impulse_high": 4817.62,
          "fib50": 4811.3925,
          "fib62": 4809.8979
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-16T15:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-16T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4806.744,
      "stop": 4824.04,
      "target": 4780.799,
      "r": 1.5,
      "entry_touch_time": "2026-04-16T15:05:00Z",
      "outcome_time": "2026-04-17T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4806.744, stop=4824.04, target=4780.799. Pre-M15 range high=4824.04, low=4784.73.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4784.73,
          "impulse_high": 4824.04,
          "fib50": 4804.385,
          "fib62": 4809.102199999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T15-00-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-16T15-00-00Z_short_breaker_continuation",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4823.14,
          "breaker_low": 4811.59,
          "breaker_high": 4822.28,
          "break_low": 4805.165
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4816.9349999999995,
      "stop": 4822.28,
      "target": 4806.244999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-16T16:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-16T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4788.417,
      "stop": 4800.865,
      "target": 4769.746,
      "r": -1.0,
      "entry_touch_time": "2026-04-16T16:30:00Z",
      "outcome_time": "2026-04-17T00:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-16T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4788.417, stop=4800.865, target=4769.746. Pre-M15 range high=4824.04, low=4772.575.",
      "candidate": {
        "id": "candidate_v2_2026-04-16T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4772.575,
          "impulse_high": 4800.865,
          "fib50": 4786.719999999999,
          "fib62": 4790.114799999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-16T15-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-16T15-00-00Z_short_order_block_reclaim",
        "date": "2026-04-16",
        "timestamp": "2026-04-16T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4812.645,
          "ob_high": 4824.04,
          "displacement_low": 4784.73
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4818.342500000001,
      "stop": 4824.04,
      "target": 4806.947500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-17T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-17T01:50:00Z; outcome=sl_first",
      "timestamp": "2026-04-17T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4783.434,
      "stop": 4795.675,
      "target": 4765.073,
      "r": -1.0,
      "entry_touch_time": "2026-04-17T01:50:00Z",
      "outcome_time": "2026-04-17T03:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-17T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4783.434, stop=4795.675, target=4765.073. Pre-M15 range high=4801.3, low=4767.845.",
      "candidate": {
        "id": "candidate_v2_2026-04-17T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-17",
        "timestamp": "2026-04-17T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4767.855,
          "impulse_high": 4795.675,
          "fib50": 4781.764999999999,
          "fib62": 4785.1034
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-17T02-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-04-17T02:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-17T02:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4792.81,
      "stop": 4793.0,
      "target": 4792.43,
      "r": null,
      "entry_touch_time": "2026-04-17T02:05:00Z",
      "outcome_time": "2026-04-17T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-17T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4792.81, stop=4793.0, target=4792.43. Pre-M15 range high=4801.3, low=4767.845.",
      "candidate": {
        "id": "candidate_v2_2026-04-17T02-00-00Z_short_breaker_continuation",
        "date": "2026-04-17",
        "timestamp": "2026-04-17T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4798.83,
          "breaker_low": 4792.62,
          "breaker_high": 4793.0,
          "break_low": 4785.965
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-17T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-17T10:00:00Z; outcome=sl_first",
      "timestamp": "2026-04-17T09:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4790.015,
      "stop": 4784.46,
      "target": 4798.347,
      "r": -1.0,
      "entry_touch_time": "2026-04-17T10:00:00Z",
      "outcome_time": "2026-04-17T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-17T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4790.015, stop=4784.46, target=4798.347. Pre-M15 range high=4806.2, low=4778.81.",
      "candidate": {
        "id": "candidate_v2_2026-04-17T09-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-17",
        "timestamp": "2026-04-17T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4784.46,
          "impulse_high": 4797.085,
          "fib50": 4790.7725,
          "fib62": 4789.2575
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-17T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-17T14:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-17T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4863.298,
      "stop": 4848.51,
      "target": 4885.481,
      "r": -1.0,
      "entry_touch_time": "2026-04-17T14:10:00Z",
      "outcome_time": "2026-04-17T20:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-17T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4863.298, stop=4848.51, target=4885.481. Pre-M15 range high=4891.54, low=4782.255.",
      "candidate": {
        "id": "candidate_v2_2026-04-17T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-17",
        "timestamp": "2026-04-17T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4848.51,
          "impulse_high": 4882.12,
          "fib50": 4865.3150000000005,
          "fib62": 4861.2818
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-19T22-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-19T22:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-19T22:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4781.578,
      "stop": 4771.055,
      "target": 4797.362,
      "r": -1.0,
      "entry_touch_time": "2026-04-19T22:40:00Z",
      "outcome_time": "2026-04-19T23:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-19T22:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4781.578, stop=4771.055, target=4797.362. Pre-M15 range high=4869.665, low=4771.055.",
      "candidate": {
        "id": "candidate_v2_2026-04-19T22-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-19",
        "timestamp": "2026-04-19T22:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4771.055,
          "impulse_high": 4794.97,
          "fib50": 4783.012500000001,
          "fib62": 4780.1427
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-20T00:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-20T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4757.469,
      "stop": 4773.685,
      "target": 4733.145,
      "r": -1.0,
      "entry_touch_time": "2026-04-20T00:15:00Z",
      "outcome_time": "2026-04-20T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4757.469, stop=4773.685, target=4733.145. Pre-M15 range high=4868.11, low=4736.83.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4736.83,
          "impulse_high": 4773.685,
          "fib50": 4755.2575,
          "fib62": 4759.6801000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T04-45-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-20T05:30:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-20T04:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4793.757,
      "stop": 4795.845,
      "target": 4789.582,
      "r": null,
      "entry_touch_time": "2026-04-20T05:30:00Z",
      "outcome_time": "2026-04-20T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T04:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4793.757, stop=4795.845, target=4789.582. Pre-M15 range high=4814.46, low=4744.515.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T04-45-00Z_short_order_block_reclaim",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T04:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4791.67,
          "ob_high": 4795.845,
          "displacement_low": 4787.245
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T06-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-20T06:20:00Z; outcome=sl_first",
      "timestamp": "2026-04-20T06:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4787.48,
      "stop": 4789.54,
      "target": 4783.36,
      "r": -1.0,
      "entry_touch_time": "2026-04-20T06:20:00Z",
      "outcome_time": "2026-04-20T06:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T06:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4787.48, stop=4789.54, target=4783.36. Pre-M15 range high=4814.46, low=4779.54.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T06-15-00Z_short_order_block_reclaim",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T06:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4785.42,
          "ob_high": 4789.54,
          "displacement_low": 4779.54
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-20T08:45:00Z; outcome=tp_first",
      "timestamp": "2026-04-20T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4793.661,
      "stop": 4798.97,
      "target": 4785.698,
      "r": 1.5,
      "entry_touch_time": "2026-04-20T08:45:00Z",
      "outcome_time": "2026-04-20T09:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4793.661, stop=4798.97, target=4785.698. Pre-M15 range high=4805.795, low=4779.54.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4786.905,
          "impulse_high": 4798.97,
          "fib50": 4792.9375,
          "fib62": 4794.3853
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-20T14:50:00Z; outcome=tp_first",
      "timestamp": "2026-04-20T12:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4798.02,
      "stop": 4787.9,
      "target": 4813.2,
      "r": 1.5,
      "entry_touch_time": "2026-04-20T14:50:00Z",
      "outcome_time": "2026-04-20T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4798.02, stop=4787.9, target=4813.2. Pre-M15 range high=4822.175, low=4783.72.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4787.9,
          "impulse_high": 4810.9,
          "fib50": 4799.4,
          "fib62": 4796.639999999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-20T14:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-20T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4811.227,
      "stop": 4799.695,
      "target": 4828.526,
      "r": -1.0,
      "entry_touch_time": "2026-04-20T14:10:00Z",
      "outcome_time": "2026-04-20T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4811.227, stop=4799.695, target=4828.526. Pre-M15 range high=4826.355, low=4783.72.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4799.695,
          "impulse_high": 4825.905,
          "fib50": 4812.799999999999,
          "fib62": 4809.654799999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-20T17:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-20T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4812.26,
      "stop": 4827.695,
      "target": 4789.107,
      "r": -1.0,
      "entry_touch_time": "2026-04-20T17:40:00Z",
      "outcome_time": "2026-04-20T22:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4812.26, stop=4827.695, target=4789.107. Pre-M15 range high=4827.695, low=4792.615.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4792.615,
          "impulse_high": 4827.695,
          "fib50": 4810.155,
          "fib62": 4814.3646
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-20T19-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-20T19:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-20T19:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4814.88,
      "stop": 4813.245,
      "target": 4818.15,
      "r": -1.0,
      "entry_touch_time": "2026-04-20T19:30:00Z",
      "outcome_time": "2026-04-20T19:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-20T19:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4814.88, stop=4813.245, target=4818.15. Pre-M15 range high=4827.695, low=4792.615.",
      "candidate": {
        "id": "candidate_v2_2026-04-20T19-15-00Z_long_order_block_reclaim",
        "date": "2026-04-20",
        "timestamp": "2026-04-20T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4813.245,
          "ob_high": 4816.515,
          "displacement_high": 4821.425
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T06-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-21T07:50:00Z; outcome=tp_first",
      "timestamp": "2026-04-21T06:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4791.9,
      "stop": 4797.145,
      "target": 4781.41,
      "r": 2.0,
      "entry_touch_time": "2026-04-21T07:50:00Z",
      "outcome_time": "2026-04-21T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4791.9, stop=4797.145, target=4781.41. Pre-M15 range high=4819.07, low=4775.755.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T06-00-00Z_short_order_block_reclaim",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4786.655,
          "ob_high": 4797.145,
          "displacement_low": 4783.28
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-21T12:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-21T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4783.826,
      "stop": 4790.375,
      "target": 4774.002,
      "r": -1.0,
      "entry_touch_time": "2026-04-21T12:15:00Z",
      "outcome_time": "2026-04-21T12:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4783.826, stop=4790.375, target=4774.002. Pre-M15 range high=4795.1, low=4772.885.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4775.49,
          "impulse_high": 4790.375,
          "fib50": 4782.9325,
          "fib62": 4784.7187
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-21T12:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-21T12:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4789.167,
      "stop": 4796.995,
      "target": 4777.426,
      "r": 1.5,
      "entry_touch_time": "2026-04-21T12:35:00Z",
      "outcome_time": "2026-04-21T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4789.167, stop=4796.995, target=4777.426. Pre-M15 range high=4798.03, low=4766.545.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4779.205,
          "impulse_high": 4796.995,
          "fib50": 4788.1,
          "fib62": 4790.2348
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T13-30-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-04-21T13:40:00Z; outcome=tp_first",
      "timestamp": "2026-04-21T13:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4792.542,
      "stop": 4793.205,
      "target": 4791.217,
      "r": 2.0,
      "entry_touch_time": "2026-04-21T13:40:00Z",
      "outcome_time": "2026-04-21T13:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4792.542, stop=4793.205, target=4791.217. Pre-M15 range high=4798.03, low=4760.35.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T13-30-00Z_short_breaker_continuation",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4798.03,
          "breaker_low": 4791.88,
          "breaker_high": 4793.205,
          "break_low": 4775.49
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T13-45-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-04-21T13:55:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-21T13:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4783.503,
      "stop": 4783.735,
      "target": 4783.038,
      "r": null,
      "entry_touch_time": "2026-04-21T13:55:00Z",
      "outcome_time": "2026-04-21T13:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4783.503, stop=4783.735, target=4783.038. Pre-M15 range high=4798.03, low=4760.35.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T13-45-00Z_short_breaker_continuation",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4795.1,
          "breaker_low": 4783.27,
          "breaker_high": 4783.735,
          "break_low": 4775.49
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-21T15:15:00Z; outcome=tp_first",
      "timestamp": "2026-04-21T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4752.607,
      "stop": 4775.265,
      "target": 4718.621,
      "r": 1.5,
      "entry_touch_time": "2026-04-21T15:15:00Z",
      "outcome_time": "2026-04-21T16:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4752.607, stop=4775.265, target=4718.621. Pre-M15 range high=4798.03, low=4723.77.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4723.77,
          "impulse_high": 4775.265,
          "fib50": 4749.5175,
          "fib62": 4755.696900000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-21T20:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-21T20:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4694.531,
      "stop": 4714.89,
      "target": 4663.993,
      "r": -1.0,
      "entry_touch_time": "2026-04-21T20:10:00Z",
      "outcome_time": "2026-04-21T20:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4694.531, stop=4714.89, target=4663.993. Pre-M15 range high=4757.83, low=4668.62.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4668.62,
          "impulse_high": 4714.89,
          "fib50": 4691.755,
          "fib62": 4697.307400000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-21T20-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-21T20:20:00Z; outcome=sl_first",
      "timestamp": "2026-04-21T20:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4710.028,
      "stop": 4715.06,
      "target": 4699.962,
      "r": -1.0,
      "entry_touch_time": "2026-04-21T20:20:00Z",
      "outcome_time": "2026-04-21T20:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-21T20:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4710.028, stop=4715.06, target=4699.962. Pre-M15 range high=4750.28, low=4668.62.",
      "candidate": {
        "id": "candidate_v2_2026-04-21T20-15-00Z_short_order_block_reclaim",
        "date": "2026-04-21",
        "timestamp": "2026-04-21T20:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4704.995,
          "ob_high": 4715.06,
          "displacement_low": 4668.62
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-22T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-22T06:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-22T06:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4760.878,
      "stop": 4752.32,
      "target": 4773.715,
      "r": -1.0,
      "entry_touch_time": "2026-04-22T06:05:00Z",
      "outcome_time": "2026-04-22T08:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-22T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4760.878, stop=4752.32, target=4773.715. Pre-M15 range high=4772.0, low=4737.97.",
      "candidate": {
        "id": "candidate_v2_2026-04-22T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-22",
        "timestamp": "2026-04-22T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4752.32,
          "impulse_high": 4771.77,
          "fib50": 4762.045,
          "fib62": 4759.711
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-22T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-22T11:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-22T11:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4756.713,
      "stop": 4753.805,
      "target": 4761.076,
      "r": -1.0,
      "entry_touch_time": "2026-04-22T11:05:00Z",
      "outcome_time": "2026-04-22T11:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-22T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4756.713, stop=4753.805, target=4761.076. Pre-M15 range high=4772.385, low=4745.89.",
      "candidate": {
        "id": "candidate_v2_2026-04-22T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-22",
        "timestamp": "2026-04-22T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4753.805,
          "impulse_high": 4760.415,
          "fib50": 4757.110000000001,
          "fib62": 4756.3168000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-22T12-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-22T13:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-22T12:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4753.78,
      "stop": 4760.305,
      "target": 4740.73,
      "r": -1.0,
      "entry_touch_time": "2026-04-22T13:40:00Z",
      "outcome_time": "2026-04-22T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-22T12:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4753.78, stop=4760.305, target=4740.73. Pre-M15 range high=4762.595, low=4742.98.",
      "candidate": {
        "id": "candidate_v2_2026-04-22T12-45-00Z_short_order_block_reclaim",
        "date": "2026-04-22",
        "timestamp": "2026-04-22T12:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4747.255,
          "ob_high": 4760.305,
          "displacement_low": 4745.62
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-22T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-22T15:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-22T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4738.309,
      "stop": 4744.845,
      "target": 4728.504,
      "r": 1.5,
      "entry_touch_time": "2026-04-22T15:05:00Z",
      "outcome_time": "2026-04-22T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-22T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4738.309, stop=4744.845, target=4728.504. Pre-M15 range high=4760.99, low=4729.99.",
      "candidate": {
        "id": "candidate_v2_2026-04-22T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-22",
        "timestamp": "2026-04-22T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4729.99,
          "impulse_high": 4744.845,
          "fib50": 4737.4175,
          "fib62": 4739.2001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-22T20-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-22T22:25:00Z; outcome=sl_first",
      "timestamp": "2026-04-22T20:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4732.985,
      "stop": 4729.985,
      "target": 4738.985,
      "r": -1.0,
      "entry_touch_time": "2026-04-22T22:25:00Z",
      "outcome_time": "2026-04-22T22:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-22T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4732.985, stop=4729.985, target=4738.985. Pre-M15 range high=4750.2, low=4723.995.",
      "candidate": {
        "id": "candidate_v2_2026-04-22T20-00-00Z_long_order_block_reclaim",
        "date": "2026-04-22",
        "timestamp": "2026-04-22T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4729.985,
          "ob_high": 4735.985,
          "displacement_high": 4739.52
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-23T00:25:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-23T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4738.072,
      "stop": 4742.305,
      "target": 4731.723,
      "r": null,
      "entry_touch_time": "2026-04-23T00:25:00Z",
      "outcome_time": "2026-04-23T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4738.072, stop=4742.305, target=4731.723. Pre-M15 range high=4750.2, low=4698.72.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4732.685,
          "impulse_high": 4742.305,
          "fib50": 4737.495000000001,
          "fib62": 4738.6494
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T00-15-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-04-23T00:25:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T00:15:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4734.655,
      "stop": 4694.135,
      "target": 4815.695,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T00:25:00Z",
      "outcome_time": "2026-04-23T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4734.655, stop=4694.135, target=4815.695. Pre-M15 range high=4750.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T00-15-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4694.135,
          "fvg_low": 4728.275,
          "fvg_high": 4741.035
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T01-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-04-23T02:00:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T01:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4720.92,
      "stop": 4699.47,
      "target": 4763.82,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T02:00:00Z",
      "outcome_time": "2026-04-23T02:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4720.92, stop=4699.47, target=4763.82. Pre-M15 range high=4754.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T01-00-00Z_long_breaker_continuation",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4694.135,
          "breaker_low": 4699.47,
          "breaker_high": 4742.37,
          "break_high": 4742.305
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T01-15-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-04-23T01:30:00Z; outcome=tp_first",
      "timestamp": "2026-04-23T01:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4727.318,
      "stop": 4726.12,
      "target": 4729.713,
      "r": 2.0,
      "entry_touch_time": "2026-04-23T01:30:00Z",
      "outcome_time": "2026-04-23T01:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4727.318, stop=4726.12, target=4729.713. Pre-M15 range high=4754.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T01-15-00Z_long_breaker_continuation",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4723.645,
          "breaker_low": 4726.12,
          "breaker_high": 4728.515,
          "break_high": 4745.595
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T01-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-23T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T01:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4713.497,
      "stop": 4698.72,
      "target": 4743.052,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T02:05:00Z",
      "outcome_time": "2026-04-23T02:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4713.497, stop=4698.72, target=4743.052. Pre-M15 range high=4754.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T01-15-00Z_long_order_block_reclaim",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4698.72,
          "ob_high": 4728.275,
          "displacement_high": 4742.37
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T01-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-23T01:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T01:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4726.968,
      "stop": 4729.27,
      "target": 4722.363,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T01:30:00Z",
      "outcome_time": "2026-04-23T01:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4726.968, stop=4729.27, target=4722.363. Pre-M15 range high=4754.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T01-15-00Z_short_order_block_reclaim",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4724.665,
          "ob_high": 4729.27,
          "displacement_low": 4698.72
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-23T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4715.358,
      "stop": 4694.135,
      "target": 4747.193,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T02:05:00Z",
      "outcome_time": "2026-04-23T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4715.358, stop=4694.135, target=4747.193. Pre-M15 range high=4754.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4694.135,
          "impulse_high": 4742.37,
          "fib50": 4718.2525000000005,
          "fib62": 4712.4643
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-23T03:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-23T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4708.101,
      "stop": 4715.72,
      "target": 4696.673,
      "r": 1.5,
      "entry_touch_time": "2026-04-23T03:05:00Z",
      "outcome_time": "2026-04-23T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4708.101, stop=4715.72, target=4696.673. Pre-M15 range high=4754.2, low=4694.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4698.405,
          "impulse_high": 4715.72,
          "fib50": 4707.0625,
          "fib62": 4709.1403
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T07-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-23T09:00:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T07:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4699.885,
      "stop": 4692.485,
      "target": 4714.685,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T09:00:00Z",
      "outcome_time": "2026-04-23T10:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T07:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4699.885, stop=4692.485, target=4714.685. Pre-M15 range high=4721.57, low=4692.485.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T07-15-00Z_long_order_block_reclaim",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T07:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4692.485,
          "ob_high": 4707.285,
          "displacement_high": 4715.36
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-23T10:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T10:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4694.087,
      "stop": 4701.805,
      "target": 4682.511,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T10:35:00Z",
      "outcome_time": "2026-04-23T11:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4694.087, stop=4701.805, target=4682.511. Pre-M15 range high=4725.115, low=4684.265.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4684.265,
          "impulse_high": 4701.805,
          "fib50": 4693.035,
          "fib62": 4695.1398
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-23T11:45:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4709.917,
      "stop": 4716.31,
      "target": 4700.327,
      "r": -1.0,
      "entry_touch_time": "2026-04-23T11:45:00Z",
      "outcome_time": "2026-04-23T11:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4709.917, stop=4716.31, target=4700.327. Pre-M15 range high=4725.115, low=4684.265.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4701.78,
          "impulse_high": 4716.31,
          "fib50": 4709.045,
          "fib62": 4710.7886
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-23T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-24T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-23T18:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4721.425,
      "stop": 4734.61,
      "target": 4701.649,
      "r": -1.0,
      "entry_touch_time": "2026-04-24T14:05:00Z",
      "outcome_time": "2026-04-24T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-23T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4721.425, stop=4734.61, target=4701.649. Pre-M15 range high=4741.23, low=4664.38.",
      "candidate": {
        "id": "candidate_v2_2026-04-23T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-23",
        "timestamp": "2026-04-23T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4704.645,
          "impulse_high": 4734.61,
          "fib50": 4719.6275000000005,
          "fib62": 4723.2233
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-24T01-30-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-04-24T01:40:00Z; outcome=tp_first",
      "timestamp": "2026-04-24T01:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4692.278,
      "stop": 4689.775,
      "target": 4697.283,
      "r": 2.0,
      "entry_touch_time": "2026-04-24T01:40:00Z",
      "outcome_time": "2026-04-24T01:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-24T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4692.278, stop=4689.775, target=4697.283. Pre-M15 range high=4711.23, low=4686.65.",
      "candidate": {
        "id": "candidate_v2_2026-04-24T01-30-00Z_long_breaker_continuation",
        "date": "2026-04-24",
        "timestamp": "2026-04-24T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4686.65,
          "breaker_low": 4689.775,
          "breaker_high": 4694.78,
          "break_high": 4702.715
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-24T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-24T04:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-24T04:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4667.69,
      "stop": 4674.86,
      "target": 4656.935,
      "r": -1.0,
      "entry_touch_time": "2026-04-24T04:40:00Z",
      "outcome_time": "2026-04-24T04:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-24T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4667.69, stop=4674.86, target=4656.935. Pre-M15 range high=4711.23, low=4658.03.",
      "candidate": {
        "id": "candidate_v2_2026-04-24T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-24",
        "timestamp": "2026-04-24T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4658.565,
          "impulse_high": 4674.86,
          "fib50": 4666.7125,
          "fib62": 4668.6678999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-24T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-24T07:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-24T07:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4680.306,
      "stop": 4688.255,
      "target": 4668.383,
      "r": -1.0,
      "entry_touch_time": "2026-04-24T07:10:00Z",
      "outcome_time": "2026-04-24T07:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-24T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4680.306, stop=4688.255, target=4668.383. Pre-M15 range high=4696.445, low=4658.03.",
      "candidate": {
        "id": "candidate_v2_2026-04-24T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-24",
        "timestamp": "2026-04-24T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4670.19,
          "impulse_high": 4688.255,
          "fib50": 4679.2225,
          "fib62": 4681.3903
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-24T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-24T12:45:00Z; outcome=tp_first",
      "timestamp": "2026-04-24T12:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4695.154,
      "stop": 4677.88,
      "target": 4721.066,
      "r": 1.5,
      "entry_touch_time": "2026-04-24T12:45:00Z",
      "outcome_time": "2026-04-24T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-24T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4695.154, stop=4677.88, target=4721.066. Pre-M15 range high=4717.44, low=4674.88.",
      "candidate": {
        "id": "candidate_v2_2026-04-24T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-24",
        "timestamp": "2026-04-24T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4677.88,
          "impulse_high": 4717.14,
          "fib50": 4697.51,
          "fib62": 4692.7988000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-24T18-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-24T18:55:00Z; outcome=sl_first",
      "timestamp": "2026-04-24T18:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4722.513,
      "stop": 4724.975,
      "target": 4717.588,
      "r": -1.0,
      "entry_touch_time": "2026-04-24T18:55:00Z",
      "outcome_time": "2026-04-24T19:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-24T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4722.513, stop=4724.975, target=4717.588. Pre-M15 range high=4740.57, low=4704.9.",
      "candidate": {
        "id": "candidate_v2_2026-04-24T18-30-00Z_short_order_block_reclaim",
        "date": "2026-04-24",
        "timestamp": "2026-04-24T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4720.05,
          "ob_high": 4724.975,
          "displacement_low": 4717.195
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-27T00:55:00Z; outcome=sl_first",
      "timestamp": "2026-04-27T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4689.848,
      "stop": 4697.365,
      "target": 4678.572,
      "r": -1.0,
      "entry_touch_time": "2026-04-27T00:55:00Z",
      "outcome_time": "2026-04-27T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4689.848, stop=4697.365, target=4678.572. Pre-M15 range high=4726.17, low=4672.405.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4680.28,
          "impulse_high": 4697.365,
          "fib50": 4688.8225,
          "fib62": 4690.8727
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T05-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-27T05:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-27T05:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4716.587,
      "stop": 4714.535,
      "target": 4720.692,
      "r": -1.0,
      "entry_touch_time": "2026-04-27T05:15:00Z",
      "outcome_time": "2026-04-27T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4716.587, stop=4714.535, target=4720.692. Pre-M15 range high=4729.965, low=4676.85.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T05-00-00Z_long_order_block_reclaim",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4714.535,
          "ob_high": 4718.64,
          "displacement_high": 4729.63
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-27T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-27T05:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4712.85,
      "stop": 4704.45,
      "target": 4725.449,
      "r": -1.0,
      "entry_touch_time": "2026-04-27T05:35:00Z",
      "outcome_time": "2026-04-27T09:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4712.85, stop=4704.45, target=4725.449. Pre-M15 range high=4729.965, low=4680.6.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4704.45,
          "impulse_high": 4723.54,
          "fib50": 4713.995,
          "fib62": 4711.7042
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T12-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-27T12-45-00Z_short_breaker_continuation",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T12:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4712.655,
          "breaker_low": 4701.9,
          "breaker_high": 4709.2,
          "break_low": 4699.3
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4705.549999999999,
      "stop": 4709.2,
      "target": 4698.249999999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-27T13:15:00Z; outcome=tp_first",
      "timestamp": "2026-04-27T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4703.193,
      "stop": 4707.965,
      "target": 4696.035,
      "r": 1.5,
      "entry_touch_time": "2026-04-27T13:15:00Z",
      "outcome_time": "2026-04-27T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4703.193, stop=4707.965, target=4696.035. Pre-M15 range high=4714.94, low=4693.465.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4697.12,
          "impulse_high": 4707.965,
          "fib50": 4702.5425,
          "fib62": 4703.8439
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-27T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-27T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4692.207,
      "stop": 4696.79,
      "target": 4685.334,
      "r": -1.0,
      "entry_touch_time": "2026-04-27T14:35:00Z",
      "outcome_time": "2026-04-27T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4692.207, stop=4696.79, target=4685.334. Pre-M15 range high=4712.655, low=4683.71.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4686.375,
          "impulse_high": 4696.79,
          "fib50": 4691.5825,
          "fib62": 4692.8323
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-27T16:15:00Z; outcome=sl_first",
      "timestamp": "2026-04-27T16:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4676.179,
      "stop": 4682.755,
      "target": 4666.316,
      "r": -1.0,
      "entry_touch_time": "2026-04-27T16:15:00Z",
      "outcome_time": "2026-04-27T17:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4676.179, stop=4682.755, target=4666.316. Pre-M15 range high=4712.655, low=4667.335.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T16-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4667.81,
          "impulse_high": 4682.755,
          "fib50": 4675.2825,
          "fib62": 4677.0759
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-27T17-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-27T22:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-27T17:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4690.275,
      "stop": 4696.84,
      "target": 4677.145,
      "r": -1.0,
      "entry_touch_time": "2026-04-27T22:10:00Z",
      "outcome_time": "2026-04-28T00:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-27T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4690.275, stop=4696.84, target=4677.145. Pre-M15 range high=4704.455, low=4667.335.",
      "candidate": {
        "id": "candidate_v2_2026-04-27T17-30-00Z_short_order_block_reclaim",
        "date": "2026-04-27",
        "timestamp": "2026-04-27T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4683.71,
          "ob_high": 4696.84,
          "displacement_low": 4676.715
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T00-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-28T00:25:00Z; outcome=tp_first",
      "timestamp": "2026-04-28T00:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4693.493,
      "stop": 4692.04,
      "target": 4696.398,
      "r": 2.0,
      "entry_touch_time": "2026-04-28T00:25:00Z",
      "outcome_time": "2026-04-28T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-28T00:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4693.493, stop=4692.04, target=4696.398. Pre-M15 range high=4701.64, low=4676.74.",
      "candidate": {
        "id": "candidate_v2_2026-04-28T00-15-00Z_long_order_block_reclaim",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T00:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4692.04,
          "ob_high": 4694.945,
          "displacement_high": 4701.64
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-28T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4648.425,
          "impulse_high": 4668.08,
          "fib50": 4658.2525000000005,
          "fib62": 4660.6111
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4659.4318,
      "stop": 4668.08,
      "target": 4646.459500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-04-28T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4624.08,
          "impulse_high": 4658.84,
          "fib50": 4641.46,
          "fib62": 4645.6312
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4643.5455999999995,
      "stop": 4658.84,
      "target": 4620.603999999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-28T10:10:00Z; outcome=tp_first",
      "timestamp": "2026-04-28T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4612.915,
      "stop": 4619.39,
      "target": 4603.203,
      "r": 1.5,
      "entry_touch_time": "2026-04-28T10:10:00Z",
      "outcome_time": "2026-04-28T11:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-28T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4612.915, stop=4619.39, target=4603.203. Pre-M15 range high=4659.575, low=4604.385.",
      "candidate": {
        "id": "candidate_v2_2026-04-28T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4604.675,
          "impulse_high": 4619.39,
          "fib50": 4612.0325,
          "fib62": 4613.7983
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-28T12:10:00Z; outcome=sl_first",
      "timestamp": "2026-04-28T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4580.552,
      "stop": 4600.13,
      "target": 4551.185,
      "r": -1.0,
      "entry_touch_time": "2026-04-28T12:10:00Z",
      "outcome_time": "2026-04-28T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-28T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4580.552, stop=4600.13, target=4551.185. Pre-M15 range high=4635.585, low=4555.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-28T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4555.635,
          "impulse_high": 4600.13,
          "fib50": 4577.8825,
          "fib62": 4583.2219000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T12-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-28T12:45:00Z; outcome=tp_first",
      "timestamp": "2026-04-28T12:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4599.347,
      "stop": 4604.4,
      "target": 4589.243,
      "r": 2.0,
      "entry_touch_time": "2026-04-28T12:45:00Z",
      "outcome_time": "2026-04-28T12:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-28T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4599.347, stop=4604.4, target=4589.243. Pre-M15 range high=4635.585, low=4555.135.",
      "candidate": {
        "id": "candidate_v2_2026-04-28T12-15-00Z_short_order_block_reclaim",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4594.295,
          "ob_high": 4604.4,
          "displacement_low": 4568.335
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-28T20-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-28T20:55:00Z; outcome=sl_first",
      "timestamp": "2026-04-28T20:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4596.812,
      "stop": 4598.65,
      "target": 4593.138,
      "r": -1.0,
      "entry_touch_time": "2026-04-28T20:55:00Z",
      "outcome_time": "2026-04-28T22:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-28T20:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4596.812, stop=4598.65, target=4593.138. Pre-M15 range high=4601.51, low=4576.83.",
      "candidate": {
        "id": "candidate_v2_2026-04-28T20-30-00Z_short_order_block_reclaim",
        "date": "2026-04-28",
        "timestamp": "2026-04-28T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4594.975,
          "ob_high": 4598.65,
          "displacement_low": 4591.275
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-29T01:40:00Z; outcome=sl_first",
      "timestamp": "2026-04-29T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4589.745,
      "stop": 4600.765,
      "target": 4573.216,
      "r": -1.0,
      "entry_touch_time": "2026-04-29T01:40:00Z",
      "outcome_time": "2026-04-29T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4589.745, stop=4600.765, target=4573.216. Pre-M15 range high=4610.535, low=4575.72.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4575.72,
          "impulse_high": 4600.765,
          "fib50": 4588.2425,
          "fib62": 4591.2479
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T02-00-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-04-29T02:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-29T02:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4594.347,
      "stop": 4594.175,
      "target": 4594.692,
      "r": null,
      "entry_touch_time": "2026-04-29T02:05:00Z",
      "outcome_time": "2026-04-29T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4594.347, stop=4594.175, target=4594.692. Pre-M15 range high=4610.535, low=4575.72.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T02-00-00Z_long_breaker_continuation",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4589.34,
          "breaker_low": 4594.175,
          "breaker_high": 4594.52,
          "break_high": 4600.18
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T02-45-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-04-29T02:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-04-29T02:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4595.375,
      "stop": 4595.755,
      "target": 4594.615,
      "r": null,
      "entry_touch_time": "2026-04-29T02:50:00Z",
      "outcome_time": "2026-04-29T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T02:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4595.375, stop=4595.755, target=4594.615. Pre-M15 range high=4610.535, low=4575.72.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T02-45-00Z_short_breaker_continuation",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T02:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4610.535,
          "breaker_low": 4594.995,
          "breaker_high": 4595.755,
          "break_low": 4588.095
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T09-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-04-29T09:25:00Z; outcome=tp_first",
      "timestamp": "2026-04-29T09:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4570.142,
      "stop": 4580.75,
      "target": 4548.927,
      "r": 2.0,
      "entry_touch_time": "2026-04-29T09:25:00Z",
      "outcome_time": "2026-04-29T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T09:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4570.142, stop=4580.75, target=4548.927. Pre-M15 range high=4607.725, low=4557.385.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T09-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T09:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4580.75,
          "fvg_low": 4569.725,
          "fvg_high": 4570.56
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-29T10:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-29T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4561.783,
      "stop": 4569.725,
      "target": 4549.87,
      "r": -1.0,
      "entry_touch_time": "2026-04-29T10:05:00Z",
      "outcome_time": "2026-04-29T10:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4561.783, stop=4569.725, target=4549.87. Pre-M15 range high=4603.325, low=4551.675.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4551.675,
          "impulse_high": 4569.725,
          "fib50": 4560.700000000001,
          "fib62": 4562.866
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-29T15:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-29T13:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4552.068,
      "stop": 4560.21,
      "target": 4539.855,
      "r": -1.0,
      "entry_touch_time": "2026-04-29T15:35:00Z",
      "outcome_time": "2026-04-29T16:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4552.068, stop=4560.21, target=4539.855. Pre-M15 range high=4580.75, low=4541.705.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4541.705,
          "impulse_high": 4560.21,
          "fib50": 4550.9575,
          "fib62": 4553.1781
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-29T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-29T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4526.559,
      "stop": 4539.495,
      "target": 4507.155,
      "r": -1.0,
      "entry_touch_time": "2026-04-29T14:05:00Z",
      "outcome_time": "2026-04-29T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4526.559, stop=4539.495, target=4507.155. Pre-M15 range high=4580.75, low=4510.095.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4510.095,
          "impulse_high": 4539.495,
          "fib50": 4524.795,
          "fib62": 4528.323
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T15-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-29T15:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-29T15:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4549.28,
      "stop": 4553.65,
      "target": 4540.54,
      "r": -1.0,
      "entry_touch_time": "2026-04-29T15:35:00Z",
      "outcome_time": "2026-04-29T15:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4549.28, stop=4553.65, target=4540.54. Pre-M15 range high=4576.535, low=4510.095.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T15-00-00Z_short_order_block_reclaim",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4544.91,
          "ob_high": 4553.65,
          "displacement_low": 4534.64
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-29T17:20:00Z; outcome=tp_first",
      "timestamp": "2026-04-29T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4552.868,
      "stop": 4560.37,
      "target": 4541.615,
      "r": 1.5,
      "entry_touch_time": "2026-04-29T17:20:00Z",
      "outcome_time": "2026-04-29T18:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4552.868, stop=4560.37, target=4541.615. Pre-M15 range high=4569.155, low=4510.095.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4543.32,
          "impulse_high": 4560.37,
          "fib50": 4551.844999999999,
          "fib62": 4553.891
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T18-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-29T18:35:00Z; outcome=tp_first",
      "timestamp": "2026-04-29T18:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4540.778,
      "stop": 4553.05,
      "target": 4522.371,
      "r": 1.5,
      "entry_touch_time": "2026-04-29T18:35:00Z",
      "outcome_time": "2026-04-29T18:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4540.778, stop=4553.05, target=4522.371. Pre-M15 range high=4564.985, low=4510.095.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T18-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4525.16,
          "impulse_high": 4553.05,
          "fib50": 4539.105,
          "fib62": 4542.4518
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-29T19-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-04-29T19:20:00Z; outcome=sl_first",
      "timestamp": "2026-04-29T19:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4544.81,
      "stop": 4547.83,
      "target": 4538.77,
      "r": -1.0,
      "entry_touch_time": "2026-04-29T19:20:00Z",
      "outcome_time": "2026-04-29T19:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-29T19:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4544.81, stop=4547.83, target=4538.77. Pre-M15 range high=4564.985, low=4518.335.",
      "candidate": {
        "id": "candidate_v2_2026-04-29T19-15-00Z_short_order_block_reclaim",
        "date": "2026-04-29",
        "timestamp": "2026-04-29T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4541.79,
          "ob_high": 4547.83,
          "displacement_low": 4525.31
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-30T03:55:00Z; outcome=sl_first",
      "timestamp": "2026-04-30T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4556.054,
      "stop": 4551.425,
      "target": 4562.997,
      "r": -1.0,
      "entry_touch_time": "2026-04-30T03:55:00Z",
      "outcome_time": "2026-04-30T04:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4556.054, stop=4551.425, target=4562.997. Pre-M15 range high=4568.745, low=4518.335.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4551.425,
          "impulse_high": 4561.945,
          "fib50": 4556.6849999999995,
          "fib62": 4555.4226
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-30T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-04-30T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4571.965,
      "stop": 4564.76,
      "target": 4582.773,
      "r": -1.0,
      "entry_touch_time": "2026-04-30T01:35:00Z",
      "outcome_time": "2026-04-30T02:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4571.965, stop=4564.76, target=4582.773. Pre-M15 range high=4581.3, low=4539.495.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4564.76,
          "impulse_high": 4581.135,
          "fib50": 4572.9475,
          "fib62": 4570.9825
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T01-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-30T02:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-30T01:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4568.135,
      "stop": 4564.76,
      "target": 4574.885,
      "r": -1.0,
      "entry_touch_time": "2026-04-30T02:30:00Z",
      "outcome_time": "2026-04-30T02:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4568.135, stop=4564.76, target=4574.885. Pre-M15 range high=4581.3, low=4539.495.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T01-30-00Z_long_order_block_reclaim",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4564.76,
          "ob_high": 4571.51,
          "displacement_high": 4581.135
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-30T03:05:00Z; outcome=tp_first",
      "timestamp": "2026-04-30T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4568.043,
      "stop": 4574.41,
      "target": 4558.493,
      "r": 1.5,
      "entry_touch_time": "2026-04-30T03:05:00Z",
      "outcome_time": "2026-04-30T03:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4568.043, stop=4574.41, target=4558.493. Pre-M15 range high=4582.585, low=4546.525.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4559.94,
          "impulse_high": 4574.41,
          "fib50": 4567.174999999999,
          "fib62": 4568.9114
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-04-30T05:05:00Z; outcome=sl_first",
      "timestamp": "2026-04-30T05:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4552.096,
      "stop": 4557.09,
      "target": 4544.605,
      "r": -1.0,
      "entry_touch_time": "2026-04-30T05:05:00Z",
      "outcome_time": "2026-04-30T05:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4552.096, stop=4557.09, target=4544.605. Pre-M15 range high=4582.585, low=4540.925.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4545.74,
          "impulse_high": 4557.09,
          "fib50": 4551.415,
          "fib62": 4552.777
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-04-30T11:25:00Z; outcome=sl_first",
      "timestamp": "2026-04-30T11:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4632.723,
      "stop": 4623.705,
      "target": 4646.249,
      "r": -1.0,
      "entry_touch_time": "2026-04-30T11:25:00Z",
      "outcome_time": "2026-04-30T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4632.723, stop=4623.705, target=4646.249. Pre-M15 range high=4647.045, low=4563.57.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4623.705,
          "impulse_high": 4644.2,
          "fib50": 4633.952499999999,
          "fib62": 4631.4931
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-04-30T13-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-04-30T13:30:00Z; outcome=sl_first",
      "timestamp": "2026-04-30T13:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4630.675,
      "stop": 4624.75,
      "target": 4642.525,
      "r": -1.0,
      "entry_touch_time": "2026-04-30T13:30:00Z",
      "outcome_time": "2026-04-30T13:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-04-30T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4630.675, stop=4624.75, target=4642.525. Pre-M15 range high=4647.045, low=4612.095.",
      "candidate": {
        "id": "candidate_v2_2026-04-30T13-00-00Z_long_order_block_reclaim",
        "date": "2026-04-30",
        "timestamp": "2026-04-30T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4624.75,
          "ob_high": 4636.6,
          "displacement_high": 4640.14
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-01T00-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-01T00-00-00Z_short_order_block_reclaim",
        "date": "2026-05-01",
        "timestamp": "2026-05-01T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4630.81,
          "ob_high": 4634.145,
          "displacement_low": 4626.585
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4632.477500000001,
      "stop": 4634.145,
      "target": 4629.142500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-01T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-01T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-01",
        "timestamp": "2026-05-01T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4616.225,
          "impulse_high": 4622.435,
          "fib50": 4619.33,
          "fib62": 4618.5848000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4618.9574,
      "stop": 4616.225,
      "target": 4623.0560000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-01T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-01T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-01",
        "timestamp": "2026-05-01T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4616.655,
          "impulse_high": 4631.045,
          "fib50": 4623.85,
          "fib62": 4625.5768
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4624.713400000001,
      "stop": 4631.045,
      "target": 4615.216000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-01T04-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-01T04-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-01",
        "timestamp": "2026-05-01T04:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4617.875,
          "impulse_high": 4626.76,
          "fib50": 4622.3175,
          "fib62": 4621.2513
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4621.7844000000005,
      "stop": 4617.875,
      "target": 4627.648500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-01T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-01T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-01",
        "timestamp": "2026-05-01T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4625.16,
          "impulse_high": 4660.585,
          "fib50": 4642.8724999999995,
          "fib62": 4638.6215
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4640.746999999999,
      "stop": 4625.16,
      "target": 4664.127499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-01T19-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-01T19-15-00Z_short_order_block_reclaim",
        "date": "2026-05-01",
        "timestamp": "2026-05-01T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4627.27,
          "ob_high": 4635.12,
          "displacement_low": 4615.69
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4631.195,
      "stop": 4635.12,
      "target": 4623.344999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-03T22-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-03T22-45-00Z_long_order_block_reclaim",
        "date": "2026-05-03",
        "timestamp": "2026-05-03T22:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4612.66,
          "ob_high": 4623.295,
          "displacement_high": 4629.465
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4617.9775,
      "stop": 4612.66,
      "target": 4628.6125,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-04T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4604.935,
          "impulse_high": 4613.585,
          "fib50": 4609.26,
          "fib62": 4608.222000000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4608.741,
      "stop": 4604.935,
      "target": 4614.449999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T01-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-04T01-45-00Z_short_order_block_reclaim",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4604.935,
          "ob_high": 4613.585,
          "displacement_low": 4596.18
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4609.26,
      "stop": 4613.585,
      "target": 4600.610000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-04T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4592.965,
          "impulse_high": 4613.965,
          "fib50": 4603.465,
          "fib62": 4600.945
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4602.205,
      "stop": 4592.965,
      "target": 4616.065,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-04T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4591.6,
          "impulse_high": 4618.825,
          "fib50": 4605.2125,
          "fib62": 4608.4795
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4606.846,
      "stop": 4618.825,
      "target": 4588.877499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T09-00-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-04T09:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4585.635,
      "stop": 4588.35,
      "target": 4580.205,
      "r": null,
      "entry_touch_time": "2026-05-29T15:05:00Z",
      "outcome_time": "2026-05-29T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-04T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4585.635, stop=4588.35, target=4580.205. Pre-M15 range high=4613.405, low=4573.85.",
      "candidate": {
        "id": "candidate_v2_2026-05-04T09-00-00Z_short_order_block_reclaim",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4582.92,
          "ob_high": 4588.35,
          "displacement_low": 4578.215
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T14:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-04T10:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4554.056,
      "stop": 4576.03,
      "target": 4521.096,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-04T10:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4554.056, stop=4576.03, target=4521.096. Pre-M15 range high=4602.095, low=4526.09.",
      "candidate": {
        "id": "candidate_v2_2026-05-04T10-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T10:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4526.09,
          "impulse_high": 4576.03,
          "fib50": 4551.0599999999995,
          "fib62": 4557.0527999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T14:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-04T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4543.575,
      "stop": 4566.2,
      "target": 4509.638,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-04T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4543.575, stop=4566.2, target=4509.638. Pre-M15 range high=4583.38, low=4514.78.",
      "candidate": {
        "id": "candidate_v2_2026-05-04T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4514.78,
          "impulse_high": 4566.2,
          "fib50": 4540.49,
          "fib62": 4546.6604
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-04T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-04T17:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4530.116,
      "stop": 4543.065,
      "target": 4510.692,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-04T17:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.116, stop=4543.065, target=4510.692. Pre-M15 range high=4583.38, low=4501.035.",
      "candidate": {
        "id": "candidate_v2_2026-05-04T17-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-04",
        "timestamp": "2026-05-04T17:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4513.635,
          "impulse_high": 4543.065,
          "fib50": 4528.35,
          "fib62": 4531.8816
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T06-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T09:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-05T06:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4538.14,
      "stop": 4535.76,
      "target": 4542.9,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:50:00Z",
      "outcome_time": "2026-05-29T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T06:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4538.14, stop=4535.76, target=4542.9. Pre-M15 range high=4552.02, low=4528.03.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T06-15-00Z_long_order_block_reclaim",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T06:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4535.76,
          "ob_high": 4540.52,
          "displacement_high": 4552.0
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T14:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-05T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4544.047,
      "stop": 4552.02,
      "target": 4532.088,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4544.047, stop=4552.02, target=4532.088. Pre-M15 range high=4552.02, low=4528.03.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4533.9,
          "impulse_high": 4552.02,
          "fib50": 4542.96,
          "fib62": 4545.1344
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T10:35:00Z; outcome=sl_first",
      "timestamp": "2026-05-05T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4542.818,
      "stop": 4536.365,
      "target": 4552.497,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T10:35:00Z",
      "outcome_time": "2026-05-29T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4542.818, stop=4536.365, target=4552.497. Pre-M15 range high=4558.465, low=4528.03.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4536.365,
          "impulse_high": 4551.03,
          "fib50": 4543.6975,
          "fib62": 4541.9376999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T11-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-05-29T14:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-05T11:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4547.87,
      "stop": 4539.96,
      "target": 4563.69,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4547.87, stop=4539.96, target=4563.69. Pre-M15 range high=4560.445, low=4533.9.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T11-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4539.96,
          "fvg_low": 4545.895,
          "fvg_high": 4549.845
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-05T12:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4563.048,
      "stop": 4554.195,
      "target": 4576.327,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4563.048, stop=4554.195, target=4576.327. Pre-M15 range high=4574.595, low=4539.96.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4554.195,
          "impulse_high": 4574.315,
          "fib50": 4564.254999999999,
          "fib62": 4561.8405999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T14-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T14:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-05T14:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4565.182,
      "stop": 4561.775,
      "target": 4571.998,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4565.182, stop=4561.775, target=4571.998. Pre-M15 range high=4586.605, low=4539.96.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T14-15-00Z_long_order_block_reclaim",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4561.775,
          "ob_high": 4568.59,
          "displacement_high": 4580.955
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-05T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T15:05:00Z; outcome=tp_first",
      "timestamp": "2026-05-05T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4578.807,
      "stop": 4569.565,
      "target": 4592.67,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T15:05:00Z",
      "outcome_time": "2026-05-29T15:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-05T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4578.807, stop=4569.565, target=4592.67. Pre-M15 range high=4590.57, low=4546.36.",
      "candidate": {
        "id": "candidate_v2_2026-05-05T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-05",
        "timestamp": "2026-05-05T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4569.565,
          "impulse_high": 4590.57,
          "fib50": 4580.067499999999,
          "fib62": 4577.546899999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4602.135,
          "impulse_high": 4619.97,
          "fib50": 4611.0525,
          "fib62": 4608.9123
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4609.9824,
      "stop": 4602.135,
      "target": 4621.753499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4663.125,
          "impulse_high": 4681.905,
          "fib50": 4672.514999999999,
          "fib62": 4670.2614
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4671.388199999999,
      "stop": 4663.125,
      "target": 4683.7829999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4704.7,
          "impulse_high": 4723.14,
          "fib50": 4713.92,
          "fib62": 4711.7072
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4712.8135999999995,
      "stop": 4704.7,
      "target": 4724.983999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4671.655,
          "impulse_high": 4702.965,
          "fib50": 4687.3099999999995,
          "fib62": 4683.5527999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4685.4313999999995,
      "stop": 4671.655,
      "target": 4706.096,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T15-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4680.325,
          "impulse_high": 4707.82,
          "fib50": 4694.0725,
          "fib62": 4690.773099999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4692.4228,
      "stop": 4680.325,
      "target": 4710.569500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T19-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T19-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4686.14,
          "impulse_high": 4700.235,
          "fib50": 4693.1875,
          "fib62": 4691.4961
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4692.3418,
      "stop": 4686.14,
      "target": 4701.6445,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-06T20-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-06T20-45-00Z_long_order_block_reclaim",
        "date": "2026-05-06",
        "timestamp": "2026-05-06T20:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4684.88,
          "ob_high": 4688.175,
          "displacement_high": 4695.855
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4686.5275,
      "stop": 4684.88,
      "target": 4689.8225,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T01-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T01-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4685.275,
          "fvg_low": 4691.62,
          "fvg_high": 4703.705
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4697.6625,
      "stop": 4685.275,
      "target": 4722.437500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T01-30-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T01-30-00Z_long_breaker_continuation",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4685.275,
          "breaker_low": 4688.86,
          "breaker_high": 4711.305,
          "break_high": 4701.545
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4700.0825,
      "stop": 4688.86,
      "target": 4722.527500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4702.45,
          "impulse_high": 4721.53,
          "fib50": 4711.99,
          "fib62": 4709.7004
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4710.8452,
      "stop": 4702.45,
      "target": 4723.438,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4685.275,
          "impulse_high": 4716.44,
          "fib50": 4700.8575,
          "fib62": 4697.1177
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4698.9876,
      "stop": 4685.275,
      "target": 4719.5565000000015,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4716.0,
          "impulse_high": 4750.01,
          "fib50": 4733.005,
          "fib62": 4728.9238000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4730.964400000001,
      "stop": 4716.0,
      "target": 4753.411000000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T12-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T12-45-00Z_long_order_block_reclaim",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T12:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4733.185,
          "ob_high": 4747.26,
          "displacement_high": 4751.805
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4740.2225,
      "stop": 4733.185,
      "target": 4754.297499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4737.445,
          "impulse_high": 4752.69,
          "fib50": 4745.067499999999,
          "fib62": 4743.2381
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4744.1528,
      "stop": 4737.445,
      "target": 4754.2145,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4741.28,
          "impulse_high": 4759.595,
          "fib50": 4750.4375,
          "fib62": 4748.2397
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4749.3386,
      "stop": 4741.28,
      "target": 4761.4265000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T17-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T17-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4687.92,
          "impulse_high": 4719.685,
          "fib50": 4703.8025,
          "fib62": 4707.6143
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4705.7083999999995,
      "stop": 4719.685,
      "target": 4684.743499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-07T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-07T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-07",
        "timestamp": "2026-05-07T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4686.28,
          "impulse_high": 4715.835,
          "fib50": 4701.0575,
          "fib62": 4704.6041
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4702.8308,
      "stop": 4715.835,
      "target": 4683.324499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T01-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T01-30-00Z_long_order_block_reclaim",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4697.02,
          "ob_high": 4705.965,
          "displacement_high": 4719.515
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4701.4925,
      "stop": 4697.02,
      "target": 4710.4375,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T02-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T02-30-00Z_long_order_block_reclaim",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4705.51,
          "ob_high": 4715.38,
          "displacement_high": 4725.71
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4710.445,
      "stop": 4705.51,
      "target": 4720.314999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T06-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T06-30-00Z_long_order_block_reclaim",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4712.665,
          "ob_high": 4730.705,
          "displacement_high": 4734.895
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4721.6849999999995,
      "stop": 4712.665,
      "target": 4739.7249999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4697.045,
          "impulse_high": 4726.725,
          "fib50": 4711.885,
          "fib62": 4715.4466
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4713.665800000001,
      "stop": 4726.725,
      "target": 4694.077000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T08-15-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T08-15-00Z_short_breaker_continuation",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T08:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4734.895,
          "breaker_low": 4721.76,
          "breaker_high": 4723.17,
          "break_low": 4709.31
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4722.465,
      "stop": 4723.17,
      "target": 4721.055,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T08-30-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T08-30-00Z_short_breaker_continuation",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4731.39,
          "breaker_low": 4723.525,
          "breaker_high": 4724.715,
          "break_low": 4708.72
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4724.12,
      "stop": 4724.715,
      "target": 4722.929999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4703.42,
          "impulse_high": 4732.125,
          "fib50": 4717.7725,
          "fib62": 4714.3279
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4716.0502,
      "stop": 4703.42,
      "target": 4734.995499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T14-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T14-00-00Z_long_breaker_continuation",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4703.945,
          "breaker_low": 4717.87,
          "breaker_high": 4719.985,
          "break_high": 4727.85
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4718.9275,
      "stop": 4717.87,
      "target": 4721.0425,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4726.94,
          "impulse_high": 4748.015,
          "fib50": 4737.4775,
          "fib62": 4734.9484999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4736.213,
      "stop": 4726.94,
      "target": 4750.1224999999995,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T14-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T14-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4749.58,
          "fvg_low": 4734.02,
          "fvg_high": 4734.955
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4734.4875,
      "stop": 4749.58,
      "target": 4704.302500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-08T15-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-08T15-00-00Z_long_breaker_continuation",
        "date": "2026-05-08",
        "timestamp": "2026-05-08T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4702.88,
          "breaker_low": 4704.835,
          "breaker_high": 4711.075,
          "break_high": 4727.85
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4707.955,
      "stop": 4704.835,
      "target": 4714.195,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-10T23-45-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-10T23-45-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-10",
        "timestamp": "2026-05-10T23:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4698.65,
          "fvg_low": 4691.935,
          "fvg_high": 4694.77
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4693.352500000001,
      "stop": 4698.65,
      "target": 4682.757500000003,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-11T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-11T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-11",
        "timestamp": "2026-05-11T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4675.91,
          "impulse_high": 4691.935,
          "fib50": 4683.922500000001,
          "fib62": 4685.8455
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4684.884,
      "stop": 4691.935,
      "target": 4674.307499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-11T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-11T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-11",
        "timestamp": "2026-05-11T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4680.29,
          "impulse_high": 4701.935,
          "fib50": 4691.1125,
          "fib62": 4693.7099
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4692.4112000000005,
      "stop": 4701.935,
      "target": 4678.1255,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-11T05-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-11T05-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-11",
        "timestamp": "2026-05-11T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4680.97,
          "fvg_low": 4664.3,
          "fvg_high": 4670.78
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4667.54,
      "stop": 4680.97,
      "target": 4640.679999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-11T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-11T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-11",
        "timestamp": "2026-05-11T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4648.09,
          "impulse_high": 4680.97,
          "fib50": 4664.530000000001,
          "fib62": 4668.4756
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4666.5028,
      "stop": 4680.97,
      "target": 4644.802,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-11T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-11T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-11",
        "timestamp": "2026-05-11T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4698.82,
          "impulse_high": 4735.715,
          "fib50": 4717.2675,
          "fib62": 4712.840099999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4715.0538,
      "stop": 4698.82,
      "target": 4739.4045,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-11T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-11T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-11",
        "timestamp": "2026-05-11T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4739.075,
          "impulse_high": 4755.745,
          "fib50": 4747.41,
          "fib62": 4745.4096
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4746.409799999999,
      "stop": 4739.075,
      "target": 4757.411999999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4751.395,
          "impulse_high": 4769.795,
          "fib50": 4760.595,
          "fib62": 4758.387000000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4759.491,
      "stop": 4751.395,
      "target": 4771.634999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T05-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T05-30-00Z_short_order_block_reclaim",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4721.225,
          "ob_high": 4726.48,
          "displacement_low": 4710.975
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4723.8525,
      "stop": 4726.48,
      "target": 4718.597500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4695.46,
          "impulse_high": 4714.735,
          "fib50": 4705.0975,
          "fib62": 4707.4105
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4706.254,
      "stop": 4714.735,
      "target": 4693.5325,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T09-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T09-45-00Z_short_order_block_reclaim",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T09:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4697.625,
          "ob_high": 4702.625,
          "displacement_low": 4694.465
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4700.125,
      "stop": 4702.625,
      "target": 4695.125,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4685.28,
          "impulse_high": 4700.48,
          "fib50": 4692.879999999999,
          "fib62": 4694.704
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4693.7919999999995,
      "stop": 4700.48,
      "target": 4683.759999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4695.19,
          "impulse_high": 4708.415,
          "fib50": 4701.8025,
          "fib62": 4703.3895
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4702.596,
      "stop": 4708.415,
      "target": 4693.8674999999985,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4679.41,
          "impulse_high": 4709.025,
          "fib50": 4694.2175,
          "fib62": 4697.771299999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4695.9944,
      "stop": 4709.025,
      "target": 4676.4484999999995,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T13-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T13-30-00Z_short_order_block_reclaim",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4700.625,
          "ob_high": 4711.68,
          "displacement_low": 4687.52
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4706.1525,
      "stop": 4711.68,
      "target": 4695.0975,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4676.88,
          "impulse_high": 4701.935,
          "fib50": 4689.4075,
          "fib62": 4692.4141
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4690.9108,
      "stop": 4701.935,
      "target": 4674.374499999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T14-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T14-00-00Z_short_order_block_reclaim",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4683.855,
          "ob_high": 4701.935,
          "displacement_low": 4676.88
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4692.895,
      "stop": 4701.935,
      "target": 4674.8150000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-12T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-12T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-12",
        "timestamp": "2026-05-12T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4638.365,
          "impulse_high": 4676.235,
          "fib50": 4657.299999999999,
          "fib62": 4661.8444
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4659.5722,
      "stop": 4676.235,
      "target": 4634.5779999999995,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-13T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-13T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-13",
        "timestamp": "2026-05-13T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4687.705,
          "impulse_high": 4700.65,
          "fib50": 4694.1775,
          "fib62": 4695.7309
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4694.9542,
      "stop": 4700.65,
      "target": 4686.410500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-13T03-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-13T03-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-13",
        "timestamp": "2026-05-13T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4689.025,
          "impulse_high": 4700.775,
          "fib50": 4694.9,
          "fib62": 4693.49
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4694.195,
      "stop": 4689.025,
      "target": 4701.95,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-13T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-13T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-13",
        "timestamp": "2026-05-13T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4686.01,
          "impulse_high": 4701.095,
          "fib50": 4693.5525,
          "fib62": 4691.7423
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4692.6474,
      "stop": 4686.01,
      "target": 4702.603499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-13T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-13T13-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-13",
        "timestamp": "2026-05-13T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4683.315,
          "impulse_high": 4701.62,
          "fib50": 4692.4675,
          "fib62": 4694.6641
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4693.5658,
      "stop": 4701.62,
      "target": 4681.4845000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-13T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-13T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-13",
        "timestamp": "2026-05-13T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4684.555,
          "impulse_high": 4698.595,
          "fib50": 4691.575000000001,
          "fib62": 4693.2598
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4692.4174,
      "stop": 4698.595,
      "target": 4683.151,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-13T23-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-13T23-45-00Z_long_order_block_reclaim",
        "date": "2026-05-13",
        "timestamp": "2026-05-13T23:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4689.06,
          "ob_high": 4693.965,
          "displacement_high": 4697.38
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4691.512500000001,
      "stop": 4689.06,
      "target": 4696.417500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T01-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T01-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4707.15,
          "fvg_low": 4695.495,
          "fvg_high": 4699.57
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4697.532499999999,
      "stop": 4707.15,
      "target": 4678.297499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T02-00-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T02-00-00Z_short_breaker_continuation",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4707.15,
          "breaker_low": 4684.49,
          "breaker_high": 4705.015,
          "break_low": 4689.06
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4694.7525000000005,
      "stop": 4705.015,
      "target": 4674.227500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T02-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4684.49,
          "impulse_high": 4707.15,
          "fib50": 4695.82,
          "fib62": 4698.539199999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4697.1795999999995,
      "stop": 4707.15,
      "target": 4682.223999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T02-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T02-30-00Z_short_order_block_reclaim",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4699.57,
          "ob_high": 4706.795,
          "displacement_low": 4684.49
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4703.1825,
      "stop": 4706.795,
      "target": 4695.9574999999995,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4680.21,
          "impulse_high": 4699.775,
          "fib50": 4689.9925,
          "fib62": 4692.3403
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4691.1664,
      "stop": 4699.775,
      "target": 4678.253500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T04-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T04-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T04:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4673.965,
          "impulse_high": 4691.755,
          "fib50": 4682.860000000001,
          "fib62": 4684.9948
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4683.9274000000005,
      "stop": 4691.755,
      "target": 4672.1860000000015,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T04-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T04-00-00Z_short_order_block_reclaim",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T04:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4681.74,
          "ob_high": 4693.45,
          "displacement_low": 4675.92
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4687.594999999999,
      "stop": 4693.45,
      "target": 4675.884999999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T04-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T04-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T04:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4668.71,
          "fvg_low": 4678.03,
          "fvg_high": 4681.96
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4679.995,
      "stop": 4668.71,
      "target": 4702.565,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4668.71,
          "impulse_high": 4707.545,
          "fib50": 4688.1275000000005,
          "fib62": 4683.4673
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4685.7974,
      "stop": 4668.71,
      "target": 4711.428500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T08-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T08-00-00Z_long_order_block_reclaim",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4694.685,
          "ob_high": 4702.435,
          "displacement_high": 4706.79
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4698.56,
      "stop": 4694.685,
      "target": 4706.31,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4688.235,
          "impulse_high": 4707.935,
          "fib50": 4698.085,
          "fib62": 4700.4490000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4699.267,
      "stop": 4707.935,
      "target": 4686.264999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T14-15-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T14-15-00Z_short_breaker_continuation",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4707.63,
          "breaker_low": 4698.855,
          "breaker_high": 4703.895,
          "break_low": 4688.645
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4701.375,
      "stop": 4703.895,
      "target": 4696.334999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4679.26,
          "impulse_high": 4692.45,
          "fib50": 4685.855,
          "fib62": 4687.4378
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4686.6464,
      "stop": 4692.45,
      "target": 4677.940999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-14T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-14T22-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-14",
        "timestamp": "2026-05-14T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4653.26,
          "impulse_high": 4665.52,
          "fib50": 4659.39,
          "fib62": 4660.8612
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4660.1256,
      "stop": 4665.52,
      "target": 4652.034,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-15T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-15T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-15",
        "timestamp": "2026-05-15T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4646.85,
          "impulse_high": 4665.445,
          "fib50": 4656.1475,
          "fib62": 4658.3789
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4657.263199999999,
      "stop": 4665.445,
      "target": 4644.990499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-15T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-15T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-15",
        "timestamp": "2026-05-15T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4607.76,
          "impulse_high": 4631.69,
          "fib50": 4619.725,
          "fib62": 4622.5966
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4621.1608,
      "stop": 4631.69,
      "target": 4605.367,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-15T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T15:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-15T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4575.529,
      "stop": 4590.315,
      "target": 4553.35,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T15:00:00Z",
      "outcome_time": "2026-05-29T15:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-15T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4575.529, stop=4590.315, target=4553.35. Pre-M15 range high=4626.02, low=4556.52.",
      "candidate": {
        "id": "candidate_v2_2026-05-15T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-15",
        "timestamp": "2026-05-15T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4556.71,
          "impulse_high": 4590.315,
          "fib50": 4573.5125,
          "fib62": 4577.545099999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-15T13-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T14:00:00Z; outcome=tp_first",
      "timestamp": "2026-05-15T13:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4549.25,
      "stop": 4557.66,
      "target": 4532.43,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-15T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4549.25, stop=4557.66, target=4532.43. Pre-M15 range high=4572.775, low=4510.985.",
      "candidate": {
        "id": "candidate_v2_2026-05-15T13-45-00Z_short_order_block_reclaim",
        "date": "2026-05-15",
        "timestamp": "2026-05-15T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4540.84,
          "ob_high": 4557.66,
          "displacement_low": 4520.03
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-15T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:45:00Z; outcome=sl_first",
      "timestamp": "2026-05-15T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4533.64,
      "stop": 4551.44,
      "target": 4506.939,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:45:00Z",
      "outcome_time": "2026-05-29T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-15T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4533.64, stop=4551.44, target=4506.939. Pre-M15 range high=4572.775, low=4510.985.",
      "candidate": {
        "id": "candidate_v2_2026-05-15T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-15",
        "timestamp": "2026-05-15T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4510.985,
          "impulse_high": 4551.44,
          "fib50": 4531.2125,
          "fib62": 4536.067099999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-15T19-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T14:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-15T19:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4545.097,
      "stop": 4541.94,
      "target": 4551.413,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-15T19:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4545.097, stop=4541.94, target=4551.413. Pre-M15 range high=4564.605, low=4529.555.",
      "candidate": {
        "id": "candidate_v2_2026-05-15T19-45-00Z_long_order_block_reclaim",
        "date": "2026-05-15",
        "timestamp": "2026-05-15T19:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4541.94,
          "ob_high": 4548.255,
          "displacement_high": 4558.15
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-17T22-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-05-17T22:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4552.57,
      "stop": 4555.375,
      "target": 4546.96,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T14:05:00Z",
      "outcome_time": "2026-05-29T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-17T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4552.57, stop=4555.375, target=4546.96. Pre-M15 range high=4564.605, low=4531.55.",
      "candidate": {
        "id": "candidate_v2_2026-05-17T22-00-00Z_short_order_block_reclaim",
        "date": "2026-05-17",
        "timestamp": "2026-05-17T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4549.765,
          "ob_high": 4555.375,
          "displacement_low": 4545.1
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-18T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-18T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4530.247,
      "stop": 4542.635,
      "target": 4511.664,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-18T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.247, stop=4542.635, target=4511.664. Pre-M15 range high=4554.915, low=4480.41.",
      "candidate": {
        "id": "candidate_v2_2026-05-18T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-18",
        "timestamp": "2026-05-18T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4514.48,
          "impulse_high": 4542.635,
          "fib50": 4528.5575,
          "fib62": 4531.9361
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-18T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T10:35:00Z; outcome=tp_first",
      "timestamp": "2026-05-18T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4542.435,
      "stop": 4552.045,
      "target": 4528.021,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T10:35:00Z",
      "outcome_time": "2026-05-29T11:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-18T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4542.435, stop=4552.045, target=4528.021. Pre-M15 range high=4552.045, low=4493.205.",
      "candidate": {
        "id": "candidate_v2_2026-05-18T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-18",
        "timestamp": "2026-05-18T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4530.205,
          "impulse_high": 4552.045,
          "fib50": 4541.125,
          "fib62": 4543.7458
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-18T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-05-18T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4549.586,
      "stop": 4535.77,
      "target": 4570.31,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:05:00Z",
      "outcome_time": "2026-05-29T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-18T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4549.586, stop=4535.77, target=4570.31. Pre-M15 range high=4567.17, low=4529.96.",
      "candidate": {
        "id": "candidate_v2_2026-05-18T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-18",
        "timestamp": "2026-05-18T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4535.77,
          "impulse_high": 4567.17,
          "fib50": 4551.47,
          "fib62": 4547.702
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-18T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-18T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4561.199,
      "stop": 4550.305,
      "target": 4577.541,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-18T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4561.199, stop=4550.305, target=4577.541. Pre-M15 range high=4576.845, low=4529.96.",
      "candidate": {
        "id": "candidate_v2_2026-05-18T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-18",
        "timestamp": "2026-05-18T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4550.305,
          "impulse_high": 4575.065,
          "fib50": 4562.6849999999995,
          "fib62": 4559.7138
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-18T14-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-05-18T14:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4550.36,
      "stop": 4545.36,
      "target": 4560.36,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:05:00Z",
      "outcome_time": "2026-05-29T14:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-18T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4550.36, stop=4545.36, target=4560.36. Pre-M15 range high=4584.375, low=4529.96.",
      "candidate": {
        "id": "candidate_v2_2026-05-18T14-15-00Z_long_order_block_reclaim",
        "date": "2026-05-18",
        "timestamp": "2026-05-18T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4545.36,
          "ob_high": 4555.36,
          "displacement_high": 4569.835
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-18T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T15:05:00Z; outcome=sl_first",
      "timestamp": "2026-05-18T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4580.561,
      "stop": 4573.86,
      "target": 4590.613,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T15:05:00Z",
      "outcome_time": "2026-05-29T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-18T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4580.561, stop=4573.86, target=4590.613. Pre-M15 range high=4589.09, low=4534.375.",
      "candidate": {
        "id": "candidate_v2_2026-05-18T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-18",
        "timestamp": "2026-05-18T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4573.86,
          "impulse_high": 4589.09,
          "fib50": 4581.475,
          "fib62": 4579.6474
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T00-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T15:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-19T00:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4574.938,
      "stop": 4572.725,
      "target": 4579.362,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T15:00:00Z",
      "outcome_time": "2026-05-29T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4574.938, stop=4572.725, target=4579.362. Pre-M15 range high=4589.58, low=4534.375.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T00-00-00Z_long_order_block_reclaim",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4572.725,
          "ob_high": 4577.15,
          "displacement_high": 4587.19
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T14:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-19T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4553.881,
      "stop": 4560.03,
      "target": 4544.657,
      "r": null,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4553.881, stop=4560.03, target=4544.657. Pre-M15 range high=4589.58, low=4543.77.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4546.055,
          "impulse_high": 4560.03,
          "fib50": 4553.0425,
          "fib62": 4554.7195
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-05-19T08:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4549.477,
      "stop": 4541.575,
      "target": 4561.331,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:05:00Z",
      "outcome_time": "2026-05-29T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4549.477, stop=4541.575, target=4561.331. Pre-M15 range high=4559.535, low=4531.085.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4541.575,
          "impulse_high": 4559.535,
          "fib50": 4550.555,
          "fib62": 4548.3998
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T08-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T14:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-19T08:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4545.573,
      "stop": 4541.575,
      "target": 4553.568,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4545.573, stop=4541.575, target=4553.568. Pre-M15 range high=4559.535, low=4531.085.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T08-00-00Z_long_order_block_reclaim",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4541.575,
          "ob_high": 4549.57,
          "displacement_high": 4559.535
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T14:00:00Z; outcome=tp_first",
      "timestamp": "2026-05-19T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4549.198,
      "stop": 4559.25,
      "target": 4534.12,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4549.198, stop=4559.25, target=4534.12. Pre-M15 range high=4559.535, low=4531.085.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4536.405,
          "impulse_high": 4559.25,
          "fib50": 4547.827499999999,
          "fib62": 4550.5689
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T11-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T09:45:00Z; outcome=sl_first",
      "timestamp": "2026-05-19T11:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4534.45,
      "stop": 4525.68,
      "target": 4551.99,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:45:00Z",
      "outcome_time": "2026-05-29T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4534.45, stop=4525.68, target=4551.99. Pre-M15 range high=4559.535, low=4525.68.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T11-00-00Z_long_order_block_reclaim",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4525.68,
          "ob_high": 4543.22,
          "displacement_high": 4544.925
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:45:00Z; outcome=tp_first",
      "timestamp": "2026-05-19T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4537.352,
      "stop": 4543.195,
      "target": 4528.587,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T09:45:00Z",
      "outcome_time": "2026-05-29T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-19T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4537.352, stop=4543.195, target=4528.587. Pre-M15 range high=4559.535, low=4525.68.",
      "candidate": {
        "id": "candidate_v2_2026-05-19T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4529.915,
          "impulse_high": 4543.195,
          "fib50": 4536.555,
          "fib62": 4538.1485999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-19T23-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-19T23-45-00Z_long_order_block_reclaim",
        "date": "2026-05-19",
        "timestamp": "2026-05-19T23:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4483.535,
          "ob_high": 4488.76,
          "displacement_high": 4496.595
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4486.1475,
      "stop": 4483.535,
      "target": 4491.3725,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T01-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-20T01-00-00Z_long_order_block_reclaim",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4479.82,
          "ob_high": 4490.71,
          "displacement_high": 4502.18
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4485.264999999999,
      "stop": 4479.82,
      "target": 4496.154999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T01-45-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-20T01-45-00Z_long_breaker_continuation",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4477.45,
          "breaker_low": 4479.56,
          "breaker_high": 4485.975,
          "break_high": 4500.96
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4482.7675,
      "stop": 4479.56,
      "target": 4489.182499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T01-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-20T01-45-00Z_short_breaker_continuation",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4496.595,
          "breaker_low": 4485.69,
          "breaker_high": 4486.285,
          "break_low": 4477.45
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4485.987499999999,
      "stop": 4486.285,
      "target": 4485.392499999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-20T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4458.68,
          "impulse_high": 4483.69,
          "fib50": 4471.1849999999995,
          "fib62": 4474.1862
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4472.6856,
      "stop": 4483.69,
      "target": 4456.179,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-20T09-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4472.835,
          "impulse_high": 4486.3,
          "fib50": 4479.5675,
          "fib62": 4481.1833
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4480.3754,
      "stop": 4486.3,
      "target": 4471.4884999999995,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T11-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-20T11-30-00Z_long_order_block_reclaim",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4492.845,
          "ob_high": 4496.855,
          "displacement_high": 4501.29
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4494.85,
      "stop": 4492.845,
      "target": 4498.860000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-20T22-30-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T14:00:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-20T22:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4543.483,
      "stop": 4544.785,
      "target": 4540.878,
      "r": null,
      "entry_touch_time": "2026-05-29T14:00:00Z",
      "outcome_time": "2026-05-29T14:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-20T22:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4543.483, stop=4544.785, target=4540.878. Pre-M15 range high=4550.445, low=4529.12.",
      "candidate": {
        "id": "candidate_v2_2026-05-20T22-30-00Z_short_order_block_reclaim",
        "date": "2026-05-20",
        "timestamp": "2026-05-20T22:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4542.18,
          "ob_high": 4544.785,
          "displacement_low": 4538.68
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T10:35:00Z; outcome=sl_first",
      "timestamp": "2026-05-21T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4542.292,
      "stop": 4538.18,
      "target": 4548.459,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T10:35:00Z",
      "outcome_time": "2026-05-29T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4542.292, stop=4538.18, target=4548.459. Pre-M15 range high=4550.445, low=4532.04.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4538.18,
          "impulse_high": 4547.525,
          "fib50": 4542.8525,
          "fib62": 4541.7311
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-05-21T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4552.203,
      "stop": 4539.92,
      "target": 4570.627,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:05:00Z",
      "outcome_time": "2026-05-29T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4552.203, stop=4539.92, target=4570.627. Pre-M15 range high=4570.895, low=4534.74.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4539.92,
          "impulse_high": 4567.835,
          "fib50": 4553.8775000000005,
          "fib62": 4550.5277
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T02-15-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-05-29T10:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-21T02:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4540.29,
      "stop": 4539.94,
      "target": 4540.99,
      "r": null,
      "entry_touch_time": "2026-05-29T10:35:00Z",
      "outcome_time": "2026-05-29T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T02:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4540.29, stop=4539.94, target=4540.99. Pre-M15 range high=4570.895, low=4534.74.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T02-15-00Z_long_breaker_continuation",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T02:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4534.74,
          "breaker_low": 4539.94,
          "breaker_high": 4540.64,
          "break_high": 4550.445
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T03-15-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-05-29T10:35:00Z; outcome=tp_first",
      "timestamp": "2026-05-21T03:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4542.555,
      "stop": 4545.19,
      "target": 4537.285,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T10:35:00Z",
      "outcome_time": "2026-05-29T10:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T03:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4542.555, stop=4545.19, target=4537.285. Pre-M15 range high=4570.895, low=4531.515.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T03-15-00Z_short_breaker_continuation",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T03:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4560.26,
          "breaker_low": 4539.92,
          "breaker_high": 4545.19,
          "break_low": 4534.74
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T09:10:00Z; outcome=tp_first",
      "timestamp": "2026-05-21T08:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4526.619,
      "stop": 4518.415,
      "target": 4538.925,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4526.619, stop=4518.415, target=4538.925. Pre-M15 range high=4540.8, low=4512.075.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T08-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4518.415,
          "impulse_high": 4537.06,
          "fib50": 4527.7375,
          "fib62": 4525.5001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T09-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-05-29T09:45:00Z; outcome=sl_first",
      "timestamp": "2026-05-21T09:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4534.45,
      "stop": 4543.06,
      "target": 4517.23,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:45:00Z",
      "outcome_time": "2026-05-29T10:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4534.45, stop=4543.06, target=4517.23. Pre-M15 range high=4543.06, low=4512.075.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T09-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4543.06,
          "fvg_low": 4533.25,
          "fvg_high": 4535.65
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T12-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T06:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-21T12:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4516.575,
      "stop": 4519.47,
      "target": 4510.785,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T06:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4516.575, stop=4519.47, target=4510.785. Pre-M15 range high=4543.06, low=4503.775.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T12-30-00Z_short_order_block_reclaim",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4513.68,
          "ob_high": 4519.47,
          "displacement_low": 4503.775
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T18-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-21T18:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4528.413,
      "stop": 4514.28,
      "target": 4549.612,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4528.413, stop=4514.28, target=4549.612. Pre-M15 range high=4559.365, low=4494.96.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T18-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4514.28,
          "impulse_high": 4546.4,
          "fib50": 4530.34,
          "fib62": 4526.4856
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-21T19-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T10:35:00Z; outcome=tp_first",
      "timestamp": "2026-05-21T19:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4539.861,
      "stop": 4549.565,
      "target": 4525.305,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T10:35:00Z",
      "outcome_time": "2026-05-29T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-21T19:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4539.861, stop=4549.565, target=4525.305. Pre-M15 range high=4559.365, low=4496.91.",
      "candidate": {
        "id": "candidate_v2_2026-05-21T19-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-21",
        "timestamp": "2026-05-21T19:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4527.51,
          "impulse_high": 4549.565,
          "fib50": 4538.5375,
          "fib62": 4541.1840999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T01-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T09:50:00Z; outcome=tp_first",
      "timestamp": "2026-05-22T01:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4538.52,
      "stop": 4541.24,
      "target": 4533.08,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T09:50:00Z",
      "outcome_time": "2026-05-29T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4538.52, stop=4541.24, target=4533.08. Pre-M15 range high=4545.26, low=4523.435.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T01-00-00Z_short_order_block_reclaim",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4535.8,
          "ob_high": 4541.24,
          "displacement_low": 4525.64
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T04-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T07:40:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T04:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4525.496,
      "stop": 4521.925,
      "target": 4530.852,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T07:40:00Z",
      "outcome_time": "2026-05-29T07:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4525.496, stop=4521.925, target=4530.852. Pre-M15 range high=4541.24, low=4518.53.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T04-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4521.925,
          "impulse_high": 4530.04,
          "fib50": 4525.9825,
          "fib62": 4525.0087
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T06:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4522.491,
      "stop": 4534.325,
      "target": 4504.741,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:50:00Z",
      "outcome_time": "2026-05-29T09:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4522.491, stop=4534.325, target=4504.741. Pre-M15 range high=4534.325, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4507.43,
          "impulse_high": 4534.325,
          "fib50": 4520.8775000000005,
          "fib62": 4524.1049
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T06-15-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-05-29T07:40:00Z; outcome=tp_first",
      "timestamp": "2026-05-22T06:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4525.615,
      "stop": 4526.165,
      "target": 4524.515,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T07:40:00Z",
      "outcome_time": "2026-05-29T07:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T06:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4525.615, stop=4526.165, target=4524.515. Pre-M15 range high=4534.325, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T06-15-00Z_short_breaker_continuation",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T06:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4534.325,
          "breaker_low": 4525.065,
          "breaker_high": 4526.165,
          "break_low": 4518.53
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T06-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T06:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4529.695,
      "stop": 4534.325,
      "target": 4520.435,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T09:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T06:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4529.695, stop=4534.325, target=4520.435. Pre-M15 range high=4534.325, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T06-15-00Z_short_order_block_reclaim",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T06:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4525.065,
          "ob_high": 4534.325,
          "displacement_low": 4507.43
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T06:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T07:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4517.16,
      "stop": 4510.025,
      "target": 4527.861,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T08:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4517.16, stop=4510.025, target=4527.861. Pre-M15 range high=4534.325, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T07-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4510.025,
          "impulse_high": 4526.24,
          "fib50": 4518.1325,
          "fib62": 4516.186699999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T09-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-05-29T06:50:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T09:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4522.745,
      "stop": 4514.88,
      "target": 4538.475,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:50:00Z",
      "outcome_time": "2026-05-29T07:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4522.745, stop=4514.88, target=4538.475. Pre-M15 range high=4534.325, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T09-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4514.88,
          "fvg_low": 4520.67,
          "fvg_high": 4524.82
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T10:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4524.155,
      "stop": 4514.88,
      "target": 4538.068,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T07:35:00Z",
      "outcome_time": "2026-05-29T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4524.155, stop=4514.88, target=4538.068. Pre-M15 range high=4536.82, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4514.88,
          "impulse_high": 4535.96,
          "fib50": 4525.42,
          "fib62": 4522.8904
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T10-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-05-29T06:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-22T10:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4522.03,
      "stop": 4517.905,
      "target": 4530.28,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T06:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T10:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4522.03, stop=4517.905, target=4530.28. Pre-M15 range high=4536.82, low=4507.43.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T10-15-00Z_long_breaker_continuation",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T10:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4514.88,
          "breaker_low": 4517.905,
          "breaker_high": 4526.155,
          "break_high": 4531.32
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T11-30-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-05-29T06:00:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-22T11:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4519.038,
      "stop": 4517.405,
      "target": 4522.303,
      "r": null,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T06:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4519.038, stop=4517.405, target=4522.303. Pre-M15 range high=4536.82, low=4510.285.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T11-30-00Z_long_breaker_continuation",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4515.18,
          "breaker_low": 4517.405,
          "breaker_high": 4520.67,
          "break_high": 4531.32
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T11-45-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-05-29T07:35:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-22T11:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4525.087,
      "stop": 4525.355,
      "target": 4524.552,
      "r": null,
      "entry_touch_time": "2026-05-29T07:35:00Z",
      "outcome_time": "2026-05-29T07:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T11:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4525.087, stop=4525.355, target=4524.552. Pre-M15 range high=4536.82, low=4510.285.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T11-45-00Z_short_breaker_continuation",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T11:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4535.96,
          "breaker_low": 4524.82,
          "breaker_high": 4525.355,
          "break_low": 4514.88
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T12-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-05-29T09:25:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-22T12:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4530.923,
      "stop": 4532.265,
      "target": 4528.238,
      "r": null,
      "entry_touch_time": "2026-05-29T09:25:00Z",
      "outcome_time": "2026-05-29T09:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.923, stop=4532.265, target=4528.238. Pre-M15 range high=4536.82, low=4510.285.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T12-00-00Z_short_breaker_continuation",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4536.82,
          "breaker_low": 4529.58,
          "breaker_high": 4532.265,
          "break_low": 4514.88
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-22T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4491.93,
          "impulse_high": 4513.73,
          "fib50": 4502.83,
          "fib62": 4505.446
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4504.138,
      "stop": 4513.73,
      "target": 4489.75,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-22T20-45-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-05-29T09:10:00Z; outcome=tp_first",
      "timestamp": "2026-05-22T20:45:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 4530.21,
      "stop": 4504.17,
      "target": 4582.29,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-22T20:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.21, stop=4504.17, target=4582.29. Pre-M15 range high=4527.995, low=4504.17.",
      "candidate": {
        "id": "candidate_v2_2026-05-22T20-45-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-05-22",
        "timestamp": "2026-05-22T20:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4504.17,
          "fvg_low": 4510.6,
          "fvg_high": 4549.82
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-24T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T15:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-24T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4571.155,
      "stop": 4565.27,
      "target": 4579.983,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T15:00:00Z",
      "outcome_time": "2026-05-29T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-24T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4571.155, stop=4565.27, target=4579.983. Pre-M15 range high=4580.21, low=4504.17.",
      "candidate": {
        "id": "candidate_v2_2026-05-24T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-24",
        "timestamp": "2026-05-24T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4565.27,
          "impulse_high": 4578.645,
          "fib50": 4571.9575,
          "fib62": 4570.352500000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-25T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-25T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4557.953,
      "stop": 4553.65,
      "target": 4564.408,
      "r": null,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-25T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4557.953, stop=4553.65, target=4564.408. Pre-M15 range high=4570.51, low=4550.55.",
      "candidate": {
        "id": "candidate_v2_2026-05-25T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-25",
        "timestamp": "2026-05-25T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4553.65,
          "impulse_high": 4563.43,
          "fib50": 4558.54,
          "fib62": 4557.3664
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-25T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T14:50:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-05-25T08:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4559.076,
      "stop": 4554.28,
      "target": 4566.27,
      "r": null,
      "entry_touch_time": "2026-05-29T14:50:00Z",
      "outcome_time": "2026-05-29T14:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-25T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4559.076, stop=4554.28, target=4566.27. Pre-M15 range high=4566.0, low=4550.55.",
      "candidate": {
        "id": "candidate_v2_2026-05-25T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-25",
        "timestamp": "2026-05-25T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4554.28,
          "impulse_high": 4565.18,
          "fib50": 4559.73,
          "fib62": 4558.422
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-25T11-45-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-05-29T14:55:00Z; outcome=tp_first",
      "timestamp": "2026-05-25T11:45:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4570.573,
      "stop": 4577.115,
      "target": 4557.488,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T14:55:00Z",
      "outcome_time": "2026-05-29T14:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-25T11:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4570.573, stop=4577.115, target=4557.488. Pre-M15 range high=4577.115, low=4552.495.",
      "candidate": {
        "id": "candidate_v2_2026-05-25T11-45-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-25",
        "timestamp": "2026-05-25T11:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4577.115,
          "fvg_low": 4569.455,
          "fvg_high": 4571.69
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-25T23-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-05-29T15:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-25T23:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4571.238,
      "stop": 4580.245,
      "target": 4553.223,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T15:00:00Z",
      "outcome_time": "2026-05-29T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-25T23:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4571.238, stop=4580.245, target=4553.223. Pre-M15 range high=4580.245, low=4563.365.",
      "candidate": {
        "id": "candidate_v2_2026-05-25T23-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-25",
        "timestamp": "2026-05-25T23:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4580.245,
          "fvg_low": 4568.665,
          "fvg_high": 4573.81
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-05-26T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4551.949,
      "stop": 4560.36,
      "target": 4539.333,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T14:05:00Z",
      "outcome_time": "2026-05-29T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4551.949, stop=4560.36, target=4539.333. Pre-M15 range high=4580.245, low=4541.245.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4541.245,
          "impulse_high": 4560.36,
          "fib50": 4550.8025,
          "fib62": 4553.0963
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:50:00Z; outcome=tp_first",
      "timestamp": "2026-05-26T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4538.593,
      "stop": 4543.255,
      "target": 4531.601,
      "r": 1.5,
      "entry_touch_time": "2026-05-29T09:50:00Z",
      "outcome_time": "2026-05-29T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4538.593, stop=4543.255, target=4531.601. Pre-M15 range high=4545.6, low=4521.68.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4532.66,
          "impulse_high": 4543.255,
          "fib50": 4537.9575,
          "fib62": 4539.2289
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T08-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T07:40:00Z; outcome=sl_first",
      "timestamp": "2026-05-26T08:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4525.798,
      "stop": 4521.68,
      "target": 4534.033,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T07:40:00Z",
      "outcome_time": "2026-05-29T07:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4525.798, stop=4521.68, target=4534.033. Pre-M15 range high=4545.6, low=4521.68.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T08-00-00Z_long_order_block_reclaim",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4521.68,
          "ob_high": 4529.915,
          "displacement_high": 4539.2
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T09-15-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-05-29T07:45:00Z; outcome=tp_first",
      "timestamp": "2026-05-26T09:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "London",
      "entry": 4526.175,
      "stop": 4526.935,
      "target": 4524.655,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T07:45:00Z",
      "outcome_time": "2026-05-29T07:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T09:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4526.175, stop=4526.935, target=4524.655. Pre-M15 range high=4539.2, low=4518.275.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T09-15-00Z_short_breaker_continuation",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T09:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4539.2,
          "breaker_low": 4525.415,
          "breaker_high": 4526.935,
          "break_low": 4521.68
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T09-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-05-29T06:00:00Z; outcome=tp_first",
      "timestamp": "2026-05-26T09:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4522.47,
      "stop": 4526.665,
      "target": 4514.08,
      "r": 2.0,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T09:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4522.47, stop=4526.665, target=4514.08. Pre-M15 range high=4539.2, low=4512.07.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T09-45-00Z_short_order_block_reclaim",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T09:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4518.275,
          "ob_high": 4526.665,
          "displacement_low": 4512.07
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:25:00Z; outcome=sl_first",
      "timestamp": "2026-05-26T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4530.976,
      "stop": 4539.145,
      "target": 4518.723,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:25:00Z",
      "outcome_time": "2026-05-29T09:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.976, stop=4539.145, target=4518.723. Pre-M15 range high=4539.2, low=4512.07.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4520.58,
          "impulse_high": 4539.145,
          "fib50": 4529.8625,
          "fib62": 4532.0903
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T06:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-26T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4514.989,
      "stop": 4523.925,
      "target": 4501.584,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T06:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4514.989, stop=4523.925, target=4501.584. Pre-M15 range high=4540.69, low=4503.615.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4503.615,
          "impulse_high": 4523.925,
          "fib50": 4513.77,
          "fib62": 4516.2072
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T09:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-26T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4530.463,
      "stop": 4536.405,
      "target": 4521.549,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T09:10:00Z",
      "outcome_time": "2026-05-29T09:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-26T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.463, stop=4536.405, target=4521.549. Pre-M15 range high=4540.69, low=4500.785.",
      "candidate": {
        "id": "candidate_v2_2026-05-26T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4522.9,
          "impulse_high": 4536.405,
          "fib50": 4529.6525,
          "fib62": 4531.273099999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-26T18-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4490.025,
          "impulse_high": 4501.825,
          "fib50": 4495.924999999999,
          "fib62": 4497.340999999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4496.633,
      "stop": 4501.825,
      "target": 4488.844999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-26T23-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-26T23-15-00Z_long_order_block_reclaim",
        "date": "2026-05-26",
        "timestamp": "2026-05-26T23:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4498.125,
          "ob_high": 4505.71,
          "displacement_high": 4512.66
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4501.9175,
      "stop": 4498.125,
      "target": 4509.502499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T06:00:00Z; outcome=sl_first",
      "timestamp": "2026-05-27T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4518.617,
      "stop": 4511.205,
      "target": 4529.734,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:00:00Z",
      "outcome_time": "2026-05-29T06:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-27T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4518.617, stop=4511.205, target=4529.734. Pre-M15 range high=4528.05, low=4486.425.",
      "candidate": {
        "id": "candidate_v2_2026-05-27T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4511.205,
          "impulse_high": 4528.05,
          "fib50": 4519.6275000000005,
          "fib62": 4517.6061
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T04-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T04-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T04:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4496.91,
          "impulse_high": 4507.39,
          "fib50": 4502.15,
          "fib62": 4503.4076000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4502.7788,
      "stop": 4507.39,
      "target": 4495.861999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-05-29T06:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-27T04:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4512.751,
      "stop": 4517.265,
      "target": 4505.979,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T06:10:00Z",
      "outcome_time": "2026-05-29T06:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-27T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4512.751, stop=4517.265, target=4505.979. Pre-M15 range high=4528.05, low=4496.065.",
      "candidate": {
        "id": "candidate_v2_2026-05-27T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4507.005,
          "impulse_high": 4517.265,
          "fib50": 4512.135,
          "fib62": 4513.3662
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4483.765,
          "impulse_high": 4499.31,
          "fib50": 4491.5375,
          "fib62": 4493.4029
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4492.4702,
      "stop": 4499.31,
      "target": 4482.210499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4442.765,
          "impulse_high": 4477.34,
          "fib50": 4460.0525,
          "fib62": 4464.2015
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4462.127,
      "stop": 4477.34,
      "target": 4439.307500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T12-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T12-00-00Z_short_order_block_reclaim",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4432.51,
          "ob_high": 4444.325,
          "displacement_low": 4425.145
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4438.4175,
      "stop": 4444.325,
      "target": 4426.602499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4401.63,
          "impulse_high": 4439.215,
          "fib50": 4420.422500000001,
          "fib62": 4424.9327
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4422.677600000001,
      "stop": 4439.215,
      "target": 4397.871500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T20-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T20-30-00Z_long_order_block_reclaim",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T20:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4448.905,
          "ob_high": 4453.855,
          "displacement_high": 4455.375
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4451.379999999999,
      "stop": 4448.905,
      "target": 4456.329999999998,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-27T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-27T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-27",
        "timestamp": "2026-05-27T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4449.35,
          "impulse_high": 4457.815,
          "fib50": 4453.5825,
          "fib62": 4454.5983
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4454.0904,
      "stop": 4457.815,
      "target": 4448.503500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-28T00-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-28T00-00-00Z_short_order_block_reclaim",
        "date": "2026-05-28",
        "timestamp": "2026-05-28T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4449.175,
          "ob_high": 4454.205,
          "displacement_low": 4443.905
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4451.6900000000005,
      "stop": 4454.205,
      "target": 4446.660000000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-28T00-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-28T00-45-00Z_short_breaker_continuation",
        "date": "2026-05-28",
        "timestamp": "2026-05-28T00:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4462.58,
          "breaker_low": 4455.31,
          "breaker_high": 4460.035,
          "break_low": 4448.905
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4457.672500000001,
      "stop": 4460.035,
      "target": 4452.947500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-28T01-00-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-28T01-00-00Z_short_breaker_continuation",
        "date": "2026-05-28",
        "timestamp": "2026-05-28T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4462.54,
          "breaker_low": 4455.895,
          "breaker_high": 4456.89,
          "break_low": 4447.795
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4456.3925,
      "stop": 4456.89,
      "target": 4455.397499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-28T01-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-28T01-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-05-28",
        "timestamp": "2026-05-28T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4459.0,
          "fvg_low": 4440.385,
          "fvg_high": 4450.83
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      },
      "entry": 4445.6075,
      "stop": 4459.0,
      "target": 4418.8225,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-28T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-28T11-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-28",
        "timestamp": "2026-05-28T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4375.255,
          "impulse_high": 4402.53,
          "fib50": 4388.8925,
          "fib62": 4392.1655
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4390.529,
      "stop": 4402.53,
      "target": 4372.527500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-28T22-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-28T22-15-00Z_short_order_block_reclaim",
        "date": "2026-05-28",
        "timestamp": "2026-05-28T22:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4494.775,
          "ob_high": 4496.53,
          "displacement_low": 4491.7
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4495.6525,
      "stop": 4496.53,
      "target": 4493.897500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-29T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4492.085,
          "impulse_high": 4500.695,
          "fib50": 4496.389999999999,
          "fib62": 4495.3568
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4495.8733999999995,
      "stop": 4492.085,
      "target": 4501.555999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-29T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4492.42,
          "impulse_high": 4520.815,
          "fib50": 4506.6175,
          "fib62": 4503.2101
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4504.9138,
      "stop": 4492.42,
      "target": 4523.654500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T02-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-29T02-30-00Z_long_order_block_reclaim",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4493.45,
          "ob_high": 4498.605,
          "displacement_high": 4515.515
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4496.0275,
      "stop": 4493.45,
      "target": 4501.182500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T03-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-29T03-00-00Z_long_breaker_continuation",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4488.975,
          "breaker_low": 4489.945,
          "breaker_high": 4496.38,
          "break_high": 4500.715
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4493.1625,
      "stop": 4489.945,
      "target": 4499.597500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-05-29T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4501.18,
          "impulse_high": 4511.665,
          "fib50": 4506.422500000001,
          "fib62": 4505.1643
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4505.7934000000005,
      "stop": 4501.18,
      "target": 4512.713500000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T07:10:00Z; outcome=sl_first",
      "timestamp": "2026-05-29T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4517.056,
      "stop": 4511.53,
      "target": 4525.346,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T07:10:00Z",
      "outcome_time": "2026-05-29T07:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-29T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4517.056, stop=4511.53, target=4525.346. Pre-M15 range high=4524.14, low=4494.935.",
      "candidate": {
        "id": "candidate_v2_2026-05-29T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4511.53,
          "impulse_high": 4524.09,
          "fib50": 4517.8099999999995,
          "fib62": 4516.3027999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T08:05:00Z; outcome=sl_first",
      "timestamp": "2026-05-29T08:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4518.73,
      "stop": 4512.86,
      "target": 4527.534,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T08:05:00Z",
      "outcome_time": "2026-05-29T08:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-29T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4518.73, stop=4512.86, target=4527.534. Pre-M15 range high=4526.2, low=4494.935.",
      "candidate": {
        "id": "candidate_v2_2026-05-29T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4512.86,
          "impulse_high": 4526.2,
          "fib50": 4519.53,
          "fib62": 4517.9292
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T08-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-05-29T08:15:00Z; outcome=sl_first",
      "timestamp": "2026-05-29T08:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4513.938,
      "stop": 4510.695,
      "target": 4520.423,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T08:15:00Z",
      "outcome_time": "2026-05-29T08:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-29T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4513.938, stop=4510.695, target=4520.423. Pre-M15 range high=4526.2, low=4494.935.",
      "candidate": {
        "id": "candidate_v2_2026-05-29T08-00-00Z_long_order_block_reclaim",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4510.695,
          "ob_high": 4517.18,
          "displacement_high": 4526.04
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-05-29T12:20:00Z; outcome=sl_first",
      "timestamp": "2026-05-29T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4521.725,
      "stop": 4513.255,
      "target": 4534.43,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T12:20:00Z",
      "outcome_time": "2026-05-29T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-29T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4521.725, stop=4513.255, target=4534.43. Pre-M15 range high=4543.31, low=4509.955.",
      "candidate": {
        "id": "candidate_v2_2026-05-29T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4513.255,
          "impulse_high": 4532.505,
          "fib50": 4522.88,
          "fib62": 4520.57
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-05-29T14-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-05-29T14:25:00Z; outcome=sl_first",
      "timestamp": "2026-05-29T14:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4530.243,
      "stop": 4528.49,
      "target": 4533.748,
      "r": -1.0,
      "entry_touch_time": "2026-05-29T14:25:00Z",
      "outcome_time": "2026-05-29T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-05-29T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.243, stop=4528.49, target=4533.748. Pre-M15 range high=4552.655, low=4512.73.",
      "candidate": {
        "id": "candidate_v2_2026-05-29T14-15-00Z_long_breaker_continuation",
        "date": "2026-05-29",
        "timestamp": "2026-05-29T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4520.115,
          "breaker_low": 4528.49,
          "breaker_high": 4531.995,
          "break_high": 4543.31
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T00-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-01T00:50:00Z; outcome=tp_first",
      "timestamp": "2026-06-01T00:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4541.265,
      "stop": 4544.615,
      "target": 4534.565,
      "r": 2.0,
      "entry_touch_time": "2026-06-01T00:50:00Z",
      "outcome_time": "2026-06-01T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T00:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4541.265, stop=4544.615, target=4534.565. Pre-M15 range high=4560.29, low=4520.025.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T00-45-00Z_short_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T00:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4537.915,
          "ob_high": 4544.615,
          "displacement_low": 4535.39
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-01T01:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-01T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4527.375,
      "stop": 4520.025,
      "target": 4538.4,
      "r": -1.0,
      "entry_touch_time": "2026-06-01T01:10:00Z",
      "outcome_time": "2026-06-01T03:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4527.375, stop=4520.025, target=4538.4. Pre-M15 range high=4559.325, low=4520.025.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4520.025,
          "impulse_high": 4536.73,
          "fib50": 4528.3775,
          "fib62": 4526.372899999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T01-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-01T01-15-00Z_short_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4536.035,
          "ob_high": 4542.945,
          "displacement_low": 4526.325
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4539.49,
      "stop": 4542.945,
      "target": 4532.58,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-01T02:15:00Z; outcome=tp_first",
      "timestamp": "2026-06-01T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4534.795,
      "stop": 4541.45,
      "target": 4524.812,
      "r": 1.5,
      "entry_touch_time": "2026-06-01T02:15:00Z",
      "outcome_time": "2026-06-01T02:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4534.795, stop=4541.45, target=4524.812. Pre-M15 range high=4551.715, low=4520.025.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4526.325,
          "impulse_high": 4541.45,
          "fib50": 4533.8875,
          "fib62": 4535.702499999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T02-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-01T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-01T02:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4530.608,
      "stop": 4533.93,
      "target": 4523.962,
      "r": -1.0,
      "entry_touch_time": "2026-06-01T02:05:00Z",
      "outcome_time": "2026-06-01T02:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4530.608, stop=4533.93, target=4523.962. Pre-M15 range high=4548.98, low=4520.025.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T02-00-00Z_short_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4527.285,
          "ob_high": 4533.93,
          "displacement_low": 4523.715
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T03-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-01T04:00:00Z; outcome=tp_first",
      "timestamp": "2026-06-01T03:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4517.712,
      "stop": 4521.465,
      "target": 4510.207,
      "r": 2.0,
      "entry_touch_time": "2026-06-01T04:00:00Z",
      "outcome_time": "2026-06-01T04:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T03:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4517.712, stop=4521.465, target=4510.207. Pre-M15 range high=4546.27, low=4509.965.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T03-45-00Z_short_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T03:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4513.96,
          "ob_high": 4521.465,
          "displacement_low": 4509.99
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T06-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-01T10:45:00Z; outcome=tp_first",
      "timestamp": "2026-06-01T06:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4510.497,
      "stop": 4516.015,
      "target": 4499.462,
      "r": 2.0,
      "entry_touch_time": "2026-06-01T10:45:00Z",
      "outcome_time": "2026-06-01T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T06:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4510.497, stop=4516.015, target=4499.462. Pre-M15 range high=4534.825, low=4500.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T06-45-00Z_short_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T06:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4504.98,
          "ob_high": 4516.015,
          "displacement_low": 4501.67
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-01T07:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-01T07:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4508.535,
      "stop": 4514.99,
      "target": 4498.853,
      "r": 1.5,
      "entry_touch_time": "2026-06-01T07:05:00Z",
      "outcome_time": "2026-06-01T07:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4508.535, stop=4514.99, target=4498.853. Pre-M15 range high=4534.825, low=4500.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4500.32,
          "impulse_high": 4514.99,
          "fib50": 4507.655,
          "fib62": 4509.4154
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-01T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-01T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4498.424,
      "stop": 4504.69,
      "target": 4489.026,
      "r": -1.0,
      "entry_touch_time": "2026-06-01T08:40:00Z",
      "outcome_time": "2026-06-01T09:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4498.424, stop=4504.69, target=4489.026. Pre-M15 range high=4525.27, low=4490.45.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4490.45,
          "impulse_high": 4504.69,
          "fib50": 4497.57,
          "fib62": 4499.2788
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-01T15:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-01T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4465.391,
      "stop": 4478.78,
      "target": 4445.307,
      "r": -1.0,
      "entry_touch_time": "2026-06-01T15:05:00Z",
      "outcome_time": "2026-06-01T15:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4465.391, stop=4478.78, target=4445.307. Pre-M15 range high=4513.08, low=4447.86.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4448.35,
          "impulse_high": 4478.78,
          "fib50": 4463.5650000000005,
          "fib62": 4467.2166
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T14-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-01T15:25:00Z; outcome=sl_first",
      "timestamp": "2026-06-01T14:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4468.975,
      "stop": 4478.78,
      "target": 4449.365,
      "r": -1.0,
      "entry_touch_time": "2026-06-01T15:25:00Z",
      "outcome_time": "2026-06-01T15:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4468.975, stop=4478.78, target=4449.365. Pre-M15 range high=4513.08, low=4447.86.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T14-00-00Z_short_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4459.17,
          "ob_high": 4478.78,
          "displacement_low": 4448.35
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-01T17-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-02T01:00:00Z; outcome=tp_first",
      "timestamp": "2026-06-01T17:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4476.333,
      "stop": 4471.58,
      "target": 4485.838,
      "r": 2.0,
      "entry_touch_time": "2026-06-02T01:00:00Z",
      "outcome_time": "2026-06-02T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-01T17:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4476.333, stop=4471.58, target=4485.838. Pre-M15 range high=4510.55, low=4447.86.",
      "candidate": {
        "id": "candidate_v2_2026-06-01T17-30-00Z_long_order_block_reclaim",
        "date": "2026-06-01",
        "timestamp": "2026-06-01T17:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4471.58,
          "ob_high": 4481.085,
          "displacement_high": 4482.905
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T00-30-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-06-02T00:45:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-02T00:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4484.905,
      "stop": 4484.545,
      "target": 4485.625,
      "r": null,
      "entry_touch_time": "2026-06-02T00:45:00Z",
      "outcome_time": "2026-06-02T00:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4484.905, stop=4484.545, target=4485.625. Pre-M15 range high=4497.135, low=4476.91.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T00-30-00Z_long_breaker_continuation",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4476.91,
          "breaker_low": 4484.545,
          "breaker_high": 4485.265,
          "break_high": 4488.345
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T00-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-02T00:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T00:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4481.087,
      "stop": 4476.91,
      "target": 4489.442,
      "r": -1.0,
      "entry_touch_time": "2026-06-02T00:45:00Z",
      "outcome_time": "2026-06-02T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4481.087, stop=4476.91, target=4489.442. Pre-M15 range high=4497.135, low=4476.91.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T00-30-00Z_long_order_block_reclaim",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4476.91,
          "ob_high": 4485.265,
          "displacement_high": 4493.92
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-02T01:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-02T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4489.961,
      "stop": 4497.135,
      "target": 4479.2,
      "r": 1.5,
      "entry_touch_time": "2026-06-02T01:10:00Z",
      "outcome_time": "2026-06-02T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4489.961, stop=4497.135, target=4479.2. Pre-M15 range high=4497.135, low=4473.8.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4480.83,
          "impulse_high": 4497.135,
          "fib50": 4488.9825,
          "fib62": 4490.9391000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T02-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-06-02T02:15:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-02T02:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4481.23,
      "stop": 4481.325,
      "target": 4481.04,
      "r": null,
      "entry_touch_time": "2026-06-02T02:15:00Z",
      "outcome_time": "2026-06-02T02:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4481.23, stop=4481.325, target=4481.04. Pre-M15 range high=4497.135, low=4463.01.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T02-00-00Z_short_breaker_continuation",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4493.92,
          "breaker_low": 4481.135,
          "breaker_high": 4481.325,
          "break_low": 4476.91
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-02T02:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4477.786,
      "stop": 4489.395,
      "target": 4460.371,
      "r": -1.0,
      "entry_touch_time": "2026-06-02T02:10:00Z",
      "outcome_time": "2026-06-02T03:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4477.786, stop=4489.395, target=4460.371. Pre-M15 range high=4497.135, low=4463.01.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4463.01,
          "impulse_high": 4489.395,
          "fib50": 4476.2025,
          "fib62": 4479.3687
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T02-30-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Short: entry touched 2026-06-02T03:00:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T02:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4489.427,
      "stop": 4493.79,
      "target": 4480.702,
      "r": -1.0,
      "entry_touch_time": "2026-06-02T03:00:00Z",
      "outcome_time": "2026-06-02T03:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4489.427, stop=4493.79, target=4480.702. Pre-M15 range high=4497.135, low=4463.01.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T02-30-00Z_short_breaker_continuation",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4497.135,
          "breaker_low": 4485.065,
          "breaker_high": 4493.79,
          "break_low": 4476.91
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-02T09:30:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T09:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4524.535,
      "stop": 4517.07,
      "target": 4535.731,
      "r": -1.0,
      "entry_touch_time": "2026-06-02T09:30:00Z",
      "outcome_time": "2026-06-02T12:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4524.535, stop=4517.07, target=4535.731. Pre-M15 range high=4541.63, low=4503.52.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4517.07,
          "impulse_high": 4534.035,
          "fib50": 4525.5525,
          "fib62": 4523.5167
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T14-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-02T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T14:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4502.76,
      "stop": 4507.065,
      "target": 4494.15,
      "r": -1.0,
      "entry_touch_time": "2026-06-02T14:35:00Z",
      "outcome_time": "2026-06-02T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4502.76, stop=4507.065, target=4494.15. Pre-M15 range high=4534.845, low=4490.435.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T14-30-00Z_short_order_block_reclaim",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4498.455,
          "ob_high": 4507.065,
          "displacement_low": 4490.435
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T17-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-02T18:25:00Z; outcome=tp_first",
      "timestamp": "2026-06-02T17:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4489.195,
      "stop": 4491.795,
      "target": 4483.995,
      "r": 2.0,
      "entry_touch_time": "2026-06-02T18:25:00Z",
      "outcome_time": "2026-06-02T18:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T17:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4489.195, stop=4491.795, target=4483.995. Pre-M15 range high=4524.91, low=4482.14.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T17-45-00Z_short_order_block_reclaim",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T17:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4486.595,
          "ob_high": 4491.795,
          "displacement_low": 4482.14
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T18-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-02T18:50:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T18:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4487.575,
      "stop": 4491.075,
      "target": 4480.575,
      "r": -1.0,
      "entry_touch_time": "2026-06-02T18:50:00Z",
      "outcome_time": "2026-06-02T20:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T18:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4487.575, stop=4491.075, target=4480.575. Pre-M15 range high=4508.64, low=4478.785.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T18-45-00Z_short_order_block_reclaim",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T18:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4484.075,
          "ob_high": 4491.075,
          "displacement_low": 4478.785
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-02T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T00:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-02T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4488.745,
      "stop": 4492.355,
      "target": 4483.329,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T00:35:00Z",
      "outcome_time": "2026-06-03T00:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-02T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4488.745, stop=4492.355, target=4483.329. Pre-M15 range high=4493.32, low=4474.64.",
      "candidate": {
        "id": "candidate_v2_2026-06-02T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-02",
        "timestamp": "2026-06-02T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4484.15,
          "impulse_high": 4492.355,
          "fib50": 4488.2525,
          "fib62": 4489.237099999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4477.197,
      "stop": 4488.91,
      "target": 4459.628,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T00:05:00Z",
      "outcome_time": "2026-06-03T00:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4477.197, stop=4488.91, target=4459.628. Pre-M15 range high=4493.32, low=4462.29.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4462.29,
          "impulse_high": 4488.91,
          "fib50": 4475.6,
          "fib62": 4478.7944
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T00-45-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-06-03T00:55:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T00:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4486.962,
      "stop": 4485.015,
      "target": 4490.857,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T00:55:00Z",
      "outcome_time": "2026-06-03T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T00:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4486.962, stop=4485.015, target=4490.857. Pre-M15 range high=4496.885, low=4462.29.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T00-45-00Z_long_breaker_continuation",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T00:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4474.64,
          "breaker_low": 4485.015,
          "breaker_high": 4488.91,
          "break_high": 4493.32
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T00-45-00Z_short_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Short: entry touched 2026-06-03T00:50:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T00:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4489.08,
      "stop": 4490.115,
      "target": 4487.01,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T00:50:00Z",
      "outcome_time": "2026-06-03T00:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T00:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4489.08, stop=4490.115, target=4487.01. Pre-M15 range high=4496.885, low=4462.29.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T00-45-00Z_short_breaker_continuation",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T00:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4493.32,
          "breaker_low": 4488.045,
          "breaker_high": 4490.115,
          "break_low": 4478.785
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T01:50:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4477.175,
      "stop": 4487.81,
      "target": 4461.223,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T01:50:00Z",
      "outcome_time": "2026-06-03T04:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4477.175, stop=4487.81, target=4461.223. Pre-M15 range high=4496.885, low=4462.29.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4463.64,
          "impulse_high": 4487.81,
          "fib50": 4475.725,
          "fib62": 4478.625400000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T02-00-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-06-03T02:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-03T02:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4477.562,
      "stop": 4477.55,
      "target": 4477.587,
      "r": null,
      "entry_touch_time": "2026-06-03T02:05:00Z",
      "outcome_time": "2026-06-03T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4477.562, stop=4477.55, target=4477.587. Pre-M15 range high=4496.885, low=4462.29.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T02-00-00Z_long_breaker_continuation",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4462.29,
          "breaker_low": 4477.55,
          "breaker_high": 4477.575,
          "break_high": 4493.32
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T04-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-03T04:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-03T04:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4480.71,
      "stop": 4488.44,
      "target": 4465.25,
      "r": 2.0,
      "entry_touch_time": "2026-06-03T04:20:00Z",
      "outcome_time": "2026-06-03T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T04:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4480.71, stop=4488.44, target=4465.25. Pre-M15 range high=4496.885, low=4462.665.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T04-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T04:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4488.44,
          "fvg_low": 4477.385,
          "fvg_high": 4484.035
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T06:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4463.646,
      "stop": 4469.095,
      "target": 4455.471,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T06:05:00Z",
      "outcome_time": "2026-06-03T06:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4463.646, stop=4469.095, target=4455.471. Pre-M15 range high=4488.44, low=4456.71.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4456.71,
          "impulse_high": 4469.095,
          "fib50": 4462.9025,
          "fib62": 4464.3887
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T09:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4450.829,
      "stop": 4459.05,
      "target": 4438.497,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T09:15:00Z",
      "outcome_time": "2026-06-03T10:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4450.829, stop=4459.05, target=4438.497. Pre-M15 range high=4488.44, low=4440.365.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4440.365,
          "impulse_high": 4459.05,
          "fib50": 4449.7075,
          "fib62": 4451.9497
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T09-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-03T10:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-03T09:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4450.528,
      "stop": 4459.135,
      "target": 4433.312,
      "r": -1.0,
      "entry_touch_time": "2026-06-03T10:05:00Z",
      "outcome_time": "2026-06-03T10:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4450.528, stop=4459.135, target=4433.312. Pre-M15 range high=4474.455, low=4439.09.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T09-30-00Z_short_order_block_reclaim",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4441.92,
          "ob_high": 4459.135,
          "displacement_low": 4439.52
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T14:15:00Z; outcome=tp_first",
      "timestamp": "2026-06-03T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4457.26,
      "stop": 4466.205,
      "target": 4443.842,
      "r": 1.5,
      "entry_touch_time": "2026-06-03T14:15:00Z",
      "outcome_time": "2026-06-03T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4457.26, stop=4466.205, target=4443.842. Pre-M15 range high=4468.19, low=4426.42.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4445.875,
          "impulse_high": 4466.205,
          "fib50": 4456.04,
          "fib62": 4458.4796
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T19-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-03T19:15:00Z; outcome=tp_first",
      "timestamp": "2026-06-03T19:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4450.157,
      "stop": 4458.515,
      "target": 4437.62,
      "r": 1.5,
      "entry_touch_time": "2026-06-03T19:15:00Z",
      "outcome_time": "2026-06-03T20:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T19:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4450.157, stop=4458.515, target=4437.62. Pre-M15 range high=4459.745, low=4433.925.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T19-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T19:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4439.52,
          "impulse_high": 4458.515,
          "fib50": 4449.0175,
          "fib62": 4451.2969
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-03T22-45-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-06-03T22:55:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-03T22:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4448.255,
      "stop": 4449.875,
      "target": 4445.015,
      "r": null,
      "entry_touch_time": "2026-06-03T22:55:00Z",
      "outcome_time": "2026-06-03T22:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-03T22:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4448.255, stop=4449.875, target=4445.015. Pre-M15 range high=4453.23, low=4423.965.",
      "candidate": {
        "id": "candidate_v2_2026-06-03T22-45-00Z_short_breaker_continuation",
        "date": "2026-06-03",
        "timestamp": "2026-06-03T22:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4452.325,
          "breaker_low": 4446.635,
          "breaker_high": 4449.875,
          "break_low": 4433.925
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T01-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-04T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-04T01:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4456.483,
      "stop": 4443.18,
      "target": 4483.087,
      "r": 2.0,
      "entry_touch_time": "2026-06-04T01:05:00Z",
      "outcome_time": "2026-06-04T04:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4456.483, stop=4443.18, target=4483.087. Pre-M15 range high=4467.44, low=4423.965.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T01-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4443.18,
          "fvg_low": 4453.06,
          "fvg_high": 4459.905
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-04T02:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-04T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4456.719,
      "stop": 4443.18,
      "target": 4477.027,
      "r": 1.5,
      "entry_touch_time": "2026-06-04T02:10:00Z",
      "outcome_time": "2026-06-04T03:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4456.719, stop=4443.18, target=4477.027. Pre-M15 range high=4473.95, low=4423.965.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4443.18,
          "impulse_high": 4473.95,
          "fib50": 4458.5650000000005,
          "fib62": 4454.8726
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-04T03:25:00Z; outcome=tp_first",
      "timestamp": "2026-06-04T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4466.224,
      "stop": 4457.985,
      "target": 4478.583,
      "r": 1.5,
      "entry_touch_time": "2026-06-04T03:25:00Z",
      "outcome_time": "2026-06-04T04:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4466.224, stop=4457.985, target=4478.583. Pre-M15 range high=4477.37, low=4423.965.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4457.985,
          "impulse_high": 4476.71,
          "fib50": 4467.3475,
          "fib62": 4465.1005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-04T14:45:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-04T11:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4469.87,
      "stop": 4466.605,
      "target": 4474.767,
      "r": null,
      "entry_touch_time": "2026-06-04T14:45:00Z",
      "outcome_time": "2026-06-04T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4469.87, stop=4466.605, target=4474.767. Pre-M15 range high=4478.87, low=4458.665.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T11-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4466.605,
          "impulse_high": 4474.025,
          "fib50": 4470.315,
          "fib62": 4469.424599999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-04T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-04T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4496.619,
      "stop": 4482.365,
      "target": 4518.0,
      "r": -1.0,
      "entry_touch_time": "2026-06-04T12:05:00Z",
      "outcome_time": "2026-06-04T14:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4496.619, stop=4482.365, target=4518.0. Pre-M15 range high=4514.76, low=4458.665.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4482.365,
          "impulse_high": 4514.76,
          "fib50": 4498.5625,
          "fib62": 4494.6751
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T13-45-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-04T13:50:00Z; outcome=tp_first",
      "timestamp": "2026-06-04T13:45:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4501.145,
      "stop": 4515.515,
      "target": 4472.405,
      "r": 2.0,
      "entry_touch_time": "2026-06-04T13:50:00Z",
      "outcome_time": "2026-06-04T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4501.145, stop=4515.515, target=4472.405. Pre-M15 range high=4515.515, low=4461.035.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T13-45-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4515.515,
          "fvg_low": 4500.035,
          "fvg_high": 4502.255
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-04T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-04T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4478.832,
      "stop": 4468.785,
      "target": 4493.903,
      "r": -1.0,
      "entry_touch_time": "2026-06-04T14:35:00Z",
      "outcome_time": "2026-06-04T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4478.832, stop=4468.785, target=4493.903. Pre-M15 range high=4515.515, low=4464.35.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4468.785,
          "impulse_high": 4491.62,
          "fib50": 4480.202499999999,
          "fib62": 4477.4623
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-04T15:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-04T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4473.891,
      "stop": 4486.88,
      "target": 4454.408,
      "r": 1.5,
      "entry_touch_time": "2026-06-04T15:10:00Z",
      "outcome_time": "2026-06-05T00:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4473.891, stop=4486.88, target=4454.408. Pre-M15 range high=4515.515, low=4457.36.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4457.36,
          "impulse_high": 4486.88,
          "fib50": 4472.12,
          "fib62": 4475.6624
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-04T22-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-04T22:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-04T22:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4477.041,
      "stop": 4473.895,
      "target": 4481.76,
      "r": -1.0,
      "entry_touch_time": "2026-06-04T22:40:00Z",
      "outcome_time": "2026-06-04T22:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-04T22:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4477.041, stop=4473.895, target=4481.76. Pre-M15 range high=4484.125, low=4472.775.",
      "candidate": {
        "id": "candidate_v2_2026-06-04T22-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-04",
        "timestamp": "2026-06-04T22:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4473.895,
          "impulse_high": 4481.045,
          "fib50": 4477.47,
          "fib62": 4476.612
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-05T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-05T00:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-05T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4465.696,
      "stop": 4469.645,
      "target": 4459.772,
      "r": 1.5,
      "entry_touch_time": "2026-06-05T00:35:00Z",
      "outcome_time": "2026-06-05T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-05T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4465.696, stop=4469.645, target=4459.772. Pre-M15 range high=4483.555, low=4450.79.",
      "candidate": {
        "id": "candidate_v2_2026-06-05T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-05",
        "timestamp": "2026-06-05T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4460.67,
          "impulse_high": 4469.645,
          "fib50": 4465.1575,
          "fib62": 4466.2345000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-05T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-05T02:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-05T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4452.959,
      "stop": 4459.79,
      "target": 4442.713,
      "r": 1.5,
      "entry_touch_time": "2026-06-05T02:20:00Z",
      "outcome_time": "2026-06-05T02:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-05T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4452.959, stop=4459.79, target=4442.713. Pre-M15 range high=4481.625, low=4442.435.",
      "candidate": {
        "id": "candidate_v2_2026-06-05T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-05",
        "timestamp": "2026-06-05T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4444.265,
          "impulse_high": 4459.79,
          "fib50": 4452.0275,
          "fib62": 4453.8905
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-05T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-05T04:55:00Z; outcome=tp_first",
      "timestamp": "2026-06-05T04:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4446.138,
      "stop": 4451.99,
      "target": 4437.36,
      "r": 1.5,
      "entry_touch_time": "2026-06-05T04:55:00Z",
      "outcome_time": "2026-06-05T06:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-05T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4446.138, stop=4451.99, target=4437.36. Pre-M15 range high=4470.045, low=4435.305.",
      "candidate": {
        "id": "candidate_v2_2026-06-05T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-05",
        "timestamp": "2026-06-05T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4438.69,
          "impulse_high": 4451.99,
          "fib50": 4445.34,
          "fib62": 4446.936
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-05T11-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-05T11:30:00Z; outcome=sl_first",
      "timestamp": "2026-06-05T11:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4466.215,
      "stop": 4467.99,
      "target": 4462.665,
      "r": -1.0,
      "entry_touch_time": "2026-06-05T11:30:00Z",
      "outcome_time": "2026-06-05T11:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-05T11:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4466.215, stop=4467.99, target=4462.665. Pre-M15 range high=4469.465, low=4442.41.",
      "candidate": {
        "id": "candidate_v2_2026-06-05T11-15-00Z_short_order_block_reclaim",
        "date": "2026-06-05",
        "timestamp": "2026-06-05T11:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4464.44,
          "ob_high": 4467.99,
          "displacement_low": 4461.175
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-05T12-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-06-05T12:25:00Z; outcome=tp_first",
      "timestamp": "2026-06-05T12:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4463.862,
      "stop": 4461.525,
      "target": 4468.537,
      "r": 2.0,
      "entry_touch_time": "2026-06-05T12:25:00Z",
      "outcome_time": "2026-06-05T12:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-05T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4463.862, stop=4461.525, target=4468.537. Pre-M15 range high=4475.325, low=4458.28.",
      "candidate": {
        "id": "candidate_v2_2026-06-05T12-00-00Z_long_breaker_continuation",
        "date": "2026-06-05",
        "timestamp": "2026-06-05T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4458.28,
          "breaker_low": 4461.525,
          "breaker_high": 4466.2,
          "break_high": 4469.465
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-05T12-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-05T12:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-05T12:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4465.235,
      "stop": 4463.235,
      "target": 4469.235,
      "r": 2.0,
      "entry_touch_time": "2026-06-05T12:05:00Z",
      "outcome_time": "2026-06-05T12:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-05T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4465.235, stop=4463.235, target=4469.235. Pre-M15 range high=4475.325, low=4458.28.",
      "candidate": {
        "id": "candidate_v2_2026-06-05T12-00-00Z_long_order_block_reclaim",
        "date": "2026-06-05",
        "timestamp": "2026-06-05T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4463.235,
          "ob_high": 4467.235,
          "displacement_high": 4475.325
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T01-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-06-08T01:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-08T01:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4326.08,
      "stop": 4321.55,
      "target": 4335.14,
      "r": -1.0,
      "entry_touch_time": "2026-06-08T01:15:00Z",
      "outcome_time": "2026-06-08T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4326.08, stop=4321.55, target=4335.14. Pre-M15 range high=4353.45, low=4310.115.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T01-00-00Z_long_breaker_continuation",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4310.115,
          "breaker_low": 4321.55,
          "breaker_high": 4330.61,
          "break_high": 4342.355
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T01-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-08T01:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-08T01:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4321.475,
      "stop": 4316.02,
      "target": 4332.385,
      "r": -1.0,
      "entry_touch_time": "2026-06-08T01:15:00Z",
      "outcome_time": "2026-06-08T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4321.475, stop=4316.02, target=4332.385. Pre-M15 range high=4353.45, low=4310.115.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T01-00-00Z_long_order_block_reclaim",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4316.02,
          "ob_high": 4326.93,
          "displacement_high": 4334.275
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-08T02:00:00Z; outcome=tp_first",
      "timestamp": "2026-06-08T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4330.828,
      "stop": 4346.18,
      "target": 4307.801,
      "r": 1.5,
      "entry_touch_time": "2026-06-08T02:00:00Z",
      "outcome_time": "2026-06-08T02:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4330.828, stop=4346.18, target=4307.801. Pre-M15 range high=4353.45, low=4300.025.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4311.29,
          "impulse_high": 4346.18,
          "fib50": 4328.735000000001,
          "fib62": 4332.9218
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T05-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-08T05:20:00Z; outcome=sl_first",
      "timestamp": "2026-06-08T05:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4311.013,
      "stop": 4314.215,
      "target": 4304.608,
      "r": -1.0,
      "entry_touch_time": "2026-06-08T05:20:00Z",
      "outcome_time": "2026-06-08T05:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T05:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4311.013, stop=4314.215, target=4304.608. Pre-M15 range high=4352.435, low=4300.025.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T05-15-00Z_short_order_block_reclaim",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T05:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4307.81,
          "ob_high": 4314.215,
          "displacement_low": 4304.75
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-08T06:55:00Z; outcome=sl_first",
      "timestamp": "2026-06-08T06:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4293.635,
      "stop": 4313.4,
      "target": 4263.988,
      "r": -1.0,
      "entry_touch_time": "2026-06-08T06:55:00Z",
      "outcome_time": "2026-06-08T07:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4293.635, stop=4313.4, target=4263.988. Pre-M15 range high=4330.855, low=4268.48.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T06-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4268.48,
          "impulse_high": 4313.4,
          "fib50": 4290.94,
          "fib62": 4296.3304
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T06-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-08T06:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-08T06:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4309.555,
      "stop": 4314.56,
      "target": 4299.545,
      "r": 2.0,
      "entry_touch_time": "2026-06-08T06:20:00Z",
      "outcome_time": "2026-06-08T06:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4309.555, stop=4314.56, target=4299.545. Pre-M15 range high=4330.855, low=4268.48.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T06-00-00Z_short_order_block_reclaim",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4304.55,
          "ob_high": 4314.56,
          "displacement_low": 4268.48
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-08T09-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-08T09:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-08T09:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4291.13,
      "stop": 4273.165,
      "target": 4327.06,
      "r": 2.0,
      "entry_touch_time": "2026-06-08T09:35:00Z",
      "outcome_time": "2026-06-08T11:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-08T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4291.13, stop=4273.165, target=4327.06. Pre-M15 range high=4316.96, low=4268.48.",
      "candidate": {
        "id": "candidate_v2_2026-06-08T09-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-08",
        "timestamp": "2026-06-08T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4273.165,
          "fvg_low": 4291.075,
          "fvg_high": 4291.185
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-09T01:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-09T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4325.234,
      "stop": 4328.915,
      "target": 4319.714,
      "r": -1.0,
      "entry_touch_time": "2026-06-09T01:05:00Z",
      "outcome_time": "2026-06-09T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4325.234, stop=4328.915, target=4319.714. Pre-M15 range high=4331.81, low=4312.96.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4320.55,
          "impulse_high": 4328.915,
          "fib50": 4324.7325,
          "fib62": 4325.7363000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-09T04:30:00Z; outcome=tp_first",
      "timestamp": "2026-06-09T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4327.319,
      "stop": 4318.66,
      "target": 4340.308,
      "r": 1.5,
      "entry_touch_time": "2026-06-09T04:30:00Z",
      "outcome_time": "2026-06-09T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4327.319, stop=4318.66, target=4340.308. Pre-M15 range high=4338.945, low=4312.96.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4318.66,
          "impulse_high": 4338.34,
          "fib50": 4328.5,
          "fib62": 4326.1384
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-09T06:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-09T06:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4340.416,
      "stop": 4331.66,
      "target": 4353.55,
      "r": -1.0,
      "entry_touch_time": "2026-06-09T06:10:00Z",
      "outcome_time": "2026-06-09T06:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4340.416, stop=4331.66, target=4353.55. Pre-M15 range high=4351.56, low=4322.4.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T06-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4331.66,
          "impulse_high": 4351.56,
          "fib50": 4341.610000000001,
          "fib62": 4339.222
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T06-45-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-06-09T06:55:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-09T06:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4330.675,
      "stop": 4330.625,
      "target": 4330.775,
      "r": null,
      "entry_touch_time": "2026-06-09T06:55:00Z",
      "outcome_time": "2026-06-09T06:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T06:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4330.675, stop=4330.625, target=4330.775. Pre-M15 range high=4351.56, low=4324.33.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T06-45-00Z_long_breaker_continuation",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T06:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4324.33,
          "breaker_low": 4330.625,
          "breaker_high": 4330.725,
          "break_high": 4342.275
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-09T08:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-09T08:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4335.993,
      "stop": 4340.525,
      "target": 4329.195,
      "r": 1.5,
      "entry_touch_time": "2026-06-09T08:10:00Z",
      "outcome_time": "2026-06-09T08:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4335.993, stop=4340.525, target=4329.195. Pre-M15 range high=4351.56, low=4321.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4330.225,
          "impulse_high": 4340.525,
          "fib50": 4335.375,
          "fib62": 4336.611
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-09T09:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-09T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4332.198,
      "stop": 4337.02,
      "target": 4324.964,
      "r": 1.5,
      "entry_touch_time": "2026-06-09T09:20:00Z",
      "outcome_time": "2026-06-09T09:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4332.198, stop=4337.02, target=4324.964. Pre-M15 range high=4351.56, low=4321.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4326.06,
          "impulse_high": 4337.02,
          "fib50": 4331.540000000001,
          "fib62": 4332.8552
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T12-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-09T13:20:00Z; outcome=sl_first",
      "timestamp": "2026-06-09T12:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4332.538,
      "stop": 4329.865,
      "target": 4337.883,
      "r": -1.0,
      "entry_touch_time": "2026-06-09T13:20:00Z",
      "outcome_time": "2026-06-09T13:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4332.538, stop=4329.865, target=4337.883. Pre-M15 range high=4344.09, low=4321.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T12-30-00Z_long_order_block_reclaim",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4329.865,
          "ob_high": 4335.21,
          "displacement_high": 4340.965
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-09T13:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-09T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4338.877,
      "stop": 4345.62,
      "target": 4328.763,
      "r": -1.0,
      "entry_touch_time": "2026-06-09T13:45:00Z",
      "outcome_time": "2026-06-09T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4338.877, stop=4345.62, target=4328.763. Pre-M15 range high=4345.62, low=4324.19.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4330.295,
          "impulse_high": 4345.62,
          "fib50": 4337.9575,
          "fib62": 4339.7965
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-09T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4305.8,
          "impulse_high": 4336.22,
          "fib50": 4321.01,
          "fib62": 4324.660400000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4322.8352,
      "stop": 4336.22,
      "target": 4302.758000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-09T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4278.58,
          "impulse_high": 4321.11,
          "fib50": 4299.844999999999,
          "fib62": 4304.9486
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4302.3967999999995,
      "stop": 4321.11,
      "target": 4274.326999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-09T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-09T23:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-09T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4246.548,
      "stop": 4257.605,
      "target": 4229.962,
      "r": 1.5,
      "entry_touch_time": "2026-06-09T23:05:00Z",
      "outcome_time": "2026-06-09T23:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-09T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4246.548, stop=4257.605, target=4229.962. Pre-M15 range high=4274.345, low=4232.475.",
      "candidate": {
        "id": "candidate_v2_2026-06-09T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-09",
        "timestamp": "2026-06-09T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4232.475,
          "impulse_high": 4257.605,
          "fib50": 4245.04,
          "fib62": 4248.0556
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-10T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-10T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4205.065,
      "stop": 4219.2,
      "target": 4183.862,
      "r": 1.5,
      "entry_touch_time": "2026-06-10T01:35:00Z",
      "outcome_time": "2026-06-10T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4205.065, stop=4219.2, target=4183.862. Pre-M15 range high=4262.195, low=4184.67.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4187.075,
          "impulse_high": 4219.2,
          "fib50": 4203.1375,
          "fib62": 4206.992499999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-10T03:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-10T03:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4184.011,
      "stop": 4192.455,
      "target": 4171.346,
      "r": -1.0,
      "entry_touch_time": "2026-06-10T03:45:00Z",
      "outcome_time": "2026-06-10T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4184.011, stop=4192.455, target=4171.346. Pre-M15 range high=4250.04, low=4173.115.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4173.265,
          "impulse_high": 4192.455,
          "fib50": 4182.860000000001,
          "fib62": 4185.1628
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-10T05:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-10T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4196.84,
      "stop": 4207.015,
      "target": 4181.577,
      "r": -1.0,
      "entry_touch_time": "2026-06-10T05:40:00Z",
      "outcome_time": "2026-06-10T05:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4196.84, stop=4207.015, target=4181.577. Pre-M15 range high=4221.03, low=4172.565.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4183.89,
          "impulse_high": 4207.015,
          "fib50": 4195.4525,
          "fib62": 4198.2275
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-10T12:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-10T12:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4158.325,
      "stop": 4168.115,
      "target": 4143.64,
      "r": -1.0,
      "entry_touch_time": "2026-06-10T12:35:00Z",
      "outcome_time": "2026-06-10T12:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4158.325, stop=4168.115, target=4143.64. Pre-M15 range high=4193.085, low=4130.62.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4145.865,
          "impulse_high": 4168.115,
          "fib50": 4156.99,
          "fib62": 4159.66
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T14-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-10T14:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-10T14:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4142.317,
      "stop": 4133.065,
      "target": 4160.822,
      "r": -1.0,
      "entry_touch_time": "2026-06-10T14:45:00Z",
      "outcome_time": "2026-06-10T14:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4142.317, stop=4133.065, target=4160.822. Pre-M15 range high=4186.42, low=4130.62.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T14-30-00Z_long_order_block_reclaim",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4133.065,
          "ob_high": 4151.57,
          "displacement_high": 4179.295
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-11T01:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-10T19:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4093.232,
      "stop": 4102.25,
      "target": 4079.706,
      "r": -1.0,
      "entry_touch_time": "2026-06-11T01:15:00Z",
      "outcome_time": "2026-06-11T01:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4093.232, stop=4102.25, target=4079.706. Pre-M15 range high=4151.915, low=4081.755.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4081.755,
          "impulse_high": 4102.25,
          "fib50": 4092.0025,
          "fib62": 4094.4619000000002
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-10T22-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-10T22:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-10T22:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4051.566,
      "stop": 4063.75,
      "target": 4033.291,
      "r": -1.0,
      "entry_touch_time": "2026-06-10T22:35:00Z",
      "outcome_time": "2026-06-10T22:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-10T22:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4051.566, stop=4063.75, target=4033.291. Pre-M15 range high=4135.08, low=4036.06.",
      "candidate": {
        "id": "candidate_v2_2026-06-10T22-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-10",
        "timestamp": "2026-06-10T22:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4036.06,
          "impulse_high": 4063.75,
          "fib50": 4049.9049999999997,
          "fib62": 4053.2278
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-11T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-11T00:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-11T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4055.855,
      "stop": 4064.6,
      "target": 4042.738,
      "r": 1.5,
      "entry_touch_time": "2026-06-11T00:10:00Z",
      "outcome_time": "2026-06-11T00:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-11T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4055.855, stop=4064.6, target=4042.738. Pre-M15 range high=4118.19, low=4023.87.",
      "candidate": {
        "id": "candidate_v2_2026-06-11T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-11",
        "timestamp": "2026-06-11T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4044.725,
          "impulse_high": 4064.6,
          "fib50": 4054.6625,
          "fib62": 4057.0475
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-11T06-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-11T06:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-11T06:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4077.137,
      "stop": 4072.885,
      "target": 4085.642,
      "r": 2.0,
      "entry_touch_time": "2026-06-11T06:10:00Z",
      "outcome_time": "2026-06-11T06:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-11T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4077.137, stop=4072.885, target=4085.642. Pre-M15 range high=4118.395, low=4052.295.",
      "candidate": {
        "id": "candidate_v2_2026-06-11T06-00-00Z_long_order_block_reclaim",
        "date": "2026-06-11",
        "timestamp": "2026-06-11T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4072.885,
          "ob_high": 4081.39,
          "displacement_high": 4099.785
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-11T09-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-11T09:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-11T09:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "London",
      "entry": 4089.55,
      "stop": 4077.645,
      "target": 4113.36,
      "r": -1.0,
      "entry_touch_time": "2026-06-11T09:40:00Z",
      "outcome_time": "2026-06-11T12:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-11T09:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4089.55, stop=4077.645, target=4113.36. Pre-M15 range high=4112.725, low=4072.885.",
      "candidate": {
        "id": "candidate_v2_2026-06-11T09-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-11",
        "timestamp": "2026-06-11T09:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4077.645,
          "fvg_low": 4089.025,
          "fvg_high": 4090.075
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-11T14-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-11T14:25:00Z; outcome=sl_first",
      "timestamp": "2026-06-11T14:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4083.31,
      "stop": 4092.92,
      "target": 4064.09,
      "r": -1.0,
      "entry_touch_time": "2026-06-11T14:25:00Z",
      "outcome_time": "2026-06-11T15:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-11T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4083.31, stop=4092.92, target=4064.09. Pre-M15 range high=4096.54, low=4052.975.",
      "candidate": {
        "id": "candidate_v2_2026-06-11T14-15-00Z_short_order_block_reclaim",
        "date": "2026-06-11",
        "timestamp": "2026-06-11T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4073.7,
          "ob_high": 4092.92,
          "displacement_low": 4052.975
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-11T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-11T18:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-11T18:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4131.791,
      "stop": 4101.695,
      "target": 4176.935,
      "r": 1.5,
      "entry_touch_time": "2026-06-11T18:05:00Z",
      "outcome_time": "2026-06-11T19:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-11T18:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4131.791, stop=4101.695, target=4176.935. Pre-M15 range high=4170.095, low=4052.975.",
      "candidate": {
        "id": "candidate_v2_2026-06-11T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-11",
        "timestamp": "2026-06-11T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4101.695,
          "impulse_high": 4170.095,
          "fib50": 4135.895,
          "fib62": 4127.687
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-11T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-11T23:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-11T23:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4226.941,
      "stop": 4211.405,
      "target": 4250.246,
      "r": -1.0,
      "entry_touch_time": "2026-06-11T23:05:00Z",
      "outcome_time": "2026-06-12T00:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-11T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4226.941, stop=4211.405, target=4250.246. Pre-M15 range high=4246.715, low=4074.505.",
      "candidate": {
        "id": "candidate_v2_2026-06-11T23-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-11",
        "timestamp": "2026-06-11T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4211.405,
          "impulse_high": 4246.715,
          "fib50": 4229.0599999999995,
          "fib62": 4224.8228
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T00-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-12T08:15:00Z; outcome=tp_first",
      "timestamp": "2026-06-12T00:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4218.922,
      "stop": 4230.53,
      "target": 4195.707,
      "r": 2.0,
      "entry_touch_time": "2026-06-12T08:15:00Z",
      "outcome_time": "2026-06-12T12:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T00:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4218.922, stop=4230.53, target=4195.707. Pre-M15 range high=4246.715, low=4161.94.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T00-45-00Z_short_order_block_reclaim",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T00:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4207.315,
          "ob_high": 4230.53,
          "displacement_low": 4202.685
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T03-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-12T03:30:00Z; outcome=tp_first",
      "timestamp": "2026-06-12T03:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4204.73,
      "stop": 4208.585,
      "target": 4197.02,
      "r": 2.0,
      "entry_touch_time": "2026-06-12T03:30:00Z",
      "outcome_time": "2026-06-12T03:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T03:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4204.73, stop=4208.585, target=4197.02. Pre-M15 range high=4246.715, low=4171.405.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T03-15-00Z_short_order_block_reclaim",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T03:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4200.875,
          "ob_high": 4208.585,
          "displacement_low": 4182.955
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-12T10:25:00Z; outcome=sl_first",
      "timestamp": "2026-06-12T10:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4204.734,
      "stop": 4192.165,
      "target": 4223.586,
      "r": -1.0,
      "entry_touch_time": "2026-06-12T10:25:00Z",
      "outcome_time": "2026-06-12T12:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4204.734, stop=4192.165, target=4223.586. Pre-M15 range high=4228.07, low=4170.29.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T10-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4192.165,
          "impulse_high": 4220.73,
          "fib50": 4206.4475,
          "fib62": 4203.0197
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-12T14:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-12T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4198.249,
      "stop": 4210.325,
      "target": 4180.136,
      "r": 1.5,
      "entry_touch_time": "2026-06-12T14:05:00Z",
      "outcome_time": "2026-06-12T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4198.249, stop=4210.325, target=4180.136. Pre-M15 range high=4228.07, low=4182.88.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4182.88,
          "impulse_high": 4210.325,
          "fib50": 4196.6025,
          "fib62": 4199.8958999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T14-45-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-12T14:50:00Z; outcome=tp_first",
      "timestamp": "2026-06-12T14:45:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY AM",
      "entry": 4196.87,
      "stop": 4177.25,
      "target": 4236.11,
      "r": 2.0,
      "entry_touch_time": "2026-06-12T14:50:00Z",
      "outcome_time": "2026-06-14T22:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T14:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4196.87, stop=4177.25, target=4236.11. Pre-M15 range high=4225.71, low=4177.25.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T14-45-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T14:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4177.25,
          "fvg_low": 4193.36,
          "fvg_high": 4200.38
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-12T15:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-12T15:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4215.916,
      "stop": 4200.38,
      "target": 4239.221,
      "r": 1.5,
      "entry_touch_time": "2026-06-12T15:35:00Z",
      "outcome_time": "2026-06-14T22:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4215.916, stop=4200.38, target=4239.221. Pre-M15 range high=4235.69, low=4177.25.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4200.38,
          "impulse_high": 4235.69,
          "fib50": 4218.035,
          "fib62": 4213.7978
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T15-45-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-06-12T19:30:00Z; outcome=sl_first",
      "timestamp": "2026-06-12T15:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4206.653,
      "stop": 4202.98,
      "target": 4213.998,
      "r": -1.0,
      "entry_touch_time": "2026-06-12T19:30:00Z",
      "outcome_time": "2026-06-12T19:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T15:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4206.653, stop=4202.98, target=4213.998. Pre-M15 range high=4235.69, low=4177.25.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T15-45-00Z_long_breaker_continuation",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4182.88,
          "breaker_low": 4202.98,
          "breaker_high": 4210.325,
          "break_high": 4218.77
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-12T20-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-12T20:20:00Z; outcome=sl_first",
      "timestamp": "2026-06-12T20:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4216.97,
      "stop": 4219.565,
      "target": 4211.78,
      "r": -1.0,
      "entry_touch_time": "2026-06-12T20:20:00Z",
      "outcome_time": "2026-06-14T22:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-12T20:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4216.97, stop=4219.565, target=4211.78. Pre-M15 range high=4235.485, low=4201.82.",
      "candidate": {
        "id": "candidate_v2_2026-06-12T20-15-00Z_short_order_block_reclaim",
        "date": "2026-06-12",
        "timestamp": "2026-06-12T20:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4214.375,
          "ob_high": 4219.565,
          "displacement_low": 4207.93
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-15T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4281.77,
          "impulse_high": 4295.225,
          "fib50": 4288.4975,
          "fib62": 4286.8829000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4287.690200000001,
      "stop": 4281.77,
      "target": 4296.570500000002,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-15T05:50:00Z; outcome=sl_first",
      "timestamp": "2026-06-15T05:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4309.366,
      "stop": 4301.235,
      "target": 4321.563,
      "r": -1.0,
      "entry_touch_time": "2026-06-15T05:50:00Z",
      "outcome_time": "2026-06-15T06:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-15T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4309.366, stop=4301.235, target=4321.563. Pre-M15 range high=4335.57, low=4285.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-15T05-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4301.235,
          "impulse_high": 4319.715,
          "fib50": 4310.475,
          "fib62": 4308.2573999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T08-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-15T08:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-15T08:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4329.513,
      "stop": 4333.05,
      "target": 4322.438,
      "r": -1.0,
      "entry_touch_time": "2026-06-15T08:10:00Z",
      "outcome_time": "2026-06-15T08:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-15T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4329.513, stop=4333.05, target=4322.438. Pre-M15 range high=4333.05, low=4301.005.",
      "candidate": {
        "id": "candidate_v2_2026-06-15T08-00-00Z_short_order_block_reclaim",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4325.975,
          "ob_high": 4333.05,
          "displacement_low": 4312.725
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-15T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-15T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4341.391,
      "stop": 4335.09,
      "target": 4350.842,
      "r": 1.5,
      "entry_touch_time": "2026-06-15T13:05:00Z",
      "outcome_time": "2026-06-15T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-15T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4341.391, stop=4335.09, target=4350.842. Pre-M15 range high=4350.445, low=4324.8.",
      "candidate": {
        "id": "candidate_v2_2026-06-15T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4335.09,
          "impulse_high": 4349.41,
          "fib50": 4342.25,
          "fib62": 4340.5316
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-15T14:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-15T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4360.901,
      "stop": 4354.015,
      "target": 4371.23,
      "r": -1.0,
      "entry_touch_time": "2026-06-15T14:45:00Z",
      "outcome_time": "2026-06-15T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-15T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4360.901, stop=4354.015, target=4371.23. Pre-M15 range high=4369.665, low=4324.8.",
      "candidate": {
        "id": "candidate_v2_2026-06-15T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4354.015,
          "impulse_high": 4369.665,
          "fib50": 4361.84,
          "fib62": 4359.962
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T20-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-15T23:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-15T20:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4318.92,
      "stop": 4321.11,
      "target": 4314.54,
      "r": 2.0,
      "entry_touch_time": "2026-06-15T23:35:00Z",
      "outcome_time": "2026-06-15T23:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-15T20:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4318.92, stop=4321.11, target=4314.54. Pre-M15 range high=4360.855, low=4310.785.",
      "candidate": {
        "id": "candidate_v2_2026-06-15T20-15-00Z_short_order_block_reclaim",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T20:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4316.73,
          "ob_high": 4321.11,
          "displacement_low": 4315.82
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-15T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-15T23:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-15T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4317.119,
      "stop": 4322.095,
      "target": 4309.654,
      "r": 1.5,
      "entry_touch_time": "2026-06-15T23:35:00Z",
      "outcome_time": "2026-06-16T00:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-15T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4317.119, stop=4322.095, target=4309.654. Pre-M15 range high=4334.955, low=4306.11.",
      "candidate": {
        "id": "candidate_v2_2026-06-15T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-15",
        "timestamp": "2026-06-15T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4310.785,
          "impulse_high": 4322.095,
          "fib50": 4316.4400000000005,
          "fib62": 4317.7972
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-16T00:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4313.341,
      "stop": 4318.335,
      "target": 4305.85,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T00:35:00Z",
      "outcome_time": "2026-06-16T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4313.341, stop=4318.335, target=4305.85. Pre-M15 range high=4327.38, low=4306.11.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4306.985,
          "impulse_high": 4318.335,
          "fib50": 4312.66,
          "fib62": 4314.022
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T05-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-16T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T05:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4322.925,
      "stop": 4331.0,
      "target": 4306.775,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T05:35:00Z",
      "outcome_time": "2026-06-16T07:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4322.925, stop=4331.0, target=4306.775. Pre-M15 range high=4333.375, low=4307.7.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T05-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4331.0,
          "fvg_low": 4321.215,
          "fvg_high": 4324.635
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-16T06:55:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4323.626,
      "stop": 4331.0,
      "target": 4312.564,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T06:55:00Z",
      "outcome_time": "2026-06-16T07:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4323.626, stop=4331.0, target=4312.564. Pre-M15 range high=4333.375, low=4307.7.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4314.24,
          "impulse_high": 4331.0,
          "fib50": 4322.62,
          "fib62": 4324.6312
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T07-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-16T07:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T07:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4326.36,
      "stop": 4328.085,
      "target": 4322.91,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T07:05:00Z",
      "outcome_time": "2026-06-16T07:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4326.36, stop=4328.085, target=4322.91. Pre-M15 range high=4333.375, low=4308.375.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T07-00-00Z_short_order_block_reclaim",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4324.635,
          "ob_high": 4328.085,
          "displacement_low": 4316.165
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T08-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-16T14:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T08:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4329.425,
      "stop": 4326.105,
      "target": 4336.065,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T14:15:00Z",
      "outcome_time": "2026-06-16T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4329.425, stop=4326.105, target=4336.065. Pre-M15 range high=4340.175, low=4313.53.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T08-00-00Z_long_order_block_reclaim",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4326.105,
          "ob_high": 4332.745,
          "displacement_high": 4335.585
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T11-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-16T11:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-16T11:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4345.12,
      "stop": 4349.655,
      "target": 4336.05,
      "r": 2.0,
      "entry_touch_time": "2026-06-16T11:05:00Z",
      "outcome_time": "2026-06-16T11:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4345.12, stop=4349.655, target=4336.05. Pre-M15 range high=4349.655, low=4314.215.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T11-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4349.655,
          "fvg_low": 4343.585,
          "fvg_high": 4346.655
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T13-00-00Z_long_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Long: entry touched 2026-06-16T13:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-16T13:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4342.302,
      "stop": 4342.165,
      "target": 4342.577,
      "r": 2.0,
      "entry_touch_time": "2026-06-16T13:10:00Z",
      "outcome_time": "2026-06-16T13:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4342.302, stop=4342.165, target=4342.577. Pre-M15 range high=4354.95, low=4335.165.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T13-00-00Z_long_breaker_continuation",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4335.165,
          "breaker_low": 4342.165,
          "breaker_high": 4342.44,
          "break_high": 4349.655
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-16T13:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4347.474,
      "stop": 4341.6,
      "target": 4356.285,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T13:05:00Z",
      "outcome_time": "2026-06-16T13:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4347.474, stop=4341.6, target=4356.285. Pre-M15 range high=4354.95, low=4335.165.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4341.6,
          "impulse_high": 4354.95,
          "fib50": 4348.275,
          "fib62": 4346.673
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T13-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-16T13:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T13:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4341.305,
      "stop": 4337.5,
      "target": 4348.915,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T13:15:00Z",
      "outcome_time": "2026-06-16T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4341.305, stop=4337.5, target=4348.915. Pre-M15 range high=4354.95, low=4335.165.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T13-00-00Z_long_order_block_reclaim",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4337.5,
          "ob_high": 4345.11,
          "displacement_high": 4349.76
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-16T15:50:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T14:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4329.586,
      "stop": 4338.89,
      "target": 4315.63,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T15:50:00Z",
      "outcome_time": "2026-06-16T15:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4329.586, stop=4338.89, target=4315.63. Pre-M15 range high=4354.95, low=4313.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T14-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4317.745,
          "impulse_high": 4338.89,
          "fib50": 4328.3175,
          "fib62": 4330.8549
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T15-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-16T15:50:00Z; outcome=tp_first",
      "timestamp": "2026-06-16T15:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4335.21,
      "stop": 4338.89,
      "target": 4327.85,
      "r": 2.0,
      "entry_touch_time": "2026-06-16T15:50:00Z",
      "outcome_time": "2026-06-16T15:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T15:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4335.21, stop=4338.89, target=4327.85. Pre-M15 range high=4354.95, low=4313.32.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T15-45-00Z_short_order_block_reclaim",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T15:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4331.53,
          "ob_high": 4338.89,
          "displacement_low": 4317.745
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-16T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-16T23:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-16T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4332.831,
      "stop": 4330.14,
      "target": 4336.867,
      "r": -1.0,
      "entry_touch_time": "2026-06-16T23:45:00Z",
      "outcome_time": "2026-06-16T23:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-16T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4332.831, stop=4330.14, target=4336.867. Pre-M15 range high=4342.94, low=4328.975.",
      "candidate": {
        "id": "candidate_v2_2026-06-16T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-16",
        "timestamp": "2026-06-16T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4330.14,
          "impulse_high": 4336.255,
          "fib50": 4333.1975,
          "fib62": 4332.4637
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-17T00:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4333.539,
      "stop": 4336.65,
      "target": 4328.873,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T00:45:00Z",
      "outcome_time": "2026-06-17T00:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4333.539, stop=4336.65, target=4328.873. Pre-M15 range high=4342.94, low=4328.615.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4329.58,
          "impulse_high": 4336.65,
          "fib50": 4333.115,
          "fib62": 4333.9634
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T00-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-17T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T00:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4335.802,
      "stop": 4328.615,
      "target": 4350.177,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T00:05:00Z",
      "outcome_time": "2026-06-17T04:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4335.802, stop=4328.615, target=4350.177. Pre-M15 range high=4342.94, low=4328.615.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T00-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4328.615,
          "fvg_low": 4335.16,
          "fvg_high": 4336.445
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-17T00:45:00Z; outcome=tp_first",
      "timestamp": "2026-06-17T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4334.41,
      "stop": 4328.615,
      "target": 4343.102,
      "r": 1.5,
      "entry_touch_time": "2026-06-17T00:45:00Z",
      "outcome_time": "2026-06-17T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4334.41, stop=4328.615, target=4343.102. Pre-M15 range high=4342.92, low=4328.615.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4328.615,
          "impulse_high": 4341.785,
          "fib50": 4335.2,
          "fib62": 4333.6196
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T01-15-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-06-17T02:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T01:15:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4335.6,
      "stop": 4331.03,
      "target": 4344.74,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T02:45:00Z",
      "outcome_time": "2026-06-17T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4335.6, stop=4331.03, target=4344.74. Pre-M15 range high=4349.605, low=4328.615.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T01-15-00Z_long_breaker_continuation",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4328.615,
          "breaker_low": 4331.03,
          "breaker_high": 4340.17,
          "break_high": 4338.57
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-17T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4341.015,
      "stop": 4334.265,
      "target": 4351.139,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T01:35:00Z",
      "outcome_time": "2026-06-17T02:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4341.015, stop=4334.265, target=4351.139. Pre-M15 range high=4349.605, low=4328.615.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4334.265,
          "impulse_high": 4349.605,
          "fib50": 4341.9349999999995,
          "fib62": 4340.0942000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-17T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4329.712,
      "stop": 4334.18,
      "target": 4323.01,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T05:35:00Z",
      "outcome_time": "2026-06-17T05:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4329.712, stop=4334.18, target=4323.01. Pre-M15 range high=4349.605, low=4317.665.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4324.025,
          "impulse_high": 4334.18,
          "fib50": 4329.1025,
          "fib62": 4330.3211
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-17T12:20:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4325.584,
      "stop": 4329.155,
      "target": 4320.228,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T12:20:00Z",
      "outcome_time": "2026-06-17T12:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4325.584, stop=4329.155, target=4320.228. Pre-M15 range high=4335.81, low=4317.19.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4321.04,
          "impulse_high": 4329.155,
          "fib50": 4325.0975,
          "fib62": 4326.0713
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-17T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-17T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4328.93,
      "stop": 4323.54,
      "target": 4337.015,
      "r": 1.5,
      "entry_touch_time": "2026-06-17T13:05:00Z",
      "outcome_time": "2026-06-17T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4328.93, stop=4323.54, target=4337.015. Pre-M15 range high=4335.81, low=4317.19.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4323.54,
          "impulse_high": 4335.79,
          "fib50": 4329.665,
          "fib62": 4328.195
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-17T14:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4347.411,
      "stop": 4335.67,
      "target": 4365.023,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T14:45:00Z",
      "outcome_time": "2026-06-17T14:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4347.411, stop=4335.67, target=4365.023. Pre-M15 range high=4364.09, low=4319.94.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4335.67,
          "impulse_high": 4362.355,
          "fib50": 4349.0125,
          "fib62": 4345.8103
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-17T18-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T18:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4360.93,
          "impulse_high": 4382.615,
          "fib50": 4371.7725,
          "fib62": 4369.1703
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4370.4714,
      "stop": 4360.93,
      "target": 4384.7835000000005,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T18-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-17T18-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4277.305,
          "impulse_high": 4379.505,
          "fib50": 4328.405000000001,
          "fib62": 4340.669
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4334.537,
      "stop": 4379.505,
      "target": 4267.085000000001,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-17T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-17T20:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-17T20:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4265.232,
      "stop": 4295.7,
      "target": 4219.53,
      "r": -1.0,
      "entry_touch_time": "2026-06-17T20:15:00Z",
      "outcome_time": "2026-06-18T00:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-17T20:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4265.232, stop=4295.7, target=4219.53. Pre-M15 range high=4382.615, low=4219.165.",
      "candidate": {
        "id": "candidate_v2_2026-06-17T20-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-17",
        "timestamp": "2026-06-17T20:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4226.455,
          "impulse_high": 4295.7,
          "fib50": 4261.077499999999,
          "fib62": 4269.3868999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-18T01-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-18T02:50:00Z; outcome=tp_first",
      "timestamp": "2026-06-18T01:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4311.73,
      "stop": 4308.07,
      "target": 4319.05,
      "r": 2.0,
      "entry_touch_time": "2026-06-18T02:50:00Z",
      "outcome_time": "2026-06-18T03:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-18T01:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4311.73, stop=4308.07, target=4319.05. Pre-M15 range high=4328.545, low=4219.165.",
      "candidate": {
        "id": "candidate_v2_2026-06-18T01-15-00Z_long_order_block_reclaim",
        "date": "2026-06-18",
        "timestamp": "2026-06-18T01:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4308.07,
          "ob_high": 4315.39,
          "displacement_high": 4328.545
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-18T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-18T03:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-18T03:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4318.79,
      "stop": 4325.41,
      "target": 4308.86,
      "r": 1.5,
      "entry_touch_time": "2026-06-18T03:35:00Z",
      "outcome_time": "2026-06-18T05:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-18T03:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4318.79, stop=4325.41, target=4308.86. Pre-M15 range high=4329.865, low=4260.495.",
      "candidate": {
        "id": "candidate_v2_2026-06-18T03-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-18",
        "timestamp": "2026-06-18T03:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4310.365,
          "impulse_high": 4325.41,
          "fib50": 4317.8875,
          "fib62": 4319.6929
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-18T05-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-18T05:40:00Z; outcome=tp_first",
      "timestamp": "2026-06-18T05:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4313.702,
      "stop": 4324.91,
      "target": 4291.287,
      "r": 2.0,
      "entry_touch_time": "2026-06-18T05:40:00Z",
      "outcome_time": "2026-06-18T07:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-18T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4313.702, stop=4324.91, target=4291.287. Pre-M15 range high=4329.865, low=4306.83.",
      "candidate": {
        "id": "candidate_v2_2026-06-18T05-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-18",
        "timestamp": "2026-06-18T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4324.91,
          "fvg_low": 4311.815,
          "fvg_high": 4315.59
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-18T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-18T12:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-18T12:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4263.872,
      "stop": 4270.96,
      "target": 4253.239,
      "r": 1.5,
      "entry_touch_time": "2026-06-18T12:20:00Z",
      "outcome_time": "2026-06-18T12:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-18T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4263.872, stop=4270.96, target=4253.239. Pre-M15 range high=4309.375, low=4240.07.",
      "candidate": {
        "id": "candidate_v2_2026-06-18T12-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-18",
        "timestamp": "2026-06-18T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4254.85,
          "impulse_high": 4270.96,
          "fib50": 4262.905000000001,
          "fib62": 4264.8382
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-18T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-18T19:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-18T19:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4211.647,
      "stop": 4219.29,
      "target": 4200.183,
      "r": -1.0,
      "entry_touch_time": "2026-06-18T19:40:00Z",
      "outcome_time": "2026-06-18T20:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-18T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4211.647, stop=4219.29, target=4200.183. Pre-M15 range high=4254.845, low=4201.495.",
      "candidate": {
        "id": "candidate_v2_2026-06-18T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-18",
        "timestamp": "2026-06-18T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4201.92,
          "impulse_high": 4219.29,
          "fib50": 4210.605,
          "fib62": 4212.6894
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-18T19-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-18T19:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-18T19:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 4211.12,
      "stop": 4201.495,
      "target": 4230.37,
      "r": -1.0,
      "entry_touch_time": "2026-06-18T19:40:00Z",
      "outcome_time": "2026-06-18T23:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-18T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4211.12, stop=4201.495, target=4230.37. Pre-M15 range high=4254.845, low=4201.495.",
      "candidate": {
        "id": "candidate_v2_2026-06-18T19-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-18",
        "timestamp": "2026-06-18T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4201.495,
          "fvg_low": 4208.935,
          "fvg_high": 4213.305
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-19T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-19T05:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-19T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4137.78,
      "stop": 4147.645,
      "target": 4122.983,
      "r": -1.0,
      "entry_touch_time": "2026-06-19T05:45:00Z",
      "outcome_time": "2026-06-19T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-19T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4137.78, stop=4147.645, target=4122.983. Pre-M15 range high=4194.665, low=4121.955.",
      "candidate": {
        "id": "candidate_v2_2026-06-19T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-19",
        "timestamp": "2026-06-19T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4125.225,
          "impulse_high": 4147.645,
          "fib50": 4136.435,
          "fib62": 4139.125400000001
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-19T05-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-19T06:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-19T05:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4145.722,
      "stop": 4149.83,
      "target": 4137.507,
      "r": 2.0,
      "entry_touch_time": "2026-06-19T06:10:00Z",
      "outcome_time": "2026-06-19T06:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-19T05:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4145.722, stop=4149.83, target=4137.507. Pre-M15 range high=4194.665, low=4121.955.",
      "candidate": {
        "id": "candidate_v2_2026-06-19T05-45-00Z_short_order_block_reclaim",
        "date": "2026-06-19",
        "timestamp": "2026-06-19T05:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4141.615,
          "ob_high": 4149.83,
          "displacement_low": 4133.49
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-19T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-19T07:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-19T07:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4158.331,
      "stop": 4167.98,
      "target": 4143.857,
      "r": -1.0,
      "entry_touch_time": "2026-06-19T07:05:00Z",
      "outcome_time": "2026-06-19T08:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-19T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4158.331, stop=4167.98, target=4143.857. Pre-M15 range high=4183.755, low=4121.955.",
      "candidate": {
        "id": "candidate_v2_2026-06-19T07-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-19",
        "timestamp": "2026-06-19T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4146.05,
          "impulse_high": 4167.98,
          "fib50": 4157.014999999999,
          "fib62": 4159.6466
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-19T13-45-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-06-19T14:15:00Z; outcome=sl_first",
      "timestamp": "2026-06-19T13:45:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4147.538,
      "stop": 4144.34,
      "target": 4153.933,
      "r": -1.0,
      "entry_touch_time": "2026-06-19T14:15:00Z",
      "outcome_time": "2026-06-19T14:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-19T13:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4147.538, stop=4144.34, target=4153.933. Pre-M15 range high=4183.125, low=4142.035.",
      "candidate": {
        "id": "candidate_v2_2026-06-19T13-45-00Z_long_breaker_continuation",
        "date": "2026-06-19",
        "timestamp": "2026-06-19T13:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4142.035,
          "breaker_low": 4144.34,
          "breaker_high": 4150.735,
          "break_high": 4178.525
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-19T15-00-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-06-19T15:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-19T15:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4150.013,
      "stop": 4149.72,
      "target": 4150.598,
      "r": null,
      "entry_touch_time": "2026-06-19T15:05:00Z",
      "outcome_time": "2026-06-19T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-19T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4150.013, stop=4149.72, target=4150.598. Pre-M15 range high=4183.125, low=4142.035.",
      "candidate": {
        "id": "candidate_v2_2026-06-19T15-00-00Z_long_breaker_continuation",
        "date": "2026-06-19",
        "timestamp": "2026-06-19T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4142.695,
          "breaker_low": 4149.72,
          "breaker_high": 4150.305,
          "break_high": 4178.525
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-22T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-22T00:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-22T00:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4148.046,
      "stop": 4156.965,
      "target": 4134.668,
      "r": -1.0,
      "entry_touch_time": "2026-06-22T00:05:00Z",
      "outcome_time": "2026-06-22T00:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-22T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4148.046, stop=4156.965, target=4134.668. Pre-M15 range high=4164.945, low=4136.695.",
      "candidate": {
        "id": "candidate_v2_2026-06-22T00-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-22",
        "timestamp": "2026-06-22T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4136.695,
          "impulse_high": 4156.965,
          "fib50": 4146.83,
          "fib62": 4149.2624
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-22T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-22T03:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-22T03:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4181.296,
      "stop": 4165.625,
      "target": 4204.801,
      "r": 1.5,
      "entry_touch_time": "2026-06-22T03:10:00Z",
      "outcome_time": "2026-06-22T06:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-22T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4181.296, stop=4165.625, target=4204.801. Pre-M15 range high=4221.37, low=4136.695.",
      "candidate": {
        "id": "candidate_v2_2026-06-22T03-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-22",
        "timestamp": "2026-06-22T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4165.625,
          "impulse_high": 4201.24,
          "fib50": 4183.4325,
          "fib62": 4179.1587
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-22T13-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-22T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-22T13:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4192.997,
      "stop": 4197.13,
      "target": 4184.732,
      "r": -1.0,
      "entry_touch_time": "2026-06-22T13:35:00Z",
      "outcome_time": "2026-06-22T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-22T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4192.997, stop=4197.13, target=4184.732. Pre-M15 range high=4215.255, low=4183.0.",
      "candidate": {
        "id": "candidate_v2_2026-06-22T13-30-00Z_short_order_block_reclaim",
        "date": "2026-06-22",
        "timestamp": "2026-06-22T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4188.865,
          "ob_high": 4197.13,
          "displacement_low": 4185.59
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-22T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-22T14:20:00Z; outcome=sl_first",
      "timestamp": "2026-06-22T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4193.032,
      "stop": 4183.0,
      "target": 4208.08,
      "r": -1.0,
      "entry_touch_time": "2026-06-22T14:20:00Z",
      "outcome_time": "2026-06-22T15:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-22T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4193.032, stop=4183.0, target=4208.08. Pre-M15 range high=4215.255, low=4183.0.",
      "candidate": {
        "id": "candidate_v2_2026-06-22T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-22",
        "timestamp": "2026-06-22T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4183.0,
          "impulse_high": 4205.8,
          "fib50": 4194.4,
          "fib62": 4191.664
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-22T22-30-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-22T22:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-22T22:30:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4191.023,
      "stop": 4194.86,
      "target": 4183.348,
      "r": -1.0,
      "entry_touch_time": "2026-06-22T22:35:00Z",
      "outcome_time": "2026-06-22T23:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-22T22:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4191.023, stop=4194.86, target=4183.348. Pre-M15 range high=4194.86, low=4177.165.",
      "candidate": {
        "id": "candidate_v2_2026-06-22T22-30-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-22",
        "timestamp": "2026-06-22T22:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4194.86,
          "fvg_low": 4190.77,
          "fvg_high": 4191.275
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T00-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-23T00:40:00Z; outcome=tp_first",
      "timestamp": "2026-06-23T00:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4193.048,
      "stop": 4195.255,
      "target": 4188.633,
      "r": 2.0,
      "entry_touch_time": "2026-06-23T00:40:00Z",
      "outcome_time": "2026-06-23T00:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4193.048, stop=4195.255, target=4188.633. Pre-M15 range high=4195.255, low=4178.485.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T00-00-00Z_short_order_block_reclaim",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4190.84,
          "ob_high": 4195.255,
          "displacement_low": 4186.875
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T00-30-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-06-23T00:40:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-23T00:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4191.17,
      "stop": 4193.055,
      "target": 4187.4,
      "r": null,
      "entry_touch_time": "2026-06-23T00:40:00Z",
      "outcome_time": "2026-06-23T00:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4191.17, stop=4193.055, target=4187.4. Pre-M15 range high=4195.255, low=4178.485.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T00-30-00Z_short_breaker_continuation",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4194.86,
          "breaker_low": 4189.285,
          "breaker_high": 4193.055,
          "break_low": 4184.23
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T01-00-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-06-23T01:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-23T01:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4190.962,
      "stop": 4191.085,
      "target": 4190.717,
      "r": null,
      "entry_touch_time": "2026-06-23T01:05:00Z",
      "outcome_time": "2026-06-23T01:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4190.962, stop=4191.085, target=4190.717. Pre-M15 range high=4198.605, low=4178.485.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T01-00-00Z_short_breaker_continuation",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4195.255,
          "breaker_low": 4190.84,
          "breaker_high": 4191.085,
          "break_low": 4184.23
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T01-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-23T01:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-23T01:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4188.137,
      "stop": 4198.605,
      "target": 4167.203,
      "r": 2.0,
      "entry_touch_time": "2026-06-23T01:05:00Z",
      "outcome_time": "2026-06-23T01:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4188.137, stop=4198.605, target=4167.203. Pre-M15 range high=4198.605, low=4178.485.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T01-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4198.605,
          "fvg_low": 4186.085,
          "fvg_high": 4190.19
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-23T05:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-23T05:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4129.293,
      "stop": 4140.66,
      "target": 4112.242,
      "r": 1.5,
      "entry_touch_time": "2026-06-23T05:05:00Z",
      "outcome_time": "2026-06-23T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4129.293, stop=4140.66, target=4112.242. Pre-M15 range high=4198.605, low=4114.825.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4114.825,
          "impulse_high": 4140.66,
          "fib50": 4127.7425,
          "fib62": 4130.8427
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-23T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-23T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4109.476,
      "stop": 4119.585,
      "target": 4094.312,
      "r": -1.0,
      "entry_touch_time": "2026-06-23T08:40:00Z",
      "outcome_time": "2026-06-23T09:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4109.476, stop=4119.585, target=4094.312. Pre-M15 range high=4147.065, low=4091.03.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4096.61,
          "impulse_high": 4119.585,
          "fib50": 4108.0975,
          "fib62": 4110.8544999999995
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T09-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-23T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-06-23T09:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4118.438,
      "stop": 4123.035,
      "target": 4109.243,
      "r": -1.0,
      "entry_touch_time": "2026-06-23T09:35:00Z",
      "outcome_time": "2026-06-23T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4118.438, stop=4123.035, target=4109.243. Pre-M15 range high=4143.38, low=4091.03.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T09-00-00Z_short_order_block_reclaim",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4113.84,
          "ob_high": 4123.035,
          "displacement_low": 4103.775
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T12-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-23T12:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-23T12:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4122.39,
      "stop": 4126.36,
      "target": 4114.45,
      "r": 2.0,
      "entry_touch_time": "2026-06-23T12:35:00Z",
      "outcome_time": "2026-06-23T12:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4122.39, stop=4126.36, target=4114.45. Pre-M15 range high=4133.48, low=4091.03.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T12-15-00Z_short_order_block_reclaim",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4118.42,
          "ob_high": 4126.36,
          "displacement_low": 4112.92
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-23T22-15-00Z_short_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-06-23T22:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-23T22:15:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4109.968,
      "stop": 4115.235,
      "target": 4099.433,
      "r": 2.0,
      "entry_touch_time": "2026-06-23T22:20:00Z",
      "outcome_time": "2026-06-23T22:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-23T22:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4109.968, stop=4115.235, target=4099.433. Pre-M15 range high=4143.94, low=4104.9.",
      "candidate": {
        "id": "candidate_v2_2026-06-23T22-15-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-06-23",
        "timestamp": "2026-06-23T22:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4115.235,
          "fvg_low": 4108.56,
          "fvg_high": 4111.375
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T00-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-24T00-00-00Z_short_order_block_reclaim",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4111.375,
          "ob_high": 4114.565,
          "displacement_low": 4104.9
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4112.969999999999,
      "stop": 4114.565,
      "target": 4109.779999999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-24T06:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-24T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4093.708,
      "stop": 4102.51,
      "target": 4080.505,
      "r": 1.5,
      "entry_touch_time": "2026-06-24T06:10:00Z",
      "outcome_time": "2026-06-24T07:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4093.708, stop=4102.51, target=4080.505. Pre-M15 range high=4115.235, low=4068.52.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4082.505,
          "impulse_high": 4102.51,
          "fib50": 4092.5075,
          "fib62": 4094.9081
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-24T03:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-24T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4065.947,
      "stop": 4076.85,
      "target": 4049.592,
      "r": -1.0,
      "entry_touch_time": "2026-06-24T03:40:00Z",
      "outcome_time": "2026-06-24T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4065.947, stop=4076.85, target=4049.592. Pre-M15 range high=4115.235, low=4052.07.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4052.07,
          "impulse_high": 4076.85,
          "fib50": 4064.46,
          "fib62": 4067.4336
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-24T06:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-24T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4085.399,
      "stop": 4096.335,
      "target": 4068.994,
      "r": -1.0,
      "entry_touch_time": "2026-06-24T06:05:00Z",
      "outcome_time": "2026-06-24T06:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4085.399, stop=4096.335, target=4068.994. Pre-M15 range high=4102.51, low=4050.47.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4071.48,
          "impulse_high": 4096.335,
          "fib50": 4083.9075000000003,
          "fib62": 4086.8901
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T07-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-24T07:55:00Z; outcome=tp_first",
      "timestamp": "2026-06-24T07:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4075.773,
      "stop": 4071.345,
      "target": 4084.628,
      "r": 2.0,
      "entry_touch_time": "2026-06-24T07:55:00Z",
      "outcome_time": "2026-06-24T08:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4075.773, stop=4071.345, target=4084.628. Pre-M15 range high=4097.73, low=4050.47.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T07-30-00Z_long_order_block_reclaim",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4071.345,
          "ob_high": 4080.2,
          "displacement_high": 4097.375
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-24T08:25:00Z; outcome=sl_first",
      "timestamp": "2026-06-24T08:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4080.75,
      "stop": 4086.215,
      "target": 4072.553,
      "r": -1.0,
      "entry_touch_time": "2026-06-24T08:25:00Z",
      "outcome_time": "2026-06-24T08:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4080.75, stop=4086.215, target=4072.553. Pre-M15 range high=4097.73, low=4050.47.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T08-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4073.795,
          "impulse_high": 4086.215,
          "fib50": 4080.005,
          "fib62": 4081.4954000000002
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-24T11:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-24T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4049.362,
      "stop": 4058.615,
      "target": 4035.482,
      "r": 1.5,
      "entry_touch_time": "2026-06-24T11:35:00Z",
      "outcome_time": "2026-06-24T12:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4049.362, stop=4058.615, target=4035.482. Pre-M15 range high=4094.79, low=4037.585.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4037.585,
          "impulse_high": 4058.615,
          "fib50": 4048.1,
          "fib62": 4050.6236
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-24T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-24T13:50:00Z; outcome=tp_first",
      "timestamp": "2026-06-24T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4030.228,
      "stop": 4048.86,
      "target": 4002.28,
      "r": 1.5,
      "entry_touch_time": "2026-06-24T13:50:00Z",
      "outcome_time": "2026-06-24T15:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-24T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4030.228, stop=4048.86, target=4002.28. Pre-M15 range high=4083.465, low=3964.645.",
      "candidate": {
        "id": "candidate_v2_2026-06-24T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-24",
        "timestamp": "2026-06-24T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4006.515,
          "impulse_high": 4048.86,
          "fib50": 4027.6875,
          "fib62": 4032.7689
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-25T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-25T12:30:00Z; outcome=tp_first",
      "timestamp": "2026-06-25T01:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4007.072,
      "stop": 4016.42,
      "target": 3993.051,
      "r": 1.5,
      "entry_touch_time": "2026-06-25T12:30:00Z",
      "outcome_time": "2026-06-25T12:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-25T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4007.072, stop=4016.42, target=3993.051. Pre-M15 range high=4018.825, low=3974.04.",
      "candidate": {
        "id": "candidate_v2_2026-06-25T01-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-25",
        "timestamp": "2026-06-25T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3995.175,
          "impulse_high": 4016.42,
          "fib50": 4005.7975,
          "fib62": 4008.3469
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-25T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-25T02:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-25T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3985.672,
      "stop": 3996.08,
      "target": 3970.06,
      "r": 1.5,
      "entry_touch_time": "2026-06-25T02:20:00Z",
      "outcome_time": "2026-06-25T03:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-25T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3985.672, stop=3996.08, target=3970.06. Pre-M15 range high=4018.825, low=3962.475.",
      "candidate": {
        "id": "candidate_v2_2026-06-25T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-25",
        "timestamp": "2026-06-25T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3972.425,
          "impulse_high": 3996.08,
          "fib50": 3984.2525,
          "fib62": 3987.0911
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-25T06-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-25T07:45:00Z; outcome=tp_first",
      "timestamp": "2026-06-25T06:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 3973.24,
      "stop": 3969.19,
      "target": 3981.34,
      "r": 2.0,
      "entry_touch_time": "2026-06-25T07:45:00Z",
      "outcome_time": "2026-06-25T07:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-25T06:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3973.24, stop=3969.19, target=3981.34. Pre-M15 range high=4001.125, low=3962.475.",
      "candidate": {
        "id": "candidate_v2_2026-06-25T06-15-00Z_long_order_block_reclaim",
        "date": "2026-06-25",
        "timestamp": "2026-06-25T06:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 3969.19,
          "ob_high": 3977.29,
          "displacement_high": 4001.125
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-25T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-25T14:00:00Z; outcome=tp_first",
      "timestamp": "2026-06-25T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 3999.184,
      "stop": 3983.315,
      "target": 4022.987,
      "r": 1.5,
      "entry_touch_time": "2026-06-25T14:00:00Z",
      "outcome_time": "2026-06-25T14:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-25T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3999.184, stop=3983.315, target=4022.987. Pre-M15 range high=4034.225, low=3973.64.",
      "candidate": {
        "id": "candidate_v2_2026-06-25T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-25",
        "timestamp": "2026-06-25T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 3983.315,
          "impulse_high": 4019.38,
          "fib50": 4001.3475,
          "fib62": 3997.0197000000003
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-25T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-25T14:55:00Z; outcome=tp_first",
      "timestamp": "2026-06-25T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4012.038,
      "stop": 3999.17,
      "target": 4031.34,
      "r": 1.5,
      "entry_touch_time": "2026-06-25T14:55:00Z",
      "outcome_time": "2026-06-25T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-25T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4012.038, stop=3999.17, target=4031.34. Pre-M15 range high=4034.225, low=3973.64.",
      "candidate": {
        "id": "candidate_v2_2026-06-25T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-25",
        "timestamp": "2026-06-25T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 3999.17,
          "impulse_high": 4028.415,
          "fib50": 4013.7925,
          "fib62": 4010.2831
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-25T18-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-25T18:45:00Z; outcome=tp_first",
      "timestamp": "2026-06-25T18:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4030.745,
      "stop": 4026.025,
      "target": 4040.185,
      "r": 2.0,
      "entry_touch_time": "2026-06-25T18:45:00Z",
      "outcome_time": "2026-06-25T19:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-25T18:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4030.745, stop=4026.025, target=4040.185. Pre-M15 range high=4044.14, low=3999.17.",
      "candidate": {
        "id": "candidate_v2_2026-06-25T18-30-00Z_long_order_block_reclaim",
        "date": "2026-06-25",
        "timestamp": "2026-06-25T18:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4026.025,
          "ob_high": 4035.465,
          "displacement_high": 4044.13
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-26T03:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-26T03:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3997.877,
      "stop": 4009.605,
      "target": 3980.284,
      "r": -1.0,
      "entry_touch_time": "2026-06-26T03:10:00Z",
      "outcome_time": "2026-06-26T04:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T03:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3997.877, stop=4009.605, target=3980.284. Pre-M15 range high=4036.505, low=3982.95.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T03-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T03:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 3982.95,
          "impulse_high": 4009.605,
          "fib50": 3996.2775,
          "fib62": 3999.4761
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-26T04:50:00Z; outcome=sl_first",
      "timestamp": "2026-06-26T04:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4014.929,
      "stop": 4023.355,
      "target": 4002.29,
      "r": -1.0,
      "entry_touch_time": "2026-06-26T04:50:00Z",
      "outcome_time": "2026-06-26T06:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4014.929, stop=4023.355, target=4002.29. Pre-M15 range high=4030.015, low=3982.95.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4004.205,
          "impulse_high": 4023.355,
          "fib50": 4013.7799999999997,
          "fib62": 4016.078
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T07-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-26T07:45:00Z; outcome=sl_first",
      "timestamp": "2026-06-26T07:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4030.372,
      "stop": 4026.81,
      "target": 4037.497,
      "r": -1.0,
      "entry_touch_time": "2026-06-26T07:45:00Z",
      "outcome_time": "2026-06-26T08:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4030.372, stop=4026.81, target=4037.497. Pre-M15 range high=4039.875, low=3982.95.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T07-30-00Z_long_order_block_reclaim",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4026.81,
          "ob_high": 4033.935,
          "displacement_high": 4039.875
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T09-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-26T09-15-00Z_long_order_block_reclaim",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T09:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4029.62,
          "ob_high": 4037.805,
          "displacement_high": 4041.615
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4033.7124999999996,
      "stop": 4029.62,
      "target": 4041.897499999999,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-26T12:40:00Z; outcome=tp_first",
      "timestamp": "2026-06-26T12:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4039.008,
      "stop": 4029.59,
      "target": 4053.136,
      "r": 1.5,
      "entry_touch_time": "2026-06-26T12:40:00Z",
      "outcome_time": "2026-06-26T12:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T12:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4039.008, stop=4029.59, target=4053.136. Pre-M15 range high=4055.76, low=4025.86.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T12-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4029.59,
          "impulse_high": 4050.995,
          "fib50": 4040.2925,
          "fib62": 4037.7239
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T13-00-00Z_long_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Long: entry touched 2026-06-26T13:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-26T13:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4047.915,
      "stop": 4046.65,
      "target": 4050.445,
      "r": null,
      "entry_touch_time": "2026-06-26T13:05:00Z",
      "outcome_time": "2026-06-26T13:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4047.915, stop=4046.65, target=4050.445. Pre-M15 range high=4066.13, low=4029.59.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T13-00-00Z_long_breaker_continuation",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4035.935,
          "breaker_low": 4046.65,
          "breaker_high": 4049.18,
          "break_high": 4055.76
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-26T13:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-26T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4047.234,
      "stop": 4035.935,
      "target": 4064.183,
      "r": 1.5,
      "entry_touch_time": "2026-06-26T13:05:00Z",
      "outcome_time": "2026-06-26T13:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4047.234, stop=4035.935, target=4064.183. Pre-M15 range high=4066.13, low=4029.59.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4035.935,
          "impulse_high": 4061.615,
          "fib50": 4048.7749999999996,
          "fib62": 4045.6934
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-26T13-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-29T05:30:00Z; outcome=tp_first",
      "timestamp": "2026-06-26T13:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4042.557,
      "stop": 4035.935,
      "target": 4055.802,
      "r": 2.0,
      "entry_touch_time": "2026-06-29T05:30:00Z",
      "outcome_time": "2026-06-29T05:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-26T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4042.557, stop=4035.935, target=4055.802. Pre-M15 range high=4066.13, low=4029.59.",
      "candidate": {
        "id": "candidate_v2_2026-06-26T13-00-00Z_long_order_block_reclaim",
        "date": "2026-06-26",
        "timestamp": "2026-06-26T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4035.935,
          "ob_high": 4049.18,
          "displacement_high": 4061.615
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-28T22-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-28T22:05:00Z; outcome=sl_first",
      "timestamp": "2026-06-28T22:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4077.79,
      "stop": 4067.25,
      "target": 4093.6,
      "r": -1.0,
      "entry_touch_time": "2026-06-28T22:05:00Z",
      "outcome_time": "2026-06-28T22:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-28T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4077.79, stop=4067.25, target=4093.6. Pre-M15 range high=4093.785, low=4064.705.",
      "candidate": {
        "id": "candidate_v2_2026-06-28T22-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-28",
        "timestamp": "2026-06-28T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4067.25,
          "impulse_high": 4091.205,
          "fib50": 4079.2275,
          "fib62": 4076.3529
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-28T22-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-28T22:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-28T22:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4069.787,
      "stop": 4067.25,
      "target": 4074.862,
      "r": 2.0,
      "entry_touch_time": "2026-06-28T22:10:00Z",
      "outcome_time": "2026-06-28T22:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-28T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4069.787, stop=4067.25, target=4074.862. Pre-M15 range high=4093.785, low=4064.705.",
      "candidate": {
        "id": "candidate_v2_2026-06-28T22-00-00Z_long_order_block_reclaim",
        "date": "2026-06-28",
        "timestamp": "2026-06-28T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4067.25,
          "ob_high": 4072.325,
          "displacement_high": 4091.205
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-28T23-00-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-06-28T23:05:00Z; outcome=tp_first",
      "timestamp": "2026-06-28T23:00:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4070.472,
      "stop": 4070.81,
      "target": 4069.797,
      "r": 2.0,
      "entry_touch_time": "2026-06-28T23:05:00Z",
      "outcome_time": "2026-06-28T23:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-28T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4070.472, stop=4070.81, target=4069.797. Pre-M15 range high=4091.205, low=4053.375.",
      "candidate": {
        "id": "candidate_v2_2026-06-28T23-00-00Z_short_breaker_continuation",
        "date": "2026-06-28",
        "timestamp": "2026-06-28T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4091.205,
          "breaker_low": 4070.135,
          "breaker_high": 4070.81,
          "break_low": 4064.705
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-29T01:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-29T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4059.857,
      "stop": 4048.485,
      "target": 4076.915,
      "r": -1.0,
      "entry_touch_time": "2026-06-29T01:10:00Z",
      "outcome_time": "2026-06-29T05:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-29T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4059.857, stop=4048.485, target=4076.915. Pre-M15 range high=4091.205, low=4048.15.",
      "candidate": {
        "id": "candidate_v2_2026-06-29T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4048.485,
          "impulse_high": 4074.33,
          "fib50": 4061.4075000000003,
          "fib62": 4058.3061000000002
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T01-00-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-29T01:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-29T01:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4055.19,
      "stop": 4048.15,
      "target": 4069.27,
      "r": 2.0,
      "entry_touch_time": "2026-06-29T01:10:00Z",
      "outcome_time": "2026-06-29T02:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-29T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4055.19, stop=4048.15, target=4069.27. Pre-M15 range high=4091.205, low=4048.15.",
      "candidate": {
        "id": "candidate_v2_2026-06-29T01-00-00Z_long_order_block_reclaim",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4048.15,
          "ob_high": 4062.23,
          "displacement_high": 4070.145
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T07-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-06-29T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-29T07:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4059.515,
      "stop": 4056.185,
      "target": 4066.175,
      "r": -1.0,
      "entry_touch_time": "2026-06-29T08:40:00Z",
      "outcome_time": "2026-06-29T08:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-29T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4059.515, stop=4056.185, target=4066.175. Pre-M15 range high=4076.015, low=4039.325.",
      "candidate": {
        "id": "candidate_v2_2026-06-29T07-30-00Z_long_order_block_reclaim",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4056.185,
          "ob_high": 4062.845,
          "displacement_high": 4066.485
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-06-29T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4043.875,
          "impulse_high": 4066.78,
          "fib50": 4055.3275000000003,
          "fib62": 4058.0761
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4056.7018000000003,
      "stop": 4066.78,
      "target": 4041.5845000000004,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-29T10:10:00Z; outcome=sl_first",
      "timestamp": "2026-06-29T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4039.185,
      "stop": 4050.77,
      "target": 4021.807,
      "r": -1.0,
      "entry_touch_time": "2026-06-29T10:10:00Z",
      "outcome_time": "2026-06-29T12:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-29T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4039.185, stop=4050.77, target=4021.807. Pre-M15 range high=4068.83, low=4024.44.",
      "candidate": {
        "id": "candidate_v2_2026-06-29T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4024.44,
          "impulse_high": 4050.77,
          "fib50": 4037.605,
          "fib62": 4040.7646
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T19-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-29T19:30:00Z; outcome=sl_first",
      "timestamp": "2026-06-29T19:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4017.469,
      "stop": 4021.75,
      "target": 4011.047,
      "r": -1.0,
      "entry_touch_time": "2026-06-29T19:30:00Z",
      "outcome_time": "2026-06-29T22:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-29T19:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4017.469, stop=4021.75, target=4011.047. Pre-M15 range high=4032.17, low=4000.325.",
      "candidate": {
        "id": "candidate_v2_2026-06-29T19-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T19:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4012.02,
          "impulse_high": 4021.75,
          "fib50": 4016.885,
          "fib62": 4018.0526
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-29T19-15-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-06-29T19:25:00Z; outcome=sl_first",
      "timestamp": "2026-06-29T19:15:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 4015.525,
      "stop": 4005.435,
      "target": 4035.705,
      "r": -1.0,
      "entry_touch_time": "2026-06-29T19:25:00Z",
      "outcome_time": "2026-06-30T00:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-29T19:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4015.525, stop=4005.435, target=4035.705. Pre-M15 range high=4032.17, low=4005.435.",
      "candidate": {
        "id": "candidate_v2_2026-06-29T19-15-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-06-29",
        "timestamp": "2026-06-29T19:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4005.435,
          "fvg_low": 4014.745,
          "fvg_high": 4016.305
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-30T01:40:00Z; outcome=sl_first",
      "timestamp": "2026-06-30T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3967.527,
      "stop": 3987.505,
      "target": 3937.559,
      "r": -1.0,
      "entry_touch_time": "2026-06-30T01:40:00Z",
      "outcome_time": "2026-06-30T04:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3967.527, stop=3987.505, target=3937.559. Pre-M15 range high=4022.505, low=3942.1.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3942.1,
          "impulse_high": 3987.505,
          "fib50": 3964.8025,
          "fib62": 3970.2511
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-30T04:00:00Z; outcome=sl_first",
      "timestamp": "2026-06-30T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3971.701,
      "stop": 3979.645,
      "target": 3959.785,
      "r": -1.0,
      "entry_touch_time": "2026-06-30T04:00:00Z",
      "outcome_time": "2026-06-30T04:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3971.701, stop=3979.645, target=3959.785. Pre-M15 range high=4022.505, low=3942.1.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3961.59,
          "impulse_high": 3979.645,
          "fib50": 3970.6175000000003,
          "fib62": 3972.7841
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-30T04:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-30T04:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3995.094,
      "stop": 4006.97,
      "target": 3977.281,
      "r": 1.5,
      "entry_touch_time": "2026-06-30T04:35:00Z",
      "outcome_time": "2026-06-30T05:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3995.094, stop=4006.97, target=3977.281. Pre-M15 range high=4018.28, low=3942.1.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T04-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3979.98,
          "impulse_high": 4006.97,
          "fib50": 3993.475,
          "fib62": 3996.7138
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-30T08:15:00Z; outcome=tp_first",
      "timestamp": "2026-06-30T08:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4021.274,
      "stop": 4011.02,
      "target": 4036.655,
      "r": 1.5,
      "entry_touch_time": "2026-06-30T08:15:00Z",
      "outcome_time": "2026-06-30T11:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T08:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4021.274, stop=4011.02, target=4036.655. Pre-M15 range high=4037.665, low=3960.255.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T08-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T08:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4011.02,
          "impulse_high": 4034.325,
          "fib50": 4022.6724999999997,
          "fib62": 4019.8759
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T13-15-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-06-30T13:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-30T13:15:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4031.685,
      "stop": 4033.52,
      "target": 4028.015,
      "r": 2.0,
      "entry_touch_time": "2026-06-30T13:20:00Z",
      "outcome_time": "2026-06-30T13:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T13:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4031.685, stop=4033.52, target=4028.015. Pre-M15 range high=4037.43, low=4008.74.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T13-15-00Z_short_breaker_continuation",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T13:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4034.325,
          "breaker_low": 4029.85,
          "breaker_high": 4033.52,
          "break_low": 4012.47
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-30T13:35:00Z; outcome=tp_first",
      "timestamp": "2026-06-30T13:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4020.017,
      "stop": 4009.455,
      "target": 4035.861,
      "r": 1.5,
      "entry_touch_time": "2026-06-30T13:35:00Z",
      "outcome_time": "2026-06-30T14:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4020.017, stop=4009.455, target=4035.861. Pre-M15 range high=4037.43, low=4008.74.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T13-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4009.455,
          "impulse_high": 4033.46,
          "fib50": 4021.4575,
          "fib62": 4018.5769
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-06-30T14:55:00Z; outcome=sl_first",
      "timestamp": "2026-06-30T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4042.169,
      "stop": 4025.425,
      "target": 4067.286,
      "r": -1.0,
      "entry_touch_time": "2026-06-30T14:55:00Z",
      "outcome_time": "2026-06-30T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4042.169, stop=4025.425, target=4067.286. Pre-M15 range high=4063.48, low=4008.74.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4025.425,
          "impulse_high": 4063.48,
          "fib50": 4044.4525000000003,
          "fib62": 4039.8859
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T20-15-00Z_short_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-01T11:15:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-06-30T20:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4022.173,
      "stop": 4023.36,
      "target": 4019.798,
      "r": null,
      "entry_touch_time": "2026-07-01T11:15:00Z",
      "outcome_time": "2026-07-01T11:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T20:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4022.173, stop=4023.36, target=4019.798. Pre-M15 range high=4034.93, low=4012.34.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T20-15-00Z_short_order_block_reclaim",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T20:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4020.985,
          "ob_high": 4023.36,
          "displacement_low": 4014.73
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T22-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-06-30T22:10:00Z; outcome=tp_first",
      "timestamp": "2026-06-30T22:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4017.438,
      "stop": 4020.925,
      "target": 4010.462,
      "r": 2.0,
      "entry_touch_time": "2026-06-30T22:10:00Z",
      "outcome_time": "2026-06-30T23:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T22:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4017.438, stop=4020.925, target=4010.462. Pre-M15 range high=4034.015, low=4006.58.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T22-00-00Z_short_order_block_reclaim",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T22:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4013.95,
          "ob_high": 4020.925,
          "displacement_low": 4012.34
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-06-30T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-06-30T23:20:00Z; outcome=tp_first",
      "timestamp": "2026-06-30T23:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4010.525,
      "stop": 4013.625,
      "target": 4005.876,
      "r": 1.5,
      "entry_touch_time": "2026-06-30T23:20:00Z",
      "outcome_time": "2026-06-30T23:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-06-30T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4010.525, stop=4013.625, target=4005.876. Pre-M15 range high=4033.925, low=4006.58.",
      "candidate": {
        "id": "candidate_v2_2026-06-30T23-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-06-30",
        "timestamp": "2026-06-30T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4006.58,
          "impulse_high": 4013.625,
          "fib50": 4010.1025,
          "fib62": 4010.9479
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T00-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-01T11:00:00Z; outcome=tp_first",
      "timestamp": "2026-07-01T00:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4007.787,
      "stop": 4009.915,
      "target": 4003.532,
      "r": 2.0,
      "entry_touch_time": "2026-07-01T11:00:00Z",
      "outcome_time": "2026-07-01T11:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4007.787, stop=4009.915, target=4003.532. Pre-M15 range high=4032.515, low=3996.13.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T00-30-00Z_short_order_block_reclaim",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4005.66,
          "ob_high": 4009.915,
          "displacement_low": 4001.37
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-01T10:00:00Z; outcome=sl_first",
      "timestamp": "2026-07-01T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3989.285,
      "stop": 3999.9,
      "target": 3973.362,
      "r": -1.0,
      "entry_touch_time": "2026-07-01T10:00:00Z",
      "outcome_time": "2026-07-01T11:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3989.285, stop=3999.9, target=3973.362. Pre-M15 range high=4022.68, low=3975.1.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3975.775,
          "impulse_high": 3999.9,
          "fib50": 3987.8375,
          "fib62": 3990.7325
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-01T02:25:00Z; outcome=tp_first",
      "timestamp": "2026-07-01T02:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3982.315,
      "stop": 3988.77,
      "target": 3972.633,
      "r": 1.5,
      "entry_touch_time": "2026-07-01T02:25:00Z",
      "outcome_time": "2026-07-01T04:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3982.315, stop=3988.77, target=3972.633. Pre-M15 range high=4021.265, low=3970.395.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T02-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3974.1,
          "impulse_high": 3988.77,
          "fib50": 3981.435,
          "fib62": 3983.1954
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-01T06:40:00Z; outcome=tp_first",
      "timestamp": "2026-07-01T06:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3971.348,
      "stop": 3977.605,
      "target": 3961.963,
      "r": 1.5,
      "entry_touch_time": "2026-07-01T06:40:00Z",
      "outcome_time": "2026-07-01T07:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3971.348, stop=3977.605, target=3961.963. Pre-M15 range high=3987.095, low=3963.34.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T06-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3963.385,
          "impulse_high": 3977.605,
          "fib50": 3970.495,
          "fib62": 3972.2014
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T07-15-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-01T07:20:00Z; outcome=tp_first",
      "timestamp": "2026-07-01T07:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 3971.427,
      "stop": 3973.705,
      "target": 3966.872,
      "r": 2.0,
      "entry_touch_time": "2026-07-01T07:20:00Z",
      "outcome_time": "2026-07-01T07:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T07:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3971.427, stop=3973.705, target=3966.872. Pre-M15 range high=3987.095, low=3960.275.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T07-15-00Z_short_order_block_reclaim",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T07:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 3969.15,
          "ob_high": 3973.705,
          "displacement_low": 3960.435
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-01T07:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-01T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 3967.908,
      "stop": 3973.905,
      "target": 3958.912,
      "r": -1.0,
      "entry_touch_time": "2026-07-01T07:35:00Z",
      "outcome_time": "2026-07-01T07:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3967.908, stop=3973.905, target=3958.912. Pre-M15 range high=3987.095, low=3960.275.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3960.275,
          "impulse_high": 3973.905,
          "fib50": 3967.09,
          "fib62": 3968.7256
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-07-01T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 3997.975,
          "impulse_high": 4028.715,
          "fib50": 4013.3450000000003,
          "fib62": 4009.6562
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4011.5006000000003,
      "stop": 3997.975,
      "target": 4031.7890000000007,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-01T16:55:00Z; outcome=sl_first",
      "timestamp": "2026-07-01T16:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4070.954,
      "stop": 4041.685,
      "target": 4114.857,
      "r": -1.0,
      "entry_touch_time": "2026-07-01T16:55:00Z",
      "outcome_time": "2026-07-01T19:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4070.954, stop=4041.685, target=4114.857. Pre-M15 range high=4115.81, low=4012.865.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4041.685,
          "impulse_high": 4108.205,
          "fib50": 4074.9449999999997,
          "fib62": 4066.9626
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T19-00-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-02T03:45:00Z; outcome=tp_first",
      "timestamp": "2026-07-01T19:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY PM",
      "entry": 4069.068,
      "stop": 4070.85,
      "target": 4065.503,
      "r": 2.0,
      "entry_touch_time": "2026-07-02T03:45:00Z",
      "outcome_time": "2026-07-02T03:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T19:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4069.068, stop=4070.85, target=4065.503. Pre-M15 range high=4115.81, low=4057.865.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T19-00-00Z_short_order_block_reclaim",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T19:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4067.285,
          "ob_high": 4070.85,
          "displacement_low": 4061.18
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-01T23-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-07-01T23:10:00Z; outcome=sl_first",
      "timestamp": "2026-07-01T23:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4039.747,
      "stop": 4045.185,
      "target": 4028.872,
      "r": -1.0,
      "entry_touch_time": "2026-07-01T23:10:00Z",
      "outcome_time": "2026-07-02T00:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-01T23:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4039.747, stop=4045.185, target=4028.872. Pre-M15 range high=4073.235, low=4028.265.",
      "candidate": {
        "id": "candidate_v2_2026-07-01T23-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-07-01",
        "timestamp": "2026-07-01T23:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4045.185,
          "fvg_low": 4039.515,
          "fvg_high": 4039.98
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T00-00-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-07-02T00:05:00Z; outcome=tp_first",
      "timestamp": "2026-07-02T00:00:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4038.807,
      "stop": 4030.895,
      "target": 4054.632,
      "r": 2.0,
      "entry_touch_time": "2026-07-02T00:05:00Z",
      "outcome_time": "2026-07-02T01:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4038.807, stop=4030.895, target=4054.632. Pre-M15 range high=4069.24, low=4028.265.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T00-00-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4030.895,
          "fvg_low": 4037.12,
          "fvg_high": 4040.495
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-02T00:40:00Z; outcome=tp_first",
      "timestamp": "2026-07-02T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4038.661,
      "stop": 4030.895,
      "target": 4050.31,
      "r": 1.5,
      "entry_touch_time": "2026-07-02T00:40:00Z",
      "outcome_time": "2026-07-02T00:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4038.661, stop=4030.895, target=4050.31. Pre-M15 range high=4068.365, low=4028.265.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4030.895,
          "impulse_high": 4048.545,
          "fib50": 4039.7200000000003,
          "fib62": 4037.602
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T01-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-02T02:05:00Z; outcome=tp_first",
      "timestamp": "2026-07-02T01:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4042.483,
      "stop": 4038.14,
      "target": 4051.168,
      "r": 2.0,
      "entry_touch_time": "2026-07-02T02:05:00Z",
      "outcome_time": "2026-07-02T02:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4042.483, stop=4038.14, target=4051.168. Pre-M15 range high=4068.73, low=4028.265.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T01-30-00Z_long_order_block_reclaim",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4038.14,
          "ob_high": 4046.825,
          "displacement_high": 4052.795
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T04-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-02T05:00:00Z; outcome=sl_first",
      "timestamp": "2026-07-02T04:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4060.702,
      "stop": 4055.51,
      "target": 4068.49,
      "r": -1.0,
      "entry_touch_time": "2026-07-02T05:00:00Z",
      "outcome_time": "2026-07-02T05:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T04:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4060.702, stop=4055.51, target=4068.49. Pre-M15 range high=4074.235, low=4030.895.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T04-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T04:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4055.51,
          "impulse_high": 4067.31,
          "fib50": 4061.41,
          "fib62": 4059.994
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-02T06:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-02T06:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4072.186,
      "stop": 4066.11,
      "target": 4081.301,
      "r": -1.0,
      "entry_touch_time": "2026-07-02T06:35:00Z",
      "outcome_time": "2026-07-02T07:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T06:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4072.186, stop=4066.11, target=4081.301. Pre-M15 range high=4079.92, low=4041.515.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T06-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T06:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4066.11,
          "impulse_high": 4079.92,
          "fib50": 4073.0150000000003,
          "fib62": 4071.3578
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-02T09:20:00Z; outcome=sl_first",
      "timestamp": "2026-07-02T09:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4068.746,
      "stop": 4061.475,
      "target": 4079.653,
      "r": -1.0,
      "entry_touch_time": "2026-07-02T09:20:00Z",
      "outcome_time": "2026-07-02T11:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4068.746, stop=4061.475, target=4079.653. Pre-M15 range high=4080.12, low=4053.245.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T09-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4061.475,
          "impulse_high": 4078.0,
          "fib50": 4069.7375,
          "fib62": 4067.7545
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-02T14:10:00Z; outcome=sl_first",
      "timestamp": "2026-07-02T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4125.065,
      "stop": 4110.125,
      "target": 4147.476,
      "r": -1.0,
      "entry_touch_time": "2026-07-02T14:10:00Z",
      "outcome_time": "2026-07-02T16:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-02T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4125.065, stop=4110.125, target=4147.476. Pre-M15 range high=4144.08, low=4057.44.",
      "candidate": {
        "id": "candidate_v2_2026-07-02T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4110.125,
          "impulse_high": 4144.08,
          "fib50": 4127.1025,
          "fib62": 4123.0279
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-02T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-07-02T16-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-02",
        "timestamp": "2026-07-02T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4064.495,
          "impulse_high": 4140.525,
          "fib50": 4102.51,
          "fib62": 4093.3864
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      },
      "entry": 4097.9482,
      "stop": 4064.495,
      "target": 4148.128,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-07-03T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-03T09:30:00Z; outcome=tp_first",
      "timestamp": "2026-07-03T07:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4168.923,
      "stop": 4164.53,
      "target": 4175.513,
      "r": 1.5,
      "entry_touch_time": "2026-07-03T09:30:00Z",
      "outcome_time": "2026-07-03T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-03T07:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4168.923, stop=4164.53, target=4175.513. Pre-M15 range high=4186.86, low=4160.415.",
      "candidate": {
        "id": "candidate_v2_2026-07-03T07-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-03",
        "timestamp": "2026-07-03T07:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4164.53,
          "impulse_high": 4174.515,
          "fib50": 4169.5225,
          "fib62": 4168.3243
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-03T08-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-03T08:45:00Z; outcome=tp_first",
      "timestamp": "2026-07-03T08:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4178.265,
      "stop": 4174.865,
      "target": 4185.065,
      "r": 2.0,
      "entry_touch_time": "2026-07-03T08:45:00Z",
      "outcome_time": "2026-07-03T08:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-03T08:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4178.265, stop=4174.865, target=4185.065. Pre-M15 range high=4185.915, low=4160.415.",
      "candidate": {
        "id": "candidate_v2_2026-07-03T08-15-00Z_long_order_block_reclaim",
        "date": "2026-07-03",
        "timestamp": "2026-07-03T08:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4174.865,
          "ob_high": 4181.665,
          "displacement_high": 4185.915
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-03T11-45-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-03T12:15:00Z; outcome=sl_first",
      "timestamp": "2026-07-03T11:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4176.855,
      "stop": 4174.8,
      "target": 4180.965,
      "r": -1.0,
      "entry_touch_time": "2026-07-03T12:15:00Z",
      "outcome_time": "2026-07-03T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-03T11:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4176.855, stop=4174.8, target=4180.965. Pre-M15 range high=4186.655, low=4168.57.",
      "candidate": {
        "id": "candidate_v2_2026-07-03T11-45-00Z_long_order_block_reclaim",
        "date": "2026-07-03",
        "timestamp": "2026-07-03T11:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4174.8,
          "ob_high": 4178.91,
          "displacement_high": 4183.95
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-03T13-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-03T16:50:00Z; outcome=sl_first",
      "timestamp": "2026-07-03T13:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4175.038,
      "stop": 4177.68,
      "target": 4169.753,
      "r": -1.0,
      "entry_touch_time": "2026-07-03T16:50:00Z",
      "outcome_time": "2026-07-05T22:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-03T13:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4175.038, stop=4177.68, target=4169.753. Pre-M15 range high=4186.655, low=4164.68.",
      "candidate": {
        "id": "candidate_v2_2026-07-03T13-15-00Z_short_order_block_reclaim",
        "date": "2026-07-03",
        "timestamp": "2026-07-03T13:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4172.395,
          "ob_high": 4177.68,
          "displacement_low": 4164.68
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-05T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-05T23:45:00Z; outcome=sl_first",
      "timestamp": "2026-07-05T23:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4193.517,
      "stop": 4186.675,
      "target": 4203.78,
      "r": -1.0,
      "entry_touch_time": "2026-07-05T23:45:00Z",
      "outcome_time": "2026-07-05T23:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-05T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4193.517, stop=4186.675, target=4203.78. Pre-M15 range high=4202.225, low=4155.41.",
      "candidate": {
        "id": "candidate_v2_2026-07-05T23-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-05",
        "timestamp": "2026-07-05T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4186.675,
          "impulse_high": 4202.225,
          "fib50": 4194.450000000001,
          "fib62": 4192.584
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-06T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-06T00:25:00Z; outcome=tp_first",
      "timestamp": "2026-07-06T00:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4171.182,
      "stop": 4166.94,
      "target": 4177.544,
      "r": 1.5,
      "entry_touch_time": "2026-07-06T00:25:00Z",
      "outcome_time": "2026-07-06T00:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-06T00:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4171.182, stop=4166.94, target=4177.544. Pre-M15 range high=4202.225, low=4161.455.",
      "candidate": {
        "id": "candidate_v2_2026-07-06T00-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-06",
        "timestamp": "2026-07-06T00:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4166.94,
          "impulse_high": 4176.58,
          "fib50": 4171.76,
          "fib62": 4170.6032
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-06T01-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-06T01:10:00Z; outcome=sl_first",
      "timestamp": "2026-07-06T01:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4189.205,
      "stop": 4186.745,
      "target": 4194.125,
      "r": -1.0,
      "entry_touch_time": "2026-07-06T01:10:00Z",
      "outcome_time": "2026-07-06T01:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-06T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4189.205, stop=4186.745, target=4194.125. Pre-M15 range high=4202.225, low=4163.0.",
      "candidate": {
        "id": "candidate_v2_2026-07-06T01-00-00Z_long_order_block_reclaim",
        "date": "2026-07-06",
        "timestamp": "2026-07-06T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4186.745,
          "ob_high": 4191.665,
          "displacement_high": 4202.225
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-06T06-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-06T06:25:00Z; outcome=sl_first",
      "timestamp": "2026-07-06T06:00:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4155.175,
      "stop": 4160.705,
      "target": 4144.115,
      "r": -1.0,
      "entry_touch_time": "2026-07-06T06:25:00Z",
      "outcome_time": "2026-07-06T07:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-06T06:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4155.175, stop=4160.705, target=4144.115. Pre-M15 range high=4202.705, low=4144.83.",
      "candidate": {
        "id": "candidate_v2_2026-07-06T06-00-00Z_short_order_block_reclaim",
        "date": "2026-07-06",
        "timestamp": "2026-07-06T06:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4149.645,
          "ob_high": 4160.705,
          "displacement_low": 4144.83
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-06T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-06T16:50:00Z; outcome=sl_first",
      "timestamp": "2026-07-06T15:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4152.618,
      "stop": 4158.525,
      "target": 4143.758,
      "r": -1.0,
      "entry_touch_time": "2026-07-06T16:50:00Z",
      "outcome_time": "2026-07-06T17:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-06T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4152.618, stop=4158.525, target=4143.758. Pre-M15 range high=4159.6, low=4128.51.",
      "candidate": {
        "id": "candidate_v2_2026-07-06T15-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-06",
        "timestamp": "2026-07-06T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4145.1,
          "impulse_high": 4158.525,
          "fib50": 4151.8125,
          "fib62": 4153.4235
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T00-45-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-07T11:55:00Z; outcome=sl_first",
      "timestamp": "2026-07-07T00:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4156.458,
      "stop": 4160.79,
      "target": 4147.793,
      "r": -1.0,
      "entry_touch_time": "2026-07-07T11:55:00Z",
      "outcome_time": "2026-07-07T12:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T00:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4156.458, stop=4160.79, target=4147.793. Pre-M15 range high=4168.65, low=4145.195.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T00-45-00Z_short_order_block_reclaim",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T00:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4152.125,
          "ob_high": 4160.79,
          "displacement_low": 4148.5
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-07T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-07-07T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4138.227,
      "stop": 4148.07,
      "target": 4123.463,
      "r": 1.5,
      "entry_touch_time": "2026-07-07T01:35:00Z",
      "outcome_time": "2026-07-07T05:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4138.227, stop=4148.07, target=4123.463. Pre-M15 range high=4168.65, low=4125.7.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4125.7,
          "impulse_high": 4148.07,
          "fib50": 4136.885,
          "fib62": 4139.569399999999
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-07T02:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-07T02:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4138.487,
      "stop": 4132.4,
      "target": 4147.619,
      "r": -1.0,
      "entry_touch_time": "2026-07-07T02:05:00Z",
      "outcome_time": "2026-07-07T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T02:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4138.487, stop=4132.4, target=4147.619. Pre-M15 range high=4168.65, low=4125.7.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T02-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T02:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4132.4,
          "impulse_high": 4146.235,
          "fib50": 4139.317499999999,
          "fib62": 4137.6573
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T08-30-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-07T08:40:00Z; outcome=sl_first",
      "timestamp": "2026-07-07T08:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4129.153,
      "stop": 4124.64,
      "target": 4138.177,
      "r": -1.0,
      "entry_touch_time": "2026-07-07T08:40:00Z",
      "outcome_time": "2026-07-07T08:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4129.153, stop=4124.64, target=4138.177. Pre-M15 range high=4141.415, low=4116.7.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T08-30-00Z_long_order_block_reclaim",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4124.64,
          "ob_high": 4133.665,
          "displacement_high": 4139.395
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-07T09:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-07T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4131.664,
      "stop": 4139.305,
      "target": 4120.203,
      "r": -1.0,
      "entry_touch_time": "2026-07-07T09:35:00Z",
      "outcome_time": "2026-07-07T11:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4131.664, stop=4139.305, target=4120.203. Pre-M15 range high=4139.395, low=4116.7.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4121.94,
          "impulse_high": 4139.305,
          "fib50": 4130.6224999999995,
          "fib62": 4132.7063
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T14-00-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-07-07T14-00-00Z_short_order_block_reclaim",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4163.66,
          "ob_high": 4180.52,
          "displacement_low": 4156.16
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      },
      "entry": 4172.09,
      "stop": 4180.52,
      "target": 4155.23,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-07T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-07T14:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4147.857,
      "stop": 4139.605,
      "target": 4160.236,
      "r": -1.0,
      "entry_touch_time": "2026-07-07T14:35:00Z",
      "outcome_time": "2026-07-07T15:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T14:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4147.857, stop=4139.605, target=4160.236. Pre-M15 range high=4180.52, low=4125.105.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T14-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T14:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4139.605,
          "impulse_high": 4158.36,
          "fib50": 4148.9825,
          "fib62": 4146.7319
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-07T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-07T19:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-07T19:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY PM",
      "entry": 4112.223,
      "stop": 4127.88,
      "target": 4088.736,
      "r": -1.0,
      "entry_touch_time": "2026-07-07T19:35:00Z",
      "outcome_time": "2026-07-08T03:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-07T19:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4112.223, stop=4127.88, target=4088.736. Pre-M15 range high=4157.745, low=4092.295.",
      "candidate": {
        "id": "candidate_v2_2026-07-07T19-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-07",
        "timestamp": "2026-07-07T19:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY PM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4092.295,
          "impulse_high": 4127.88,
          "fib50": 4110.0875,
          "fib62": 4114.3577000000005
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-08T04-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-08T07:10:00Z; outcome=tp_first",
      "timestamp": "2026-07-08T04:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4117.142,
      "stop": 4113.42,
      "target": 4124.587,
      "r": 2.0,
      "entry_touch_time": "2026-07-08T07:10:00Z",
      "outcome_time": "2026-07-08T07:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-08T04:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4117.142, stop=4113.42, target=4124.587. Pre-M15 range high=4131.22, low=4096.065.",
      "candidate": {
        "id": "candidate_v2_2026-07-08T04-15-00Z_long_order_block_reclaim",
        "date": "2026-07-08",
        "timestamp": "2026-07-08T04:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4113.42,
          "ob_high": 4120.865,
          "displacement_high": 4130.82
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-08T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-08T12:15:00Z; outcome=tp_first",
      "timestamp": "2026-07-08T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4074.59,
      "stop": 4092.115,
      "target": 4048.302,
      "r": 1.5,
      "entry_touch_time": "2026-07-08T12:15:00Z",
      "outcome_time": "2026-07-08T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-08T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4074.59, stop=4092.115, target=4048.302. Pre-M15 range high=4127.345, low=4040.575.",
      "candidate": {
        "id": "candidate_v2_2026-07-08T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-08",
        "timestamp": "2026-07-08T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4052.285,
          "impulse_high": 4092.115,
          "fib50": 4072.2,
          "fib62": 4076.9795999999997
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-08T11-30-00Z_long_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-07-08T11:40:00Z; outcome=sl_first",
      "timestamp": "2026-07-08T11:30:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4057.043,
      "stop": 4041.55,
      "target": 4088.027,
      "r": -1.0,
      "entry_touch_time": "2026-07-08T11:40:00Z",
      "outcome_time": "2026-07-08T14:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-08T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4057.043, stop=4041.55, target=4088.027. Pre-M15 range high=4127.345, low=4040.575.",
      "candidate": {
        "id": "candidate_v2_2026-07-08T11-30-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-07-08",
        "timestamp": "2026-07-08T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4041.55,
          "fvg_low": 4054.65,
          "fvg_high": 4059.435
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-08T14-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-08T14:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-08T14:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4051.238,
      "stop": 4047.825,
      "target": 4058.063,
      "r": -1.0,
      "entry_touch_time": "2026-07-08T14:35:00Z",
      "outcome_time": "2026-07-08T14:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-08T14:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4051.238, stop=4047.825, target=4058.063. Pre-M15 range high=4086.445, low=4040.575.",
      "candidate": {
        "id": "candidate_v2_2026-07-08T14-15-00Z_long_order_block_reclaim",
        "date": "2026-07-08",
        "timestamp": "2026-07-08T14:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4047.825,
          "ob_high": 4054.65,
          "displacement_high": 4066.07
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-08T16-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-08T16:50:00Z; outcome=sl_first",
      "timestamp": "2026-07-08T16:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4062.811,
      "stop": 4071.585,
      "target": 4049.651,
      "r": -1.0,
      "entry_touch_time": "2026-07-08T16:50:00Z",
      "outcome_time": "2026-07-08T17:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-08T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4062.811, stop=4071.585, target=4049.651. Pre-M15 range high=4086.445, low=4021.815.",
      "candidate": {
        "id": "candidate_v2_2026-07-08T16-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-08",
        "timestamp": "2026-07-08T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4051.645,
          "impulse_high": 4071.585,
          "fib50": 4061.615,
          "fib62": 4064.0078
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-08T16-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-08T16:45:00Z; outcome=sl_first",
      "timestamp": "2026-07-08T16:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4058.595,
      "stop": 4065.545,
      "target": 4044.695,
      "r": -1.0,
      "entry_touch_time": "2026-07-08T16:45:00Z",
      "outcome_time": "2026-07-08T17:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-08T16:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4058.595, stop=4065.545, target=4044.695. Pre-M15 range high=4086.445, low=4021.815.",
      "candidate": {
        "id": "candidate_v2_2026-07-08T16-30-00Z_short_order_block_reclaim",
        "date": "2026-07-08",
        "timestamp": "2026-07-08T16:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4051.645,
          "ob_high": 4065.545,
          "displacement_low": 4035.395
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-09T01-30-00Z_short_breaker_continuation",
      "decision": "confirmed",
      "reason": "Breaker Continuation Short: entry touched 2026-07-09T02:15:00Z; outcome=tp_first",
      "timestamp": "2026-07-09T01:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4080.765,
      "stop": 4087.615,
      "target": 4067.065,
      "r": 2.0,
      "entry_touch_time": "2026-07-09T02:15:00Z",
      "outcome_time": "2026-07-09T02:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-09T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4080.765, stop=4087.615, target=4067.065. Pre-M15 range high=4090.02, low=4062.475.",
      "candidate": {
        "id": "candidate_v2_2026-07-09T01-30-00Z_short_breaker_continuation",
        "date": "2026-07-09",
        "timestamp": "2026-07-09T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4090.02,
          "breaker_low": 4073.915,
          "breaker_high": 4087.615,
          "break_low": 4071.645
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-09T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-09T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-09T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4072.856,
      "stop": 4078.895,
      "target": 4063.798,
      "r": -1.0,
      "entry_touch_time": "2026-07-09T01:35:00Z",
      "outcome_time": "2026-07-09T02:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-09T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4072.856, stop=4078.895, target=4063.798. Pre-M15 range high=4090.02, low=4062.475.",
      "candidate": {
        "id": "candidate_v2_2026-07-09T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-09",
        "timestamp": "2026-07-09T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4065.17,
          "impulse_high": 4078.895,
          "fib50": 4072.0325000000003,
          "fib62": 4073.6795
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-09T02-30-00Z_short_breaker_continuation",
      "decision": "rejected",
      "reason": "invalid short geometry",
      "candidate": {
        "id": "candidate_v2_2026-07-09T02-30-00Z_short_breaker_continuation",
        "date": "2026-07-09",
        "timestamp": "2026-07-09T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4087.695,
          "breaker_low": 4076.185,
          "breaker_high": 4076.185,
          "break_low": 4071.645
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4076.185,
      "stop": 4076.185,
      "target": 4076.185
    },
    {
      "candidate_id": "candidate_v2_2026-07-09T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-09T05:10:00Z; outcome=sl_first",
      "timestamp": "2026-07-09T05:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4074.151,
      "stop": 4081.715,
      "target": 4062.806,
      "r": -1.0,
      "entry_touch_time": "2026-07-09T05:10:00Z",
      "outcome_time": "2026-07-09T05:50:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-09T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4074.151, stop=4081.715, target=4062.806. Pre-M15 range high=4090.02, low=4054.4.",
      "candidate": {
        "id": "candidate_v2_2026-07-09T05-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-09",
        "timestamp": "2026-07-09T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4064.525,
          "impulse_high": 4081.715,
          "fib50": 4073.12,
          "fib62": 4075.1828
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-09T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-09T14:20:00Z; outcome=tp_first",
      "timestamp": "2026-07-09T14:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4115.926,
      "stop": 4106.875,
      "target": 4129.502,
      "r": 1.5,
      "entry_touch_time": "2026-07-09T14:20:00Z",
      "outcome_time": "2026-07-09T15:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-09T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4115.926, stop=4106.875, target=4129.502. Pre-M15 range high=4136.605, low=4093.855.",
      "candidate": {
        "id": "candidate_v2_2026-07-09T14-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-09",
        "timestamp": "2026-07-09T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4106.875,
          "impulse_high": 4127.445,
          "fib50": 4117.16,
          "fib62": 4114.6916
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-09T17-15-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-07-09T17:25:00Z; outcome=tp_first",
      "timestamp": "2026-07-09T17:15:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "NY PM",
      "entry": 4129.188,
      "stop": 4125.095,
      "target": 4137.372,
      "r": 2.0,
      "entry_touch_time": "2026-07-09T17:25:00Z",
      "outcome_time": "2026-07-09T17:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-09T17:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4129.188, stop=4125.095, target=4137.372. Pre-M15 range high=4138.035, low=4106.875.",
      "candidate": {
        "id": "candidate_v2_2026-07-09T17-15-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-07-09",
        "timestamp": "2026-07-09T17:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "NY PM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4125.095,
          "fvg_low": 4128.995,
          "fvg_high": 4129.38
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-10T01:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T01:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4120.672,
      "stop": 4114.545,
      "target": 4129.863,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T01:05:00Z",
      "outcome_time": "2026-07-10T01:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T01:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4120.672, stop=4114.545, target=4129.863. Pre-M15 range high=4131.26, low=4114.545.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T01-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T01:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4114.545,
          "impulse_high": 4128.47,
          "fib50": 4121.5075,
          "fib62": 4119.8365
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T01-45-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-07-10T02:05:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-07-10T01:45:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4122.32,
      "stop": 4123.195,
      "target": 4120.57,
      "r": null,
      "entry_touch_time": "2026-07-10T02:05:00Z",
      "outcome_time": "2026-07-10T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T01:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4122.32, stop=4123.195, target=4120.57. Pre-M15 range high=4131.26, low=4108.72.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T01-45-00Z_short_breaker_continuation",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T01:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4128.47,
          "breaker_low": 4121.445,
          "breaker_high": 4123.195,
          "break_low": 4114.545
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-10T03:20:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T02:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4121.785,
      "stop": 4116.12,
      "target": 4130.282,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T03:20:00Z",
      "outcome_time": "2026-07-10T04:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T02:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4121.785, stop=4116.12, target=4130.282. Pre-M15 range high=4131.26, low=4108.72.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T02-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T02:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4116.12,
          "impulse_high": 4128.995,
          "fib50": 4122.5575,
          "fib62": 4121.0125
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T07-45-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-10T10:20:00Z; outcome=tp_first",
      "timestamp": "2026-07-10T07:45:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4112.16,
      "stop": 4115.52,
      "target": 4105.44,
      "r": 2.0,
      "entry_touch_time": "2026-07-10T10:20:00Z",
      "outcome_time": "2026-07-10T10:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T07:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4112.16, stop=4115.52, target=4105.44. Pre-M15 range high=4134.92, low=4104.44.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T07-45-00Z_short_order_block_reclaim",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T07:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4108.8,
          "ob_high": 4115.52,
          "displacement_low": 4105.425
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-10T09:15:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T09:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4100.967,
      "stop": 4105.765,
      "target": 4093.769,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T09:15:00Z",
      "outcome_time": "2026-07-10T10:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T09:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4100.967, stop=4105.765, target=4093.769. Pre-M15 range high=4121.285, low=4094.535.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T09-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T09:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4094.86,
          "impulse_high": 4105.765,
          "fib50": 4100.3125,
          "fib62": 4101.6211
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-10T10:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T10:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4106.858,
      "stop": 4109.65,
      "target": 4102.671,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T10:05:00Z",
      "outcome_time": "2026-07-10T10:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T10:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4106.858, stop=4109.65, target=4102.671. Pre-M15 range high=4120.19, low=4094.535.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T10-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T10:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4103.305,
          "impulse_high": 4109.65,
          "fib50": 4106.4775,
          "fib62": 4107.2389
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T11-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-10T11:40:00Z; outcome=tp_first",
      "timestamp": "2026-07-10T11:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4106.342,
      "stop": 4108.2,
      "target": 4102.627,
      "r": 2.0,
      "entry_touch_time": "2026-07-10T11:40:00Z",
      "outcome_time": "2026-07-10T11:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4106.342, stop=4108.2, target=4102.627. Pre-M15 range high=4115.52, low=4094.535.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T11-30-00Z_short_order_block_reclaim",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4104.485,
          "ob_high": 4108.2,
          "displacement_low": 4100.19
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T12-15-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-10T12:25:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T12:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4105.12,
      "stop": 4102.195,
      "target": 4110.97,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T12:25:00Z",
      "outcome_time": "2026-07-10T12:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T12:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4105.12, stop=4102.195, target=4110.97. Pre-M15 range high=4117.585, low=4094.535.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T12-15-00Z_long_order_block_reclaim",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T12:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4102.195,
          "ob_high": 4108.045,
          "displacement_high": 4117.585
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T13-30-00Z_short_breaker_continuation",
      "decision": "needs_more_context",
      "reason": "Breaker Continuation Short: entry touched 2026-07-10T13:40:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-07-10T13:30:00Z",
      "direction": "Short",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "NY AM",
      "entry": 4101.788,
      "stop": 4102.465,
      "target": 4100.433,
      "r": null,
      "entry_touch_time": "2026-07-10T13:40:00Z",
      "outcome_time": "2026-07-10T13:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4101.788, stop=4102.465, target=4100.433. Pre-M15 range high=4117.585, low=4085.855.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T13-30-00Z_short_breaker_continuation",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_high": 4117.585,
          "breaker_low": 4101.11,
          "breaker_high": 4102.465,
          "break_low": 4094.535
        },
        "notes": "Bearish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-10T13:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4097.565,
      "stop": 4106.765,
      "target": 4083.764,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T13:35:00Z",
      "outcome_time": "2026-07-10T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4097.565, stop=4106.765, target=4083.764. Pre-M15 range high=4117.585, low=4085.855.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4085.855,
          "impulse_high": 4106.765,
          "fib50": 4096.31,
          "fib62": 4098.8192
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T13-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-10T13:40:00Z; outcome=sl_first",
      "timestamp": "2026-07-10T13:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 4102.642,
      "stop": 4106.42,
      "target": 4095.087,
      "r": -1.0,
      "entry_touch_time": "2026-07-10T13:40:00Z",
      "outcome_time": "2026-07-10T14:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4102.642, stop=4106.42, target=4095.087. Pre-M15 range high=4117.585, low=4085.855.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T13-30-00Z_short_order_block_reclaim",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4098.865,
          "ob_high": 4106.42,
          "displacement_low": 4085.855
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-10T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-12T22:05:00Z; outcome=tp_first",
      "timestamp": "2026-07-10T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4092.453,
      "stop": 4107.895,
      "target": 4069.291,
      "r": 1.5,
      "entry_touch_time": "2026-07-12T22:05:00Z",
      "outcome_time": "2026-07-12T23:00:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-10T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4092.453, stop=4107.895, target=4069.291. Pre-M15 range high=4117.585, low=4072.8.",
      "candidate": {
        "id": "candidate_v2_2026-07-10T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-10",
        "timestamp": "2026-07-10T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4072.8,
          "impulse_high": 4107.895,
          "fib50": 4090.3475000000003,
          "fib62": 4094.5589000000004
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-12T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-12T23:40:00Z; outcome=sl_first",
      "timestamp": "2026-07-12T23:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4079.242,
      "stop": 4086.755,
      "target": 4067.973,
      "r": -1.0,
      "entry_touch_time": "2026-07-12T23:40:00Z",
      "outcome_time": "2026-07-13T00:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-12T23:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4079.242, stop=4086.755, target=4067.973. Pre-M15 range high=4121.375, low=4068.61.",
      "candidate": {
        "id": "candidate_v2_2026-07-12T23-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-12",
        "timestamp": "2026-07-12T23:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4069.68,
          "impulse_high": 4086.755,
          "fib50": 4078.2174999999997,
          "fib62": 4080.2665
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-13T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-13T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-07-13T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4083.916,
      "stop": 4091.295,
      "target": 4072.848,
      "r": 1.5,
      "entry_touch_time": "2026-07-13T01:35:00Z",
      "outcome_time": "2026-07-13T01:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-13T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4083.916, stop=4091.295, target=4072.848. Pre-M15 range high=4121.375, low=4061.115.",
      "candidate": {
        "id": "candidate_v2_2026-07-13T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-13",
        "timestamp": "2026-07-13T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4074.525,
          "impulse_high": 4091.295,
          "fib50": 4082.91,
          "fib62": 4084.9224
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-14T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-14T01:00:00Z; outcome=sl_first",
      "timestamp": "2026-07-14T00:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 3995.521,
      "stop": 4004.93,
      "target": 3981.407,
      "r": -1.0,
      "entry_touch_time": "2026-07-14T01:00:00Z",
      "outcome_time": "2026-07-14T01:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-14T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3995.521, stop=4004.93, target=3981.407. Pre-M15 range high=4007.145, low=3983.545.",
      "candidate": {
        "id": "candidate_v2_2026-07-14T00-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-14",
        "timestamp": "2026-07-14T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3983.545,
          "impulse_high": 4004.93,
          "fib50": 3994.2375,
          "fib62": 3996.8037
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-14T04-45-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-14T08:05:00Z; outcome=tp_first",
      "timestamp": "2026-07-14T04:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4015.74,
      "stop": 4013.98,
      "target": 4019.26,
      "r": 2.0,
      "entry_touch_time": "2026-07-14T08:05:00Z",
      "outcome_time": "2026-07-14T08:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-14T04:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4015.74, stop=4013.98, target=4019.26. Pre-M15 range high=4023.575, low=3983.545.",
      "candidate": {
        "id": "candidate_v2_2026-07-14T04-45-00Z_long_order_block_reclaim",
        "date": "2026-07-14",
        "timestamp": "2026-07-14T04:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4013.98,
          "ob_high": 4017.5,
          "displacement_high": 4023.575
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-14T06-15-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-14T06:40:00Z; outcome=tp_first",
      "timestamp": "2026-07-14T06:15:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4022.16,
      "stop": 4020.2,
      "target": 4026.08,
      "r": 2.0,
      "entry_touch_time": "2026-07-14T06:40:00Z",
      "outcome_time": "2026-07-14T06:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-14T06:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4022.16, stop=4020.2, target=4026.08. Pre-M15 range high=4034.25, low=3992.83.",
      "candidate": {
        "id": "candidate_v2_2026-07-14T06-15-00Z_long_order_block_reclaim",
        "date": "2026-07-14",
        "timestamp": "2026-07-14T06:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4020.2,
          "ob_high": 4024.12,
          "displacement_high": 4034.25
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-14T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-14T12:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-14T12:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4027.777,
      "stop": 4024.525,
      "target": 4032.654,
      "r": -1.0,
      "entry_touch_time": "2026-07-14T12:05:00Z",
      "outcome_time": "2026-07-14T12:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-14T12:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4027.777, stop=4024.525, target=4032.654. Pre-M15 range high=4035.99, low=4013.925.",
      "candidate": {
        "id": "candidate_v2_2026-07-14T12-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-14",
        "timestamp": "2026-07-14T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4024.525,
          "impulse_high": 4031.915,
          "fib50": 4028.2200000000003,
          "fib62": 4027.3332
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-14T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-14T16:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-14T15:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4062.232,
      "stop": 4029.375,
      "target": 4111.517,
      "r": -1.0,
      "entry_touch_time": "2026-07-14T16:05:00Z",
      "outcome_time": "2026-07-15T03:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-14T15:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4062.232, stop=4029.375, target=4111.517. Pre-M15 range high=4104.05, low=4015.485.",
      "candidate": {
        "id": "candidate_v2_2026-07-14T15-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-14",
        "timestamp": "2026-07-14T15:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4029.375,
          "impulse_high": 4104.05,
          "fib50": 4066.7125,
          "fib62": 4057.7515
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-14T23-15-00Z_long_ict_sweep_mss_fvg",
      "decision": "confirmed",
      "reason": "ICT Sweep + MSS + FVG Long: entry touched 2026-07-14T23:25:00Z; outcome=tp_first",
      "timestamp": "2026-07-14T23:15:00Z",
      "direction": "Long",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Other",
      "entry": 4050.86,
      "stop": 4046.925,
      "target": 4058.73,
      "r": 2.0,
      "entry_touch_time": "2026-07-14T23:25:00Z",
      "outcome_time": "2026-07-15T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-14T23:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4050.86, stop=4046.925, target=4058.73. Pre-M15 range high=4065.17, low=4042.885.",
      "candidate": {
        "id": "candidate_v2_2026-07-14T23-15-00Z_long_ict_sweep_mss_fvg",
        "date": "2026-07-14",
        "timestamp": "2026-07-14T23:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_displacement",
          "bullish_fvg_candidate"
        ],
        "levels": {
          "sweep_low": 4046.925,
          "fvg_low": 4050.3,
          "fvg_high": 4051.42
        },
        "notes": "Sweep + displacement + M15 bullish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T00-30-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-07-15T01:30:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T00:30:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Asia",
      "entry": 4050.903,
      "stop": 4047.68,
      "target": 4057.348,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T01:30:00Z",
      "outcome_time": "2026-07-15T01:30:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4050.903, stop=4047.68, target=4057.348. Pre-M15 range high=4058.56, low=4044.895.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T00-30-00Z_long_breaker_continuation",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4046.925,
          "breaker_low": 4047.68,
          "breaker_high": 4054.125,
          "break_high": 4056.975
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-15T00:35:00Z; outcome=tp_first",
      "timestamp": "2026-07-15T00:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4054.247,
      "stop": 4051.05,
      "target": 4059.041,
      "r": 1.5,
      "entry_touch_time": "2026-07-15T00:35:00Z",
      "outcome_time": "2026-07-15T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4054.247, stop=4051.05, target=4059.041. Pre-M15 range high=4058.56, low=4044.895.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T00-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4051.05,
          "impulse_high": 4058.315,
          "fib50": 4054.6825,
          "fib62": 4053.8107
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T00-30-00Z_long_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-15T00:35:00Z; outcome=tp_first",
      "timestamp": "2026-07-15T00:30:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4053.59,
      "stop": 4051.05,
      "target": 4058.67,
      "r": 2.0,
      "entry_touch_time": "2026-07-15T00:35:00Z",
      "outcome_time": "2026-07-15T00:55:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T00:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4053.59, stop=4051.05, target=4058.67. Pre-M15 range high=4058.56, low=4044.895.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T00-30-00Z_long_order_block_reclaim",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T00:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4051.05,
          "ob_high": 4056.13,
          "displacement_high": 4058.315
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-15T01:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T01:30:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4050.093,
      "stop": 4046.925,
      "target": 4054.845,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T01:35:00Z",
      "outcome_time": "2026-07-15T01:35:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4050.093, stop=4046.925, target=4054.845. Pre-M15 range high=4062.125, low=4036.76.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T01-30-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_bullish"
        ],
        "levels": {
          "impulse_low": 4046.925,
          "impulse_high": 4054.125,
          "fib50": 4050.525,
          "fib62": 4049.661
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T05-00-00Z_short_ict_sweep_mss_fvg",
      "decision": "shadow",
      "reason": "ICT Sweep + MSS + FVG Short: entry touched 2026-07-15T05:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T05:00:00Z",
      "direction": "Short",
      "strategy": "ICT Sweep + MSS + FVG",
      "strategy_family": "sweep_mss_fvg",
      "session": "Asia",
      "entry": 4029.573,
      "stop": 4036.28,
      "target": 4016.158,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T05:05:00Z",
      "outcome_time": "2026-07-15T05:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T05:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=ICT Sweep + MSS + FVG.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4029.573, stop=4036.28, target=4016.158. Pre-M15 range high=4062.125, low=4025.105.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T05-00-00Z_short_ict_sweep_mss_fvg",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T05:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "ICT Sweep + MSS + FVG",
        "strategy_family": "sweep_mss_fvg",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 62,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "buyside_sweep",
          "bearish_displacement",
          "bearish_fvg_candidate"
        ],
        "levels": {
          "sweep_high": 4036.28,
          "fvg_low": 4028.745,
          "fvg_high": 4030.4
        },
        "notes": "Sweep + displacement + M15 bearish FVG candidate; confirm MSS/FVG replay manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-15T05:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T05:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4031.257,
      "stop": 4036.28,
      "target": 4023.724,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T05:35:00Z",
      "outcome_time": "2026-07-15T05:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4031.257, stop=4036.28, target=4023.724. Pre-M15 range high=4062.125, low=4022.245.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T05-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4024.865,
          "impulse_high": 4036.28,
          "fib50": 4030.5725,
          "fib62": 4031.9423
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T05-30-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-15T05:40:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T05:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4032.477,
      "stop": 4034.555,
      "target": 4028.323,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T05:40:00Z",
      "outcome_time": "2026-07-15T05:40:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T05:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4032.477, stop=4034.555, target=4028.323. Pre-M15 range high=4062.125, low=4022.245.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T05-30-00Z_short_order_block_reclaim",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T05:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4030.4,
          "ob_high": 4034.555,
          "displacement_low": 4025.105
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T08-15-00Z_short_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-15T08:20:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T08:15:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "London",
      "entry": 4024.227,
      "stop": 4026.92,
      "target": 4018.842,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T08:20:00Z",
      "outcome_time": "2026-07-15T08:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T08:15:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4024.227, stop=4026.92, target=4018.842. Pre-M15 range high=4037.16, low=4017.475.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T08-15-00Z_short_order_block_reclaim",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T08:15:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "London",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4021.535,
          "ob_high": 4026.92,
          "displacement_low": 4017.475
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-15T08:35:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T08:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4028.184,
      "stop": 4034.485,
      "target": 4018.733,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T08:35:00Z",
      "outcome_time": "2026-07-15T10:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T08:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4028.184, stop=4034.485, target=4018.733. Pre-M15 range high=4037.16, low=4017.475.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T08-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T08:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4020.165,
          "impulse_high": 4034.485,
          "fib50": 4027.325,
          "fib62": 4029.0434
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Long: entry touched 2026-07-15T14:45:00Z; outcome=sl_first",
      "timestamp": "2026-07-15T13:00:00Z",
      "direction": "Long",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4053.58,
      "stop": 4039.425,
      "target": 4074.812,
      "r": -1.0,
      "entry_touch_time": "2026-07-15T14:45:00Z",
      "outcome_time": "2026-07-15T16:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T13:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4053.58, stop=4039.425, target=4074.812. Pre-M15 range high=4074.175, low=4018.1.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T13-00-00Z_long_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T13:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4039.425,
          "impulse_high": 4071.595,
          "fib50": 4055.51,
          "fib62": 4051.6496
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bullish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-15T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-15T13:55:00Z; outcome=tp_first",
      "timestamp": "2026-07-15T13:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4065.344,
      "stop": 4074.175,
      "target": 4052.098,
      "r": 1.5,
      "entry_touch_time": "2026-07-15T13:55:00Z",
      "outcome_time": "2026-07-15T15:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-15T13:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4065.344, stop=4074.175, target=4052.098. Pre-M15 range high=4074.175, low=4025.605.",
      "candidate": {
        "id": "candidate_v2_2026-07-15T13-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-15",
        "timestamp": "2026-07-15T13:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4054.105,
          "impulse_high": 4074.175,
          "fib50": 4064.1400000000003,
          "fib62": 4066.5484
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-16T01:35:00Z; outcome=tp_first",
      "timestamp": "2026-07-16T01:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Asia",
      "entry": 4043.405,
      "stop": 4050.735,
      "target": 4032.409,
      "r": 1.5,
      "entry_touch_time": "2026-07-16T01:35:00Z",
      "outcome_time": "2026-07-16T02:10:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4043.405, stop=4050.735, target=4032.409. Pre-M15 range high=4064.71, low=4034.075.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T01-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 58,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_range"
        ],
        "levels": {
          "impulse_low": 4034.075,
          "impulse_high": 4050.735,
          "fib50": 4042.4049999999997,
          "fib62": 4044.4042
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T01-30-00Z_short_order_block_reclaim",
      "decision": "confirmed",
      "reason": "Order Block Reclaim Short: entry touched 2026-07-16T01:40:00Z; outcome=tp_first",
      "timestamp": "2026-07-16T01:30:00Z",
      "direction": "Short",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Asia",
      "entry": 4045.923,
      "stop": 4050.735,
      "target": 4036.298,
      "r": 2.0,
      "entry_touch_time": "2026-07-16T01:40:00Z",
      "outcome_time": "2026-07-16T02:05:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T01:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4045.923, stop=4050.735, target=4036.298. Pre-M15 range high=4064.71, low=4034.075.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T01-30-00Z_short_order_block_reclaim",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T01:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Short",
        "session": "Asia",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4041.11,
          "ob_high": 4050.735,
          "displacement_low": 4034.075
        },
        "notes": "Bearish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-16T07:40:00Z; outcome=sl_first",
      "timestamp": "2026-07-16T07:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "London",
      "entry": 4027.806,
      "stop": 4030.855,
      "target": 4023.232,
      "r": -1.0,
      "entry_touch_time": "2026-07-16T07:40:00Z",
      "outcome_time": "2026-07-16T07:45:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T07:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4027.806, stop=4030.855, target=4023.232. Pre-M15 range high=4038.045, low=4023.03.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T07-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T07:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "London",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4023.925,
          "impulse_high": 4030.855,
          "fib50": 4027.3900000000003,
          "fib62": 4028.2216
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T11-00-00Z_long_breaker_continuation",
      "decision": "shadow",
      "reason": "Breaker Continuation Long: entry touched 2026-07-16T11:15:00Z; outcome=sl_first",
      "timestamp": "2026-07-16T11:00:00Z",
      "direction": "Long",
      "strategy": "Breaker Continuation",
      "strategy_family": "breaker_continuation",
      "session": "Other",
      "entry": 4026.55,
      "stop": 4024.63,
      "target": 4030.39,
      "r": -1.0,
      "entry_touch_time": "2026-07-16T11:15:00Z",
      "outcome_time": "2026-07-16T11:25:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T11:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Breaker Continuation.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4026.55, stop=4024.63, target=4030.39. Pre-M15 range high=4037.98, low=4023.03.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T11-00-00Z_long_breaker_continuation",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T11:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4023.03,
          "breaker_low": 4024.63,
          "breaker_high": 4028.47,
          "break_high": 4036.62
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "needs_more_context",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-16T12:15:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-07-16T11:30:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "Other",
      "entry": 4026.345,
      "stop": 4030.25,
      "target": 4020.488,
      "r": null,
      "entry_touch_time": "2026-07-16T12:15:00Z",
      "outcome_time": "2026-07-16T12:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T11:30:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4026.345, stop=4030.25, target=4020.488. Pre-M15 range high=4037.98, low=4021.375.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T11-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T11:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "Other",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4021.375,
          "impulse_high": 4030.25,
          "fib50": 4025.8125,
          "fib62": 4026.8775
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T11-45-00Z_long_order_block_reclaim",
      "decision": "needs_more_context",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-16T12:15:00Z; outcome=ambiguous_same_bar",
      "timestamp": "2026-07-16T11:45:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "Other",
      "entry": 4024.783,
      "stop": 4021.375,
      "target": 4031.598,
      "r": null,
      "entry_touch_time": "2026-07-16T12:15:00Z",
      "outcome_time": "2026-07-16T12:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T11:45:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4024.783, stop=4021.375, target=4031.598. Pre-M15 range high=4042.43, low=4021.375.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T11-45-00Z_long_order_block_reclaim",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T11:45:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "Other",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 4021.375,
          "ob_high": 4028.19,
          "displacement_high": 4036.14
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T12-00-00Z_long_breaker_continuation",
      "decision": "rejected",
      "reason": "invalid long geometry",
      "candidate": {
        "id": "candidate_v2_2026-07-16T12-00-00Z_long_breaker_continuation",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T12:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Breaker Continuation",
        "strategy_family": "breaker_continuation",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 57,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "sellside_sweep",
          "bullish_breaker_candidate",
          "breaker_retest"
        ],
        "levels": {
          "sweep_low": 4021.375,
          "breaker_low": 4028.19,
          "breaker_high": 4028.19,
          "break_high": 4037.98
        },
        "notes": "Bullish breaker continuation candidate; validate failed OB/breaker manually."
      },
      "entry": 4028.19,
      "stop": 4028.19,
      "target": 4028.19
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "candidate formed but proposed entry not touched in M5 follow-through window",
      "candidate": {
        "id": "candidate_v2_2026-07-16T12-30-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T12:30:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 4012.915,
          "impulse_high": 4043.36,
          "fib50": 4028.1375,
          "fib62": 4031.7909
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      },
      "entry": 4029.9642,
      "stop": 4043.36,
      "target": 4009.8704999999995,
      "r": null
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "shadow",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-16T14:05:00Z; outcome=sl_first",
      "timestamp": "2026-07-16T14:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 3996.794,
      "stop": 4008.485,
      "target": 3979.258,
      "r": -1.0,
      "entry_touch_time": "2026-07-16T14:05:00Z",
      "outcome_time": "2026-07-16T15:20:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T14:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3996.794, stop=4008.485, target=3979.258. Pre-M15 range high=4043.36, low=3973.8.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T14-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T14:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3981.915,
          "impulse_high": 4008.485,
          "fib50": 3995.2,
          "fib62": 3998.3884000000003
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
      "decision": "confirmed",
      "reason": "Aryy HTF Narrative Fib 50/62 Short: entry touched 2026-07-16T15:25:00Z; outcome=tp_first",
      "timestamp": "2026-07-16T15:00:00Z",
      "direction": "Short",
      "strategy": "Aryy HTF Narrative Fib 50/62",
      "strategy_family": "fib_50_62",
      "session": "NY AM",
      "entry": 4012.568,
      "stop": 4029.845,
      "target": 3986.653,
      "r": 1.5,
      "entry_touch_time": "2026-07-16T15:25:00Z",
      "outcome_time": "2026-07-16T16:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T15:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Aryy HTF Narrative Fib 50/62.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=4012.568, stop=4029.845, target=3986.653. Pre-M15 range high=4043.36, low=3973.8.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T15-00-00Z_short_aryy_htf_narrative_fib_50_62",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T15:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Aryy HTF Narrative Fib 50/62",
        "strategy_family": "fib_50_62",
        "direction": "Short",
        "session": "NY AM",
        "timeframe": "M30",
        "entry_timeframe": "M15/M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 68,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bearish_impulse",
          "fib_50_62_retrace",
          "htf_bearish"
        ],
        "levels": {
          "impulse_low": 3990.58,
          "impulse_high": 4029.845,
          "fib50": 4010.2124999999996,
          "fib62": 4014.9242999999997
        },
        "notes": "HTF/Fib 50-62 retracement candidate after bearish displacement; validate PD array overlap manually."
      }
    },
    {
      "candidate_id": "candidate_v2_2026-07-16T16-00-00Z_long_order_block_reclaim",
      "decision": "shadow",
      "reason": "Order Block Reclaim Long: entry touched 2026-07-16T16:10:00Z; outcome=sl_first",
      "timestamp": "2026-07-16T16:00:00Z",
      "direction": "Long",
      "strategy": "Order Block Reclaim",
      "strategy_family": "order_block_reclaim",
      "session": "NY AM",
      "entry": 3994.13,
      "stop": 3989.47,
      "target": 4003.45,
      "r": -1.0,
      "entry_touch_time": "2026-07-16T16:10:00Z",
      "outcome_time": "2026-07-16T16:15:00Z",
      "htf_context": "H1/M30 context mechanically checked around 2026-07-16T16:00:00Z.",
      "m30_structure": "M30 recent range high/low checked; strategy=Order Block Reclaim.",
      "m15_m5_execution": "M15/M5 candidate levels: entry=3994.13, stop=3989.47, target=4003.45. Pre-M15 range high=4043.36, low=3973.8.",
      "candidate": {
        "id": "candidate_v2_2026-07-16T16-00-00Z_long_order_block_reclaim",
        "date": "2026-07-16",
        "timestamp": "2026-07-16T16:00:00Z",
        "symbol": "XAUUSD",
        "strategy": "Order Block Reclaim",
        "strategy_family": "order_block_reclaim",
        "direction": "Long",
        "session": "NY AM",
        "timeframe": "M15",
        "entry_timeframe": "M5",
        "narrative": "TBD manual replay",
        "htf_context": "TBD manual replay",
        "ltf_trigger": "Mechanical v2 candidate; manual TradingView replay required",
        "entry": null,
        "stop": null,
        "target": null,
        "fib": "TBD",
        "pd": "TBD",
        "candidate_score": 60,
        "confidence": "Unreviewed",
        "status": "unreviewed",
        "requires_manual_replay": true,
        "scanner_flags": [
          "bullish_ob_candidate",
          "displacement_break",
          "ob_retest"
        ],
        "levels": {
          "ob_low": 3989.47,
          "ob_high": 3998.79,
          "displacement_high": 4017.03
        },
        "notes": "Bullish OB reclaim/retest candidate; validate OB quality and liquidity context manually."
      }
    }
  ]
}
