# v3.6 Shadow-Mode Live Preflight Packet (★ 통합 · Track I)

- task_id: task-2675
- chair_authorization_id_verbatim: `CHAIR-AUTH-V3-6-SHADOW-MODE-LIVE-PREFLIGHT-PACKET-20260526-JJONGS-PREFLIGHT-001`
- executor: dev3 다그다
- packet 발급일: 2026-05-26 (KST)
- 단일소스: 본 task md (sha256: 5c7976cff74e43093d9ea2747831eb034c85d5bd5af108b1b54c8963e9ec9ca5) + task-2669 8 specs (read-only)
- 범위: **v3.6 shadow-mode live activation 진입 전 preflight checklist 통합 packet (★ live 적용 0 · 별도 chair signature 강제)**
- live_settings_json_change: 0 / PreToolUse_hook_activation: 0 / BLOCK_확대: 0 / policy_승격: 0
- commit_push_pr_merge: 0 / utils_hooks_dispatch_변경: 0 / task-2669_spec_변경: 0

## 1. 본 packet 목적

task-2669 V3_6_SHADOW_MODE_LIVE_ACTIVATION_SIGNATURE_PACKET_READY 확정 후, **live activation 진입 전 필수 preflight checklist** 5개 영역의 verify plan + abort 조건 enum 을 통합 박제. 본 packet 박제만으로는 실 활성화 0. 실 활성화는 회장 verbatim 별도 chair signature + 별도 dev bot dispatch 강제.

★ 본 packet = **preflight 통합 anchor only**. 5 sub-spec 의 wrapper.

## 2. 5 sub-spec 인덱스

| spec_id | 파일 | 검증 대상 |
| --- | --- | --- |
| PFP-1 | [[v3_6_shadow_mode_live_preflight_settings_diff_verify_260526]] | task-2669 settings_diff_preview spec dry-run 검증 plan |
| PFP-2 | [[v3_6_shadow_mode_live_preflight_emergency_bypass_verify_260526]] | task-2669 emergency_bypass spec (EB-1~5, EB-T1~T7, EB-M1~M3) 동작 검증 |
| PFP-3 | [[v3_6_shadow_mode_live_preflight_false_positive_verify_260526]] | task-2669 false_positive_threshold spec (FT-CR/HI/ME/LO) 임계 검증 |
| PFP-4 | [[v3_6_shadow_mode_live_preflight_1h_24h_monitoring_verify_260526]] | task-2669 1h_24h_monitoring_criteria spec (H1-G*, H24-G*) gate 검증 |
| PFP-5 | [[v3_6_shadow_mode_live_preflight_abort_conditions_260526]] | activation abort 조건 enum 9종 (AC-1~AC-9 · ★ minimum 5 enum 회장 anchor 초과) |

## 3. Preflight 진행 흐름 (★ live activation 진입 전 dev bot 수행)

```text
[Phase 0 — Chair Signature 발급 (★ 별도 task)]
   ↓
[Phase 1 — Preflight Pre-Apply Check]
   PFP-1 SD-1.1~1.8 (settings.json 사전 inspection)
     → AC-1 / AC-2 / AC-3 / AC-4 / AC-6 검사
   PFP-1 SD-2 (Case A / Case B 결정)
   PFP-1 SD-3.1~3.10 (dry-run diff 검증)
     → AC-5 (DA anchor 위반) 검사
   PFP-2 EBV-1.1 (hook script 가 env bypass 지원 여부 grep) — pre-apply 확인
   ↓ ALL PASS
[Phase 2 — 실 Apply (★ 별도 chair signature 후 dev bot 수행 · 본 packet 범위 외)]
   settings.json 변경 적용
   PV-1 ~ PV-8 즉시 검증
     → AC-7 검사 (실패 시 즉시 rollback L1)
   ↓ ALL PASS
[Phase 3 — 1h 모니터링]
   PFP-4 MMV-1.1~1.4 (5/15/30/60min sampling cadence)
   PFP-3 FPV-1.* (synthetic injection 으로 threshold chain pre-verify)
     → AC-8 (H1-G*) / AC-9 (FT-CR-*) 검사
   ↓ H1-G1~G5 ALL PASS
[Phase 4 — 24h 모니터링 (★ 1h 통과 후 별도 chair signature)]
   PFP-4 MMV-3.1~3.4 (6/12/18/24h sampling cadence)
   PFP-3 FPV-1.* (24h window threshold chain)
     → AC-8 (H24-G*) / AC-9 (FT-CR-*) 검사
   ↓ H24-G1~G5 ALL PASS
[Phase 5 — Phase 3 chair signature 후보 (★ 별도 task · 본 packet 범위 외)]
```

