# task-1922 완료 보고서: 팀별 verifiers 디렉토리 심볼릭 링크 통일화

## SCQA

**S**: dev1~dev7의 verifiers 디렉토리가 독립 복사본으로 존재하여 shared 수정이 전파되지 않으며, dev7은 4개 verifier(file_touch_ratio, planned, symbol_existence, three_docs)가 누락되어 QC 부분 무력화 상태였다.

**C**: shared에 새 verifier가 추가되어도 각 팀에 수동 복사가 필요했고, dev7의 QC 검증은 누락 모듈로 인해 불완전하게 수행되고 있었다. 팀 수가 증가할수록 drift 위험이 기하급수적으로 증가한다.

**Q**: dev1~dev7의 verifiers를 shared 단일 소스 심볼릭 링크로 통일하여 QC 무결성을 확보할 수 있는가?

**A**: dev6 추가 모듈(png_check.py, claude_md_check.py)을 shared에 통합하고, dev1~dev7의 verifiers 디렉토리를 shared 심볼릭 링크로 교체 완료. dev7의 누락 4개 모듈이 복원되었으며, 7개 팀 모두 import 검증 및 qc_verify.py 로딩 테스트를 통과했다. pytest 2304건 통과(기존 범위 외 1건 실패). dev8은 지시대로 변경하지 않았으며, dev1 경유 간접 참조로 정상 동작 확인.

## 수행 내역

### 1. dev6 추가 모듈 shared 통합
- `teams/dev6/qc/verifiers/png_check.py` → `teams/shared/verifiers/png_check.py` 복사
- `teams/dev6/qc/verifiers/claude_md_check.py` → `teams/shared/verifiers/claude_md_check.py` 복사
- `teams/shared/verifiers/__init__.py`에 `claude_md_check`, `planned_check`, `png_check` 알파벳 순 등록

### 2. 심볼릭 링크 교체
- dev1, dev4, dev5, dev6, dev7: 실제 디렉토리 → `verifiers.bak`으로 백업 후 `../../shared/verifiers` 심볼릭 링크 생성
- dev2, dev3: 기존 dev1 가리키는 심볼릭 링크 → shared로 교체
- dev8: 변경 없음 (기존 dev1 가리킴 유지)

## 수정 파일별 검증 상태

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| teams/shared/verifiers/png_check.py | dev6에서 복사 | `ls -la` 존재 확인 | verified |
| teams/shared/verifiers/claude_md_check.py | dev6에서 복사 | `ls -la` 존재 확인 | verified |
| teams/shared/verifiers/__init__.py | claude_md_check, planned_check, png_check 등록 | import 성공 확인 | verified |
| teams/dev1/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |
| teams/dev2/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |
| teams/dev3/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |
| teams/dev4/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |
| teams/dev5/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |
| teams/dev6/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |
| teams/dev7/qc/verifiers | shared 심볼릭 링크 | `readlink` → `../../shared/verifiers` | verified |

## 검증 결과

### import 검증 (dev1~dev7)
- dev1~dev7 전부: `from verifiers import planned_check, test_runner, three_docs_check, png_check, claude_md_check` → OK

### dev7 누락 모듈 복원
- `file_touch_ratio_check`, `planned_check`, `symbol_existence_check`, `three_docs_check` → 전부 import 성공

### dev8 변경 없음
- `readlink` → `/home/jay/workspace/teams/dev1/qc/verifiers` (기존 유지)
- dev1→shared 간접 경유로 정상 접근 가능

### L1 스모크테스트
- `qc_verify.py --task-id task-1922 --skip api_health` dev1, dev4, dev7에서 실행 → 정상 로딩

### pytest
- 2304 passed, 1 failed (기존 `test_g3_verifier.py::test_main_exits_0_when_report_no_table` — 본 작업 범위 외)
- `⚠️ 기존 테스트 실패 1건 (본 작업 범위 외): test_g3_verifier.py::test_main_exits_0_when_report_no_table`

## 발견 이슈 및 해결

### 자체 해결 (4건)
1. **dev6 추가 모듈 shared 부재** — png_check.py, claude_md_check.py를 shared에 복사하여 해결
2. **shared __init__.py에 planned_check 미등록** — __init__.py에 claude_md_check, planned_check, png_check 3개 모듈 등록 추가
3. **dev2/dev3이 dev1을 가리키는 간접 심볼릭 링크** — shared 직접 참조로 교체하여 단일 장애점 제거
4. **add-team.py symlink 존재 체크 회귀** — `scripts/add-team.py:126,131`에서 `.exists()` → `.is_symlink() or .exists()`로 수정. dangling symlink 시 `.exists()`가 False를 반환하여 `FileExistsError` 발생하던 문제 해결. test_add_team 74건 전부 통과 확인.

### 범위 외 미해결 (2건)
1. **pyright `from verifiers import ...` resolve 실패** — 기존 __init__.py와 동일한 패턴. `qc/` 디렉토리 기준 런타임 import는 정상. pyright 설정 변경은 별도 작업 범위.
2. **pyright `add-team.py:137` 타입 경고** — 기존 코드의 `lead: str = None`, `members: list = None` 타입 미스매치. 본 작업 수정 범위 외(126, 131줄만 변경).

## 산출물 파일

- `/home/jay/workspace/scripts/add-team.py`
- `/home/jay/workspace/teams/shared/verifiers/png_check.py`
- `/home/jay/workspace/teams/shared/verifiers/claude_md_check.py`
- `/home/jay/workspace/teams/shared/verifiers/__init__.py`
- `/home/jay/workspace/teams/dev1/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev2/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev3/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev4/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev5/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev6/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev7/qc/verifiers` (symlink → shared)
- `/home/jay/workspace/teams/dev1/qc/verifiers.bak/` (백업)
- `/home/jay/workspace/teams/dev4/qc/verifiers.bak/` (백업)
- `/home/jay/workspace/teams/dev5/qc/verifiers.bak/` (백업)
- `/home/jay/workspace/teams/dev6/qc/verifiers.bak/` (백업)
- `/home/jay/workspace/teams/dev7/qc/verifiers.bak/` (백업)

## 모델 사용 기록

- 팀원: 불칸 / 작업 내용: 파일 복사, 심볼릭 링크 생성, __init__.py 수정, 검증 / 사용 모델: sonnet / 정당성: -

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

