---
task_id: task-1900
type: context
scope: task
created: 2026-04-16
updated: 2026-04-16
status: completed
---

# 맥락 노트: task-1900

**task**: task-1900

---

## 결정 근거

### 방안 B 선택: 테스트에서 더미 파일 생성

- **선택 이유**: 프로덕션 코드 무변경, task-1899 패턴과 일관, 변경 범위 최소(테스트 파일 1개)
- **기각 대안**:
  - A(환경변수 주입): 프로덕션 코드 오염, 환경 의존성 추가 → 기각
  - C(DI 패턴): _get_callers_context 시그니처 변경 → codex_gate_check 내부 호출 변경 필요 → blast radius 과대 → 기각
  - D(conftest fixture): 중복 2곳 수준으로 fixture 도입 정당화 불충분 → 기각

### JSON 구조 수정

- **기존**: 리스트 형태 `[{"changed_file":..., "blast_radius":...}]`
- **수정**: 딕셔너리 형태 `{"blast_radius": {"callers": [...]}}` 
- **이유**: `_get_callers_context` 함수가 `data.get("blast_radius", {})` 방식으로 딕셔너리 직접 접근

## 3 Step Why

1st Why: "왜 이 설계가 필요한가?" → tmp_path에 AST 스크립트가 없어 os.path.isfile 체크 실패 → subprocess.run 미호출 → callers context 검증이 무의미해지는 잠재 취약점 존재

2nd Why: "왜 B(테스트에서 더미 파일 생성)가 최선인가?" → 프로덕션 코드 무변경, task-1899에서 검증된 패턴, 회귀 위험 최소

3rd Why: "왜 B가 다른 대안보다 나은가?" → C(DI)는 시그니처 변경 → blast radius 과대. A(환경변수)는 프로덕션 오염. D(conftest)는 중복 2곳에 과도한 추상화.

## 참조 자료

- task-1899 수정 이력: `TestGetCallersContext::test_returns_context_on_success` 동일 패턴 적용
- 대상 함수: `scripts/codex_gate_check.py:112` `_get_callers_context`

## 주의사항

- `_get_callers_context`의 AST 스크립트 경로는 `os.path.join(workspace_root, "scripts", "ast_dependency_map.py")`로 하드코딩됨
- 향후 경로가 변경되면 테스트의 더미 파일 생성 경로도 함께 변경 필요
