# task-2280 완료 보고서

## Situation
봇들이 finish-task.sh를 우회하여 수동 .done을 생성하거나, QC/PR/머지 완료 전에 .done이 생성되는 문제가 발생.

## Complication
DIRECT-WORKFLOW.md에 "완료 전 반드시 이벤트 파일 생성" 문구가 "수동 .done 생성 절대 금지" 규칙과 상충하여 봇들이 혼란.

## Question
어떻게 .done 생성 시점을 finish-task.sh 실행 이후로 확실히 강제할 수 있는가?

## Answer
3개 파일 수정으로 상충 문구 제거 + 프롬프트 강화 + PR 머지 검증 게이트 추가.

---

## 수정 파일 목록

| 파일 | 변경 내용 |
|------|-----------|
| `prompts/DIRECT-WORKFLOW.md` | 라인 424 상충 문구 삭제 + 라인 381 강화 문구 추가 |
| `prompts/team_prompts.py` | CRITICAL_SET에 "완료 선언" 블록 추가 + s9에 작업 순서 문구 추가 |
| `scripts/finish-task.sh` | Step 2.3 PR 머지 검증 게이트 추가 |

---

## 검증 결과

1. DIRECT-WORKFLOW.md "완료 전 반드시 이벤트 파일 생성" 삭제됨 — grep 0건 확인
2. DIRECT-WORKFLOW.md "finish-task.sh만이 유일한 완료 경로" 유지됨 — 라인 374 확인
3. team_prompts.py "finish-task.sh 실행이 유일한 완료 경로" 포함 — 라인 565 확인
4. finish-task.sh PR-GATE 블록 추가됨 — 라인 232 확인
5. PROJECT_PATH 없으면 PR 검증 스킵 — 로직 테스트 통과
6. pytest 2521 passed, 0 failed (132.47s)

---

## L1 스모크테스트 결과

- 서버 재시작: 해당없음 (시스템 프롬프트/스크립트 수정으로 서버 연관 없음)
- API 응답 확인: 해당없음
- PR 게이트 로직 격리 테스트:
  - PROJECT_PATH="" → "PR gate SKIPPED" (정상)
  - PROJECT_PATH="/tmp/nonexistent" (no .git) → "PR gate SKIPPED" (정상)
- bash -n syntax check: PASS
- py_compile team_prompts.py: PASS

---

## 발견 이슈 및 해결

1. **team_prompts.py CRITICAL_SET 내 ".done 이벤트 파일 생성 필수" 문구**: 수동 .done 생성 금지 정책과 상충 → "보고 형식" 라인에서 제거하고 별도 "완료 선언" 라인으로 대체
2. **team_prompts.py import 에러 (pyright)**: 기존 문제로 이번 변경과 무관 (config.loader, prompts.gate_instructions 미해결 import)
3. **finish-task.sh PR 게이트 위치 선정**: Step 2(머지) 직후에 넣으면 worktree_manager.py finish가 이미 실행된 뒤라 의미 감소 → Step 2 이후 .done 생성 전 위치(2.3)에 배치하여 PR이 open 상태면 .done 차단

---

## 모델 사용 기록

- 카르티케야(백엔드): sonnet — finish-task.sh 수정
- 사라스바티(프론트엔드): sonnet — DIRECT-WORKFLOW.md 수정
- 락슈미(UX/UI): sonnet — team_prompts.py 수정
- 하누만(테스터): 미사용 (테스트 코드 변경 없음, 기존 pytest로 검증 충분)

---

## 커밋 이력

- `65d876cc` — [task-2280] 카르티케야: finish-task.sh PR 머지 검증 게이트 추가
- `898f5edb` — [task-2280] 사라스바티: DIRECT-WORKFLOW.md 상충 문구 제거 + 강화 문구 추가
- (커밋) — [task-2280] 락슈미: team_prompts.py 프롬프트 서두/마지막 고정 블록 추가
