---
task_id: task-43.0
type: checklist
scope: system
project: anu-guide-system
created: 2026-03-02
updated: 2026-04-24
status: active
---

# 체크리스트: 아누 가이드 시스템 구축

**task**: task-43.0

---

## 즉시조치 — 보안 (→ 1팀 task-44.1) ✅ 완료
- [x] A. dispatch.py BOT_KEYS 하드코딩 폴백 제거
- [x] B. 핵심 파일 권한 640 강화

## Phase 0 — hooks 인프라 (→ 1팀 task-44.1) ✅ 완료
- [x] A. ~/.claude/hooks/ 디렉토리 생성
- [x] B. ~/.claude/settings.json hooks 설정 추가
- [x] C. hooks/user-prompt-submit.sh 구현
- [x] D. hooks/post-tool-use.sh 구현 (Audit Trail)
- [x] E. hooks/lib/detect-bot.sh 구현
- [x] F. /tmp/ 로그 → memory/logs/ 이전
- [x] G. hooks 동작 테스트 통과 (10/10 PASS)

## Phase 1 — 작업 기억 + skills (→ 2팀 task-46.1) ✅ 완료
- [x] A. 3문서 스키마 확정 (memory/specs/3docs-schema.md)
- [x] B. .claude/skills/agent-meeting.md
- [x] C. .claude/skills/3docs-create.md
- [x] D. .claude/skills/nuclear-approval.md
- [x] E. skills 파일 검증 통과

## Phase 2 — QC 자동화 (→ 1팀 task-47.1) 🔄 진행 중
- [ ] A. team_prompts.py QC 셀프검증 단계 강화 (normal/critical/security 차등)
- [ ] B. QC 보고서 표준 양식 (qc-report-template.md)
- [ ] C. Stop hook — QC 리마인더 (stop-qc-reminder.sh)
- [ ] D. 테스트 통과

## Phase 3 — 파이프라인 통합 (→ 2팀 task-48.1) ✅ 완료
- [x] A. 런타임 검증 스크립트 (health-check.sh)
- [x] B. 파이프라인 6단계 정의 (pipeline-stages.md)
- [x] C. 파이프라인 상태 추적 (pipeline-status.json + task-timer 연동)
- [x] D. 주기적 헬스체크 cron 등록 안내
- [x] E. 테스트 통과

## Phase 4 — 위임 작업 품질 자동화 (2026-04-24 추가)

> 미팅: 13명 전원합의 5사이클 (`memory/meetings/2026-04-24-dispatch-quality-automation.md`)
> 지시: "아누가 잊어먹어도 실제로 코드가 자동으로 진행할 수 있게"

### Phase 4-1A: 즉시 FAIL 게이트 (P1 — 병렬)
- [ ] C-FINAL-3: `l1_smoketest_check.py` BLOCK_PATTERNS + EXEMPT_PATTERNS 추가 → 7팀 (이잠나)
- [ ] C-FINAL-4a: `dispatch.py` `_auto_inject_affected_files()` 추가 → 2팀 (오딘)
- [ ] C-FINAL-4b: `dispatch.py` `_auto_generate_goal_assertions()` 추가 → 2팀 (오딘)
- [ ] C-FINAL-5d: `finish-task.sh` Step 2.12 Goal Assertions Gate 추가 → 3팀 (다그다)

### Phase 4-1B: WARN 모드 데이터 수집 (P1 — 병렬)
- [ ] C-FINAL-1: `scripts/impact_scanner.py` 신규 생성 (~200줄) → 1팀 (헤르메스)
  - [ ] extract_symbols_python (AST 기반)
  - [ ] extract_symbols_typescript (regex 기반)
  - [ ] grep_references + COMMON_FILTER
  - [ ] 임계치: 0건=PASS, 1-5건=WARN, 6건+=BLOCK
  - [ ] 단위 테스트 (tests/test_impact_scanner.py)
- [ ] C-FINAL-5a: `finish-task.sh` Step 2.6 Impact Scanner Gate 추가 → 3팀 (다그다)
- [ ] C-FINAL-5c: `finish-task.sh` Step 2.11 Unresolved Issue Gate 추가 → 3팀 (다그다)

### Phase 4-1B: CI 게이트 (P2)
- [ ] C-FINAL-2: `scripts/ci_preflight.sh` 신규 생성 (~80줄) → 4팀 (비슈누)
  - [ ] tech stack 자동 감지 (pytest/tsc/vitest/jest)
  - [ ] 러너당 120초 타임아웃
  - [ ] --affected-only 모드
  - [ ] 단위 테스트 (tests/test_ci_preflight.sh)
