# task-1924 완료 보고서: QC 강제 실행 파이프라인 수정

## S - Situation
QC 파이프라인이 팀장 봇에서 작동하도록 설계되어 있으나, 최근 10건 task 중 6건에서 QC가 미실행 또는 부분 실행된 것으로 심층 분석 결과 확인되었다.

## C - Complication
3가지 구조적 결함이 발견되었다: (1) `team_short` placeholder가 프롬프트에 전달되지 않아 `qc_verify.py` 경로가 올바르게 유도되지 않음, (2) DIRECT-WORKFLOW.md에 수동 `.done` 생성 하위호환 경로가 존재하여 `--gate` 없이 QC 우회 가능, (3) `finish-task.sh`가 QC 실행 여부를 검증하지 않아 QC 미실행 상태에서 `.done` 생성이 허용됨.

## Q - Question
3가지 결함을 수정하여 QC 우회를 원천 차단하고, `--gate` 사용을 필수화할 수 있는가?

## A - Answer
기존 코드의 최소 수정으로 3가지 결함을 독립적으로 해결 완료했다. (1) `team_prompts.py`의 모든 placeholder_lines 블록(8곳)에 `team_short` 추가, (2) DIRECT-WORKFLOW.md에서 수동 `.done` 생성 코드 제거 후 금지 경고로 대체, (3) `qc_verify.py`에 `.qc-result` 파일 생성 추가 + `finish-task.sh`에서 `.qc-result` 부재 시 `.done` 생성 차단. pytest 2326 passed, 0 failed (범위 내). pyright 기존 이슈 외 신규 에러 0건.

---

## 수정 파일별 검증 상태

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| prompts/team_prompts.py:362 | marketing team_short=team_id 추가 | grep "team_short" 362행 OK | verified |
| prompts/team_prompts.py:402 | consulting team_short=team_id 추가 | grep "team_short" 402행 OK | verified |
| prompts/team_prompts.py:438 | publishing team_short=team_id 추가 | grep "team_short" 438행 OK | verified |
| prompts/team_prompts.py:474 | design team_short=team_id 추가 | grep "team_short" 474행 OK | verified |
| prompts/team_prompts.py:514 | content team_short=team_id 추가 | grep "team_short" 514행 OK | verified |
| prompts/team_prompts.py:785 | direct team_short=team_id.replace("-team","") | grep "team_short" 785행 OK | verified |
| prompts/team_prompts.py:848 | glm team_short=team_id.replace("-team","") | grep "team_short" 848행 OK | verified |
| prompts/team_prompts.py:911 | mcp team_short=team_id.replace("-team","") | grep "team_short" 911행 OK | verified |
| prompts/DIRECT-WORKFLOW.md:295 | 수동 .done 하위호환 코드 삭제, 금지 경고 추가 | grep "수동 .done 생성 절대 금지" OK, grep "하위호환" 0건 | verified |
| teams/dev2/qc/qc_verify.py:552 | _handle_gate PASS/WARN시 .qc-result 파일 생성 | grep "qc-result" 552,553,563행 OK | verified |
| scripts/finish-task.sh:119 | .qc-result 부재 시 .done 생성 차단 | grep "QC 미실행" 124행, grep "qc-result" 119,120,126행 OK | verified |

## 검증 시나리오 결과

1. **team_short 포함 확인**: `build_prompt("dev1-team")` → `team_short: dev1` 포함 PASS, `build_prompt("marketing")` → `team_short: marketing` 포함 PASS, `build_prompt("dev8-team")` → `team_short: dev8` 포함 PASS
2. **수동 .done 코드 삭제**: DIRECT-WORKFLOW.md에서 "하위호환" 키워드 0건 PASS
3. **qc_verify --gate 미실행 → finish-task.sh 차단**: `.qc-result` 없이 `finish-task.sh` 실행 시 exit 1 + 에러 메시지 출력 PASS
4. **qc_verify --gate PASS → .done + .qc-result 생성**: 둘 다 생성 확인 PASS
5. **pytest**: tests/test_team_prompts.py 136 passed, tests/test_qc_gate.py 8 passed, tests/test_qc_verify.py 22 passed, tests/test_qc_integration.py 23 passed

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **논리적 팀 team_short 처리** — 논리적 팀(marketing, consulting 등)은 team_id에 "-team" 접미사가 없으므로 `team_short = team_id` 그대로 사용
2. **finish-task.sh의 .done 이미 존재 시 처리** — `qc_verify.py --gate`가 이미 `.done`을 생성한 경우 finish-task.sh는 중복 차단하지 않고 INFO 로그 후 나머지 작업(timer end, notify) 수행하도록 분기 추가
3. **qc_verify.py의 .qc-result 타이밍** — `.done` 생성 후, print 메시지 전에 `.qc-result`를 생성하여 원자성 보장

### 범위 외 미해결 (2건)
1. **dev1 qc_verify.py 동일 수정** — 범위 외 사유: dev1팀 소관 파일
2. **test_g3_verifier.py 1건 실패** — 범위 외 사유: G3 verifier 보고서 품질 검증 테스트 기존 실패 (SCQA 패턴/분량 검증 로직), 본 task 변경사항과 무관

## 모델 사용 기록
- 팀원: 토르(백엔드) / 작업 내용: MT-1~4 전체 구현 (team_prompts.py, DIRECT-WORKFLOW.md, qc_verify.py, finish-task.sh) / 사용 모델: sonnet
- 팀원: 오딘(팀장) / 작업 내용: 설계, 검증, 통합, 보고서 / 사용 모델: opus

## 세션 통계
- 총 도구 호출: 0회

