---
task_id: task-2149
type: context
scope: task
created: 2026-04-24
updated: 2026-04-24
status: completed
---

# 맥락 노트: task-2149

**task**: task-2149

---

## 결정 근거

### JSON 형식 채택 (기존 패턴 일관성)
- config/ 디렉토리의 기존 파일(paths.json, constants.json 등)이 모두 JSON
- config/loader.py(ConfigManager)가 JSON 로드 패턴을 이미 사용
- YAML 대안 기각: 추가 의존성(pyyaml) 불필요, JSON으로 충분
- 환경변수 대안 기각: 중첩 구조 표현 어려움, 게이트별 다중 속성 관리 부적합

### 기본값 반환 전략 (존재하지 않는 게이트)
- KeyError 대신 기본값(enabled=False) 반환 → 새 게이트 추가 시 하위 호환성 유지
- 미팅 합의: "게이트가 config에 없으면 비활성화 취급"

### 3 Step Why
- 1st Why: "왜 이 설계가 필요한가?" → 게이트 설정이 코드에 하드코딩되면 운영 중 ON/OFF, 임계치 조정이 배포 없이 불가능
- 2nd Why: "왜 JSON 중앙 파일이 최선인가?" → Python/Bash 양쪽 파싱 가능, 기존 config 패턴과 일관성, 추가 의존성 없음
- 3rd Why: "왜 YAML/env var/DB보다 나은가?" → YAML은 pyyaml 의존성 추가 필요, env var는 중첩 구조 부적합, DB는 과잉 설계

## 참조 자료

- 미팅 기록: `/home/jay/workspace/memory/meetings/2026-04-24-dispatch-quality-automation.md` (C-FINAL-6)
- 기존 config 로더: `/home/jay/workspace/config/loader.py`
- 프로젝트 계획서: `/home/jay/workspace/memory/plans/system/dispatch-quality-gates/plan.md`

## 주의사항

- gate_config_loader.py는 config/loader.py(ConfigManager)와 별도 모듈. ConfigManager에 통합하지 않음 (단일 책임 원칙)
- JSON 파싱 에러 시 명확한 에러 메시지 반환 필수
- Bash에서 python3 -c 방식으로 호출 가능해야 함
