# Agent 미팅: .done 파일 생성 시점 워크플로우 개선

**날짜**: 2026-04-28
**소집 이유**: 봇들이 QC/PR/머지 완료 전에 .done을 생성하거나, finish-task.sh 외부에서 수동 .done을 생성하는 문제 해결
**참여 페르소나**: 오딘, 헤르메스, 마아트, 야누스, 로키
**미팅 모드**: hybrid
**토론 깊이**: thorough
**총 사이클 수**: 3

---

## 최종 합의 사항

### 즉시 적용 (3건)

1. **DIRECT-WORKFLOW.md 상충 제거**
   - 라인 424 "완료 전 반드시 이벤트 파일 생성: {task_id}.done" 삭제
   - 라인 374 "수동 .done 생성 절대 금지. finish-task.sh만이 유일한 완료 경로" 유지 강화

2. **dispatch 프롬프트 강화**
   - team_prompts.py에서 봇에게 전달하는 프롬프트에 아래 고정 블록 추가:
     - 서두: `⚠️ 완료 선언 = finish-task.sh 실행. 보고서 작성은 완료가 아님.`
     - Step 7 마지막: `★ 수동 .done 생성 절대 금지. finish-task.sh 미실행 시 미완료 처리.`
   - "보고서의 마침표" 프레이밍: 보고서 작성 직후 finish-task.sh 즉시 실행 지시

3. **finish-task.sh에 PR 머지 검증 추가**
   - 조건: worktree finish --action pr로 PR이 생성된 경우만
   - PR_NUMBER 환경변수 또는 gh pr list로 자동 탐지
   - 미머지 시 exit 1 (차단)
   - Lv.0-1(PR 미생성)은 자동 스킵

### 후속 적용 (2건)

4. **gate_results 빈 배열 방어**
   - 아누 .done 처리 시 gate_results 키 5개 필수 검증
   - 누락 또는 빈 배열 시 .done.invalid로 rename + 경고

5. **HMAC 서명 (Phase 2)**
   - finish-task.sh가 .done 생성 시 HMAC 포함
   - 아누가 처리 시 서명 검증
   - 구현 시기: 다음 시스템 개선 사이클

---

## DA 지적 및 반박

### Cycle 2 — 로키 DA
- 지적: gate_results 빈 배열로 우회 가능 → 반박: 5개 키 필수 검증으로 방어
- 지적: 프롬프트는 확률적 제어 → 반박: 기술 방어 병행 (finish-task.sh 게이트)
- 지적: 파일 권한 5분 작업 → 반박: 같은 유저(jay)라 무의미. HMAC으로 대체

### Cycle 3 — 마아트 DA
- 지적: 형식 검증은 내용 미보장 → 반박: finish-task.sh가 직접 값 수집하므로 봇 조작 불가
- 지적: 프롬프트 앞부분 무시 경향 → 반박: 서두 + 마지막 양쪽 배치
- 지적: 파일 권한이 더 단순 → 반박: 같은 유저 제약으로 불가

## 비관습적 대안 (기각)

- SQLite 대체 (야누스): 노력 대비 효과 낮음. 기존 파일 기반 시스템 유지
- Unix Named Pipe (야누스): 내구성 부족. 장기 운영 부적합

## Temporal Interrogation

- [OPEN] dispatch 프롬프트 고정 블록 정확한 삽입 위치 (team_prompts.py)
- [OPEN] PR_NUMBER 자동 탐지 방법 (worktree_manager.py vs gh pr list)
- [OPEN] 아누의 .done 처리 코드 위치 확인
- [OPEN] 기존 .done 파일과의 호환성 (과거 파일에 gate_results 없을 수 있음)
