# Agent 미팅: 완료 통보 시스템 경합 해소

**날짜**: 2026-03-07
**소집 이유**: auto_merge.py와 notify-completion.py가 .done.clear 파일을 놓고 경합하여 아누 통보가 누락되는 문제 해결
**참여 페르소나**: 헤르메스(팀장), 불칸(백엔드), 아르고스(테스터)
**미팅 모드**: hybrid
**토론 깊이**: concise
**총 사이클 수**: 1

---

## Cycle 1

### 헤르메스 분석

**문제 근거**:
- `auto_merge.py` (244행): `try_claim()`이 `.done.clear`를 원자적 생성 → `.done` 파일 삭제
- `notify-completion.py` (18-33행): cron 프롬프트에서 `.done.clear` 원자적 생성 시도 → FileExistsError면 스킵
- 결과: auto_merge가 먼저 `.done.clear` 선점 → notify-completion의 cron이 "이미 처리됨"으로 스킵 → 아누 미통보

**핵심 쟁점**: `.done.clear` 파일이 "머지 처리 락"과 "통보 완료 락" 두 역할을 겸하는 설계 결함

### 페르소나 의견

**불칸 (백엔드)**: 옵션 B 추천. 책임 분리 원칙: auto_merge는 머지만, notify-completion은 통보만. `.done.processing` 중간 상태 도입 제안. 근거: A는 auto_merge에 network 장애 시 재시도 로직 필요(복잡), C는 초기 비용 높음.

**아르고스 (테스터)**: 옵션 B 추천. 엣지 케이스 분석: A는 이중 실패 구조(auto_merge 실패 시 아누 미통보), C는 단일 장애점. B는 auto_merge 실패 시에도 notify-completion이 재시도 가능.

### 합의/결론

**수정된 옵션 A 채택** (불칸·아르고스 의견 반영한 하이브리드):

1. **merge_needed=False 작업**: auto_merge.py가 아예 건드리지 않음 (`.done.clear` 미생성, `.done` 미삭제). notify-completion.py가 정상 처리.
2. **merge_needed=True 작업**: auto_merge.py가 `.done.clear` 선점 → 머지 → **아누 직접 통보** (notify-completion.py의 핵심 로직 호출). notify-completion.py의 cron은 `.done.clear` 존재로 중복 방지.
3. **에러 핸들링**: auto_merge.py의 아누 통보 실패 시 기존 `escalate()` 메커니즘으로 에스컬레이션.

**채택 근거**:
- 불칸의 책임 분리 원칙: merge_needed=False는 notify-completion에 위임하여 분리 유지
- 아르고스의 이중 실패 우려: escalate()로 보완 + notify-completion의 cron이 fallback
- 실제 구현 복잡도: `.done.processing` 등 새 상태 도입보다 단순함

### 미해결 항목
- 없음 (1 사이클로 합의)

---

## 최종 합의 사항

1. auto_merge.py는 merge_needed=False 작업을 건드리지 않는다 (scan은 하되 claim/삭제 안 함)
2. auto_merge.py는 merge_needed=True 작업 처리 후 아누에게 직접 통보한다
3. notify-completion.py의 프롬프트 템플릿을 별도 파일로 분리한다 (토큰 절약)
4. `.done.clear` 원자적 생성은 아누 통보의 중복 방지 메커니즘으로 유지한다

## 다음 단계

- 3가지 문제 구현 (이 미팅 결과 반영)
- 테스트 작성 및 실행
