---
task_id: task-2460
type: context
scope: task
created: 2026-05-05
updated: 2026-05-05
status: completed
---

# 맥락 노트: task-2460

**task**: task-2460

---

## 결정 근거

### 결정 1: 라다/모코시 미투입
- **이유**: 본 task 는 시스템 사고 (timer/shell/CI 워크플로우) 분석으로 프론트엔드/UX 영역 부적합.
- **근거**: DIRECT-WORKFLOW.md "페르소나 고정 규칙 (Anti-Drift)" — "역할 밖 의견이 나오면 역할로 돌아가세요". 4팀원 전원 강제 동원 시 페르소나 위반 + 결과 품질 저하 위험.
- **대안 기각 사유**: 모코시에게 "사고 사용자 영향 분석" 으로 우회 위임 시도 → UX 분석은 회장이 명시한 5개 조사 항목 (1.1~1.5) 에 포함되지 않으므로 범위 외.

### 결정 2: 1.5 공통 패턴 검증을 팀장이 직접 수행
- **이유**: 팀장 Opus 가 두 팀원 결과를 통합하는 단계. 추가 Sonnet 호출보다 직접 분석이 토큰 효율 + 검증 정밀도 우수.
- **근거**: DIRECT-WORKFLOW.md "팀장은 직접 코딩하지 않는다" → 본 task 는 코딩 0건이므로 팀장이 분석/통합 수행 OK.

### 결정 3: 보고서 산출물 2단 구조
- **이유**: `memory/specs/incident-...md` (사고 자체) + `memory/reports/task-2460.md` (task 보고서) 분리.
- **근거**: 회장 명시 산출물 §2.1, §2.2. 사고 보고서는 후속 task 에서 직접 참조 (R1~R6 입력으로 사용).

---

## 3 Step Why 자문

**1st Why** — 왜 이 사고 조사 설계가 필요한가?
**A**: 동일한 silent corruption 패턴 (Truth ≠ Record) 이 3사고 모두에 반복됐을 가능성을 회장이 명시했고, 단일 결함 카테고리라면 fix-forward 가 1회 수정으로 다중 사고 차단 가능하기 때문.

**2nd Why** — 왜 코드 읽기 + grep 기반 분석이 최선의 접근인가?
**B**: 본 사건의 핵심은 "Python 내부 의사결정과 shell/마커/외부 API 의 의미론 단절". 이 단절은 동적 실행 추적 (예: tracing) 보다 정적 코드 분석 (특정 함수의 status 처리 분기 + shell 검증 로직) 으로 더 정확히 파악 가능. 또한 read-only 조사 제약상 동적 분석 자체가 금지.

**3rd Why** — 왜 B (정적 코드 분석) 가 다른 대안보다 나은가?
**C**: 대안 1 (production timers.json 변동 추적) — 이미 사고 후 시점이라 history 가 휘발됨. 대안 2 (단위 테스트 추가) — 코드 수정 금지로 불가. 대안 3 (정적 grep + 코드 라인 인용) — 코드 0줄 수정 + evidence 정확도 + 후속 task 입력 형태로 직접 사용 가능. → C 가 read-only 제약 + 산출 형태 모두 만족.

**일관성 검증**: A (3사고 공통 패턴 검증 필요) → B (정적 분석으로 단절 지점 추적) → C (read-only 제약 + 후속 입력 형태). 논리 연결 일관 — 설계 채택.

---

## 참조 자료

- 사고 보고서 메인: `memory/specs/incident-2026-05-05-timer-merge-gemini.md`
- 팀원 분석 1: `memory/specs/incident-2460-svarog-timer.md`
- 팀원 분석 2: `memory/specs/incident-2460-veles-merge-gemini.md`
- task 정의: `memory/tasks/task-2460.md`
- task-2440 enforcement 보고서: `memory/reports/task-2440-enforce/01b-rulesets.txt`, `05-physical-3-admin-bypass.txt`
- 핵심 코드 라인:
  - `memory/task-timer.py:221-266` (end_task stale 거부 안 함)
  - `memory/task-timer.py:394-408` (idle 전환 차단 → active 회귀)
  - `dispatch/__init__.py:1972, 3275-3285, 3815-3963` (timer start, _cleanup_task, cancel_task)
  - `scripts/finish-task.sh:447-450, 454` (.merge-done 무조건 + MERGE_SHA 불일치)
  - `scripts/worktree_manager.py:992-1022, 919` (status 5종, gemini_found 매칭)
  - `scripts/gemini_review_gate.py:144-146, 271-280, 308` (neutral 통과)

---

## 주의사항

- **read-only 조사 절대 준수**: 어떤 코드도 수정 금지. 한 줄 변경도 즉시 FAIL.
- **forbidden_paths 의 파일은 읽기만**: dispatch/, scripts/, memory/task-timers.json, .github/, memory/events/task-242*. 쓰기 금지.
- **다른 task 의 evidence/events 수정 금지**.
- **Sanitize 게이트 미적용**: 본 task 는 외부 AI(Codex/Gemini) 호출 없음. 내부 서브에이전트만 사용.
- **U1~U4 미해결 항목 별도 섹션**: 추가 조사 권장.
