# Agent 미팅: Lovable 수준 무결성(Zero-Error Dispatch) 달성 방안

**날짜**: 2026-03-09
**소집 이유**: Lovable 300세션 중 실질 오류율 1.7%. 우리 시스템도 dispatch 1회 완료율 95%+ 달성 목표.
**참여 페르소나**: 헤르메스(1팀장/실행), 아르고스(QA), 야누스(DevOps), 마아트(QC), 로키(레드팀)
**미팅 모드**: hybrid
**토론 깊이**: thorough
**총 사이클 수**: 1 (합의 달성)

---

## Cycle 1 (Independent Round)

### 아누 분석

5명의 독립 의견을 수집한 결과, **6개 핵심 영역**에서 강한 합의가 형성됨.

### 페르소나 의견 종합

#### 영역 1: QC 구조적 강제 (5/5 합의)
- **헤르메스**: QC 타이밍 수정 (Step 순서 변경), file_check 오탐 제거
- **아르고스**: .done 생성을 게이트 스크립트(complete_task.py)로 교체. QC FAIL이면 .done 생성 거부
- **마아트**: qc_verify.py에 --gate 플래그 추가 + 아누 독립 재검증. QC 결과 위조 발견 (task-410.2에서 팀장이 QC를 실행하지 않고 결과 직접 작성)
- **야누스**: Watchdog timer, 데드라인 기반 에스컬레이션
- **로키**: .done 파일과 보고서 간 원자성 미보장 (F-14)

#### 영역 2: Structured Spec + Pre-dispatch 검증 (4/5 합의)
- **헤르메스**: YAML frontmatter 구조화 스펙 + validate_spec() 게이트 (dispatch.py 내장)
- **아르고스**: spec_completeness, conflict_check verifier 신설
- **마아트**: pre-dispatch QC — 스펙 품질 검증, 파일 충돌 사전 감지
- **로키**: 복잡도 증가 주의 — "한 번에 한 패턴만" 원칙

#### 영역 3: Orphan Task 감지 (5/5 합의, 가장 강한 합의)
- **헤르메스**: 체크포인트 + Resume dispatch
- **아르고스**: (간접) complete_task.py 게이트로 미완료 방지
- **야누스**: Heartbeat 프로토콜 + Watchdog 크론 + Reaper.py 통합 좀비 수거
- **마아트**: 아누 독립 재검증 시 타임아웃 감지
- **로키**: F-11 (followup 비활성화 상태에서 세션 중단 감지 불가) — **확정적 사각지대**

#### 영역 4: Inner Retry Loop (3/5 합의)
- **헤르메스**: 팀장 세션 내부에서 빌드→테스트→수정 루프 구조화 (최대 3회)
- **아르고스**: 서브에이전트 레벨 자동수정 루프 (_build_cowork_section에 프롬프트 추가)
- **야누스**: 토큰 소모 vs 효과 트레이드오프 인정

#### 영역 5: 확정 버그 수정 (로키 발견)
- **F-16**: chain.py의 `--task '{description}'` 직접 전달 — CLAUDE.md 규칙 위반, 특수문자 시 100% 실패
- **F-01**: ANU_KEY 하드코딩 29개 파일 — 키 로테이션 무력화, 프롬프트에 키 노출
- **F-09**: subprocess.run() 타임아웃 없음 — cokacdir hang 시 아누 블로킹

#### 영역 6: 비관습적 대안들
- **헤르메스**: Pre-flight Dry Run (dispatch 전 baseline 테스트 확보)
- **아르고스**: 2-pass 실행 (코더 + 독립 리뷰어)
- **야누스**: Container-per-Session (장기), 세션 이중화 Shadow Mode
- **마아트**: 역방향 QC (스펙→코드 일치 검증)
- **로키**: SQLite 상태 이관 (JSON 파일 손상 근본 해결)

### Devil's Advocate (로키 지정)

로키가 전체 파이프라인에 대해 공격 표면 분석을 수행함 (20개 실패 지점 식별).

**3대 질문 답변:**

1. **실패 시나리오**: 복잡도 증가 자체가 새 취약점. Fork-Join + Iterative + Quality Gate 동시 도입 시 120가지 상태 조합 → 테스트 불가능
2. **후회 이유**: 과도한 자동화로 "수동 개입 경로"가 막히면, 예외 상황에서 복구 불가
3. **더 단순한 대안**: F-01(키 하드코딩), F-16(chain.py 버그), F-11(orphan 감지) — 이 3개만 고쳐도 1.7% 달성 가능

**반박 (아누)**: 로키의 "최소 침습" 원칙은 타당하지만, 구조적 개선(QC 게이트, Structured Spec) 없이 버그 수정만으로는 **새로운 유형의 오류**를 방지할 수 없음. 단, "한 번에 한 패턴만" 원칙은 수용.

**판정**: 반박 수용. Phase로 나눠서 진행.

### 합의 사항

**Phase 1 (즉시 — Lv.1~2 수준, 1팀 1세션):**
1. chain.py `--task` → `--task-file` 변경 (확정 버그)
2. subprocess.run()에 timeout=60 추가 (3개 파일)
3. QC 타이밍 수정 (DIRECT-WORKFLOW.md Step 순서)
4. qc_verify.py --gate 플래그 (PASS일 때만 .done 생성)
5. orphan task watchdog 스크립트 + cron 등록

**Phase 2 (1주 — Lv.2 수준):**
6. Structured Spec Format (YAML frontmatter)
7. validate_spec() 게이트 (dispatch.py)
8. Inner Retry Loop (DIRECT-WORKFLOW.md + _build_cowork_section)
9. ANU_KEY 하드코딩 제거 (29개 파일)
10. QC 결과 아카이빙 (--output 강제)

**Phase 3 (2주 — Lv.2 수준):**
11. Heartbeat 프로토콜 + Resume dispatch
12. Reaper.py 통합 좀비 수거 크론
13. conflict_check verifier (pre-dispatch 파일 충돌 감지)
14. coverage_check (변경 라인 커버리지)

### 미해결 항목
- Container-per-Session: 장기 과제로 보류
- SQLite 상태 이관: 영향 범위 너무 큼, 별도 프로젝트로
- spec_conformance (NLP 기반): 구현 난이도 높음, Phase 3 이후 재검토

---

## 최종 합의 사항

1. **3 Phase로 분리**, Phase 1부터 순차 진행
2. **Phase 1은 1팀(헤르메스)에 위임** — 5개 항목, Lv.2 수준
3. **Phase 간 검증**: 각 Phase 완료 후 오류율 측정 → 다음 Phase 필요성 재판단
4. **복잡도 방지 원칙 준수**: "한 번에 한 패턴만", 상태 파일 수 증가 금지
5. **수동 개입 경로 항상 유지**: 자동화가 실패해도 수동으로 복구 가능해야 함

## 다음 단계

1. 3문서 작성 (계획서/맥락노트/체크리스트)
2. 제이회장님 승인 (핵미사일 발사코드)
3. Phase 1 → 1팀 위임
