# task-2703 — V3.6_RUNTIME_HARNESS_ENFORCEMENT_LAYER_MVP (★ 회장 verbatim 2026-05-28 · 안전벨트 ≠ 메타 고도화 · 사업 복귀 전 최소 차단층)

- Level: **Lv.3 infrastructure** (★ enforcement layer · 향후 모든 ANU 본체 행동 영향)
- type: **coding** (★ md/report 중심 금지 · py/sh/json/schema/test 중심)
- 분류: **사업 복귀 전 안전벨트 장착** (★ 메타 고도화 아님 · 회장 verbatim)
- 담당: **dev1-team 헤르메스** (★ 회장 verbatim 지정 · bot key c38fb9955616e24d · 선정 이유 verbatim: "특정 사건 복구가 아니라 ANU 본체 및 봇의 위험 행동을 실행 전 차단하는 runtime harness MVP. task-2701/2702 맥락 보유보다 hook/runtime/chain executor 성격이 더 중요")
- chair_authorization_id: **`CHAIR-AUTH-TASK-2703-V36-HARNESS-MVP-260528`** (★ 회장 verbatim 발급 확정)
- 완료 목표: **`V36_HARNESS_MVP_RUNTIME_GATE_ACTIVE_AND_VERIFIED`**

## ★ 분류 / 범위 (회장 verbatim)

> "하네스는 추가 메타 고도화가 아니라, ANU 본체가 사업 복귀 중에도 같은 실수를 반복하지 못하게 막는 최소 안전장치다. Goal-to-Done, PHASE_AUTO, Core/Work 이원화, merge executor production activation 은 보류한다. 이번 작업 범위는 runtime 사전 차단층만이다."

- META_INFRA_PHASE1_CLOSEOUT 유지 + v3.6 만 예외 인가
- v3.0 Feature Acceptance / Goal-to-Done / PHASE_AUTO / ANU-Core·Work 이원화 / merge-ready·real merge activation 은 본 task 범위 밖

## ★ 목표 (회장 verbatim)

ANU 본체 또는 봇이 위험 행동을 실행하기 **전에** 차단하는 harness 를 구현한다.

## ★ 필수 차단 대상 6 (회장 verbatim · 1~6 박제)

1. session-bound direct polling 시도
2. ANU 본체가 직접 CI/Gemini 장시간 대기·감시하는 행동
3. 추측/mtime 단서를 fact 로 단정 보고하는 패턴
4. callback/collector/authorized watcher 없이 상태를 자체 확정하는 패턴
5. 금지된 tool-call 또는 금지된 shell command 패턴
6. 문서/메모리 박제만으로 재발 방지 완료라고 판정하는 패턴

## ★ 구현 원칙 (회장 verbatim · 8 박제)

1. md/report 중심 금지. 실행 가능한 py/sh/json/schema/test 중심으로 구현
2. PreToolUse hook 또는 동등한 실행 전 차단 계층을 우선 구현
3. `settings.json` / `.claude/hooks` 경로가 **실제 production 에서 로드되는지 검증**
4. 차단 결과는 **ALLOW / DENY / HOLD_FOR_CHAIR** 중 하나로 구조화
5. DENY/HOLD 발생 시 **사유 · matched_rule · command/tool · task_id · timestamp** 를 JSONL 로 기록
6. 회귀 테스트는 fixture/mock 기반으로 작성
7. **real GitHub write, merge, branch push, PR 생성 금지**
8. 이번 작업은 **harness minimum viable enforcement 까지만**

## ★ Definition of Done (회장 verbatim · 10 박제)

