[
  {
    "candidate_id": "candidate_2026-01-07T14-45-00Z_short_liquidity_sweep_reversal",
    "timestamp": "2026-01-07T14:45:00Z",
    "decision": "needs_more_context",
    "reason": "14:45Z is a liquidity grab but lacks a clear M5 shift confirming downside rejection before 15:00Z.",
    "htf_context": "Consolidating near 4496 highs on M15.",
    "m30_structure": "Bullish structure intact, awaiting a clear bearish CHoCH.",
    "m15_m5_execution": "M5 wicked up to 4497 but didn't cleanly break structure downside to confirm short entry.",
    "entry": null,
    "stop": null,
    "target": null,
    "r": null,
    "promoted_to_journal": false
  },
  {
    "candidate_id": "candidate_2026-01-07T15-45-00Z_long_liquidity_sweep_reversal",
    "timestamp": "2026-01-07T15:45:00Z",
    "decision": "needs_more_context",
    "reason": "Price sweeping 4494 but overall context too choppy on M5; no clean displacement off Fib 50/62.",
    "htf_context": "Ranging market, lack of high-probability narrative.",
    "m30_structure": "Inside bar chop.",
    "m15_m5_execution": "M5 sweeps are shallow, missing clear displacement and OTE.",
    "entry": null,
    "stop": null,
    "target": null,
    "r": null,
    "promoted_to_journal": false
  },
  {
    "candidate_id": "candidate_2026-01-07T21-00-00Z_long_liquidity_sweep_reversal",
    "timestamp": "2026-01-07T21:00:00Z",
    "decision": "needs_more_context",
    "reason": "Late NY session / early Asian session transition. Volume is too low to confirm a high-probability reversal sweep.",
    "htf_context": "End of day chop.",
    "m30_structure": "Choppy consolidation around 4498.",
    "m15_m5_execution": "M5 prints tight range, not a valid liquidity sweep setup for entry.",
    "entry": null,
    "stop": null,
    "target": null,
    "r": null,
    "promoted_to_journal": false
  }
]