---
type: plan
scope: task
project: dispatch-quality-gates
task_ids: [task-2145, task-2146, task-2147, task-2148, task-2149, task-2150, task-2151]
created: 2026-04-24
updated: 2026-04-24
status: active
level: 4
---

# 작업 계획서: Dispatch Quality Gates 구현

**작업 레벨**: Lv.4 (시스템 아키텍처 변경)
**프로젝트 계획서**: `memory/plans/system/dispatch-quality-gates/plan.md`
**미팅 기록**: `memory/meetings/2026-04-24-dispatch-quality-automation.md`

---

## 작업 목표

dispatch.py → 봇 작업 → finish-task.sh 파이프라인에 6개 자동 품질 게이트를 코드 레벨로 삽입하여, 아누가 잊어도 품질이 자동 강제되는 시스템 구축.

---

## 작업 분해 (7개 태스크, 3단계)

### P1: 병렬 위임 (5개 태스크, 동시 진행)

**task-2145** (7팀 이잠나): l1_smoketest_check.py 강화
- 파일: `/home/jay/workspace/teams/shared/verifiers/l1_smoketest_check.py`
- 변경량: +30줄
- 핵심: BLOCK_PATTERNS + EXEMPT_PATTERNS + 증거 필수

**task-2146** (1팀 헤르메스): impact_scanner.py 신규 생성
- 파일: `/home/jay/workspace/scripts/impact_scanner.py` (신규)
- 변경량: ~200줄
- 핵심: Python AST + TS regex + grep 역추적

**task-2147** (2팀 오딘): dispatch.py 확장
- 파일: `/home/jay/workspace/dispatch.py`
- 변경량: +80줄 (2개 함수)
- 핵심: 백틱 토큰 자동 grep → affected_files 주입 + goal_assertions 자동 생성

**task-2149** (4팀 비슈누): ci_preflight.sh 신규 생성
- 파일: `/home/jay/workspace/scripts/ci_preflight.sh` (신규)
- 변경량: ~80줄
- 핵심: 멀티 러너 감지 + 순차 실행 + 타임아웃

**task-2150** (5팀 엔키): gate-config.json 신규 생성
- 파일: `/home/jay/workspace/config/gate-config.json` (신규)
- 변경량: ~40줄
- 핵심: 게이트 설정 중앙 관리 + 로더 유틸리티

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

**task-2148** (3팀 다그다): finish-task.sh 게이트 통합
- 파일: `/home/jay/workspace/scripts/finish-task.sh`
- 변경량: +100줄 (4개 step + .done 수정)
- 의존성: task-2146(impact_scanner), task-2149(ci_preflight), task-2150(gate-config) 완료 필요
- 핵심: Step 2.6, 2.6.5, 2.11, 2.12 삽입 + .done gate_results

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

**task-2151** (composite 로키+마아트): 통합 테스트
- 8개 시나리오 검증
- 의존성: task-2145~2150 전체 완료 필요

---

## 파일 충돌 분석

| 파일 | 수정 팀 | 충돌 위험 |
|------|---------|-----------|
| l1_smoketest_check.py | 7팀만 | 없음 |
| impact_scanner.py | 1팀만 (신규) | 없음 |
| dispatch.py | 2팀만 | 없음 (기존 함수 수정 아닌 추가) |
| ci_preflight.sh | 4팀만 (신규) | 없음 |
| gate-config.json | 5팀만 (신규) | 없음 |
| finish-task.sh | 3팀만 | 없음 (P2에서 단독 수정) |

**결론**: P1 5팀 병렬 시 파일 충돌 0건. 안전.

---

## 검증 기준 (= 통합 테스트 8개 시나리오)

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 mode=warn → WARNING만 (차단 안 함)
8. 백틱 토큰 자동 추출 → affected_files 자동 주입

---

## Temporal Interrogation (구현 시간대별 결정사항)

### HOUR 1: 착수
- [RESOLVED] gate-config.json 스키마 확정 (미팅 합의)
- [RESOLVED] Python=AST, TypeScript=regex (미팅 합의)
- [OPEN] COMMON_FILTER 단어 목록 최종 확정 → 1팀 판단

### HOUR 2-3: 핵심 구현
- [RESOLVED] goal_assertions ALLOWED_COMMANDS = grep, curl, pytest, tsc, cat, jq
- [OPEN] impact_scanner의 diff_lines 추출: `git diff --unified=0` vs `git diff` → 1팀 판단
- [OPEN] ci_preflight --affected-only의 테스트 파일 매칭 패턴 → 4팀 판단

### HOUR 4-5: 통합
- [RESOLVED] finish-task.sh step 삽입 위치 (기존 2.5와 2.7 사이)
- [OPEN] .done gate_results JSON 스키마 상세 → 3팀 판단
- [RESOLVED] subshell 격리 실행 (C-FINAL-9)

### HOUR 6+: 검증
- [OPEN] 통합 테스트 fixture 데이터 준비 → composite 판단
- [RESOLVED] Phase 4-2 전환 기준: false positive < 10%
