# task-2775 +4 read-only audit — __main__ activation_intended 결선 ↔ canary preflight 충돌 (260626)

> ★ read-only 코드 확인만. 코드 수정 0 · PR 갱신 0 · merge 0 · activation 0 · real fire 0 · flag 생성 0 · ACTIVE=false 유지.
> 회장 승인(2026-06-26): +4 entrypoint-intended 결선 read-only 확인. 상태명 `TASK2775_PLUS4_ENTRYPOINT_INTENDED_PREFLIGHT_READONLY_APPROVED_ACTIVE_FALSE`.

## 최종 판정: `PLUS4_PREFLIGHT_CONFLICT_STOP_ACTIVE_FALSE`
**`__main__` → `main(activation_intended=True)`로 바꾸면, main()의 `activation_intended_preflight`가
`paths=None`(production 고정)으로 `CANARY_PATHS_REQUIRED` STOP → return 0 → 정상 pickup까지 막힘.**
epoch이 정상 있어도 막힌다. `activation_intended`는 **canary 전용 신호**라 production limited entrypoint
신호로 **부적합**. 회장 판정기준(preflight 충돌 / canary 전용 부적합 → STOP)에 해당.

---

## read-only 6항목 결과
1. `python3 -m dispatch.anu_pickup_driver`가 `__main__` 블록을 타는지 → **YES**
   (`anu_pickup_driver.py:2115-2116`: `if __name__=="__main__": raise SystemExit(main())`).
2. `__main__`에서 `main(activation_intended=True)`로 바꿔도 test-2760의 `drv.main()` 직접 호출은 기본값
   False로 남는지 → **YES** (`test_p0b_event_strategy_wiring_2760.py:159·168·175·183·190`는 `drv.main()` **인자
   0** 호출 → 기본 False). 이 축은 안전.
3. activation_intended=True 경로에서 fire-capable을 `driver AND callback`으로 묶을 수 있는지 → **묶을 수는
   있으나 무의미** (아래 6 때문에 그 직후 preflight가 STOP).
4. entrypoint shell/systemd 수정 없이 `driver.py` 안에서 닫히는지 → **YES** (`__main__` 수정은 driver.py 내부).
5. test-2760 수정 없이 무손상 → **YES** (test는 기본 False 유지).
6. ★ **preflight 충돌 → YES, 치명적 충돌.**

## 핵심 충돌 메커니즘 (코드 근거)
main() 실행 순서(PR head):
```
① _bound = limited_activation_bound_gate(..., is_activated_fn=(lambda: is_activated()) if activation_intended else None)
   if _bound is not None: return 0          # epoch 부재/손상 시 NOOP. epoch 정상이면 통과.
② if activation_intended:
     _preflight = activation_intended_preflight(CANONICAL_ROOT, paths=None, ...)   # ← paths 항상 None
     if _preflight.get("stop"): return 0
```
`activation_intended_preflight`(`anu_activation_preflight.py:136-137`):
```python
if not paths: return _stop(REASON_CANARY_PATHS_REQUIRED)
```
→ `activation_intended=True` + `paths=None` ⇒ **무조건 `CANARY_PATHS_REQUIRED` STOP**.
즉 `__main__`에서 True를 넘기면, epoch이 정상이어도 ②에서 STOP → **limited production 정상 pickup 0**.
`activation_intended`는 "**명시적 canary scope(paths) 배선된 실행**" 전용 의미를 이미 가진다.

## ★ 근본 원인 (반복 난항의 진짜 이유)
세 길이 모두 막힌다:
- **+3** (flag-combo를 default main에 무조건 주입): test-2760이 `drv.main()` **직접 호출** → 충돌(STOP됨).
- **+4** (`__main__`에서 `activation_intended=True`): canary `preflight`가 production을 STOP → 충돌.
- **공통**: 현재 코드에 **"production limited 무인 가동(canary 아님, paths 없는 전체 inbox 처리)"을 표현하는
  단일 신호가 부재**하다. `activation_intended`=canary(paths 필수) / `is_activated`=driver flag(legacy도 공유) /
  `callback_launch_enabled`=실발사 게이트 — 어느 것도 "limited production 가동"을 정확히 뜻하지 않는다.
- 또한 production limited와 canary는 **안전 모델이 다르다**: canary=explicit paths scope + backlog 미소비
  보장, limited production=epoch bound gate(N/T/kill) + governor. 두 모델이 같은 `activation_intended`
  파라미터에서 경쟁한다.

## micro-fix 가능 여부 → **불가 (micro-fix 한계 초과)**
- `__main__`만 바꾸는 1줄 micro-fix는 ②preflight 충돌로 작동 불능.
- 충돌을 풀려면 preflight(task-2774+5, `anu_activation_preflight.py`)의 canary-paths 요구를 limited 모드에서
  분리하거나, production limited 전용 신호를 신설해야 한다 → **expected_files 2개 / "새 flag 발명 금지" 범위
  초과** → 회장 설계 결정 영역.

## 다음 방향 (구현 아님 — 회장 재논의 필요)
이건 micro-fix가 아니라 **신호/안전모델 설계 결정**이다. 회장 판단 후보(택1 또는 재논의):
- **(A) production limited 전용 신호 신설**: `__main__`이 limited-runtime 신호를 넘기고, preflight는 그 모드에서
  canary-paths 요구를 적용하지 않음(epoch bound gate + governor를 limited 안전 모델로 사용). driver +
  preflight 양쪽 손댐 → 범위 확장·"새 flag" 승인 필요.
- **(B) limited activation 가동을 canary scope(paths 배선)로 정의**: production도 explicit canary paths를
  배선해 preflight를 통과시키는 모델. 기존 preflight 의미 보존하나 "무인 전체 inbox 자동 pickup" 목표와 상충
  가능.
- **(C) limited GO 자체를 재정의**: "무인 자동 pickup"이 canary preflight를 통과해야 하는지부터 회장과 합의.

## 금지 유지
merge / activation / real fire / systemd enable·start / flag 생성 / canary / recurring — 전부. ACTIVE=false.
코드 수정 0 · PR #255 무변경(head 20875ef6, +2 상태) · invariants 0.

## 한 줄 결론
**+4도 막혔다(`PLUS4_PREFLIGHT_CONFLICT_STOP`). `activation_intended`는 canary 전용 신호라 production
entrypoint 신호로 쓰면 `CANARY_PATHS_REQUIRED`로 정상 pickup까지 STOP된다. 근본 원인은 "production limited
가동"을 표현하는 신호 부재 — micro-fix 한계를 넘었고, 신호/안전모델 설계를 회장과 재논의해야 한다.**
