# task-1783.1 완료 보고서

## SCQA

**S**: `session-watchdog.sh`가 systemd timer에 의해 2분마다 실행되어 봇 좀비 세션을 감지하고 재위임하는 핵심 인프라 스크립트이다.

**C**: systemd 환경에서 `ps aux`가 커맨드라인을 터미널 폭에 맞춰 잘라서 `system_prompt_*` 파일명이 매칭되지 않는다. 대화형 쉘에서는 터미널 폭이 넓어 수동 실행 시 성공하지만, systemd 실행 시 PID 매칭 실패로 좀비 봇을 감지하지 못한다.

**Q**: `ps` 커맨드를 wide output 모드로 변경하여 systemd 환경에서도 PID 매칭을 정상 동작시킬 수 있는가?

**A**: 전체 5곳의 `ps aux | grep` 패턴을 `ps -eo pid,args --no-headers -ww | grep`으로 변경하고, PID 컬럼 인덱스를 `$2` → `$1`로 수정하여 해결. `-ww` 플래그가 커맨드라인 잘림을 방지하고, `-eo pid,args --no-headers`가 불필요한 컬럼을 제거하여 grep 정확도를 높인다. pytest 16건 전체 통과, bash 테스트 84/85 (1건 기존 실패, 본 작업 범위 외).

## 수정 파일
- `/home/jay/workspace/scripts/session-watchdog.sh`

## 변경 내역 (5곳)

| 라인 | 변수 | 변경 전 | 변경 후 |
|------|------|---------|---------|
| 128 | PID | `ps aux \| grep ... \| awk '{print $2}'` | `ps -eo pid,args --no-headers -ww \| grep ... \| awk '{print $1}'` |
| 166 | BOT_PID | 동일 패턴 | 동일 변경 |
| 175 | pid | 동일 패턴 | 동일 변경 |
| 210 | DEATH_CHECK_PID | 동일 패턴 | 동일 변경 |
| 349 | STALE_PID | 동일 패턴 | 동일 변경 |

## 테스트 결과

**pytest (test_session_watchdog.py)**: 16/16 PASSED (0.11s)
```
tests/test_session_watchdog.py — 16 passed in 0.11s
```

**bash 테스트 (test_session_watchdog.sh)**: 84/85 (1건 실패)
- TC23-5 실패: `grep 'claude.*-p.*teams'` 패턴 검색 — 원본 코드에도 해당 패턴이 없으므로 **기존 실패** (본 작업 범위 외)
- ⚠️ 기존 테스트 실패 1건 (본 작업 범위 외): TC23-5

**수동 실행 검증**: `bash -x scripts/session-watchdog.sh`로 확인 — `ps -eo pid,args --no-headers -ww | grep` 명령이 정상 실행되고, `awk '{print $1}'`로 PID 추출 정상 동작 확인.

## 발견 이슈 및 해결

### 자체 해결 (0건)
(없음)

### 범위 외 미해결 (1건)
1. **TC23-5 bash 테스트 실패** — 범위 외 사유: 테스트가 `'claude.*-p.*teams'` 패턴을 기대하지만 원본 코드에도 해당 패턴이 없어 기존부터 실패. 테스트 자체의 기대값이 부정확한 것으로 판단.

## 모델 사용 기록
- 팀원: 루(Lugh) / 작업 내용: ps 명령어 패턴 5곳 치환 / 사용 모델: sonnet / 정당성: -

## 세션 통계
- 총 도구 호출: 8회

### 수정 파일 목록
- /home/jay/workspace/scripts/session-watchdog.sh: 5회 (Edit)
- /home/jay/workspace/memory/reports/task-1783.1.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1783.1.md: 1회 (dispatch)
- bash_cmd: 1회 (Bash)

### 도구 사용 현황
- Edit: 5회
- Bash: 1회
- Write: 1회
- dispatch: 1회

