# task-2775 +3 사전 read-only audit — flag 기반 limited/fire-capable 신호 구분 가능성 (260626)

> ★ read-only 코드 확인만. 코드 수정 0 · PR 갱신 0 · merge 0 · activation 0 · real fire 0 · flag 생성 0 · ACTIVE=false 유지.
> 회장 승인(2026-06-26): +3 구현 전 flag 구분 가능성 read-only audit. 상태명 `TASK2775_PLUS3_FLAG_BASED_LIMITED_SIGNAL_READONLY_APPROVED_ACTIVE_FALSE`.

## 최종 판정: `PLUS3_FLAG_BASED_WIRING_MICROFIX_READY_ACTIVE_FALSE`
flag 조합으로 limited/fire-capable 상태를 **driver 내부에서 명확히 구분 가능**하고, test-2760과 **충돌하지
않음**. 단 회장님 가설(callback flag 단독)을 정정: **권위 신호 = `p0b_driver_enabled` AND
`p0b_callback_launch_enabled`** 조합.

---

## 확인 항목별 결과 (회장 6질문)

### 1. 실제 systemd/entrypoint 경로가 activation_intended=False로 도는가 → **YES (재확인)**
- entrypoint: `python3 -m dispatch.anu_pickup_driver` (**인자 0**). driver `__main__`(2115): `raise
  SystemExit(main())` → `main()` 기본 `activation_intended=False`. → 운영 경로는 항상 False. +2 안전장치
  미발동 확정(앞 gap).

### 2. `p0b_driver_enabled=enabled` **단독**이 legacy/limited 구분에 충분한가 → **NO**
- `is_activated`(p0b_driver_enabled)는 entrypoint 게이트 + main 진입 표시일 뿐. **legacy scan_once 경로도
  driver_enabled ON에서 돈다**(main 1982: live 분기는 `is_activated AND read_event_strategy_enabled`,
  else는 legacy scan_once). → driver_enabled 단독으로는 fire-capable limited를 못 가른다.

### 3. `p0b_callback_launch_enabled=enabled`가 fire-capable 권위 신호로 쓸 수 있는가 → **YES**
- `read_callback_launch_enabled`(`anu_callback_launch_audit.py:125`)가 callback 실발사의 **최종 게이트**
  (`:317` `if not read_callback_launch_enabled(...): ` → 실발사 차단). live 경로든 scan_once 경로든
  callback_launch_fn 실발사는 이 flag를 통과해야 함. **B 1-shot이 바로 이 경로로 실발사**됨(E9F85186).
  → "실제 fire 가능"의 가장 권위 있는 단일 신호.
- ★ 정정: 실제 live 분기 게이트는 회장님이 든 callback flag가 아니라 **`p0b_event_strategy_enabled`**(main
  1982). 그러나 **실발사 최종 권위는 callback_launch_enabled**다. 그래서 fire-capable limited = driver_enabled
  진입 + callback_launch_enabled 실발사게이트 조합이 정확.

### 4. 두 flag(driver_enabled + callback_launch_enabled) enabled인데 epoch 부재/손상 시 driver 내부 auto-disabled+fire 0 설계 가능한가 → **YES**
- +2가 이미 만든 `limited_activation_bound_gate(is_activated_fn=...)`를 재사용. main() 호출부에서
  `is_activated_fn = lambda: is_activated(CANONICAL_ROOT) and read_callback_launch_enabled(CANONICAL_ROOT)`로
  **항상 주입**(activation_intended 휘발 조건 제거). → production(둘 다 enabled) + epoch 부재/손상 →
  active=True → `NOOP_ACTIVE_EPOCH_MISSING_AUTO_DISABLED` + fire 0. governor/launcher build 이전 단락.

### 5. test-2760 legacy scan_once 라우팅을 깨지 않는가 → **NO 손상 (안전)**
- test-2760은 `scan_live_inbox_once` 등 **함수를 직접 호출**하며 `flag_reader=_enabled`를 **인자 주입**한다
  (main()을 경유하지 않음). `limited_activation_bound_gate`는 **main() 진입 시에만** 호출되므로 test-2760엔
  애초에 안 돈다.
- 또한 test-2760은 **실제 flag 파일(`p0b_callback_launch_enabled`)을 만들지 않음**(in-memory mock). +3가
  bound gate에서 `read_callback_launch_enabled(CANONICAL_ROOT)`를 **실제 파일로** 읽으면 test-2760 환경엔
  그 파일이 없어 False → limited 아님 → fail-closed 미발동 → 무손상.
- ★ +3 구현 시 1건 재확인 필요: test-2760 중 `main()`을 직접 호출하는 케이스가 없는지(현 grep상 전부 함수
  직접 호출, main() 미경유 → 안전 추정).

### 6. callback flag 없거나 disabled면 legacy/default-OFF 유지되는가 → **YES**
- callback_launch_enabled OFF → `is_activated_fn()` = False → bound gate active=False → epoch 부재
  fail-closed 미발동 → legacy scan_once / default-OFF 경로 100% 보존.

---

## +3 micro-fix 범위 (★구현 자동 진행 안 함 — 회장 승인 후 dev2 재위임)
**목적**: epoch 부재/손상 fail-closed 발동 조건을 **휘발성 `activation_intended`에서 실제 fire-capable flag
조합으로 재결선**, 운영 경로(activation_intended=False)에도 걸리게.
- main() 호출부: `limited_activation_bound_gate(..., is_activated_fn=lambda: is_activated(CANONICAL_ROOT)
  and read_callback_launch_enabled(CANONICAL_ROOT))`. (read_callback_launch_enabled를 driver에서 lazy import.)
- 효과: production(driver_enabled + callback_launch_enabled 둘 다 ON) + epoch 부재/손상 → fire 0 auto-disabled.
  legacy(callback OFF)/default-OFF/test-2760 무손상.
- expected_files **2개**: `dispatch/anu_pickup_driver.py` + `tests/regression/test_limited_activation_bounds_2775.py`.
  test-2760 **무수정**(forbidden 유지).
- 테스트: production main 실경로(두 flag ON + epoch 부재/손상 → auto-disabled+fire 0+governor/launcher 미호출) /
  callback OFF → legacy 무손상 / default-OFF 무손상 / test-2760 36 무손상 / 기존 +0/+1/+2 회귀 PASS.
- ★ STOP 조건: test-2760에 main() 직접 호출 케이스가 발견되면 / read_callback_launch_enabled가 fire-capable과
  불일치하면 → 임의 진행 말고 STOP 보고.

## 금지 유지
merge / activation / real fire / systemd enable·start / flag 생성 / canary / recurring — 전부. ACTIVE=false.

## 한 줄 결론
**flag 기반 구분 가능(READY). 단 권위 신호는 callback flag 단독이 아니라 `p0b_driver_enabled` AND
`p0b_callback_launch_enabled` 조합 — 이 실발사 게이트가 production 경로에 정확히 걸리고 test-2760(파일 미생성·
main 미경유)과 충돌하지 않는다. +3는 bound gate의 is_activated_fn을 이 조합으로 결선하는 1줄 골자.**
