# task-2774+13 — normal callback delivery real launcher wiring (bounded micro-PR, ACTIVE=false)

상태명: `TASK2774_NORMAL_CALLBACK_DELIVERY_REAL_LAUNCHER_WIRING_MICRO_PR_APPROVED_ACTIVE_FALSE`
담당: dev2-team (anu_result_pickup_runner / callback enforcement 소유)
회장 승인: 2026-06-25. ★ B 실증(real cokacdir 1-shot delivery)을 막던 **결선 공백을 닫는 goal-enabling micro-PR**.
코드 수정 0 원칙은 **이 범위에 한해 해제**(최소 결선만). **PR 내부 real fire 금지**·실제 1-shot은 머지 후 별도 승인된 B 실행에서만.

## 배경 (왜 이 결선이 필요한가)
ANU dry 가드에서 governor ALLOW + owner-proof PASS + `WAKE_BUILT`까지 도달했으나, normal callback
delivery 경로(`pickup_once → build_callback_launch_fn → anu_runner_pickup_and_fire`)가 **surface-only**
(`anu_owned_callback_enforcement.py:23-24` 명시: "실 cron 직접 발사 안 함, argv 데이터만 surface. 실 발사는
권한 ANU 세션이 ANU key로 수행")라 실제 cokacdir 발사 코드가 결선돼 있지 않음. ad-hoc harness 발사기 주입은
**우회 발사**라 "경로가 실제 wired 됐다"는 증명이 아님 → 정식 결선 micro-PR로 닫는다.

## 허용 범위 (엄수)
- normal callback delivery 경로에서 **surface argv → 실제 cokacdir 1-shot 발사**로 연결하는 **최소 adapter/wiring**.
- 가능하면 **기존 D-2 경로의 승인된 실제 발사기 또는 `build_oneshot_cokacdir_fire_fn` 계열을 재사용**.
- 새 발사기를 작성해야 한다면: **sealed ANU key 로드 · raw key log 0 · argv redaction · once-only ·
  `.ok`/`.argv` contract 만족**하는 최소 함수만.
- **default OFF 유지 · ACTIVE=false 유지** · systemd enable/start 금지 · recurring 금지 ·
  production activation 금지 · canonical backlog consume 금지.
- **real fire 는 PR 내부 테스트에서 금지**(mock/contract 검증만). 실제 1-shot 은 PR merge 후 별도 승인 B 실행에서만.

## 절대 금지
- ANU/dev harness 에서 즉석 실제 발사기 작성 후 바로 real fire 금지.
- provenance/owner-proof/freshness 우회 금지. permissive lambda/stub 으로 gate 통과 금지. owner key 위조 금지.
- local main 강제 pull 금지. systemd/path recurring 활성화 금지. canonical backlog 12/13건 consume 금지.
- matrix `ACTIVE=true` 또는 `ENFORCED=true` 전환 금지.

## 필수 DoD
1. 기본 normal callback delivery 경로가 **default OFF 에서 여전히 surface-only 또는 no-fire** 로 안전 동작(회귀 0).
2. **activation-intended + explicit canary-only + owner-proof PASS + governor ALLOW** 일 때만 real launcher adapter 호출.
3. governor BLOCK → real launcher **0회**.
4. G2/G3 STOP → real launcher **0회**.
5. owner-proof/freshness FAIL → real launcher **0회**.
6. launcher 는 **`.ok`/`.argv` contract** 반환.
7. raw ANU key stdout/stderr/log **0**. argv 에는 redacted/검증 가능한 형태만 기록.
8. spawn/callback 중복 방지(dedupe/single-flight 보존).
9. `py_compile` PASS · 관련 regression PASS · expected_files 밖 수정 0.
10. (PR 단계) Gemini review **HIGH 0 / Critical 0**.

## 보고 항목 (필수)
- 어떤 파일을 수정했는지.
- surface-only 가 어디에서 real launcher adapter 로 이어지는지(연결점).
- 기존 D-2 발사기 재사용 여부 / 새 발사기 작성 여부와 이유.
- default OFF 보존 증거 · real fire 0 증거.
- governor BLOCK 시 fire 0 테스트 · owner-proof/freshness FAIL 시 fire 0 테스트 · G2/G3 STOP 시 fire 0 테스트.
- raw key 노출 0 증거 · CI/Gemini 상태.

## 진행
dev2 는 위 결선을 최소 범위로 구현·테스트(real fire 0)·로컬검증 후 branch push → PR 생성 →
보고서 + .done + ANU callback 으로 마감. **PR 내부 real fire 0**. ANU 가 이후 독립검증/Gemini/CI 확인 →
회장 머지 판단 → (머지 후) B real bounded 1-shot 재승인 여부 회장 결정.

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "dispatch/anu_result_pickup_runner.py"
    - "dispatch/anu_callback_launch_audit.py"
    - "dispatch/anu_owned_callback_enforcement.py"
    - "tests/regression/**"
    - "memory/plans/spawn_safety_governor/**"
    - "memory/reports/task-2774+13.md"
    - "memory/events/task-2774+13.done"
  forbidden_paths:
    - ".github/**"
    - "memory/events/*.cron-*"
    - "scripts/finish-task.sh"
    - "memory/state/p0b_driver_enabled"
    - "memory/state/p0b_callback_launch_enabled"
  commands:
    - "pytest"
    - "python3 -m py_compile"
    - "git"
    - "gh"
  merge_policy: "manual"
  ttl_hours: 24
```