★ 각 Phase 사이 chair signature 별도 강제 (★ task-2669 anchor 일치). 본 packet 박제만으로 Phase 2 진입 0.

## 4. Preflight 통합 checklist

### 4.1 Pre-Apply checklist (★ 활성화 진입 전)

- [ ] SD-1.1 settings.json 존재 (★ 실패 시 AC-1)
- [ ] SD-1.2 JSON parsing OK (★ 실패 시 AC-2)
- [ ] SD-1.3 backup 생성
- [ ] SD-1.4 shadow_mode 키 부재 또는 false (★ 실패 시 AC-3)
- [ ] SD-1.5 hook script 존재 + sha256 일치 (★ 실패 시 AC-6)
- [ ] SD-1.6 fixtures 6종 존재
- [ ] SD-1.7 chair_authorization_id verbatim 일치 (★ 실패 시 AC-4)
- [ ] SD-1.8 DR/AC spec sha256 일치
- [ ] SD-2 Case A / Case B 결정
- [ ] SD-3.1~3.10 dry-run merged JSON 안전 anchor 검증 (★ 실패 시 AC-5)
- [ ] EBV-1.1 hook script 가 env bypass 지원 grep PASS

### 4.2 Post-Apply checklist (★ 활성화 직후 · 본 packet 범위 외 · 별도 dev bot)

- [ ] PV-1 JSON valid
- [ ] PV-2 shadow_mode == true
- [ ] PV-3 fallback_verdict == "ALLOW"
- [ ] PV-4 timeout_ms == 100
- [ ] PV-5 fail_safe == "fail_open"
- [ ] PV-6 activation marker 박제
- [ ] PV-7 callback 차단 0 (5min dry-test)
- [ ] PV-8 latency p99 ≤ 500ms (5min sampling)

★ PV-* 중 1건 fail = AC-7 trigger → 즉시 rollback Level 1 강제

### 4.3 1h Monitoring checklist (★ Phase 3 · 별도 dev bot)

- [ ] M1-1~M1-10 5/15/30/60min sampling 박제 cadence 정확
- [ ] H1-G1~H1-G5 verdict 박제

★ H1-G* 중 1건 fail = AC-8 trigger → rollback L1 또는 chair alert

### 4.4 24h Monitoring checklist (★ Phase 4 · 별도 dev bot · 별도 chair signature)

- [ ] M24-1~M24-10 6/12/18/24h sampling 박제 cadence 정확
- [ ] H24-G1~H24-G5 verdict 박제

★ H24-G* 중 1건 fail = AC-8 trigger → rollback L1 또는 chair alert

### 4.5 FP Threshold checklist (★ 모니터링 병행)

- [ ] FT-CR-1~5 trigger 발동 시 즉시 action 검증
- [ ] FT-HI-1~5 trigger 발동 시 hold + chair report 검증
- [ ] FT-ME-1~4 trigger 발동 시 알림 검증
- [ ] FT-LO-1~3 audit report 포함 검증

★ FT-CR-* 중 1건 = AC-9 trigger → rollback / bypass 강제

## 5. Abort 조건 enum 9종 verbatim (★ AC-1 ~ AC-9 · 회장 "minimum 5 enum" anchor 초과)

| AC_ID | verbatim_name | trigger 요약 | rollback_required |
| --- | --- | --- | --- |
| AC-1 | settings_json_missing_or_inaccessible | settings.json 부재/접근 불가 | false |
| AC-2 | settings_json_invalid_parse_error | JSON corrupt | false |
| AC-3 | shadow_mode_already_active_duplicate_activation_blocked | shadow_mode 이미 true | false |
| AC-4 | chair_authorization_id_mismatch_signature_break | chair_id verbatim 불일치 (★ 사기/오용 의심) | false |
| AC-5 | safety_anchor_DA_violation_detected | DA-1~DA-6 위반 dry-run | false |
| AC-6 | hook_script_file_missing_or_sha256_mismatch | hook script 부재/sha256 불일치 | false |
| AC-7 | post_apply_validation_PV_failure_immediate_rollback | PV-1~PV-8 fail (★ 적용 후) | true |
| AC-8 | monitoring_gate_critical_failure_immediate_rollback_or_bypass | H1-G2/3/5 또는 H24-G2/3/4/5 fail | true |
| AC-9 | false_positive_critical_threshold_FT_CR_immediate_action | FT-CR-1~5 발동 (★ FP-4/5/7 critical) | true |

★ 상세 = [[v3_6_shadow_mode_live_preflight_abort_conditions_260526]]

## 6. 안전 anchor (★ 본 packet 종합)

