# task-1994: QC 커버리지 확장 — N/A/WARN 감소 수정

## 배경
task-1991 분석 결과: QC PASS 10% 미만, WARN 43%, N/A 47%. 근본 원인 3건 수정.

## ★ 반드시 먼저 읽을 파일 ★
- `memory/reports/task-1991.md` — QC 커버리지 분석 보고서 전체

## 수정 항목

### 1. qc_result 필드 소실 수정 (N/A 35건 → 0건 목표)
- 파일: `/home/jay/workspace/memory/task-timer.py`
- 문제: task-timer.py end가 .done 파일을 덮어써서 qc_result 필드가 사라짐
- 수정: end 실행 시 기존 .qc-result 파일의 qc_result 값을 보존
- 또는: task-timers.json의 해당 task에 qc_result 필드를 .qc-result에서 읽어와서 기록

### 2. QC bypass 경로 차단
- 파일: `scripts/finish-task.sh` (121-122행 근처)
- 문제: .done 선점 시 .qc-result 존재 확인 없이 생성
- 수정: .qc-result 파일이 없으면 .done 생성 차단 (경고 메시지 출력)
- 예외: 미팅 전용, 초단시간 작업 등 QC 면제 대상은 허용

### 3. WARN-only verifier 기준 강화
- 파일: `teams/shared/verifiers/style_check.py`
  - black/isort 위반 5개 이상 → FAIL로 승격
- 파일: `teams/shared/verifiers/scope_check.py`
  - 보고서의 "수정 파일" 섹션에서 expected_files 자동 추출
  - 추출 실패 시에만 SKIP (현재는 미지정=무조건 SKIP)

### 4. work_level 자동 기록
- 파일: `dispatch.py` 또는 `task-timer.py`
- 현재: 144건 전체 work_level 필드가 공란
- 수정: dispatch 시 level 파라미터를 task-timers.json의 work_level에 기록

## ★★★ 절대 규칙 ★★★
- 기존 QC 파이프라인 깨지면 안 됨
- 기존 .done 프로토콜과 하위 호환 유지

## 완료 시그니처
- [grep] `qc_result.*보존\|preserve.*qc_result\|qc-result` @ `memory/task-timer.py`
- [grep] `qc-result\|qc_result` @ `scripts/finish-task.sh`
- [pytest] `tests/test_dispatch.py`

## 검증 시나리오
1. task-timer.py end 실행 후 qc_result 필드가 보존되는지 확인
2. .qc-result 없이 finish-task.sh 실행 시 차단되는지 확인
3. style_check에서 위반 5개 이상 시 FAIL 반환 확인
4. dispatch 시 work_level이 task-timers.json에 기록되는지 확인
5. 기존 테스트 전체 PASS

## 레벨
- normal

## 프로젝트
- dev-system