# DRY_RUN — Phase 0 Kill Switch Dry-run A (방식 A, pytest tmp_path 격리)

라벨: **DRY_RUN** (pilot 아님 · activation 아님)
상태명(승인): `LIMITED_PILOT_PHASE0_KILLSWITCH_DRYRUN_A_APPROVED_ACTIVE_FALSE`
결과 상태명: **`LIMITED_PILOT_PHASE0_KILLSWITCH_DRYRUN_A_PASS_ACTIVE_FALSE`**
실행: 2026-06-27 (KST) · 실행자: 아누 · 근거: main `189f1f0d`
**raw key redacted / no literal key retained.**

> 이 dry-run은 **pilot이 아니다.** Phase 0 격리 코드 경로 검증일 뿐이며, 완료 후에도 Phase 1 surface-only pilot은
> **별도 승인 전까지 금지**.

---

## 1. 실행한 pytest 범위
- 파일: `tests/regression/test_limited_activation_bounds_2775.py` (tmp_path 격리, canonical 미접촉).
- (1) kill 관련 케이스 (`-k kill -v`) — **4 passed**:
  - `test_kill_switch_immediate_noop_no_flag_write` (kill → NOOP_KILL_SWITCH, flag write 0)
  - `test_kill_switch_via_injected_fn`
  - `test_order_kill_precedes_n` (kill이 N보다 우선)
  - `test_main_limited_runtime_kill_switch_precedes`
- (2) 방식 A 정의대로 전체 파일 (`-q`) — **63 passed**.

## 2. 검증 결과 (전부 PASS)
- **kill switch verdict** = `NOOP_KILL_SWITCH` 전면 NOOP (pytest 4/4).
- **flag write 0**: `p0b_driver_enabled` 전후 동일 — content="disabled", size=9, **mtime=1782471312 불변**.
- **real fire 0**: REAL_FIRED 카운트 1 → 1 (신규 0). LIVE_PROCESSED 0 → 0 (신규 0).
- **spawn / governor / launcher 호출 0**: `spawn_decisions.jsonl` 22줄 → 22줄 불변.
- **canonical marker 전후 동일**:
  - `p0b_driver_enabled` PRESENT "disabled" (mtime 불변) / `p0b_callback_launch_enabled` ABSENT→ABSENT /
    `p0b_activation_epoch` ABSENT→ABSENT / `p0b_kill` ABSENT→ABSENT.
  - evidence jsonl 줄 수 불변: driver_runs 2=2 · callback_launch_audit 1=1 · spawn_decisions 22=22 ·
    p0b_processed_ledger ABSENT=ABSENT · callback_4tuple_index 3=3.
- **cron 0**: ANU 스케줄 0 (전·후).
- **systemd**: anu-pickup.path inactive · disabled (전·후).
- **ACTIVE=false 유지**: driver_enabled=disabled.

## 3. snapshot 전후 (요약)
| 항목 | BEFORE | AFTER | 동일 |
|---|---|---|---|
| p0b_driver_enabled | disabled/size9/mtime1782471312 | 동일 | ✓ |
| callback/epoch/kill marker | ABSENT | ABSENT | ✓ |
| driver_runs / audit / spawn / ledger / 4tuple | 2/1/22/0/3 | 2/1/22/0/3 | ✓ |
| REAL_FIRED / LIVE_PROCESSED | 1 / 0 | 1 / 0 | ✓ |
| cron / systemd | 0 / inactive·disabled | 0 / inactive·disabled | ✓ |

## 4. 판정
- **PASS** — kill switch가 fail-closed(`NOOP_KILL_SWITCH`)로 작동하고, flag write·real fire·spawn·governor·
  launcher 호출이 전부 0이며, canonical 부작용 0(격리 입증). 안전장치(kill)가 *당겨짐*을 격리에서 1회 관측.

## 5. Phase 1 진입 가능 여부
- **기술적 blocker 없음.** 단 회장 명시: dry-run A가 끝나도 **바로 Phase 1 금지**, 결과 보고 후 재결정.
- Phase 1(surface-only pilot)은 **별도 승인 안건**. 본 dry-run은 거기에 대한 자동 진입 근거가 아니다.
- (선택) 방식 B(tmp root driver 직접 호출)는 본 A PASS 후 **별도 승인** 대상. canonical p0b_kill 직접 생성은 금지 유지.

## 6. 비고
- key rotation = `KEY_ROTATE_DECISION_REQUIRED` (별도 안건, dry-run A의 blocker 아님).
- 코드 수정 0 · 새 PR 0 · merge 0 · flag ON 0 · activation 0.
