---
type: checklist
scope: project
project: dispatch-quality-gates
created: 2026-04-24
updated: 2026-04-24
status: active
parent: anu-guide-system (Phase 4)
---

# 체크리스트: Dispatch Quality Gates

---

## P1: 병렬 위임 (5팀 동시)

### task-2145: l1_smoketest 강화 → 7팀 (이잠나)
- [ ] BLOCK_PATTERNS 목록 추가 (5개 패턴)
- [ ] EXEMPT_PATTERNS 추가 (task 키워드 UI/컴포넌트/화면 없으면 면제)
- [ ] is_frontend 판별 로직
- [ ] 증거 필수 체크 (스크린샷 OR curl OR pytest)
- [ ] 단위 테스트 3건 (BLOCK 매칭, EXEMPT 매칭, 증거 누락)
- [ ] 기존 21개 verifier 회귀 없음

### task-2146: impact_scanner.py → 1팀 (헤르메스)
- [ ] extract_symbols_python() — AST 기반 함수/클래스명 추출
- [ ] extract_symbols_typescript() — regex 기반 export 심볼 추출
- [ ] grep_references() — 프로젝트 전체 심볼 검색 + COMMON_FILTER
- [ ] scan() — 메인 로직 + JSON 출력
- [ ] CLI 인터페이스 (--project-root, --task-id, --max-symbols, --timeout)
- [ ] 임계치: 0건=PASS, 1-5건=WARN, 6건+=BLOCK
- [ ] 타임아웃: 심볼당 3초, 전체 15초
- [ ] 단위 테스트 (tests/test_impact_scanner.py) 5건+

### task-2147: dispatch.py 확장 → 2팀 (오딘)
- [ ] _auto_inject_affected_files(task_desc, workspace_root) → str
  - [ ] 백틱 코드 토큰 추출 regex
  - [ ] COMMON_FILTER 20단어 제외
  - [ ] grep -rl 실행 + 타임아웃 10초
  - [ ] 20파일 초과 시 경고만 (주입 안 함)
  - [ ] 기존 affected_files 있으면 SKIP
- [ ] _auto_generate_goal_assertions(task_desc, workspace_root) → str
  - [ ] 검증 시나리오에서 실행 가능 command 추출
  - [ ] ALLOWED_COMMANDS 화이트리스트 (grep, curl, pytest, tsc, cat, jq)
  - [ ] goal_assertions 섹션 생성
- [ ] 호출 위치: dispatch() 내 task_file.write_text() 직전
- [ ] 단위 테스트 4건+

### task-2149: ci_preflight.sh → 4팀 (비슈누)
- [ ] tech stack 자동 감지 (pyproject.toml/tsconfig.json/vitest.config.*/jest.config.*)
- [ ] 순차 실행: pytest → tsc → vitest/jest
- [ ] --affected-only 모드 (git diff 기반 관련 테스트만)
- [ ] 러너당 120초 타임아웃, 전체 300초
- [ ] exit code 수집 + JSON 결과 반환
- [ ] 단위 테스트 (tests/test_ci_preflight.sh) 3건+

### task-2150: gate-config.json → 5팀 (엔키)
- [ ] JSON 스키마 설계 (게이트별: enabled, mode, timeout, threshold)
- [ ] 초기값 설정 (impact=warn, ci=warn, l1=fail, goal=fail, unresolved=warn)
- [ ] gate-config 로더 유틸리티 (finish-task.sh에서 호출 가능)
- [ ] 스키마 검증 스크립트 (python3 -c "json.load...")

## P2: 순차 위임 (P1 완료 후)

### task-2148: finish-task.sh 게이트 통합 → 3팀 (다그다)
- [ ] Step 2.6: Impact Scanner Gate 삽입
  - [ ] impact_scanner.py 호출
  - [ ] gate-config.json에서 mode 읽기
  - [ ] WARN/BLOCK 분기
- [ ] Step 2.6.5: CI Preflight Gate 삽입
  - [ ] ci_preflight.sh 호출
  - [ ] gate-config.json에서 mode 읽기
  - [ ] PASS/FAIL 분기
- [ ] Step 2.11: Unresolved Issue Gate 삽입
  - [ ] 보고서 파싱 (범위 내 미해결 카운트)
  - [ ] 3건 초과 시 BLOCK
- [ ] Step 2.12: Goal Assertions Gate 삽입
  - [ ] task 파일에서 goal_assertions 파싱
  - [ ] 각 command 실행 (ALLOWED_COMMANDS만)
  - [ ] 전부 통과 시 PASS
- [ ] Step 3: .done 파일에 gate_results JSON 추가
- [ ] 모든 게이트 subshell 격리 실행
- [ ] 기존 Step 0~2.10 회귀 없음

## P3: 통합 검증 (전체 완료 후)

### task-2151: 통합 테스트 → 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 자동 주입

## 문서 업데이트 (P2와 동시)

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

## Phase 4-2: WARN → FAIL 승격 (2주 후)

- [ ] 2주 운영 데이터 수집 (.done gate_results 분석)
- [ ] false positive 비율 산출
- [ ] < 10% 확인 → gate-config.json mode: warn → fail 전환
- [ ] 제이회장님 Phase 2 전환 보고