- [ ] C-FINAL-5b: `finish-task.sh` Step 2.6.5 CI Preflight Gate 추가 → 3팀 (다그다)
- [ ] C-FINAL-6: `config/gate-config.json` 신규 생성 → 5팀 (엔키)
- [ ] C-FINAL-7: `.done` 파일에 gate_results JSON 필드 추가 → 3팀 (다그다)

### Phase 4 문서 업데이트
- [ ] DIRECT-WORKFLOW.md에 goal_assertions 포맷 문서화
- [ ] QC-RULES.md에 신규 verifier 설명 추가
- [ ] CLAUDE.md에 Phase 4 게이트 요약 추가

### Phase 4 통합 검증
- [ ] 통합 테스트 8개 핵심 시나리오 → composite (로키+마아트)
  - [ ] 시나리오 1: "확인 불가" 보고서 → l1_smoketest FAIL
  - [ ] 시나리오 2: 수정 파일 심볼 역추적 → 누락 파일 WARN
  - [ ] 시나리오 3: pytest FAIL → ci_preflight FAIL → .done 차단
  - [ ] 시나리오 4: goal_assertions 전부 PASS → .done 생성
  - [ ] 시나리오 5: goal_assertions 1건 FAIL → .done 차단
  - [ ] 시나리오 6: 미해결 4건 → unresolved_gate BLOCK
  - [ ] 시나리오 7: gate-config.json mode=warn → WARNING만 (차단 안 함)
  - [ ] 시나리오 8: 백틱 토큰 자동 추출 → affected_files 자동 주입

### Phase 4-2: WARN → FAIL 승격 (2주 후)
- [ ] 2주 운영 데이터 수집 완료
- [ ] false positive 비율 산출 (< 10% 기준)
- [ ] gate-config.json mode: "warn" → "fail" 전환 판단
- [ ] 제이회장님 Phase 2 전환 보고

## Phase 5 — 위임 완결성 4대 규칙 자동화 (2026-04-26 추가)

> 교훈: task-2192~2204 이미지/PDF 편집기 사고 (dispatch 미수신 5회, 빌드 누락, E2E 미검증)

### Phase 5-1: dispatch.py 봇별 key fallback (→ task-2205)
- [ ] dispatch.py에서 cron 전송 후 schedule 파일 존재 확인
- [ ] 미존재 시 봇별 key로 자동 재전송 (fallback)
- [ ] 봇별 key 매핑을 bot_settings_sync.json에서 자동 로드

### Phase 5-2: DIRECT-WORKFLOW 빌드+배포 단계 (→ task-2205)
- [ ] Step 4.7.1: PR 머지 후 npm run build 필수 단계 추가
- [ ] 빌드 실패 시 즉시 수정 후 재빌드 명시

### Phase 5-3: L1 스모크테스트 SKIP 금지 (→ task-2205)
- [ ] Step 4.8에 SKIP 처리 명시적 금지 추가
- [ ] 프론트엔드: Playwright 실 브라우저 테스트 + 스크린샷 의무화
- [ ] SKIP 시 .done 생성 불가 명시

### Phase 5-4: 프로젝트 구조 맵 자동 참조
- [ ] dispatch.py에서 프로젝트 맵 기반 네비게이션 파일 자동 경고 삽입
- [ ] InsuRo: "routes.ts + navigationConfig.ts 두 파일 모두 확인" 자동 주입

## Phase 6 — 완전자동 머지 enforcement 시스템 (2026-05-04~05 추가)

### Phase 6-1: 봇 권한 내 enforcement 자산 (→ task-2440 dev1팀 헤르메스, PR #14 머지 완료)
- [x] `scripts/lock_in_verify.py` (AST 기반 First-line 가드)
- [x] `scripts/gemini_review_gate.py` (Gemini Review를 GitHub check run으로)
- [x] `scripts/gemini_feedback_loop.py` (3회 초과 시 `human_review_required` 라벨)
- [x] `.github/workflows/ci.yml` 7-step required checks 등록
- [x] `merge_group` 트리거 추가
- [x] 회귀 테스트 21건 PASS (`test_lock_in_verify.py` 5, `test_gemini_review_gate.py` 10, `test_gemini_feedback_loop.py` 6)

### Phase 6-2: server-side enforcement (→ 회장 직접 처리, 2026-05-04 09:18 완료)
- [x] 저장소 소유권 전환: `JonghyukJeon` → `Jeon-Jonghyuk` Organization
- [x] Plan 업그레이드: free → team
- [x] Ruleset 등록: id=15896715, name="main-protection", enforcement=active
- [x] 7개 required checks를 Ruleset에 연결

