# task-2664 — V3_6_PRETOOLUSE_LIVE_ENFORCEMENT_PACKET_PHASE_0_1 (Track C)

- Level: Lv.3 (★ Read-only spec + packet 작성 중심 · Phase 0/1 only · live enforcement 0 · production write 0 · commit/push/PR/merge 0)
- 담당: **dev4 비슈누 (ANU 추천)** — task-2657~2663 chain 모두 다른 봇 · 본 Track 신규 영역 적합
- 대안: dev3 다그다 또는 dev7 이참나 (★ 모두 본 chain 무관)
- base: origin/main 최신 (HEAD `2752182a` · PR #148 merged)
- 단일소스 spec: 본 task md + ANU v3 master spec section 8B (line 1397-1700) + task-2643 산출물 read-only
- chair_authorization_id: **`CHAIR-AUTH-V3-6-PRETOOLUSE-PACKET-20260525-JJONGS-PHASE-0-1-001`** (★ 회장 verbatim 발행 완료 2026-05-25)

## 배경

ANU v3 평가 결과 v3.6 Runtime Harness Enforcement = **30% PARTIAL** (★ ANU 종합 33.8% 중 v3.6 gap 핵심). PreToolUse hook 코드는 존재하나 live deny rule 미적용 (★ task-2657 marker `worktree_implementation_only=true`).

회장 verbatim 결정: v3.6 PreToolUse live 적용 병행 가능. 단 **full live enforcement 아닌 Phase 0/1 제한 범위**.

## Track 분리 (회장 verbatim 1:1)

- **Track A**: task-2662 v3.1 Codex Micro Refinement Loop — dev2 오딘 계속 진행 (schedule_id `E9A8FBD2`)
- **Track B**: task-2663 Axis 3 RUNNING gate supplement — dev6 페룬 (schedule_id `6FF9640A`)
- **Track C**: 본 task-2664 v3.6 PreToolUse live enforcement preparation — **별도 봇 위임 (★ ANU 추천 dev4 비슈누)**

## 회장 verbatim Track C 목표

위험한 tool call을 실행 전 차단하는 PreToolUse safety layer를 live 적용하기 전, **현재 canary 결과와 task-2657 guard를 기준으로 restricted live enforcement packet 준비**.

## 범위 (회장 verbatim)

**Phase 0/1 only** (★ Phase 2+ live enforcement application 금지).

## 허용 9 (회장 verbatim 1:1)

1. 기존 task-2643 PreToolUse runtime guard 산출물 **read-only 확인**
2. 현재 Axis 3 canary 결과와 연결성 확인
3. **deny rule 후보 정리**
4. **allow contract 후보 정리**
5. **fail-safe policy 정리**
6. **false-positive rollback plan 작성**
7. **restricted live 적용 packet 작성**
8. regression / smoke 설계
9. 필요 시 shadow-mode validation task 준비

## 금지 11 (회장 verbatim 1:1)

1. PreToolUse full live enforcement 즉시 적용
2. BLOCK 정책 확대
3. policy 승격
4. Axis 3 RUNNING 자동 선언
5. HARNESS_ENFORCED 전체 선언
6. live settings.json 변경
7. Axis 1/2 runtime 변경
8. dispatch.py 변경
9. commit/push/PR/merge
10. **task-2662와 파일 충돌**
11. **Axis 3 supplement (task-2663)와 파일 충돌**

## 병행 조건 4 (회장 verbatim 1:1)

1. Track C expected_files는 **task-2662와 겹치면 안 된다**
2. Track C는 **read-only packet/spec 중심**으로 시작
3. live settings.json 변경이 필요하면 **별도 chair signature 전까지 HOLD**
4. PreToolUse hook이 tool execution을 막는 변경은 **restricted canary 이후 별도 승인으로만 진행**

## 완료 상태 (회장 verbatim)

- 성공: **`V3_6_PRETOOLUSE_LIVE_ENFORCEMENT_PACKET_READY`**
- 실패 또는 충돌: **`V3_6_PRETOOLUSE_LIVE_ENFORCEMENT_HOLD_FOR_CHAIR`**

## 보고 필수 7 (회장 verbatim 1:1)

1. **병행 충돌 여부** (★ task-2662 / task-2663 파일 overlap 0 검증)
2. **expected_files overlap 여부** (★ Track A·B 파일 list 대조)
3. **deny rule 후보** (★ ANU v3 master spec section 8B.4 참조)
4. **allow contract 후보** (★ spec section 8B.5/8B.9 참조)
5. **rollback plan** (★ false-positive 시)
6. **canary 결과 재사용 여부** (★ task-2657 / task-2656 evidence 재사용 가능성)
7. **forbidden_action_count** (★ target 0)

## expected_files (~6 · Track C 전용 prefix)

- `memory/events/task-2664.done`
- `memory/events/task-2664.v3-6-pretooluse-live-enforcement-packet-260525.json` (★ 7 보고 필드)
- `memory/reports/task-2664.md`
- `memory/specs/v3_6_pretooluse_live_enforcement_packet_260525.md` (★ 신규 spec packet · Phase 0/1)
- `memory/specs/v3_6_pretooluse_deny_rule_candidates_260525.md` (★ 신규 deny rule 후보)
- `memory/specs/v3_6_pretooluse_allow_contract_candidates_260525.md` (★ 신규 allow contract 후보)
- `memory/specs/v3_6_pretooluse_rollback_plan_260525.md` (★ false-positive rollback)

## allowed_resources

```yaml
allowed_resources:
  paths:
    - "memory/specs/v3_6_pretooluse_*.md"
    - "memory/system/.callback_ledger.jsonl"
    - "memory/.callback_inbox/**"
    - "memory/tasks/task-2664.md"
    - "memory/reports/task-2664.md"
    - "memory/events/task-2664.done"
    - "memory/events/task-2664.v3-6-pretooluse-live-enforcement-packet-260525.json"
    - "INDEX.md"
  read_only_reference:
    - "/home/jay/.cokacdir/workspace/autoset/ANU_v3_master_development_direction_final_260517_v2_5_callback_control.md (★ section 8B · line 1397-1700)"
    - "/home/jay/.cokacdir/workspace/autoset/anu_batch_hold_adjudication_auto_remediation_v2_5_callback_control.md (★ Harness/PreToolUse candidates section 10.7)"
    - "memory/events/task-2657.axis-3-canary-scale-aware-guard-implemented-chair-verified-260525.json"
    - "memory/events/task-2656.* (★ traffic_count=3 + 3 corrections)"
    - "/home/jay/workspace/.worktrees/task-2657-dev6/utils/axis_3_canary_scale_aware_guard/** (★ guard 코드)"
    - "/home/jay/.claude/hooks/** (★ read-only · 변경 0 · 본 task md forbidden_paths 별도 명시)"
  forbidden_paths:
    - "/home/jay/.claude/settings.json"
    - "/home/jay/.claude/settings.local.json"
    - "/home/jay/.claude/hooks/** (★ 본 Track C 변경 금지)"
    - "/usr/local/bin/cokacdir"
    - ".github/**"
    - "hooks/**"
    - "dispatch.py"
    - "dispatch/**"
    - "scripts/finish-task.sh"
    - "utils/**"
    - "utils/axis_3_canary_scale_aware_guard/**"
    - "utils/anu_spawn_visibility_guard/**"
    - "utils/anu_codex_micro_refinement_loop.py (★ task-2662 Track A 파일 · 충돌 0)"
    - "utils/codex_cc_decision_loop.py (★ task-2662 Track A 파일 · 충돌 0)"
    - "schemas/anu_v3_1_*.json (★ task-2662 Track A 파일)"
    - "tests/anu_codex_micro_refinement_loop/** (★ task-2662 Track A 파일)"
    - "memory/system/.axis_3_canary_running_gate_evaluation_audit.jsonl (★ task-2663 Track B 파일)"
    - "memory/tasks/task-2641*"
    - "memory/tasks/task-2642*"
    - "memory/tasks/task-2643*"
    - "memory/tasks/task-2644*"
    - "memory/tasks/task-2645*"
    - "memory/tasks/task-2646*"
    - "memory/tasks/task-2647*"
    - "memory/tasks/task-2648*"
    - "memory/tasks/task-2649*"
    - "memory/tasks/task-2650*"
    - "memory/tasks/task-2651*"
    - "memory/tasks/task-2652*"
    - "memory/tasks/task-2653*"
    - "memory/tasks/task-2654*"
    - "memory/tasks/task-2655*"
    - "memory/tasks/task-2656*"
    - "memory/tasks/task-2657*"
    - "memory/tasks/task-2658*"
    - "memory/tasks/task-2659*"
    - "memory/tasks/task-2660*"
    - "memory/tasks/task-2661*"
    - "memory/tasks/task-2662*"
    - "memory/tasks/task-2663*"
    - "**/.env*"
    - "**/credentials*"
  commands:
    - "python3 -m py_compile"
    - "python3 -m json.tool"
    - "python3 -c"
    - "ls"
    - "cat"
    - "stat"
    - "git status"
    - "git log"
    - "sha256sum"
    - "wc"
    - "printf"
    - "grep"
    - "find"
    - "tail"
    - "head"
    - "cokacdir --cron"
    - "cokacdir --cron-history"
    - "cokacdir --currenttime"
    - "touch"
    - "mkdir"
  merge_policy: "read_only_packet_phase_0_1_no_runtime_change_no_pr"
  ttl_hours: 48
```

## frozen anchors

- ANCHOR-1: "Phase 0/1 only · read-only packet/spec 중심 · live enforcement 0 · settings.json/hooks/dispatch.py/Axis 1·2 변경 0"
- ANCHOR-2: "Track A (task-2662 v3.1) / Track B (task-2663 Axis 3 supplement) 파일 충돌 0 (★ forbidden_paths 명시)"
- ANCHOR-3: "PreToolUse hook이 tool execution을 막는 변경은 restricted canary 이후 별도 회장 verbatim 강제"
- ANCHOR-4: "live settings.json 변경 필요 시 별도 chair signature 전까지 HOLD"
- ANCHOR-5: "deny rule + allow contract + rollback plan + canary 결과 재사용 4건 packet 작성"
- ANCHOR-6: "Axis 3 RUNNING 자동 선언 0 · HARNESS_ENFORCED 전체 선언 0 · BLOCK 정책 확대 0"
- ANCHOR-7: "commit/push/PR/merge 0 · 본 task 산출물 worktree-only 또는 main repo memory/specs 한정"

## finalize 프로토콜

1. base = origin/main (HEAD `2752182a`)
2. 별도 worktree task-2664-dev4
3. dev4 비슈누 봇 작업 (read-only spec 작성 중심)
4. 4 spec packet 작성 (deny rule / allow contract / rollback plan / restricted live packet)
5. result marker (7 보고 필드)
6. ANU normal callback cron (helper · ★ ANU key `c119085addb0f8b7` · self-key 0 · UTF-8 ≤3900 bytes · envelope only · ★ PR #148 merge 후 absolute timestamp 30s 적용)
7. .done 발행

## 회장 보고 형식 (verbatim)

성공: **`V3_6_PRETOOLUSE_LIVE_ENFORCEMENT_PACKET_READY`**
실패 또는 충돌: **`V3_6_PRETOOLUSE_LIVE_ENFORCEMENT_HOLD_FOR_CHAIR`**

끝
