---
task_id: task-2452
type: plan
scope: task
created: 2026-05-05
updated: 2026-05-05
status: in-progress
---

# 계획서: task-2452

**task**: task-2452
**목표**: 신호등 sync를 `finish-task.sh` 끝부분 단일 책임으로 통합 + `auto_merge.py` 공식 폐기 + 4개 문서 정정.
**승인**: 제이회장님 2026-05-05 "한정승인 4 Phase 일괄 처리. dev1팀 헤르메스가 직접/팀원 분배 자율, 검증은 헤르메스 책임."
**근거**:
- 회장 직접 진단(2026-05-05): 신호등 끄는 시점은 finish-task.sh 끝부분이 정상 + auto_merge.py는 폐기 대상.
- raw 증거: `logs/auto_merge.log` 24MB 중 최근 1000줄 227건 모두 `[BLOCKED]` (머지 0건).
- `memory/specs/traffic-light-sync-analysis-2026-05-05.md` (318줄) 5개 결함.
- `memory/tasks/task-2452.md` 374줄 (전체 지시서).

---

## 목표

다음 4개를 모두 만족해야 PASS:

1. **(Q1) 신호등 단일 책임**: `finish-task.sh` 끝부분(.done 생성 직전)에서 `member-status.json` + `bot-activity.json` 동시 idle 전환.
2. **(Q2) auto_merge.py 공식 폐기**: cron 매분 실행 제거 + DEPRECATED 마커. 코드 자체는 30일 유예.
3. **(Q3) 두 신호등 source 통합**: 동일 트리거·동일 시점.
4. **(Q4) 4개 문서 일괄 정정**: V2 외부 조언자 문서 → V3 / 신호등 분석 / 신호등 스펙 v2 / anu-system-spec 1.1.1.

## 범위

### 포함

- **Phase 1** — `auto_merge.py` 공식 폐기 (Lv.1)
  - crontab 매분 실행 라인 제거
  - 헤더 DEPRECATED 마커 + 30일 유예 안내
  - `logs/auto_merge.log` 24MB → archive
  - 빈 로그 새로 생성

- **Phase 2** — `finish-task.sh` 끝부분 신호등 통합 (Lv.2)
  - Step 2.7 (`member-status.json idle 복원`)을 `.done` 생성 직전 마지막 Step으로 이동
  - 동일 위치에 `bot-activity.json idle 전환` 로직 추가
  - `team_id=""` composite 케이스 처리 (task-timers의 affected_teams/composite_teams 또는 fallback)

- **Phase 3** — `done-watcher.py` fallback only로 강등 (Lv.2)
  - `process_done_files()`: 30분 grace + `.merge-done` 마커 부재 조건일 때만 fallback idle
  - `extract_team_from_done_file()`: `team_id=""` 빈 문자열 처리 보강

- **Phase 4** — 4개 문서 일괄 정정 + 신호등 스펙 v2 (Lv.1)
  - `memory/specs/anu-system-spec-for-external-advisor.md` V2 → V3
  - `memory/specs/traffic-light-sync-analysis-2026-05-05.md` 정정
  - `memory/plans/anu-guide-system/{plan,context-notes,checklist}.md` Phase 6/7 정정
  - `memory/specs/anu-system-spec.md` §6.10 + 1.1.1 bump + changelog
  - `memory/specs/traffic-light-spec.md` v2

### 제외 (다음 페이즈 이후)

- `auto_merge.py` 코드 자체 삭제 (30일 유예 후 2026-06-04)
- `task-2451.done.escalated` 마커 생성자 추적 (본 task에서는 부록 B 항목으로만 기록)
- task-2451 `.done → .done.acked` rename (회장이 별도 시점에 처리)
- 좀비 stale 7개(dev3/4/5/6/7/8) 별도 cleanup 스크립트 (Phase 2/3 적용 후 자연 보정)

## 위임 계획

> 회장 한정승인: dev1팀 헤르메스가 4 Phase 일괄 직접 처리.
> Phase 1~3은 시스템 코드 수정 (정확성 critical) → 헤르메스 직접.
> Phase 4 문서 정정은 분량은 크지만 단순 텍스트 치환 → 헤르메스 직접 (위임 후 정정 100% 무효 룰).

| Phase | 담당 | 모델 | 사유 |
|-------|------|------|------|
| Phase 1 (auto_merge 폐기) | 헤르메스 | opus | crontab + 코드 헤더 + 로그 archive — 시스템 게이트 변경 직접 |
| Phase 2 (finish-task.sh) | 헤르메스 | opus | 머지 게이트 hot path 수정. Sonnet 위임은 BLOCK 위험 |
| Phase 3 (done-watcher) | 헤르메스 | opus | fallback grace + 마커 체크 신규 로직 |
| Phase 4 (4개 문서) | 헤르메스 | opus | 광범위하나 정확한 텍스트 정정. 위임 시 일관성 깨짐 위험 |
| 검증 5.1~5.3 | 헤르메스 | opus | 회장 책임 명시 |

## 검증 기준

### Phase 1
- `crontab -l | grep auto_merge` → 0건
- `head -15 scripts/auto_merge.py` → "DEPRECATED" 마커 첫 docstring 확인
- `ls -lh logs/auto_merge.log` → 0~수 byte (cron 미실행 후)
- `ls -lh logs/auto_merge.log.archive-2026-05-05` → 24MB archive 존재

### Phase 2
- `bash -n scripts/finish-task.sh` → syntax OK
- 신규 Step에서 `bot-activity.json` idle 전환 확인 (dummy 시나리오)
- composite 작업 시 fallback 처리 확인 (team_id="" 케이스 더미)

### Phase 3
- `python3 -m py_compile scripts/done-watcher.py` → exit 0
- 30분 미만 .done은 idle 안 건드림 (단위 시나리오)
- .merge-done 존재 시 idle 스킵
- 30분 이상 + .merge-done 부재 시 fallback idle + log_protocol 기록

### Phase 4
- `grep -c "auto_merge" memory/specs/anu-system-spec-for-external-advisor.md` → V3 정정 후 expected 패턴
- 4개 문서 모두 "auto_merge가 마커 만든다" 표현 정정 확인
- traffic-light-spec.md: v2 헤더 + 다단계 마커 시점 명시

### 통합 검증 (5.1~5.3)
- 5.1 정상 흐름: dummy task → finish-task.sh → bot-activity.json `dev1` status=idle, since=현재시각
- 5.3 auto_merge 폐기: crontab 0건 + 로그 0byte + DEPRECATED 마커 명시
