{
  "schema": "ci_watcher_session_lifetime_gap_backlog.v1",
  "ts_kst": "2026-05-23 18:10 KST",
  "status": "BACKLOG_RECORDED_CODE_IMPLEMENTATION_FORBIDDEN",
  "classification": "CI_WATCHER_SESSION_LIFETIME_GAP",
  "chair_directive_verbatim_260523": "CI polling 인프라 한계는 별도 backlog 로 기록하라. 단 PR #143 과 task-2641 에 섞지 말고 별도 후보로만 기록하라. 코드 구현은 아직 금지한다.",
  "scope_note": "별도 후보 기록만. 코드 구현 0. PR #143 task-2640 본 진행과 task-2641 OWNER_GEMINI_TRIGGER_ROUTER 와 섞지 않음.",
  "observed_limitation": {
    "현_방식": "ANU 세션 내 백그라운드 task (Bash run_in_background) 로 CI 완료 polling",
    "한계": "ANU 세션 종료 시 polling task 도 함께 죽음 · CI 결과 감지 가능 시점이 ANU session lifetime 에 종속 · 회장 다음 입력까지 CI 결과 보고 지연 가능",
    "관측_시점": "task-2640 PR #143 진행 중 (2026-05-23) — push 후 ~15분 CI 결과 보고 지연 (회장 \"ci 재실행 체크는 언제 해?\" 직접 지적)",
    "근본": "session-bound polling 인프라 ≠ session-independent event watcher"
  },
  "후보_솔루션_옵션": [
    {
      "id": "C1",
      "name": "cokacdir --cron 기반 CI watcher",
      "scope": "별도 cron schedule 등록 → 주기적으로 PR 상태 polling → 완료 시 ANU 깨우기 (cron callback 으로 결과 전달)",
      "장점": "ANU session lifetime 독립 · 기존 cokacdir 인프라 재사용",
      "단점": "polling overhead · cron prompt size 한계 (≤2800 권장) · cancel-on-completion 별도 처리 필요"
    },
    {
      "id": "C2",
      "name": "external webhook watcher (GitHub workflow_run / status webhook)",
      "scope": "GitHub Actions workflow_run 이벤트 → webhook endpoint → ANU 깨우기",
      "장점": "polling 0 · event-driven · 정확",
      "단점": "endpoint 인프라 신규 필요 · GitHub webhook config · secret 관리 추가"
    },
    {
      "id": "C3",
      "name": "GitHub Actions self-notification (workflow → cokacdir --cron 직접 호출)",
      "scope": "CI workflow 마지막 단계에서 cokacdir --cron 호출 → ANU 깨우기",
      "장점": "최소 인프라 추가 · forbidden file 수정 0 (workflow 만 신규)",
      "단점": "ANU key/endpoint 노출 위험 · CI runner 에 secret 주입 필요"
    }
  ],
  "chair_decision_pending": [
    "코드 구현 시점 (현재 금지)",
    "옵션 선택 (C1/C2/C3)",
    "실행 task 발행 여부"
  ],
  "task_2640_pr_143_isolation": {
    "isolation_status": "독립 기록 · PR #143 본 진행 + task-2641 OWNER_GEMINI_TRIGGER_ROUTER 와 섞지 않음",
    "chair_directive_verbatim": "CI polling 인프라 한계는 별도 backlog 로 기록하라 · 코드 구현은 아직 금지한다",
    "후속_조치": "회장 별도 결정 시 task 발행 + 옵션 선정"
  },
  "related": [
    "task_2640_SELF_COLLECTOR_ENFORCEMENT_WIRING_MERGED_260523.json (본 사이클)",
    "feedback_dispatch_must_register_fallback_safetynet_260520.md",
    "feedback_no_dual_purpose_watcher_260520.md (단일 목적 watcher doctrine)",
    "cancel_on_success_doctrine_hardening_candidate_260523.json (별도 부수 사고 backlog)"
  ]
}
