# task-2717+1 — Phase 1 pre-PR 보정 (dev1, 로컬 only)

- **팀**: dev1-team (헤르메스) — 7f644a1a 원작자
- **작업 위치**: 기존 worktree `/home/jay/workspace/.worktrees/task-2717-dev1`, branch `task/task-2717-anu-owned-callback-enforcement`, 현 HEAD `7f644a1a` **위에 보정 commit**. base origin/main. **새 worktree/브랜치 금지, PR #162 미접촉.**
- **분류**: Phase 1(TRUST 제거/탐지) pre-PR 보정. **7f644a1a 폐기 아님 — 유지+보정.**
- **단일소스**: `memory/tasks/task-2717.md` (Phase 1/2 분리), audit: `task-2717.phase1-scope-audit-260531.json`
- **허용 파일 2개만**: `dispatch/anu_owned_callback_enforcement.py` · `tests/regression/test_anu_owned_callback_enforcement_2717.py`

## 보정 3건 + fire-path gating

### A. 실제 ANU key literal 전부 제거
- `dispatch/anu_owned_callback_enforcement.py` docstring(현 line~11) + `tests/...2717.py`(현 line~51, ~114)의 literal `c119085addb0f8b7` 전부 제거.
- 대체: `ANU_KEY_PLACEHOLDER` / `EXPECTED_ANU_OWNER_KEY` / fake key fixture(예: `"<ANU_KEY_REDACTED>"` 또는 명백한 fake `"fake-anu-key-0000"`).
- module/test/docstring/주석 어디에도 실제 ANU key literal 0. (실 키는 기존 import `ANU_KEY_2553` 상수 사용은 유지 가능 — literal 문자열만 제거)

### B. status enum 보강 (상태기계 명확화)
- **NO_RESULT_JSON** 추가: executor가 result JSON 미작성 → 별도 상태.
- **PENDING_OWNER_PROOF** 추가: owner proof 미확정(조회 보류/재시도 가능) → fail-closed와 구분되는 별도 상태.
- 기존 SELF_COLLECTOR_QUARANTINE / AUTHORITATIVE / NON_AUTHORITATIVE 계열과 **충돌 없이** 상태기계 명확화.
- ★ "result JSON 없음(NO_RESULT_JSON)"과 "owner proof 미확정(PENDING_OWNER_PROOF)"은 **서로 다른 상태**로 분리.

### C. spoof → QUARANTINE regression 강화
- envelope 텍스트가 `collector_role=ANU` / `self_key_used=false` / ANU owner claim을 **주장**하지만, **actual owner proof는 self-key 또는 access denied**인 케이스를 테스트로 고정.
- 반드시 출력: `SELF_COLLECTOR_QUARANTINE` · `usable_for_auto_merge=false` · `work_preserved=true`.
- envelope claim은 **기록만, 판정 미사용** 임을 테스트로 명시.

### fire 경로 제한 (Phase 1)
- Phase 1에서 **cokacdir cron을 정상 fire/closeout 실행 경로로 전제 금지.**
- 실제 fire/closeout 경로는 `NOT_ACTIVATED` / `PHASE2_REQUIRED` 상태로 **막아라**(dry-run/argv build까지만).
- 허용: owner proof용 **read-only** `cron-history` 조회 / ANU-owned argv build **dry-run** / fire 경로를 NOT_ACTIVATED로 차단.
- 금지: Phase1에서 cokacdir cron으로 실제 fire/closeout 정상 실행 / "cokacdir cron이 runner 실행" 전제.

## Phase 1 범위 (이 밖 금지)
포함: result JSON schema · NO_RESULT_JSON · actual owner proof 검증 · PENDING_OWNER_PROOF · SELF_COLLECTOR_QUARANTINE · NON_AUTHORITATIVE 보존 · terminal marker 멱등 lock · spoof/access-denied/stale regression.
**제외(Phase2 — 혼입 금지)**: OS-level pickup · systemd/inotify/crontab 설치 · executor cron 차단 hook · completion_contract 자동주입 · ANU key 봉인 배포 · 실제 fire/closeout 자동화.

## 검증 (전부 PASS)
- 실제 ANU key literal 0 (`grep c119085addb0f8b7` = 0)
- NO_RESULT_JSON / PENDING_OWNER_PROOF 동작 테스트
- spoof→QUARANTINE regression PASS
- result JSON schema PASS · lock/idempotency PASS
- regression 전체 PASS
- `git diff --name-only origin/main...HEAD` = 2 expected_files only · forbidden 0 · Phase2 혼입 0 · CI workflow 0

## push 금지
dev bot push 금지. **로컬 commit까지만.** push/PR 생성 금지. push는 ANU 재검증 PASS 후 회장 인가 시.

## 완료 신호 = result JSON
`memory/events/task-2717+1.result.json` 작성(new_commit_sha / key_literal_count=0 / new_statuses / spoof_quarantine_test / fire_path_gated / expected_files / regression_result). ★callback schedule 자가발사 금지(self-collector 패턴). 상세 report 1개.
