# 3문서 2유형 체계 Phase 4: QC verifier 3문서 검증 연동

## 배경
- Phase 1 (task-1872_6.1): 스키마 확정 ✅
- Phase 2 (task-1872_6.2): 템플릿 + dispatch 자동 생성 ✅
- Phase 3 (task-1872_6.3): team_prompts + DIRECT-WORKFLOW 연동 ✅
- **Phase 4: QC verifier에 3문서 검증 추가** ← 현재

Lv.3+ 작업에서 3문서가 자동 생성되고 팀장에게 활용 지침이 전달되지만,
작업 완료 후 3문서가 실제로 업데이트되었는지 검증하는 게이트가 없음.
QC verifier에 3문서 검증기를 추가하여 3문서 미작성/미업데이트를 자동 탐지.

## 작업 내용

### 1. 3문서 검증기 모듈 작성
경로: `/home/jay/workspace/teams/shared/verifiers/three_docs_check.py`

검증 항목:
1. **존재 검증**: `memory/plans/tasks/{task_id}/` 디렉토리 존재 + 3파일(plan.md, context-notes.md, checklist.md) 존재
2. **YAML 검증**: 각 파일의 frontmatter에 필수 필드(task_id, type, scope, status) 존재
3. **status 검증**: plan.md의 status가 draft 이외 값(in-progress 또는 completed)으로 업데이트되었는지
4. **내용 검증**: 각 파일의 body가 템플릿 플레이스홀더("{task_id}" 등) 그대로인지 vs 실제 내용이 채워졌는지
5. **checklist 완료율**: checklist.md에서 `[x]` / `[ ]` 비율 계산 → 50% 미만이면 WARN

검증 결과 형식 (기존 verifier 패턴 준수):
```python
def verify(task_id: str, report_path: str, workspace: str) -> dict:
    return {
        "name": "three_docs_check",
        "status": "PASS" | "FAIL" | "WARN" | "SKIP",
        "message": "...",
        "details": {...}
    }
```

SKIP 조건: Lv.2 이하 작업 (3문서 디렉토리 미존재 = 정상)

### 2. qc_verify.py에 검증기 등록
위치: `/home/jay/workspace/teams/shared/qc_verify.py`

- import 추가: `from verifiers import three_docs_check`
- verifier 리스트에 추가 (기존 패턴 따라)
- Lv.3+ 작업에서만 실행되도록 조건 분기 (level 정보가 없으면 디렉토리 존재 여부로 판단)

### 3. 테스트 작성
경로: `/home/jay/workspace/tests/test_three_docs_check.py`

테스트 시나리오:
1. Lv.3+ 작업: 3문서 정상 존재 + status 업데이트됨 → PASS
2. Lv.3+ 작업: 3문서 존재하지만 status=draft (미업데이트) → WARN
3. Lv.3+ 작업: 3문서 디렉토리 없음 → FAIL
4. Lv.2 작업: 3문서 디렉토리 없음 → SKIP
5. YAML frontmatter 깨진 파일 → FAIL
6. checklist 완료율 50% 미만 → WARN
7. 템플릿 플레이스홀더 그대로인 파일 → WARN

## 영향 파일
- `/home/jay/workspace/teams/shared/verifiers/three_docs_check.py` — 신규
- `/home/jay/workspace/teams/shared/qc_verify.py` — 수정 (import + 등록)
- `/home/jay/workspace/tests/test_three_docs_check.py` — 신규

## 검증 시나리오 (스모크테스트)
1. `task-1872_6.3` (실제 Lv.3 작업)에 대해 검증기 실행 → 3문서 존재 확인
2. 존재하지 않는 task id에 대해 실행 → SKIP 또는 FAIL
3. 기존 qc_verify.py 전체 pytest 회귀 없음
4. 신규 테스트 7건 전부 PASS

## 주의
- 기존 verifier 패턴(file_check.py, spec_compliance.py 등) 코드를 참고하여 동일한 인터페이스 준수
- qc_verify.py 624줄 — offset/limit
- 수정 후 즉시 커밋