# 계획서: task-115.1 — team_prompts.py 가이드 분리 + 프롬프트 크기 게이트

## 작업 요약
team_prompts.py의 장문 가이드 텍스트를 teamlead-guide.md로 분리하고, dispatch.py에 프롬프트 크기 검증 게이트를 추가한다.

## 서브태스크 분해 및 팀원 배정

### ST-1: teamlead-guide.md 생성 (불칸 — 백엔드)
- `/home/jay/workspace/prompts/teamlead-guide.md` 신규 생성
- `_build_work_philosophy_section()` → '작업 철학' 섹션
- `_build_failure_scenario_section()` → '실패 시나리오 체크리스트' 섹션
- `_build_verification_section()`의 selfcheck → '셀프 QC' 섹션
- critical/security 마아트/로키 소집 → '추가 검증' 섹션
- 기존 텍스트 빠짐없이 옮길 것

### ST-2: team_prompts.py 수정 (불칸 — 백엔드, ST-1 완료 후)
- `_build_work_philosophy_section()`, `_build_failure_scenario_section()` 함수: 내용을 '팀장 가이드 참조' 한 줄로 대체
- `_build_direct_prompt()`, `_build_glm_prompt()`에서 해당 함수 호출 → 가이드 파일 참조 문단으로 교체
- `_build_verification_section()`: selfcheck 텍스트를 파일 참조로 대체, critical/security 분기 로직은 유지하되 내용은 파일 참조

### ST-3: dispatch.py 프롬프트 크기 게이트 (불칸 — 백엔드, ST-2와 독립)
- `dispatch()` 함수에서 prompt 생성 후, cron 발송 전에 크기 체크
- 2000자 초과: WARNING 로그
- 3000자 초과: ERROR + 발송 차단 (--force로 우회 가능)
- 로그 메시지 형식 준수

### ST-4: 테스트 (아르고스 — 테스터, ST-2+ST-3 완료 후)
- team_prompts.py의 build_prompt()가 가이드 파일 참조를 포함하는지 검증
- 기존 guide 텍스트가 프롬프트에 직접 포함되지 않는지 검증
- dispatch.py 크기 게이트 동작 검증 (WARNING, ERROR, --force 우회)
- orchestrator.py에서 import 깨지지 않는지 확인

## 실행 순서
1. ST-1 → ST-2 (의존)
2. ST-3 (ST-1/ST-2와 독립, 병렬 가능)
3. ST-4 (ST-2+ST-3 완료 후)

## 예상 위험 및 대안

| 위험 | 대응 |
|------|------|
| teamlead-guide.md에 텍스트 누락 | 원본 함수의 문자열을 그대로 복사하여 검증 |
| orchestrator.py에서 삭제된 함수 호출 | grep으로 전수 검사 후 정리 (orchestrator는 build_prompt만 호출하므로 문제 없음 예상) |
| 프롬프트 크기 게이트가 기존 동작 방해 | --force 우회 옵션 제공, 기존 테스트 통과 확인 |

### 검토한 대안과 기각 사유
1. **대안: 가이드 내용을 CLAUDE.md에 통합** → 기각: CLAUDE.md는 팀별 정체성 문서이므로 범용 가이드를 넣기 부적합
2. **대안: 크기 게이트를 build_prompt() 내부에 배치** → 기각: build_prompt는 순수 문자열 생성 함수. 발송 로직인 dispatch.py에 게이트를 두는 게 관심사 분리 원칙에 맞음
3. **대안: 함수를 완전 삭제하지 않고 deprecated 처리** → 기각: 불필요한 코드 잔존. 호출처를 모두 정리하므로 삭제가 적합

## 실패 시나리오 체크리스트

### 1. 비정상 입력/상태
- teamlead-guide.md 파일이 없거나 깨진 경우: 팀장이 Read 시 오류를 인지하지만, 프롬프트 생성 자체는 정상 작동(파일 참조 경로만 삽입). 파일 존재 여부는 팀장 실행 시점에 검증됨.
- 대응: 파일 생성 후 내용 검증 테스트 포함

### 2. 동시성/경쟁 조건
- teamlead-guide.md는 읽기 전용. 동시 읽기 문제 없음.
- dispatch.py 크기 게이트는 prompt 문자열 로컬 변수에 대한 len() 체크이므로 공유 자원 없음.
- 해당 없음

### 3. 비정상 종료/타임아웃
- 프롬프트 생성 중 프로세스 종료: 기존과 동일한 동작. 크기 게이트는 단순 조건문이라 상태 파일 없음.
- 해당 없음

### 4. 스테일 데이터
- teamlead-guide.md 내용이 업데이트되면 모든 팀장에게 즉시 반영됨 (매번 Read하므로).
- 캐시 없음. 해당 없음.

### 5. 통합 시 충돌
- team_prompts.py는 dispatch.py와 orchestrator.py에서 import. 함수 시그니처(build_prompt)는 변경 없으므로 충돌 없음.
- 삭제되는 내부 함수(_build_work_philosophy_section 등)는 외부에서 import하지 않음 (grep 확인 예정).
- dispatch.py에 새 import(logger는 이미 있음) 없으므로 충돌 없음.
