# 세션 자동 이어가기 Watchdog 시스템 — 계획서 v2

## 목표
팀장 봇 세션이 context limit/usage limit/에러로 종료 시, 자동으로 감지하고 재위임하여 작업 방치를 방지한다.

## 핵심 아키텍처
- **Heartbeat (Primary)**: post-tool-use.sh hook이 매 도구 사용 후 자동으로 heartbeat 파일 갱신 (LLM 의존 없음)
- **PID 추적 (Secondary)**: schedule_id → system_prompt 파일 → claude PID. 세션 종료 시 system_prompt 즉시 삭제됨 (실측 확인)
- **Watchdog**: systemd timer (2분 주기) + bash 스크립트
- **판정 로직**: .done → pass / PID 존재 OR heartbeat < 10분 → alive / 둘 다 없음 → stalled → 재위임
- **재위임**: bash에서 dispatch.py 직접 호출 (usage limit과 독립)

## 범위

### 포함 (Phase 1)
- post-tool-use.sh에 heartbeat 갱신 1줄 추가
- memory/heartbeats/ 디렉토리 생성
- session-watchdog.sh bash 스크립트 작성
- session-watchdog.service + session-watchdog.timer systemd unit 작성
- task-timers.json 스키마 확장 (retry_count, max_retry, schedule_id)
- 재위임 시 task ID 서브넘버링 (task-1707 → task-1707.2)
- anu-direct 작업 watchdog 대상 제외
- Telegram 알림 (재위임 발생 시)

### 포함 (Phase 2)
- circuit breaker 세밀화 (빠른 재실패 시 30분 백오프)
- 대시보드 재위임 이력 표시
- 통합 테스트 (bats-core)
- heartbeat 통계/분석

### 제외
- .partial 프로토콜 (필요 시 추후)
- cokacdir 바이너리 수정

## 위임 계획
- Phase 1: dev팀 1개 (코딩, Lv.3)
- Phase 2: dev팀 1개 (코딩, Lv.2)

## 검증 기준
1. post-tool-use.sh에 heartbeat 추가 후 기존 hook 동작 100% 유지
2. watchdog가 heartbeat 10분 초과 감지 시 재위임 실행
3. .done 존재 시 재위임 미발생
4. heartbeat < 10분 시 재위임 미발생
5. max_retry 초과 시 에스컬레이션
6. anu-direct 작업은 watchdog 대상 제외
