# task-1920: test_runner MANDATORY 복원 + 전체 스위트 검증 게이트 추가

## 배경
task-1918에서 팀들이 "0 failed"라고 보고했지만, 실제로는 관련 파일 테스트만 돌리고 전체 스위트를 안 돌렸다.
test_runner가 MANDATORY_CHECKS에서 빠져있어서 테스트 건너뛰기가 가능했고, 전체 스위트 실행을 강제하는 로직이 없었다.

## 수정 항목

### 1. MANDATORY_CHECKS에 test_runner 복원
- 파일: `teams/shared/qc_verify.py` 137행
- 현재: `MANDATORY_CHECKS = {"data_integrity", "file_check", "planned_check", "spec_compliance"}  # test_runner 제거`
- 변경: test_runner를 MANDATORY_CHECKS에 추가

### 2. test_runner에 full_suite 모드 추가
- 파일: `teams/shared/verifiers/test_runner.py`
- verify() 함수에 `full_suite: bool = False` 파라미터 추가
- full_suite=True일 때: `python3 -m pytest tests/ -q --tb=short` 실행 (전체 스위트)
- full_suite=False일 때: 기존 동작 유지 (관련 파일만)
- timeout 기본값: full_suite=True면 180초, False면 60초

### 3. .done 생성 전 전체 스위트 게이트
- 파일: `teams/shared/qc_verify.py`
- 기존 test_runner 실행 후, 추가로 full_suite=True로 한 번 더 실행
- 또는 별도 check로 "full_suite_check" 등록
- 이 체크가 FAIL이면 .done 생성 금지

### 4. 보고서 테스트 결과 교차 검증
- g3_independent_verifier.py 또는 qc_verify.py에서:
- 보고서에 적힌 "X passed, 0 failed" 숫자를 파싱
- 실제 pytest 실행 결과와 비교
- 불일치 시 FAIL + "보고서 테스트 결과 불일치: 보고서={X passed}, 실제={Y passed, Z failed}" 메시지

## 검증 시나리오
1. test_runner를 --skip으로 건너뛰려 할 때 → MANDATORY라서 거부되는지 확인
2. full_suite=True 실행 시 전체 tests/ 실행 확인
3. 보고서에 "0 failed"인데 실제 실패가 있을 때 FAIL 판정 확인
4. 기존 테스트 회귀 없음

## 레벨
- normal