### Phase 6-3: 침투 테스트 9 케이스 (→ task-2449 composite, 완료)
- [x] Pen 1: CANCELLED state 머지 시도 → 차단
- [x] Pen 2: HUMAN_APPROVED 미달 머지 → 차단
- [x] Pen 3: state 파일 checksum 변조 → 검출
- [x] Pen 4: auto_merge.py 직접 호출 (TASKCTL_INVOKED 미설정) → 차단
- [x] Pen 5: 비정상 상태 전이 (CREATED → MERGED 직행) → 차단
- [x] Pen 6: `gh pr merge` 직접 호출 코드 검색 → 0건
- [x] Pen 7: pre-push hook의 main 거부 → 동작
- [x] Pen 8: refspec 우회 (다른 브랜치 → origin/main) → 차단
- [x] Pen 9: bypass evidence 강제 기록 (회장 override) → 동작

### Phase 6-4: 합격 매트릭스 검증 (→ task-2451)
- [x] gate_results 5개 모두 PASS (impact_scanner, ci_preflight, l1_smoketest, goal_assertions, unresolved_gate)
- [x] qc_result 기록 (WARN — 회장 검증 대기)
- [ ] 회장 추가 검증 완료 (V3 문서 갱신 시 반영)
- [ ] `.done` → `.done.acked` 처리 (회장 명시 지시 후)

### Phase 6 문서 갱신
- [x] V2 외부 조언자 문서 갱신 (`memory/specs/anu-system-spec-for-external-advisor.md`)
- [x] 3문서 Phase 6 추가 (plan/context-notes/checklist)
- [x] `memory/specs/anu-system-spec.md` 종합 스펙 갱신 (Phase 7 = task-2452에서 V1.1.1로 bump)
- [x] V3 회장 추가 검증 결과 반영 (task-2452, 2026-05-05)

## Phase 7 — 신호등 sync 정정 + auto_merge.py 공식 폐기 (2026-05-05 task-2452)

### Phase 7-1: auto_merge.py 공식 폐기 (Lv.1, dev1팀 헤르메스)
- [x] crontab 매분 실행 라인 제거
- [x] `scripts/auto_merge.py` 헤더 DEPRECATED 마커 + 30일 유예 안내
- [x] `logs/auto_merge.log` (24MB) → `logs/auto_merge.log.archive-2026-05-05` rename + 빈 로그 새로 생성
- [ ] (2026-06-04) 30일 유예 후 코드 자체 삭제

### Phase 7-2: finish-task.sh 끝부분 신호등 통합 (Lv.2, dev1팀 헤르메스)
- [x] Step 2.7 (`member-status.json idle 복원`)을 끝부분 마지막 Step (Step 2.99, .done 생성 직전)으로 이동
- [x] 동일 Step에 `bot-activity.json idle 전환` 통합 (두 source 동시·동일 시점)
- [x] composite 작업 `team_id=""` 케이스: `task-timers.json` `affected_teams` / `composite_teams` fallback

### Phase 7-3: done-watcher.py fallback only로 강등 (Lv.2, dev1팀 헤르메스)
- [x] `process_done_files()`: 30분 grace + `.merge-done` 마커 부재 조건일 때만 fallback idle (`[FALLBACK-IDLE]` 로그)
- [x] `extract_team_from_done_file()`: `team_id=""` 빈 문자열 case에 `team` / `composite_teams[0]` fallback 보강

### Phase 7-4: 4개 문서 일괄 정정 + 신호등 스펙 v2 (Lv.1, dev1팀 헤르메스)
- [x] `memory/specs/anu-system-spec-for-external-advisor.md` V2 → **V3** + 부록 B 17번 (.done.escalated 마커 미상)
- [x] `memory/specs/traffic-light-sync-analysis-2026-05-05.md` (auto_merge 마커 표현 정정 + 결함 3 원인 정정)
- [x] `memory/specs/anu-system-spec.md` §6.10 정정 + 1.1.0 → **1.1.1** bump
- [x] `memory/specs/anu-system-spec-changelog.md` V1.1.1 항목 추가
- [x] `memory/specs/traffic-light-spec.md` v1 → **v2** (단일 책임 + 다단계 마커 시점 정의)
- [x] `memory/plans/anu-guide-system/{plan,context-notes,checklist}.md` Phase 6 정정 + Phase 7 추가 (본 작업)

## 최종 검증
- [x] Audit Trail 로그 생성 확인 (실시간 동작 중)
- [ ] Phase 4 전체 통합 테스트
- [ ] Phase 5 전체 통합 테스트
- [ ] Phase 6 전체 통합 검증 (회장 추가 검증)
- [ ] Phase 7 시나리오 5.1~5.3 (task-2452.md §5)
- [ ] 제이회장님 최종 보고
