# task-2729+1 — PR#173 MEDIUM 하드닝 (backlog)
출처: PR #173 D안 resolve 5건 (2026-06-05). fresh origin/main base, ACTIVE=false 유지, same-PR 금지.
1. ci_watch_handoff_runner.py:322 sync_fn 반환값 isinstance/None 방어가드
2. ci_watch_handoff_runner.py:346 fetch_state_fn 반환값 isinstance/None 방어가드
3. ci_watch_handoff_runner.py:93 update_state 미정의 key 거부/경고
4. test_progress_watcher_gate_2729.py:44 utils 모듈 캐시도 제거
5. test_progress_watcher_gate_2729.py:388 open()→with 컨텍스트 매니저
상태: BACKLOG (비차단·LOW). 회장 승인 시 fresh PR로 별도 dispatch.

## 후속 결함 3건 (회장 지시 — backlog 유지, PR#173 운영 재현 사례)
출처/evidence: memory/events/task-2729-pr173-defect-reproduction-evidence-260605.json
1. CI_WATCHER_SESSION_LIFETIME_GAP — watcher 73E07442 session-bound 사멸. OS-cron 비-session-bound runner 결선 필요(task-2717 Phase2 연계)
2. NORMAL_CALLBACK_REGISTRATION_OR_HISTORY_MISMATCH — launcher PASS인데 cron 등록/실행 흔적 부재. registrar 코드 결선 필요(260531 OS-level 강제실행 결정 연계)
3. live_prune_not_wired — callback_fallback_prune WIRED 골격만, live real-prune 운영증거 부재. ACTIVE=false gate 유지(별도 회장 승인 시에만 ACTIVE 전환)
상태: BACKLOG · 비차단 · ACTIVE=false 유지. PR#173 merge는 automation hardening이며 production activation 아님.
