# task-2729+4 — ANU_PICKUP_ACTIVATION_PREFLIGHT_AND_PILOT
## 회장 인가 (2026-06-05) — read-only preflight + controlled pilot 설계까지만
배경: callback/pickup = IMPLEMENTED + WIRED candidate + **ACTIVE=false**. 봇 result.json → systemd `anu-pickup.path` 감지 → `anu-pickup.service` → `anu_pickup_entrypoint.sh` → ANU 자동 wake 구조이나 **미설치/disabled(by default)**. 봇 끝나도 ANU 자동 wake 0 (CALLBACK_PICKUP_IMPLEMENTED_WIRED_CANDIDATE_BUT_NOT_ACTIVE). 본 task는 **활성화 전 안전성 검증 + 1회성 pilot 설계까지만**. **production ACTIVE 전환·systemctl enable --now 금지(별도 회장 승인).**

## Part A — activation preflight (read-only, 8 항목)
1. 실제 경로/버전 확인: `deploy/systemd/anu-pickup.path`, `deploy/systemd/anu-pickup.service`, `scripts/anu_pickup_entrypoint.sh`, `dispatch/anu_result_pickup_runner.py`, `dispatch/anu_pickup_driver.py` — 존재·내용·상호 호출 결선.
2. systemd user unit 설치/enabled/active 상태 확인(`systemctl --user is-enabled/is-active anu-pickup.path`). 현재 미설치·inactive 예상 — 사실 기록.
3. result.json 감지 대상 경로(PathExistsGlob) + debounce/lock/idempotency 조건 코드 확인.
4. terminal marker(.done/.acked 등) 이미 있는 task → pickup no-op 되는지 코드 확인.
5. 동일 result.json 중복 처리 방지(처리표시/lock/once) 조건 확인.
6. ANU key raw 노출 0 — pickup runner/entrypoint가 ANU key를 평문 출력/로그하지 않고 sealed 사용하는지 확인.
7. runaway 방지(처리상한·cooldown·재발화 차단·무한 spawn 가드) 조건 확인.
8. dry-run 또는 mock result.json으로 **실제 service 실행 없이 decision만** 확인(실 ANU spawn 0).

## Part B — controlled pilot 설계 (실행 아님 — 설계+1회 dry/mock 한정)
- production ACTIVE 전환 전 1회성 pilot 설계만. 대상=새 테스트 result.json 1개 또는 terminal marker 있는 noop fixture로 제한.
- pilot 성공 기준: pickup runner 1회만 발사 · ANU key raw 0 · duplicate pickup 0 · terminal marker 존재 시 no-op · 실 PR merge/push/comment 0 · result 상태 정확히 ANU 보고.
- pilot 후에도 ACTIVE=false 유지. systemctl enable --now·production ACTIVE = 회장 별도 승인.

## 산출물
1. `memory/reports/task-2729+4-pickup-preflight.md` — preflight 8항목 결과(read-only 증거) + pilot 설계 + 활성화 시 위험/완화 + 활성화 절차안(승인 후 실행용).
2. (선택) preflight 점검 스크립트 `scripts/harness/v36/anu_pickup_preflight_check.py`(read-only, decision-only, 실 service 미실행) — 필요 시.
3. `memory/events/task-2729+4.done`.
- 코드 수정 최소(preflight는 read-only 우선). 실 활성화 코드 0.

## 금지 (회장 verbatim)
production ACTIVE 즉시 전환 · `systemctl ... enable --now` 실행 · 무제한 systemd enable · ANU key raw 출력 · result.json 중복 처리 유발 · merge/push/PR comment 자동 실행 · P0-A/PR#174 finalize 재개 · P0-B production activation 선언. 실제 ANU spawn 유발 0(전부 dry/mock).

## allowed_resources (본 task의 capability)

```yaml
allowed_resources:
  paths:
    - "scripts/harness/v36/anu_pickup_preflight_check.py"
    - "memory/reports/task-2729+4-pickup-preflight.md"
    - "memory/events/task-2729+4.*"
  forbidden_paths:
    - "bot_settings.json"
    - ".env.keys"
    - ".github/**"
    - "/etc/systemd/**"
    - "deploy/systemd/**"
    - "dispatch/anu_result_pickup_runner.py"
    - "dispatch/anu_pickup_driver.py"
    - "scripts/anu_pickup_entrypoint.sh"
    - "scripts/finish-task.sh"
    - "memory/events/*.cron-*"
  commands:
    - "pytest"
    - "python3 -m py_compile"
    - "systemctl --user is-enabled"
    - "systemctl --user is-active"
  merge_policy: "tiered"
  ttl_hours: 48
```