{
  "_comment": "task-2563 §1 1:1: FIRST_TRIGGER_PENDING vs FIRST_GEMINI_TRIGGER_MISSING 분리 fixture.",
  "_scenario": "동일 createdAt 으로 3 가지 elapsed 구간을 표현. now 만 달리해 state 전이를 검증.",
  "_state_machine": {
    "WITHIN_GRACE_PERIOD": "0 ~ FIRST_TRIGGER_PENDING_WINDOW_SECONDS (default 300s) — 어떤 trigger 결정도 보류",
    "FIRST_TRIGGER_PENDING": "300s ~ FIRST_TIMEOUT_SECONDS (1800s) + reviews 0 — fast_path=true 시에만 dispatch",
    "FIRST_GEMINI_TRIGGER_MISSING": "1800s 이후 + reviews 0 — owner trigger required 확정"
  },
  "constants": {
    "FIRST_TRIGGER_PENDING_WINDOW_SECONDS": 300,
    "FIRST_TIMEOUT_SECONDS": 1800,
    "GRACE_PERIOD_SECONDS": 1800
  },
  "snapshots": [
    {
      "_label": "PR 8101 — short grace window 이내 (200s) → WITHIN_GRACE_PERIOD",
      "number": 8101,
      "head_sha": "aaaa000000000000000000000000000000002563",
      "head_ref": "task/task-2563-dev6",
      "created_at": "2026-05-13T10:00:00+00:00",
      "now": "2026-05-13T10:03:20+00:00",
      "elapsed_seconds": 200,
      "gemini_reviews": [],
      "ci_required_all_success": true,
      "expected_state": "WITHIN_GRACE_PERIOD",
      "expected_action_default": "WITHIN_GRACE_PERIOD_SKIP",
      "expected_action_fast_path": "WITHIN_GRACE_PERIOD_SKIP"
    },
    {
      "_label": "PR 8102 — pending window (900s = 15min) → FIRST_TRIGGER_PENDING",
      "number": 8102,
      "head_sha": "bbbb000000000000000000000000000000002563",
      "head_ref": "task/task-2563-dev6",
      "created_at": "2026-05-13T10:00:00+00:00",
      "now": "2026-05-13T10:15:00+00:00",
      "elapsed_seconds": 900,
      "gemini_reviews": [],
      "ci_required_all_success": true,
      "expected_state": "FIRST_TRIGGER_PENDING",
      "expected_action_default": "FIRST_TRIGGER_PENDING_SKIP",
      "expected_action_fast_path": "OWNER_TRIGGER_DISPATCHED"
    },
    {
      "_label": "PR 8103 — first_timeout 경과 (1800s 정각) → FIRST_GEMINI_TRIGGER_MISSING 확정",
      "number": 8103,
      "head_sha": "cccc000000000000000000000000000000002563",
      "head_ref": "task/task-2563-dev6",
      "created_at": "2026-05-13T10:00:00+00:00",
      "now": "2026-05-13T10:30:00+00:00",
      "elapsed_seconds": 1800,
      "gemini_reviews": [],
      "ci_required_all_success": true,
      "expected_state": "FIRST_GEMINI_TRIGGER_MISSING",
      "expected_action_default": "OWNER_TRIGGER_DISPATCHED",
      "expected_action_fast_path": "OWNER_TRIGGER_DISPATCHED"
    },
    {
      "_label": "PR 8104 — first_timeout 한참 경과 (1h) → FIRST_GEMINI_TRIGGER_MISSING 확정",
      "number": 8104,
      "head_sha": "dddd000000000000000000000000000000002563",
      "head_ref": "task/task-2563-dev6",
      "created_at": "2026-05-13T10:00:00+00:00",
      "now": "2026-05-13T11:00:00+00:00",
      "elapsed_seconds": 3600,
      "gemini_reviews": [],
      "ci_required_all_success": true,
      "expected_state": "FIRST_GEMINI_TRIGGER_MISSING",
      "expected_action_default": "OWNER_TRIGGER_DISPATCHED",
      "expected_action_fast_path": "OWNER_TRIGGER_DISPATCHED"
    }
  ],
  "expected_invariants": {
    "chat_notifications": 0,
    "long_polling": 0,
    "pending_state_does_not_invoke_owner_trigger_default": true,
    "pending_state_invokes_owner_trigger_iff_fast_path_true": true,
    "missing_state_invokes_owner_trigger_unconditional": true
  }
}
