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

# 맥락 노트: task-2703 — V3.6 Runtime Harness MVP

**task**: task-2703

---

## 결정 근거

### 1) 구현/검증 주체 분리 (회장 verbatim 조건 #3)
- 같은 주체가 구현+검증 동시 수행 금지.
- 헤르메스(Opus) 설계·조정, Vulcan(Sonnet) 구현, Maat(QC 횡단) 검증.
- 대안 (헤르메스 직접 구현) 기각: Opus 토큰 낭비 + 페르소나 고정 위반.

### 2) PreToolUse hook 우선 (회장 verbatim 구현 원칙 #2)
- PostToolUse 는 후처리 → 차단 무효.
- 기존 canary hook 보존, 새 entry 추가.
- 단일 마스터 통합 기각: canary 결합도 + MVP 범위 초과.

### 3) ALLOW/DENY/HOLD_FOR_CHAIR 3 분기 (회장 verbatim 구현 원칙 #4)
- HOLD_FOR_CHAIR 는 mtime 단정·doctrine-only 처럼 회장 승인 게이트 필요한 패턴.
- exit 0 / exit 2 Claude Code 프로토콜 준수.

### 4) JSONL fail-safe append-only (회장 verbatim 구현 원칙 #5)
- 5 필드: 사유·matched_rule·command/tool·task_id·timestamp.
- ALLOW 는 디스크 누적 방지 위해 opt-in.
- 예외 시도 raise 안 함.

### 5) Emergency bypass + dry-run
- `ANU_DISABLE_V36_HARNESS=1` 비상 우회.
- `ANU_V36_HARNESS_DRY_RUN=1` 차단 결정 ALLOW 변환 + "would-have-denied" 기록.
- DoD evidence 수집 동안 DRY_RUN 사용 금지.

## 참조 자료

- task: `memory/tasks/task-2703.md` (회장 verbatim 박제)
- 기존 canary: `/home/jay/.claude/hooks/pre_tool_use_runtime_guard_canary.py`
- callback runtime 강제: dispatch.normal_fallback_callback_helper (task-2626)
- SCQA 템플릿: `memory/specs/scqa-report-template.md`
- workflow: `prompts/DIRECT-WORKFLOW.md`

## 주의사항

- dispatch.py 변경 금지 — hook 로드 경로만 결선
- PR#158/159/160 · task-2700/2700+1 branch 수정 금지
- real GitHub write/merge/branch push/PR 생성 0 — 위반 시 즉시 FAIL
- 메타 고도화 확장 금지 (Goal-to-Done / PHASE_AUTO / Core·Work)
- MVP 범위 초과 금지
- 수동 .done 금지 — finish-task.sh 만이 완료 경로
- callback cron ANU_KEY 강제 (self-key SELF_COLLECTOR_FORBIDDEN)
- ANU 자가검증 closeout 금지 — Maat 독립 검증 필수