1. **실제 로드되는 hook/config 경로 확인** (★ 단순 파일 생성 아님 · production load evidence)
2. 위험 command/tool-call 샘플 차단 PASS
3. 정상 command 샘플 허용 PASS
4. session-bound direct polling 차단 PASS (차단 대상 #1)
5. 추측 fact 단정 보고 패턴 HOLD PASS (차단 대상 #3)
6. JSONL evidence 기록 PASS (구현 원칙 #5)
7. regression PASS
8. forbidden write 0 (구현 원칙 #7)
9. closeout marker 작성
10. 다음 단계 제안은 **보고만** 하고 자동 dispatch 금지

## ★ 절대 금지 (★ 본 task 한정 · 회장 verbatim 추가 조건 박제)

- **ANU 본체 직접 구현 금지** (★ 회장 verbatim 조건 #1)
- **ANU 본체 단독 closeout 판정 금지** (★ 회장 verbatim 조건 #2)
- **구현 executor 와 검증 주체 분리 필수** (★ 회장 verbatim 조건 #3 · 같은 주체가 구현+검증 동시 수행 금지)
- real GitHub write / merge / branch push / PR 생성 (회장 verbatim 구현 원칙 #7 · 조건 #6)
- 메타 고도화 확장 (Goal-to-Done, PHASE_AUTO, Core/Work, merge executor production activation 등 본 task 범위 외 · 조건 #4)
- v3.6 Runtime Harness Enforcement Layer MVP 범위 초과 (조건 #5)
- md/report 중심 산출물만 만들고 코드 미작성 (조건 #7 · py/sh/json/schema/test/hook config 중심)
- 차단 대상 6 중 어느 하나라도 fixture 없이 doctrine 박제만으로 cover 했다고 판정 (구현 원칙 #1 + DoD #2~6 · 조건 #9)
- production hook/config 로드 evidence 없이 "구현 완료" 선언 (조건 #8)
- **ANU 자가검증만으로 closeout PASS 처리** (★ 회장 verbatim 조건 #10 · closeout marker/evidence 기반 + 검증 주체 분리)
- task-timers status 위조 / manual .done 위조 / G4 marker 삭제
- ANU 본체가 본 harness 의 차단 대상 6 중 #4 (callback/collector/authorized watcher 없이 자체 확정) 패턴으로 본 task 의 closeout 을 자가 판정 → ANU 가 만든 가드를 ANU 가 자기 검증으로 통과시키는 위반

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "/home/jay/workspace (★ harness 모듈 신규 + settings.json/.claude/hooks 결선)"
    - "scripts/harness/ 또는 anu_v3/harness/ (신규 경로 권장 — README/단일소스)"
    - ".claude/hooks/ (PreToolUse hook 신규)"
    - "settings.json (★ 미존재 시 생성 — hook 로드 결선)"
    - "tests/harness/ 또는 tests/regression/test_v36_harness_*.py (fixture/mock 회귀)"
    - "memory/events/task-2703.* · memory/reports/task-2703.md (보고)"
  forbidden_paths:
    - "Goal-to-Done / PHASE_AUTO / Core·Work / merge executor activation 관련 파일"
    - "PR #158 / PR #159 / PR #160 / task-2700 / task-2700+1 branch"
    - "dispatch.py (★ 변경 금지 · hook 로드 경로만 결선)"
    - "real GitHub write 를 유발하는 코드 (gh api POST/PATCH/PUT, git push, git branch push, real merge)"
  commands:
    - "구현: 신규 py/sh/json/schema/test · settings.json 결선 · hook 등록"
    - "검증: pytest fixture/mock · production load evidence (실제 hook 로드 trace)"
    - "real GitHub write 0 · merge 0 · branch push 0 · PR 생성 0"
  merge_policy: "harness_mvp_local_verification_no_remote_writes"
  ttl_hours: 12
```

## ★ Acceptance Evidence (DoD 1~9 증거 필수)

- DoD 1 production load: `.claude/hooks` 또는 settings.json 경로에서 실제 PreToolUse 차단이 발화한 trace (단순 파일 존재 ≠ evidence · matched_rule 발화 log 필요)
- DoD 2~5 차단 PASS: 각 차단 대상 fixture/mock 으로 ALLOW/DENY/HOLD 분기 확인 (4 결과 각각 ≥1 sample)
- DoD 6 JSONL: 사유·matched_rule·command/tool·task_id·timestamp 5필드 모두 기록된 schema validation PASS
- DoD 7 regression: 본 task 신규 + 기존 affected 테스트 PASS · 새 fail 0
- DoD 8 forbidden write 0: git push history 0 · gh pr/issue create 0 · git diff 가 본 task scope 외 0
- DoD 9 closeout marker: `memory/events/task-2703.harness-mvp-active.json` + finish-task.sh 정상 실행

## ★ 보고 필드

1. 차단 대상 6 각각의 구현 위치 + matched_rule 식별자
2. PreToolUse hook 로드 결선 evidence (production trace)
3. JSONL schema + 첫 차단 sample 1건
4. ALLOW/DENY/HOLD 분기 fixture coverage
5. regression PASS 수 · 새 fail 0
6. forbidden write 0 confirmation
7. 다음 단계 제안 (★ 보고만 · 자동 dispatch 금지)
8. forbidden_action_count

## 종결

성공: **`V36_HARNESS_MVP_RUNTIME_GATE_ACTIVE_AND_VERIFIED`**

→ ANU 본체 또는 봇이 차단 대상 6 패턴을 시도하면 PreToolUse 단계에서 DENY/HOLD. 사업 복귀 중 같은 실수 재발 방지 안전벨트 장착 완료.

★ 회장 verbatim 2026-05-28 안전벨트 분류. 메타 전면 재개 아님. 차단 대상 6 · 구현 원칙 8 · DoD 10 verbatim 엄수. real GitHub write 0 · md/report 중심 금지 · executor 가드 자가 검증 회피.

끝