# task-566.3: Phase 3 gstack 코드 구현 (단기 7개)

## 배경
task-566 Phase 2(위스퍼 비서 핵심 구현) 완료됨. 한정승인에 따라 즉시 Phase 3 진행.

## Phase 2 산출물 (참조)
- `memory/reports/task-566.2.md` — Phase 2 보고서
- `scripts/whisper-compile.py` — 위스퍼 브리핑 컴파일러 (테스트 80건 PASS)
- `scripts/whisper-save-guidance.py` — 세션 가이던스 저장
- `~/.claude/hooks/user-prompt-submit.sh` — 아누 케이스에 위스퍼 주입 완료
- `~/.claude/hooks/stop-qc-reminder.sh` — 아누 케이스에 가이던스 저장 완료

## 참조 문서
1. `memory/research/gstack-analysis.md` — gstack 17개 도입 항목 상세
2. `memory/tasks/dispatch-whisper-letta-gstack-master.md` — 마스터 디스패치 Phase 3

## 한정승인 (Scoped Delegation)
- 각 Phase 완료 → .done → 즉시 다음 Phase 진행 (아누 승인 대기 없음)
- **chain_manager.py를 사용하지 말 것**

---

## Phase 3 작업 항목 (7개)

### A1: diff-aware QA
- **파일**: `/home/jay/workspace/scripts/diff-aware-qa.py`
- **기능**: git diff → 변경된 파일 → 영향받는 라우트/컴포넌트 매핑
- **용도**: QA 시 변경 영향 범위 자동 식별
- **테스트**: `scripts/tests/test_diff_aware_qa.py`

### A2: Health Score
- **파일**: `/home/jay/workspace/scripts/health-score.py`
- **기능**: 7카테고리 가중평균으로 프로젝트 건강도 0-100 점수 산출
- 카테고리: 테스트 통과율, pyright 에러, 코드 커버리지, 기술부채, 보안, 문서화, 배포 안정성
- **출력**: JSON `{"score": 85, "categories": {...}, "grade": "A"}`
- **테스트**: `scripts/tests/test_health_score.py`

### A4: CRITICAL GAP check
- **파일**: `/home/jay/workspace/teams/dev1/qc/verifiers/critical_gap.py` (또는 qc_verify.py에 직접 추가)
- **기능**: 보고서에서 CRITICAL 이슈가 보고되었으나 수정 미확인 시 FAIL
- **테스트**: qc_verify.py 테스트에 추가

### A7: SKILL.md 템플릿 시스템
- **파일**: `/home/jay/workspace/scripts/gen-skill-docs.py`
- **기능**: 스킬 디렉토리의 SKILL.md를 표준 템플릿 기반으로 자동 생성/검증
- **테스트**: `scripts/tests/test_gen_skill_docs.py`

### A13: baseline 비교
- **파일**: `/home/jay/workspace/memory/whisper/qa-baseline.json` + 비교 로직
- **기능**: 이전 QA 결과와 현재 결과 비교 → 개선/악화 표시
- **통합**: health-score.py에 baseline 비교 기능 포함
- **테스트**: health-score.py 테스트에 포함

### A15: 에러 메시지 AI-actionable 개선
- **대상**: 기존 스크립트(qc_verify.py, task-timer.py, dispatch.py 등)의 에러 메시지
- **개선**: "Error: file not found" → "Error: file not found at /path/to/file. Run `python3 script.py --help` for usage."
- **기준**: 모든 에러 메시지에 (1) 무엇이 실패했는지 (2) 어떻게 해결할 수 있는지 포함
- **테스트**: 기존 테스트 회귀 없음 확인

### A17: fix_pct 경고
- **통합 위치**: health-score.py 또는 별도 로직
- **기능**: task-timers.json에서 fix 비율(수정/전체 작업) 계산 → 30% 초과 시 경고
- **테스트**: health-score.py 테스트에 포함

---

### 추가: whisper-compile.py 아누 상태 버그 수정
- **문제**: 아누가 hook 실행 시점에 bot-activity.json이 이미 processing으로 갱신되어 있어 아누 자신이 항상 "processing"으로 표시됨
- **수정**: whisper-compile.py에서 아누(anu) 상태를 브리핑에서 **제외**할 것. 아누는 대화 중인 주체이므로 브리핑에 포함할 필요 없음.
- **파일**: `scripts/whisper-compile.py`의 `compile_briefing()` 또는 팀 상태 출력 부분
- **테스트**: 기존 50건 테스트 수정/추가

---

## 완료 기준
- 각 스크립트 구현 + 테스트 PASS
- 기존 테스트 회귀 없음 (⚠️ test_notify_completion.py 3건은 기존 실패)
- pyright 에러 0건
- black + isort 준수

## 보고서
`memory/reports/task-566.3.md`

---

## 공통 규칙
- 코딩은 팀원(Sonnet)에게 위임. 팀장(Opus)은 설계/검토만.
- Python 3.10+, 표준 라이브러리 우선
- task-timer로 작업 기록 필수