---
task_id: task-2148
type: context
scope: task
created: 2026-04-24
updated: 2026-04-24
status: in-progress
---

# 맥락 노트: task-2148

**task**: task-2148

---

## 결정 근거

### 3 Step Why 자문

1st Why: "왜 이 설계가 필요한가?"
→ finish-task.sh의 test_runner가 --check-files 기반 부분 테스트만 실행하여, 한 스택(pytest) 통과해도 다른 스택(tsc/vitest) 실패를 사전 감지 못함. task-2143/2144 연쇄 이슈 발생.

2nd Why: "왜 별도 스크립트가 최선인가?"
→ finish-task.sh에 직접 로직을 넣으면 복잡도 증가 + 독립 실행 불가. 별도 스크립트로 분리하면 CI 파이프라인/개별 호출 모두 가능하고, 유지보수 용이.

3rd Why: "왜 다른 대안(Makefile, CI 서비스)보다 나은가?"
→ 현재 인프라가 bash 스크립트 기반. finish-task.sh가 호출할 수 있는 형태 필수. 외부 CI 서비스 의존 없이 로컬 즉시 실행이 핵심 요구사항.

### 설계 결정
- 타임아웃 120초/러너: 미팅 합의 (전체 300초 내에 완료되어야 함)
- 타임아웃 = WARN (FAIL 아님): 느린 빌드가 작업 완료를 차단하지 않도록
- 감지 순서: pyproject.toml/setup.py/requirements.txt → tsconfig.json → vitest.config.* → jest.config.*
- 러너 없으면 overall=PASS: 테스트 대상 없는 프로젝트는 차단하지 않음

## 참조 자료

- 프로젝트 계획서: `/home/jay/workspace/memory/plans/system/dispatch-quality-gates/plan.md`
- 미팅 기록: `/home/jay/workspace/memory/meetings/2026-04-24-dispatch-quality-automation.md`
- 기존 finish-task.sh: `/home/jay/workspace/scripts/finish-task.sh`

## 주의사항

- 이 스크립트는 finish-task.sh Step 2.6.5에서 호출될 예정 (task-2148, 3팀 담당)
- gate-config.json의 mode(warn/fail) 설정과 연동 예정 (task-2150, 5팀 담당)
- 초기 도입은 WARN 모드: 데이터 수집 후 2주 뒤 FAIL 승격
