**task-1776.1 완료 보고** (dev3-team) **완료 보고서** (10분 14초) **핵심 결과** 3가지 개선을 적용하여 해결. (1) STALLED 판정 직후 사망 원인을 5가지 유형으로 분류하여 `watchdog-deaths.jsonl`에 JSONL 기록. (2) 재위임 전 cokacdir `--message "/stop"` 명령으로 봇 세션 종료 + 3초 대기. (3) 정리 순서를 `/stop → kill → cron-remove → timer-end`로 재배치. 69/69 테스트 전체 통과. ## 수정 내역 ### 1. get_bot_username() 함수 추가 - team_id를 cokacdir key로 변환 후, `bot_settings_sync.json`에서 봇 username을 동적 조회 ### 2. 사망 원인 분석 (STALLED 판정 직후) - 5가지 원인 분류: `process_gone`, `no_schedule_id`, `heartbeat_stale_{N}s`, `context_limit`, `usage_limit`, `error_crash`, `unknown` - JSONL 포맷: `{"task_id", "team", "reason", "timestamp", "heartbeat_age_s"}` - 저장 위치: `memory/logs/watchdog-deaths.jsonl` ### 3. /stop 명령 + 정리 순서 변경 - 기존: cokacdir 스케줄 제거 → kill PID → task-timer end - 변경: /stop 전송(+sleep 3) → kill PID → cokacdir 스케줄 제거 → task-timer end ## 산출물 파일 목록 - `/home **발견/해결 이슈 2건** 1. **`get_cokacdir_key()` set -u 크래시 위험** — `${!var}` → `${!var:-}` 변경 2. **`.env.keys`에 COKACDIR_KEY_DEV3 미정의** — 미해결: 범위 외 사유: 보안 키 파일 수정은 인프라/보안팀 소관. dev3-team의 와치독 /stop 및 cron-remove가 정상 동작하려면 해당 키 추가 필요.