# CONTROLLED_REAL_WAKE_PILOT_EXECUTION_PACKET (실행 packet — 실행 0, 회장 go 대기)

작성: 2026-06-08 KST / ANU 직접 / base origin/main a311bd69 / **packet 준비만, 실행은 회장 별도 go 후**
성격: **controlled real-wake canary** (production activation 아님). robust full automation 성공 주장 금지.

## 코드 근거 (a311bd69 read-only)
- `pickup_once` step7 = `anu_runner_pickup_and_fire(result_json_path, executor_key, anu_key, [anu_keys])` — **prompt 미주입(기본 None) → 내부에서 result.json 으로 prompt 구성**.
- `anu_runner_pickup_and_fire(chat_id=ANU_CHAT_ID, prompt: Optional[str]=None, ...)` — **prompt·chat_id 둘 다 입력 param**. → pilot 하니스가 **explicit minimal canary prompt 주입(path b)** 시 wake prompt 완전 통제. (실 cron 미발사, argv 데이터만 surface — launcher 가 실 spawn)
- `ANU_CHAT_ID="6937032012"`(회장 chat) — ★ wake 는 **회장 Telegram 으로 발사** → 회장이 canary ack 메시지 수신(예상 outward effect).
- 머신러리 canonical write 0(runner NO-CRON / launcher redacted / helper ZERO cron·dispatch·subprocess). sealed key=canonical .env.keys env, raw 출력 0. dedupe fail-closed.

## 14 항목

### 1. fixture task_id / result.json 내용
- `task_id`: `task-PILOTCANARY-<UTCYYYYMMDDHHMMSS>` (실 업무 task 아님, 충돌 0).
- `result.json`(isolated temp): `{ "task_id": "<위>", "schema":"pilot.canary.v1", "result_json_path":"<temp 경로>", "note":"controlled real-wake canary — no real work" }`. collector_envelope 없음(self-collector verify gh_probe 미주입 → 해당 단계 skip).

### 2. isolated temp root 경로
- `/tmp/p0b_pilot_<ts>/` (DATA root). 하위: `memory/events/task-PILOTCANARY-<ts>.result.json`, `memory/state/p0b_driver_enabled`, `memory/state/p0b_real_wake_enabled`, `memory/state/p0b_activation_epoch`(temp 한정), dedupe ledger=temp. **canonical 무관.**

### 3. scan_once 호출 인자
- `scan_once(root="/tmp/p0b_pilot_<ts>", paths=["/tmp/p0b_pilot_<ts>/memory/events/task-PILOTCANARY-<ts>.result.json"], launcher_fn=build_launcher_fn("/tmp/p0b_pilot_<ts>"))`. **driver.main() 미사용**(CANONICAL 하드코딩 회피).

### 4. dry_run=False 범위
- launch_wake **dry_run=False 1회** (해당 단일 fixture). audit_path=temp(redacted 1줄). 그 외 일체 dry_run 유지.

### 5. sealed key 로드 방식
- `_default_sealed_key_loader` → `utils.env_loader.load_env_keys()`(canonical .env.keys) → `COKACDIR_KEY_ANU` env. raw key literal 출력 0(argv_len only). 부재 시 fail-closed wake 0.

### 6. wake prompt 전문 (path b — explicit minimal canary)
```
[P0-B REAL-WAKE CANARY — controlled pilot, NOT production work]
당신은 pickup driver 가 발사한 real-wake canary 로 깨어났습니다.
허용 행동: 한 줄로 "CANARY_ACK task-PILOTCANARY-<ts> spawned at <KST>" 만 회신.
금지: canonical 파일 write/수정/삭제 0, dispatch 0, PR/merge 0, .done 처리 0,
다른 task 착수 0, memory/ 수정 0. ack 회신 후 즉시 종료.
이것은 real_callback_spawned 검증용 canary 이며 실제 작업이 아닙니다.
```

