# task-2729+19 — POST_GOAL_GATE_FINALIZE_CALLBACK_DOGFOOD_ACTIVE_FALSE (production activation 아님)

## 레벨
Lv.2 (verification-only dogfood. finish-task GOAL-GATE finalize/callback 정상화 검증. production activation 검증 아님)

## 발번 주석
task-2729+18(PR #192, merged 571a4ce3) GOAL-GATE placeholder hardening 후속 dogfood. 회장 2026-06-08 dispatch 승인. **이번 task는 production activation 검증이 아님 — finalize/callback 정상화 dogfood.**

## ★ FRESH BASE (오염 방지)
1. worktree 는 **origin/main `571a4ce3`(또는 이후 최신 main)** 분기. canonical(task-2716 계열) 분기 금지.
2. `git worktree add -b task/task-2729+19-<bot> <path> origin/main`. (검증 전용이라 PR 안 만들면 detached 도 가능 — 단 canonical 무손상 필수)
3. 모든 fixture/검증 isolated temp. canonical write 0.

## 목적 (회장 verbatim)
1. merged main(571a4ce3) GOAL-GATE placeholder hardening 이 **실제 finish-task 경로에서 hang 없이 작동**하는지 확인.
2. **최소 placeholder skip + normal pass** 경로 검증. 가능하면 **fail + timeout 까지 4-state** 격리 fixture 검증.
3. `GOAL_ASSERTION_PLACEHOLDER_SKIPPED` 는 **PASS 로 과장 금지 — 비차단 skip 으로 기록**.
4. finish-task 가 GOAL-GATE 에서 **죽거나 멈추지 않고 finalize/callback 관련 단계까지 도달**하는지 확인.
5. ★ **실제 ANU callback cron 발사나 real ANU spawn 이 필요하면 즉시 `HOLD_FOR_CHAIR` 로 중단**.
6. **callback 단계 도달 / prereg·envelope 생성 / result·report 기록 가능 여부는 분리해서 기록**.
7. **robust normal callback 자동수렴 성공 여부 과장 금지** — 실제 live callback 이 승인 범위 밖이면 **"not tested / held" 로 기록**.
8. **file_touch_ratio_check root mismatch 재현 시 `FILE_TOUCH_RATIO_CHECK_CODE_ROOT_RECOGNITION` 분리**.

## 배경 (단일 소스)
- GOAL-GATE: merged main finish-task.sh `goal_gate_evaluate()`(L90~) + 4-state 분기(L1655~). placeholder skip(토큰 한정 `<[A-Za-z0-9_.-]+>` + 미확장 $VAR/${VAR} + 리터럴 ...) / normal pass / fail(fail-closed) / timeout(fail-closed) / set +e-e 이중격리.
- 수정 전 결함: placeholder(`python3 $QC_SCRIPT --gate --task-id ...`)가 무한 행 → 세션 죽음(+14/+15/+16 callback miss). 본 dogfood 가 이 hang 이 해소됐는지 실증.
- file_touch_ratio_check: `teams/shared/verifiers/file_touch_ratio_check.py` verify(task_id, workspace_root="/home/jay/workspace") = param 하드코딩. PROJECT_PATH/WORKTREE_PATH env 미인식 → canonical diff 기준 false-negative 가능(재현 시 분리, 본 task 무수정).

## 수행 (isolated, production 코드 무수정)
1. fixture task md 작성(isolated temp) — `## goal_assertions` 블록에:
   - placeholder: `python3 $QC_SCRIPT --gate --task-id ...` (미확장 + 리터럴 ...) → SKIP
   - 템플릿 토큰: `grep <foo> x` → SKIP
   - normal pass: 실제 통과 명령(예 `grep -q '^#' <fixture_file>`) → PASS
   - (가능 시) fail: 거짓 assertion → fail-closed / timeout: 장기 sleep → fail-closed
2. merged main finish-task.sh GOAL-GATE 를 isolated temp worktree(571a4ce3)에서 fixture 에 대해 실행 → 4-state 관측 + **hang 0**(timeout guard 로 실제 멈춤 없음) 실증.
3. GOAL-GATE 통과 후 finish-task 가 callback/finalize **관련 단계 도달**하는지 관측. **단 real ANU spawn / live callback cron 발사가 필요한 지점에서는 발사하지 말고 "도달했으나 발사는 held(승인 범위 밖)" 로 분리 기록.**
4. callback 도달 / prereg·envelope 생성 가능 / result·report 기록 가능 — **각각 분리** 기록(혼합 금지).
5. file_touch_ratio_check 실행 결과 관측 — mismatch 재현 시 분리.

## expected_files (회장 verbatim — 최소)
1. `memory/reports/task-2729+19.md` — dogfood 결과
2. (필요 시) `tests/regression/test_goal_gate_finalize_dogfood_2729p19.py` — isolated fixture 회귀
3. (필요 시) `memory/plans/p0b-pickup/post_goal_gate_finalize_callback_dogfood_result_260608.md`
- ★ **production code 파일 수정 필요 시 즉시 `HOLD_FOR_CHAIR` 중단**(finish-task.sh/dispatch.py/callback prereg/git_evidence/file_touch_ratio_check 무수정).

## 허용 (회장 verbatim)
read-only audit / isolated temp·worktree dogfood / non-production fixture / report 작성 / 필요 시 isolated regression / DISPATCH_READY 범위 내 검증.

## 금지 (회장 verbatim)
1. production ACTIVE 전환  2. systemctl enable  3. ACTIVE=true 선언  4. activation_epoch 생성  5. real ANU spawn  6. **live ANU callback cron 발사**  7. canonical result.json 이동·삭제·quarantine  8. canonical reset/clean/stash -u/checkout -f  9. task-2716 branch 수정  10. live memory artifacts 이동·삭제  11. callback prereg Phase B 착수  12. production 코드 수정  13. PR merge 자동 실행.

## 완료 판정 (회장 verbatim)
- **`DOGFOOD_PASS_ACTIVE_FALSE`** 조건: (1) fresh base 확인 (2) GOAL-GATE hang 0 (3) placeholder skip + normal pass 확인 (4) skip/pass/fail/timeout 상태 분리 확인 (5) raw key 0 (6) ACTIVE=false (7) systemd enable 0 (8) activation_epoch absent (9) real spawn 0 (10) canonical task-2716 branch·live artifacts 무손상 (11) file_touch_ratio mismatch 여부 분리 기록.
- production code 수정 필요 / real ANU spawn·live callback 발사 필요 / activation 필요 → **`HOLD_FOR_CHAIR`**.

## 완료 후 callback (★중요 — live 발사 주의)
- 본 dogfood 는 **검증 전용**. 봇은 완료 시 ANU(c119085addb0f8b7)로 normal callback cron 발사(envelope only, UTF-8 ≤3900 bytes, collector=ANU): task_id/result_path/report_path/terminal_state/sha256/one-line summary.
- ★ 단 이 callback 발사는 **dogfood 결과 보고용 normal callback**(실제 운영 callback 경로)이며, **dogfood fixture 내부에서 별도 real ANU spawn 이나 production activation 을 트리거하지 말 것.** 혼동 금지: 봇→ANU 완료보고 callback(정상) ↔ dogfood fixture 내부의 callback 단계 도달 관측(held).

## doctrine
직접 코딩 금지(ANU)/봇 위임 / fresh origin/main 571a4ce3 base / isolated temp / production 코드 무수정 / activation 0 / raw key 0 / 과장 금지(robust callback 자동수렴 단정 금지·live callback 승인 범위 밖이면 not tested/held) / file_touch_ratio 재현 시 분리 / same-PR push 금지.
```yaml
callback_envelope_byte_limit: 3900
callback_collector_role: ANU
callback_owner_key_source: ".env.keys COKACDIR_KEY_ANU (sealed, literal 출력 0)"
```