| anchor_id | 내용 |
| --- | --- |
| PFA-1 | 본 packet = preflight 통합 박제 only. 실 활성화 0. |
| PFA-2 | live activation 진입 = 회장 verbatim 별도 chair signature 강제 (★ 본 packet chair_id 와 별개) |
| PFA-3 | 본 packet 박제 후 task-2669 spec 8종 read-only 유지 (★ 변경 0) |
| PFA-4 | 본 packet 박제 후 task-2670~2674 spec 변경 0 |
| PFA-5 | 본 packet 박제 중 ~/.claude/settings.json read/write 0 |
| PFA-6 | 본 packet 박제 중 PreToolUse hook 활성화 0 |
| PFA-7 | 본 packet 박제 중 commit/push/PR/merge 0 |
| PFA-8 | 본 packet 박제 중 utils/** / hooks/** / dispatch.py 변경 0 |
| PFA-9 | 본 packet 박제 후 ANU normal callback envelope only routing (★ self-key 0) |

## 7. 회장 verbatim 결정 anchor (★ 1:1)

> "범위: live activation 전 preflight checklist only"
> "live settings.json / PreToolUse hook / BLOCK / policy 승격 금지"
> "포함 5: settings diff preview 검증 · emergency bypass 검증 · false-positive threshold 검증 · 1h/24h monitoring plan 검증 · activation abort 조건 (★ minimum 5 enum · 즉시 rollback trigger)"

★ 본 packet = 회장 verbatim 결정 1:1 매핑 (PFP-1 ~ PFP-5).

## 8. 본 packet 적용 정량 (★ 본 task 작업 중)

| metric | count |
| --- | --- |
| 신규 spec 작성 | 6 (★ 통합 1 + sub 5) |
| task-2669 spec 변경 | **0** |
| task-2670~2674 spec 변경 | **0** |
| ~/.claude/settings.json read | **0** |
| ~/.claude/settings.json write | **0** |
| hooks/** 변경 | **0** |
| utils/** 변경 | **0** |
| dispatch.py 변경 | **0** |
| PreToolUse hook 활성화 | **0** |
| BLOCK 확대 | **0** |
| policy 승격 | **0** |
| commit/push/PR/merge | **0** |
| forbidden_action_count | **0** |

## 9. Recommended next action (★ 회장 verbatim 보고 7번 항목)

```text
recommended_next_action = "live activation 진입 = 회장 verbatim 별도 chair signature 강제 + 별도 dev bot dispatch 강제. 본 packet chair_authorization_id (CHAIR-AUTH-V3-6-SHADOW-MODE-LIVE-PREFLIGHT-PACKET-20260526-JJONGS-PREFLIGHT-001) 는 preflight 박제 1회성. live activation 용 신규 chair_authorization_id 발급 필수."
```

★ 본 packet chair_id ≠ live activation chair_id (★ 1:1 격리 강제 anchor).

## 10. Safety counts (verbatim 1:1 · 통합)

```text
live_settings_json_change_count = 0
PreToolUse_hook_activation_count = 0
BLOCK_확대_count = 0
policy_승격_count = 0
commit_push_pr_merge_count = 0
hooks_change_count = 0
utils_change_count = 0
dispatch_py_change_count = 0
task_2669_spec_change_count = 0
task_2670_2671_2672_2673_2674_spec_change_count = 0
forbidden_path_access_count = 0
forbidden_action_count = 0
```

## 11. 관련 sibling spec (★ 5 sub-spec)

- [[v3_6_shadow_mode_live_preflight_settings_diff_verify_260526]]
- [[v3_6_shadow_mode_live_preflight_emergency_bypass_verify_260526]]
- [[v3_6_shadow_mode_live_preflight_false_positive_verify_260526]]
- [[v3_6_shadow_mode_live_preflight_1h_24h_monitoring_verify_260526]]
- [[v3_6_shadow_mode_live_preflight_abort_conditions_260526]]

## 12. read-only 참조 (★ task-2669 spec 변경 0 · 8 spec 모두)

- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_settings_diff_preview_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_emergency_bypass_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_false_positive_threshold_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_1h_24h_monitoring_criteria_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_rollback_oneliner_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_scope_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_forbidden_conditions_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/specs/v3_6_shadow_mode_live_activation_signature_packet_260525.md`
- `/home/jay/workspace/.worktrees/task-2669-dev5/memory/events/task-2669.v3-6-shadow-mode-live-signature-packet-result-260525.json`

## 13. 종결

성공: **`V3_6_SHADOW_MODE_LIVE_PREFLIGHT_PACKET_READY`**

끝
