# 와치독 봇 PID 매칭 수정 — system_prompt 파일 기반

## Lv.1 작업

## 문제
교차 체크(task-1777.1)의 봇 PID fallback 로직이 작동하지 않음.

### 원인
```bash
BOT_PID=$(ps aux | grep "claude.*-p.*/home/jay/workspace/teams/${TEAM_SHORT}" | grep -v grep | awk '{print $2}')
```
`ps aux` args에는 `system_prompt_해시_PID` 형식만 있고, `/teams/dev2` 경로는 **prompt 파일 내부**에 있어서 grep 매칭 안 됨.

실제 프로세스 args: `claude -p ... --append-system-prompt-file /home/jay/.cokacdir/system_prompt_18a5c5847e5d0b9f_1043022`
팀 정보: prompt 파일 2번째 줄 `Project directory: /home/jay/workspace/teams/dev2`

## 수정
`/home/jay/workspace/scripts/session-watchdog.sh` 170-173줄

현재 (작동 안 함):
```bash
if [[ -z "$BOT_PID" ]]; then
    TEAM_SHORT="${TEAM_ID%-team}"
    BOT_PID=$(ps aux | grep "claude.*-p.*/home/jay/workspace/teams/${TEAM_SHORT}" | grep -v grep | awk '{print $2}' | head -1)
fi
```

변경:
```bash
if [[ -z "$BOT_PID" ]]; then
    TEAM_SHORT="${TEAM_ID%-team}"
    # system_prompt 파일 내용에서 팀 디렉토리 매칭 → 해당 파일의 해시로 PID 추적
    MATCHING_PROMPT=$(grep -rl "Project directory: /home/jay/workspace/teams/${TEAM_SHORT}" /home/jay/.cokacdir/system_prompt_* 2>/dev/null | head -1)
    if [[ -n "$MATCHING_PROMPT" ]]; then
        PROMPT_BASENAME=$(basename "$MATCHING_PROMPT")
        BOT_PID=$(ps aux | grep "$PROMPT_BASENAME" | grep -v grep | awk '{print $2}' | head -1)
    fi
fi
```

## 검증 시나리오
1. 1팀 봇 좀비 상태(heartbeat ❌ + 봇 PID ✅) → 와치독 로그에 "봇 좀비 감지" 출력 확인
2. 8팀 유휴(heartbeat ❌ + 봇 PID ❌) → "정상 종료" 로그 확인
3. `bash -x session-watchdog.sh 2>&1 | grep BOT_PID` → 값이 채워지는지 확인
4. 수동 실행: `bash session-watchdog.sh` → 1팀/2팀에 대해 /stop + 재위임 동작 확인
5. 기존 테스트 69건 회귀 없음

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`