### 7. spawned ANU 세션 허용 행동 범위
- **허용**: 한 줄 ack 회신(Telegram)·종료. **금지**: canonical write/수정/삭제·dispatch·PR/merge·.done 처리·타 task·memory 수정. ★ autonomous agent 라 코드 게이트 아님 → prompt scope + post-pilot audit 으로 enforce(회장 사전 수용).

### 8. expected canonical write 최대 1건 정확한 파일명/경로
- 머신러리: **0**. spawned 세션: 최소 prompt 상 **canonical write 0 목표**. 불가피 시 허용 상한 = `memory/events/task-PILOTCANARY-<ts>.canary-ack.json` **1건만**(fixture 전용, 분리 라벨). 그 외 canonical write = HOLD/abort.

### 9. canonical write 없이 cron-history 만으로 real_callback_spawned 확인 — 최종 판단
- **YES.** real_callback_spawned = 발사된 wake cron 의 `cokacdir --cron-history <sid>`(status ok) + `schedule_history/<sid>.log` fire 기록 + spawn 프로세스 + 회장 Telegram canary ack 수신. **canonical marker 불요.** → 1차 검증은 marker-free.

### 10. post-pilot audit checklist (필수)
- (a) canonical `git status`/`git diff` = task-2716(75fdf540) 무변동·추적파일 0 변경. (b) `memory/events/` 신규 = canary-ack 1건 이하(또는 0). (c) legacy 140 result.json mtime/내용 무변동. (d) canonical `memory/state/p0b_driver_enabled`·`p0b_real_wake_enabled`·`p0b_activation_epoch` = **ABSENT 유지**. (e) raw key literal grep(로그/ledger/마커/Telegram) = 0. (f) dedupe ledger(temp) 1 entry. (g) spawn cron 정확히 1건. (h) systemd anu-pickup not-found 유지.

### 11. duplicate 0 확인 방식
- dedupe ledger(temp) 1 entry((task_id,sha256)). 재호출 시 SKIP_DEDUPE. ledger write 실패 → fail-closed(wake 0). real spawn = 1.

### 12. cron consumed 확인 방식
- 발사 wake cron id 가 `cron-list` 부재(1회성 소비) + `schedule_history/<id>.log` fire 1건 + cron-history status ok.

### 13. rollback 절차
- `rm -rf /tmp/p0b_pilot_<ts>` (flags/epoch/ledger/fixture 소멸). canonical p0b flag/epoch 생성 0 → canonical rollback 불요(ABSENT 재확인). canary-ack 마커(생성 시) 분리 보관/라벨. systemd 미설치 유지. spawn 된 canary 세션은 ack 후 자가 종료(추가 cron 0 확인).

### 14. HOLD 조건 (실행 중 1개라도 시 즉시 abort)
1. canonical write가 canary-ack 1건 초과 가능성/발생. 2. legacy 140 스캔/변동. 3. raw key/full argv 출력. 4. real spawn 2회+. 5. spawned 세션이 prompt 벗어나 canonical 수정. 6. production flag/activation_epoch(canonical)/systemd enable 필요. 7. task-2716 수정 필요.

## ★ 정직 caveat (회장 사전 수용)
- spawned ANU = autonomous full agent. canonical write ≤1 은 **prompt scope + post-pilot audit** 으로만 enforce(코드 게이트 아님).
- wake 는 **회장 Telegram(6937032012) 으로 canary ack 발사** = 실 outward effect. 회장이 canary 메시지 수신.
- 이 pilot = **controlled real-wake canary**, production activation/robust full automation 아님.

## 금지 (회장 verbatim — packet 내 실행 0)
pilot 실행 / systemctl enable / production ACTIVE / ACTIVE=true / canonical activation_epoch / canonical legacy result.json 이동·삭제·quarantine / task-2716 수정 / canonical reset·clean·stash / 반복 real spawn / callback prereg Phase B.

## 판정
- **CONTROLLED_REAL_WAKE_PILOT_EXECUTION_READY** (packet 완성, 실행 0). 실행은 회장 명시 go + 회장 Telegram canary 수신 동의 후.
