# task-2089: 로키 레드팀 + 보안 감사 자동 검증 확장

## Situation
finish-task.sh의 G2-4, G3-4 항목(task-2080 전수조사 결과)에서 Lv.4 보안 감사가 프롬프트 의존이고 자동 검증이 없음이 확인됨. 디자인 작업에서만 로키 소환 검증(L98-126)이 있고, 일반 보안 작업은 미구현.

## Complication
Lv.4 작업에서 보안 감사 결과 파일이나 로키 레드팀 참여 기록이 없어도 .done이 생성 가능. 보안 취약점 미탐지 위험이 있음(task-2080 G2-4: High, G3-4: Critical).

## Question
finish-task.sh에서 Lv.4 판정 시 보안 감사 + 로키 참여 기록을 자동 검증하되, 첫 단계로 WARNING만 출력(FAIL까지는 하지 않음)하는 로직을 어떻게 추가하는가?

## Answer

### 수정 내용
**파일**: `/home/jay/workspace/scripts/finish-task.sh` (L369-L444, 78줄 추가)

G3 게이트 블록 직후에 **섹션 2.9 "Lv.4 보안 감사 검증"** 삽입:

1. **Lv.4 판정**: task 파일의 `## 레벨` 섹션에서 `critical`/`security`/`lv.4`/`lv4`/`level 4` 키워드로 Lv.4 판별
2. **security-audit 파일 체크**: `memory/events/{task_id}.security-audit` 파일 존재 확인 → 없으면 WARNING
3. **로키 보안 감사 참여 기록 체크**: 보고서에서 로키/Loki + 보안 감사/security audit/레드팀/red team 교차 확인 → PASS/PARTIAL/MISSING 분기 → WARNING
4. **exit 1 없음**: 첫 단계이므로 WARNING만 출력하고 계속 진행

기존 Codex 섹션 번호를 `2.9` → `2.10`으로 변경하여 순서 정리.

### 완료 시그니처 검증
- Lv.4 task에서 security-audit 파일 없으면 WARNING: ✅ (테스트 3)
- 기존 Lv.1-3 영향 없음: ✅ (테스트 1, 2)
- 기존 테스트 PASS: ✅ (2429 passed)

---

## 테스트 결과

- 테스트 1 (Lv.1 영향 없음): PASS — `is_lv3plus: False`, Lv.4 블록 미진입
- 테스트 2 (Lv.3 IS_LV4=no): PASS — `is_lv3plus: True`, `IS_LV4: no`
- 테스트 3 (Lv.4 + 파일 없음): PASS — `IS_LV4: True`, WARNING 경로 정상 진입
- 테스트 4 (로키 파싱 4케이스): PASS — PASS/PARTIAL/MISSING/영문 모두 정확
- 테스트 5 (구문 검증): PASS — `bash -n` exit code 0
- 테스트 6 (회귀 테스트): PASS — 2429 passed, 2 warnings (기존 deprecation 경고)

## 발견 이슈 및 해결

1. **기존 Codex 섹션 번호 충돌** (범위 내 해결): 신규 섹션 2.9 추가 시 기존 2.9 Codex 섹션과 충돌 → 기존 Codex를 2.10으로 리넘버링
2. **qc_verify.py INTEGRITY_FAIL** (범위 밖): `shared/qc_verify.py`를 직접 실행 시 `shared/verifiers`가 실제 디렉토리(심볼릭 링크 아님)라서 islink 체크 실패. 기존 환경 이슈이며 본 작업 범위 밖
3. **Lv.4 판정에 task-timers.json work_level 미사용** (의도적 설계): G3 게이트의 TASK_LEVEL은 이미 task-timers.json + task 파일 양쪽에서 판정. Lv.4 상세 판정은 task 파일만으로도 충분하므로 추가 파싱 불필요

## L1 스모크테스트 결과
- 서버 재시작: 해당없음 (스크립트 작업, 서버 변경 없음)
- API 응답 확인: 해당없음
- 스크린샷: 해당없음
- bash -n 구문 검증: PASS (exit code 0)
- Python 인라인 코드 단위 테스트: 6개 전체 PASS
- 기존 pytest 회귀: 2429 passed

## 모델 사용 기록
- 스바로그(sonnet): finish-task.sh Lv.4 보안 감사 검증 블록 구현
- 벨레스(sonnet): 6개 테스트 시나리오 실행 및 검증

## 셀프 QC 체크리스트
- [x] 1. 영향 파일: finish-task.sh만 수정
- [x] 2. 엣지 케이스: 파일 없음, 섹션 없음, 파싱 실패 모두 safe 처리
- [x] 3. 작업 지시 일치: WARNING만, FAIL 없음, Lv.1-3 영향 없음
- [x] 4. 보안: 외부 입력 없음, 파일 경로만 사용
- [x] 5. 테스트 커버리지: 6 시나리오 + 2429 회귀
- [x] 6. 이슈 직접 해결: 번호 충돌 해결 완료
- [x] 7. 아키텍처 원칙: 기존 패턴(인라인 Python, set +e, case 분기) 준수
- [x] 8. 인터페이스 변경: 없음 (기존 exit code 그대로)
- [x] 13. L1 스모크테스트: bash -n + 단위 테스트 완료

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

