# v3.6 Shadow-Mode Live Activation Scope (Track F · Phase 2 실 활성화 spec)

- task_id: task-2669
- chair_authorization_id_verbatim: `CHAIR-AUTH-V3-6-SHADOW-MODE-LIVE-SIGNATURE-PACKET-20260525-JJONGS-LIVE-SIGNATURE-001`
- executor: dev5 마르둑
- base_commit: origin/main `2752182a` (PR #148 merged)
- 단일소스: 본 task md + task-2664 packet (read-only) + task-2665 shadow-mode packet (read-only) + Axis 3 RUNNING_PROMOTED marker (read-only)
- 범위: **shadow-mode live activation 시 활성화될 범위 enum (★ spec only · 본 packet 박제 후 별도 회장 verbatim chair signature 강제)**
- live_settings_json_change: 0
- pretooluse_hook_activation: 0
- commit_push_pr_merge: 0
- block_policy_expansion: 0
- axis_3_running_auto_declaration: 0
- harness_enforced_global_declaration: 0

## 1. 본 spec 목적

ANU v3.6 PreToolUse shadow-mode 실 활성화 시 "어디까지" 활성화되는지의 정확한 범위(scope) enum 을 정의한다. 회장 verbatim chair signature 발급 시 본 enum 대로 활성화되며, enum 밖 항목 활성화 = ANCHOR 위반.

★ 본 spec은 **plan only**. 실 hook 배포 / settings.json 수정 / 활성화 명령은 본 packet 박제 후 **별도 회장 verbatim chair signature 강제** 진입 후 진행.

★ Axis 3 RUNNING_PROMOTED marker (`memory/events/axis-3-canary-running-promoted-chair-signed-260525.json`)는 Axis 3 canary observer 상태 승격만 다룬다. **Axis 3 RUNNING_PROMOTED ≠ shadow-mode live activation 승인**. 본 packet은 별개 chair signature 강제.

## 2. Activation scope 분류

shadow-mode 실 활성화 항목을 **IN_SCOPE / OUT_OF_SCOPE / CHAIR_GATED** 3 분류한다.

### 2.1 IN_SCOPE — 회장 chair signature 발급 시 활성화

| scope_id | 항목 | 활성화 시 동작 |
| --- | --- | --- |
| SC-IN-1 | `~/.claude/settings.json` 의 `PreToolUse.shadow_mode` 플래그 `true` 설정 | hook script 등록만 (실 BLOCK 0) |
| SC-IN-2 | `hooks/v3_6_pretooluse_shadow.py` 파일 배포 (task-2665 활성화 plan S1) | shadow hook script 파일 시스템 등록 |
| SC-IN-3 | `hooks/fixtures/v3_6_pretooluse_shadow_*.json` 6종 fixture 배포 (S2) | smoke 시 입력 fixture 등록 |
| SC-IN-4 | `~/.claude/settings.json` 의 `PreToolUse.fallback_verdict` = `"ALLOW"` (★ fail-open 보장) | hook 평가 실패 시 무조건 ALLOW 반환 |
| SC-IN-5 | `~/.claude/settings.json` 의 `PreToolUse.timeout_ms` = `100` (★ ANU normal callback 영향 차단) | 100ms 이내 응답 강제, 초과 시 ALLOW fallback |
| SC-IN-6 | `~/.claude/settings.json` 의 `PreToolUse.fail_safe` = `"fail_open"` | crash/timeout/error 시 ALLOW |
| SC-IN-7 | shadow marker 박제 디렉터리 `memory/events/pretooluse_shadow_*.json` 활성화 | 매 매치마다 marker 박제 |
| SC-IN-8 | shadow latency marker 박제 활성화 (`memory/events/pretooluse_shadow_latency_*.json`) | latency sampling marker 박제 |
| SC-IN-9 | shadow activation marker 박제 (`memory/events/pretooluse_shadow_mode_activated_<unix_ts>.json`) | 활성화 시점 marker 박제 |
| SC-IN-10 | DR-1 ~ DR-17 (task-2664 deny rule) **평가 only · 항상 ALLOW 반환** | shadow_verdict = ALLOW, would_be_live_verdict 계산만 |
| SC-IN-11 | AC-1 ~ AC-10 (task-2664 allow contract) **평가 only · 항상 ALLOW 반환** | contract present/validation marker 박제만 |

★ IN_SCOPE 활성화 = chair signature 발급 즉시 활성화 허용 항목.

### 2.2 OUT_OF_SCOPE — chair signature 발급에도 활성화 금지 (★ ANCHOR 위반)

| scope_id | 항목 | 차단 사유 |
| --- | --- | --- |
| SC-OUT-1 | 실제 tool execution BLOCK | shadow-mode 정의 위반 (★ verdict 항상 ALLOW 강제) |
| SC-OUT-2 | restricted live (1-2 rule만 진짜 BLOCK) | Phase 3 진입, 별도 회장 verbatim signature 강제 |
| SC-OUT-3 | full live (DR-1 ~ DR-17 전체 BLOCK) | Phase 4 진입, spec 8B.14 위반, 회장 결정 강제 |
| SC-OUT-4 | BLOCK 정책 확대 | 본 packet ANCHOR-1 위반 |
| SC-OUT-5 | policy 승격 (RESTRICTED → PROMOTED) | 본 packet ANCHOR-1 위반 |
| SC-OUT-6 | HARNESS_ENFORCED 전체 선언 | 본 packet ANCHOR-1 / Axis 3 forbidden #2 |
| SC-OUT-7 | Axis 3 RUNNING_PROMOTED 자동 선언 | Axis 3 별도 marker (★ 이미 발급, 본 packet 무관) |
| SC-OUT-8 | Axis 1/2 runtime 변경 | scope 외 |
| SC-OUT-9 | dispatch.py 변경 | scope 외 |
| SC-OUT-10 | hooks/** PostToolUse / Stop / UserPromptSubmit 활성화 | shadow-mode 정의 = PreToolUse only |
| SC-OUT-11 | commit / push / PR / merge | 본 task md 금지 #7 |
| SC-OUT-12 | watcher_contracts 디렉터리 생성 | task-2664 packet 별도 task |
| SC-OUT-13 | chair_authorization_id 자체 발급 (ANU 본체 발급) | DR-12 위반 |
| SC-OUT-14 | normal callback envelope routing 차단 | spec 8B.6 위반 |
| SC-OUT-15 | 회장 세션 PreToolUse 적용 | 회장 세션 격리 정책 |

★ OUT_OF_SCOPE 항목 활성화 = 즉시 emergency bypass (★ [[v3_6_shadow_mode_live_activation_emergency_bypass_260525]] 참조) + 회장 즉시 보고.

### 2.3 CHAIR_GATED — 본 chair signature 별도 1:1 명시 강제

| scope_id | 항목 | 별도 chair signature 강제 |
| --- | --- | --- |
| SC-GATE-1 | hook 평가 대상 tool 확장 (Bash 외 Write/Edit/Read 등) | 본 packet은 tool 명시 0 (★ 기본 Bash + ANU 정의 tool only) |
| SC-GATE-2 | shadow marker 보존 기간 변경 (기본 24h 이상) | 별도 verbatim |
| SC-GATE-3 | timeout_ms 100ms 초과 변경 | 별도 verbatim |
| SC-GATE-4 | fail_safe = "fail_closed" 변경 | spec 8B.13 위반 강제 chair gate |
| SC-GATE-5 | fallback_verdict ≠ "ALLOW" 변경 | shadow-mode 정의 위반 강제 chair gate |
| SC-GATE-6 | hook script 코드 변경 (재배포) | 본 packet 박제된 sha256 변경 시 재 chair signature |

## 3. Scope enum (★ 회장 verbatim 1:1 박제용)

```yaml
shadow_mode_live_activation_scope_enum:
  IN_SCOPE_count: 11
  OUT_OF_SCOPE_count: 15
  CHAIR_GATED_count: 6

  IN_SCOPE:
    - SC-IN-1: "PreToolUse.shadow_mode=true 설정"
    - SC-IN-2: "hooks/v3_6_pretooluse_shadow.py 배포"
    - SC-IN-3: "hooks/fixtures/v3_6_pretooluse_shadow_*.json 배포 6종"
    - SC-IN-4: "PreToolUse.fallback_verdict=ALLOW (fail-open)"
    - SC-IN-5: "PreToolUse.timeout_ms=100"
    - SC-IN-6: "PreToolUse.fail_safe=fail_open"
    - SC-IN-7: "memory/events/pretooluse_shadow_*.json marker 박제"
    - SC-IN-8: "memory/events/pretooluse_shadow_latency_*.json marker 박제"
    - SC-IN-9: "memory/events/pretooluse_shadow_mode_activated_<ts>.json 박제"
    - SC-IN-10: "DR-1~DR-17 평가 only · 항상 ALLOW"
    - SC-IN-11: "AC-1~AC-10 평가 only · 항상 ALLOW"

  OUT_OF_SCOPE:
    - SC-OUT-1: "실 tool execution BLOCK"
    - SC-OUT-2: "restricted live (Phase 3)"
    - SC-OUT-3: "full live (Phase 4)"
    - SC-OUT-4: "BLOCK 정책 확대"
    - SC-OUT-5: "policy 승격"
    - SC-OUT-6: "HARNESS_ENFORCED 전체 선언"
    - SC-OUT-7: "Axis 3 RUNNING_PROMOTED 자동 선언"
    - SC-OUT-8: "Axis 1/2 runtime 변경"
    - SC-OUT-9: "dispatch.py 변경"
    - SC-OUT-10: "PostToolUse / Stop / UserPromptSubmit hook 활성화"
    - SC-OUT-11: "commit/push/PR/merge"
    - SC-OUT-12: "watcher_contracts 디렉터리 생성"
    - SC-OUT-13: "chair_authorization_id ANU 본체 자체 발급"
    - SC-OUT-14: "normal callback envelope routing 차단"
    - SC-OUT-15: "회장 세션 PreToolUse 적용"

  CHAIR_GATED:
    - SC-GATE-1: "hook 평가 대상 tool 확장"
    - SC-GATE-2: "shadow marker 보존 24h 이상 변경"
    - SC-GATE-3: "timeout_ms 100ms 초과"
    - SC-GATE-4: "fail_safe fail_closed 변경"
    - SC-GATE-5: "fallback_verdict ALLOW 외 변경"
    - SC-GATE-6: "hook script 코드 변경 (재배포)"
```

## 4. ANCHOR 일치 (★ task md frozen anchors verbatim 1:1)

| ANCHOR | 본 spec 일치 | 근거 |
| --- | --- | --- |
| 1. shadow-mode live activation signature packet/spec only · live settings.json 변경 0 · PreToolUse hook 활성화 0 | ✅ | section 1 / safety counts |
| 2. task-2664 / task-2665 / task-2662~2668 파일 충돌 0 · v3_6_shadow_mode_live_activation_* prefix 차별화 | ✅ | section 1 / 본 파일 prefix |
| 3. 7 영역 spec + 1 통합 packet | ✅ | section 2 (본 spec = scope 영역) |
| 4. live activation은 본 packet 박제 후 별도 회장 verbatim chair signature 강제 | ✅ | section 1 / 2.2 SC-OUT-* |
| 5. Axis 1/2/3 runtime · dispatch.py · live settings.json · hooks/* 변경 0 · commit/push/PR/merge 0 | ✅ | safety counts / SC-OUT-8/9/11 |
| 6. Axis 3 RUNNING 자동 선언 0 · HARNESS_ENFORCED 전체 선언 0 · BLOCK 정책 확대 0 · policy 승격 0 | ✅ | SC-OUT-4/5/6/7 |

## 5. Safety counts (verbatim 1:1)

```text
live_settings_json_change_count = 0
pretooluse_hook_activation_count = 0
hooks_change_count = 0
dispatch_py_change_count = 0
axis_1_2_runtime_change_count = 0
axis_3_running_auto_declaration_count = 0
harness_enforced_global_declaration_count = 0
block_policy_expansion_count = 0
policy_promotion_count = 0
commit_push_pr_merge_count = 0
task_2662_2663_2664_2665_2666_2667_2668_file_touch_count = 0
real_hook_deploy_count = 0
real_shadow_activation_count = 0
chair_authorization_self_issuance_count = 0
```

## 6. 관련 sibling spec

- [[v3_6_shadow_mode_live_activation_settings_diff_preview_260525]] — SC-IN-1/4/5/6 적용 시 settings.json diff preview
- [[v3_6_shadow_mode_live_activation_rollback_oneliner_260525]] — SC-IN-* 활성화 후 즉시 비활성화 oneliner
- [[v3_6_shadow_mode_live_activation_false_positive_threshold_260525]] — shadow marker 분석 후 자동 hold 조건
- [[v3_6_shadow_mode_live_activation_1h_24h_monitoring_criteria_260525]] — chair signature 직후 / 24h post-activation 측정
- [[v3_6_shadow_mode_live_activation_emergency_bypass_260525]] — SC-OUT-* 위반 시 즉시 bypass
- [[v3_6_shadow_mode_live_activation_forbidden_conditions_260525]] — chair signature 발급에도 활성화 금지 조건
- [[v3_6_shadow_mode_live_activation_signature_packet_260525]] — 통합 packet

끝
