# task-688: QC test_runner --skip 우회 방지 코딩화

## 배경
QC 검증(qc_verify.py)에서 test_runner가 FAIL 나면 `--skip test_runner`로 우회하는 행동이 발견됨.
원인: 전체 `tests/` 디렉토리를 대상으로 테스트를 돌려서 기존 실패 건에 걸림 → 스킵으로 우회.

## 문제
- QC 검증은 우리 원칙. 스킵으로 우회하는 것은 원칙 위반.
- 본인 작업과 무관한 기존 테스트 실패 때문에 QC가 FAIL → 스킵 유혹 발생.
- `--skip` 옵션이 존재하는 한 봇들이 계속 남용할 가능성.

## 요구사항

### 1. qc_verify.py 수정: `--check-files` 기반 테스트 자동 추론

현재 `--test-dir` 옵션으로 테스트 디렉토리를 수동 지정하는 구조인데, 이를 개선:

1. `--check-files`에 명시된 파일에서 **관련 테스트 파일을 자동 추론**
   - `utils/env_loader.py` → `tests/test_env_loader.py` 탐색
   - `dispatch.py` → `tests/test_dispatch.py` 탐색
   - `workers/foo/bar.py` → `workers/foo/tests/test_bar.py` 탐색
   - 탐색 패턴: `tests/test_{파일명}.py`, `{디렉토리}/tests/test_{파일명}.py`
2. 추론된 테스트 파일만 pytest에 전달 (전체 tests/ 디렉토리 X)
3. 추론된 테스트 파일이 0개면 test_runner를 SKIP 처리 (이건 정당한 스킵)
4. `--test-dir` 옵션은 유지하되, 사용 시 WARN 로그 출력: "가능하면 --check-files 기반 자동 추론을 사용하세요"

### 2. `--skip test_runner` 사용 제한

1. `--skip test_runner` 사용 시 **WARN 레벨 로그 강제 기록**:
   `"⚠️ test_runner SKIP 사용됨. QC 원칙 위반 가능성. --check-files 기반 자동 추론을 사용하세요."`
2. 보고서 최종 결과에 `⚠️ test_runner: MANUAL_SKIP (경고)` 로 명시
3. 단순 SKIP이 아닌 **MANUAL_SKIP** 상태로 구분하여 기록

### 3. QC-RULES.md 업데이트

Section 2 (자동 검증)에 아래 규칙 추가:

```markdown
### test_runner 대상 범위 규칙 (v3.3 신설)
- `--check-files` 지정 시: 관련 테스트 파일을 자동 추론하여 해당 테스트만 실행
- `--test-dir tests/` (전체 디렉토리): 금지. 본인 작업 무관 실패 포함 위험
- `--skip test_runner`: 원칙적 금지. 사용 시 MANUAL_SKIP으로 기록 + 경고
- 관련 테스트 파일이 0개: 정당한 SKIP (자동 처리)
```

### 4. 테스트

- `--check-files utils/env_loader.py` → `tests/test_env_loader.py` 자동 추론 확인
- `--check-files nonexistent.py` → 관련 테스트 0개 → 정당한 SKIP 확인
- `--skip test_runner` 사용 시 WARN 로그 + MANUAL_SKIP 기록 확인
- 기존 `--test-dir` 동작 호환성 유지 확인

## 파일 위치
- 수정 대상: `/home/jay/workspace/teams/dev1/qc/qc_verify.py`
- 수정 대상: `/home/jay/workspace/teams/shared/QC-RULES.md`
- 테스트: `/home/jay/workspace/tests/test_qc_verify.py` (있으면 수정, 없으면 생성)

## 산출물
- qc_verify.py 수정본
- QC-RULES.md 수정본
- 테스트 파일
- `memory/reports/task-688.md` 보고서
