[
  {
    "id": "buy_full_cycle",
    "description": "IDLE → ARMED_BUY → PRIMED_BUY → IDLE(fire). Turquoise arm, dark_green prime, light_green trigger.",
    "steps": [
      {
        "frame": "calibration/frames/20260420_200002_turquoise.png",
        "expected_color": "turquoise",
        "expected_reason": "arm",
        "expected_state": "ARMED_BUY",
        "expected_trigger": null,
        "expected_new_alerts": ["arm"],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_185102_dark_green.png",
        "expected_color": "dark_green",
        "expected_reason": "prime",
        "expected_state": "PRIMED_BUY",
        "expected_trigger": null,
        "expected_new_alerts": ["prime"],
        "expected_scheduler_running": true
      },
      {
        "frame": "calibration/frames/20260420_163303_light_green.png",
        "expected_color": "light_green",
        "expected_reason": "fire",
        "expected_state": "IDLE",
        "expected_trigger": "BUY",
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      }
    ]
  },
  {
    "id": "sell_full_cycle",
    "description": "Mirror of buy_full_cycle: yellow arm, dark_red prime, light_red trigger.",
    "steps": [
      {
        "frame": "calibration/frames/20260420_171501_yellow.png",
        "expected_color": "yellow",
        "expected_reason": "arm",
        "expected_state": "ARMED_SELL",
        "expected_trigger": null,
        "expected_new_alerts": ["arm"],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_172104_dark_red.png",
        "expected_color": "dark_red",
        "expected_reason": "prime",
        "expected_state": "PRIMED_SELL",
        "expected_trigger": null,
        "expected_new_alerts": ["prime"],
        "expected_scheduler_running": true
      },
      {
        "frame": "calibration/frames/20260420_173004_light_red.png",
        "expected_color": "light_red",
        "expected_reason": "fire",
        "expected_state": "IDLE",
        "expected_trigger": "SELL",
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      }
    ]
  },
  {
    "id": "buy_phase_skip",
    "description": "ARMED_BUY → light_green direct (dark_green missed). Backstop `fire_on_phase_skip` emits phase_skip_fire alert.",
    "steps": [
      {
        "frame": "calibration/frames/20260421_072757_turquoise.png",
        "expected_color": "turquoise",
        "expected_reason": "arm",
        "expected_state": "ARMED_BUY",
        "expected_trigger": null,
        "expected_new_alerts": ["arm"],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_214908_light_green.png",
        "expected_color": "light_green",
        "expected_reason": "phase_skip",
        "expected_state": "IDLE",
        "expected_trigger": null,
        "expected_new_alerts": ["phase_skip_fire"],
        "expected_scheduler_running": false
      }
    ]
  },
  {
    "id": "sell_phase_skip",
    "description": "Mirror: ARMED_SELL → light_red direct (dark_red missed).",
    "steps": [
      {
        "frame": "calibration/frames/20260420_194505_yellow.png",
        "expected_color": "yellow",
        "expected_reason": "arm",
        "expected_state": "ARMED_SELL",
        "expected_trigger": null,
        "expected_new_alerts": ["arm"],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_173004_light_red.png",
        "expected_color": "light_red",
        "expected_reason": "phase_skip",
        "expected_state": "IDLE",
        "expected_trigger": null,
        "expected_new_alerts": ["phase_skip_fire"],
        "expected_scheduler_running": false
      }
    ]
  },
  {
    "id": "buy_catchup",
    "description": "Start with dark_green in IDLE (no arm observed). Catchup synth-feeds turquoise → emits arm+prime alerts. FSM ends in PRIMED_BUY.",
    "steps": [
      {
        "frame": "calibration/frames/20260418_124645_dark_green.png",
        "expected_color": "dark_green",
        "expected_reason": "prime",
        "expected_state": "PRIMED_BUY",
        "expected_trigger": null,
        "expected_new_alerts": ["arm", "prime"],
        "expected_scheduler_running": true
      }
    ]
  },
  {
    "id": "sell_catchup",
    "description": "Mirror: start with dark_red in IDLE. Catchup synth-yellow → arm+prime alerts.",
    "steps": [
      {
        "frame": "calibration/frames/20260420_195701_dark_red.png",
        "expected_color": "dark_red",
        "expected_reason": "prime",
        "expected_state": "PRIMED_SELL",
        "expected_trigger": null,
        "expected_new_alerts": ["arm", "prime"],
        "expected_scheduler_running": true
      }
    ]
  },
  {
    "id": "buy_post_fire_suppression",
    "description": "After BUY fire, residual dark_green in IDLE must NOT re-prime. User rule: new arming (turquoise) required before priming alerts become valid again.",
    "steps": [
      {
        "frame": "calibration/frames/20260420_200002_turquoise.png",
        "expected_color": "turquoise",
        "expected_reason": "arm",
        "expected_state": "ARMED_BUY",
        "expected_trigger": null,
        "expected_new_alerts": ["arm"],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_185102_dark_green.png",
        "expected_color": "dark_green",
        "expected_reason": "prime",
        "expected_state": "PRIMED_BUY",
        "expected_trigger": null,
        "expected_new_alerts": ["prime"],
        "expected_scheduler_running": true
      },
      {
        "frame": "calibration/frames/20260420_163303_light_green.png",
        "expected_color": "light_green",
        "expected_reason": "fire",
        "expected_state": "IDLE",
        "expected_trigger": "BUY",
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_213706_dark_green.png",
        "expected_color": "dark_green",
        "expected_reason": "noise",
        "expected_state": "IDLE",
        "expected_trigger": null,
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260418_124645_dark_green.png",
        "expected_color": "dark_green",
        "expected_reason": "noise",
        "expected_state": "IDLE",
        "expected_trigger": null,
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      }
    ]
  },
  {
    "id": "sell_post_fire_suppression",
    "description": "Mirror: after SELL fire, residual dark_red must NOT re-prime until new yellow arming.",
    "steps": [
      {
        "frame": "calibration/frames/20260420_171501_yellow.png",
        "expected_color": "yellow",
        "expected_reason": "arm",
        "expected_state": "ARMED_SELL",
        "expected_trigger": null,
        "expected_new_alerts": ["arm"],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_172104_dark_red.png",
        "expected_color": "dark_red",
        "expected_reason": "prime",
        "expected_state": "PRIMED_SELL",
        "expected_trigger": null,
        "expected_new_alerts": ["prime"],
        "expected_scheduler_running": true
      },
      {
        "frame": "calibration/frames/20260420_173004_light_red.png",
        "expected_color": "light_red",
        "expected_reason": "fire",
        "expected_state": "IDLE",
        "expected_trigger": "SELL",
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_195701_dark_red.png",
        "expected_color": "dark_red",
        "expected_reason": "noise",
        "expected_state": "IDLE",
        "expected_trigger": null,
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      },
      {
        "frame": "calibration/frames/20260420_210905_dark_red.png",
        "expected_color": "dark_red",
        "expected_reason": "noise",
        "expected_state": "IDLE",
        "expected_trigger": null,
        "expected_new_alerts": [],
        "expected_scheduler_running": false
      }
    ]
  }
]
