# task-2553+54 — ANU_RUNTIME_EVENT_LOOP_FROM_DURABLE_REGISTRY (실행 보고)

- **Executor**: dev5-team 마르둑 (key 109fa85250c6d46b) 1회 한정
- **Spec**: memory/tasks/task-2553+54.md (sha256 97ff6dd9…2bd3f4)
- **상태**: EXECUTOR_IMPLEMENTATION_COMPLETE — 검증/Codex/adjudication 은 독립 ANU key c119085addb0f8b7 세션이 §2 event loop dogfood 로 수행
- **HOLD_FOR_CHAIR**: 없음

## 1. 회장 정정 반영

"사후 복원이 아니라 즉시 진행" — durable registry append/update 를 progress
event 로 해석하는 runtime event loop 를 신규 구현했다. normal callback
durable-success → registry write-back(+53 소관) → 본 event loop 가 즉시 감지
→ 단독 next_action / 병렬 all-settled → consolidated summary candidate →
next-phase ANU-key dispatch candidate(proposal) 까지 자동 진행한다.

## 2. 구현 (회장 §2 1~12)

`anu_v3/runtime_event_loop.py` — `RuntimeEventLoop.run(single_tasks, batches,
progress_trigger_source, dead_man_signal)`:

1. durable registry append/update → progress event 해석(`_build_events`).
2. COMPLETED write-back 즉시 next_action 평가.
3. 단독 = +47 `CallbackEventTrigger.scan` 재사용.
4. 병렬 = +53 `evaluate_batch_settle` (batch_id all-settled) 재사용.
5. all-settled → consolidated summary candidate(proposal).
6. next phase → ANU-key dispatch candidate(proposal only).
7. fallback/dead-man pending 비차단(`fallback_pending_non_blocking=True`).
8. fixed-time/dead-man progress trigger 미사용 → `FORBIDDEN_TRIGGER_SOURCE`.
9·10. deterministic `event_id` de-dup + per-task/per-batch dedupe + pure
   read-only → idempotent(동일 event 다회/2회 run 중복 0).
11. 결과 decision/result/runtime-event-loop-result JSON.
12. 권한 경계: `authority=none`, `action_mode=proposal` — 자동 dispatch/
    merge/write 0.

핵심 원칙: schedule_history=audit / durable registry=state source / event
loop=progress trigger / cron-list≠권위 / fallback=안전망≠진행트리거.

## 3. 실 적용 (dogfood)

실 `callback_4tuple_index.jsonl`(12라인, +53 durable-success 3/3) →
`RuntimeEventLoop.run` → **verdict=ALL_SETTLED**, all_settled=true,
all_authoritative_pass=true, consolidated summary candidate 1,
ANU-key dispatch candidate 1(proposal). registry sha256 pre==post
(`388c2c9d…`) — **read-only consumer 확정**(write 0).
→ `memory/events/task-2553.runtime-event-loop-result_260518.json`.

## 4. Regression (§4 1~16, 실 entrypoint 직접 호출)

`tests/regression/test_runtime_event_loop_2553plus54.py` **18 passed**
(mock-only 0). 1 single READY · 2 batch WAIT · 3 batch ALL_SETTLED · 4
consolidated candidate · 5 fallback 비차단 · 6 dead-man dup 중복 0 · 7
2회 run idempotent · 8 self-chain quarantine · 9 non-ANU HOLD · 10
forbidden trigger FAIL · 11 missing registry recovery · 12 mismatch
TRACK_MISMATCH/HOLD · 13 proposal-only · 14 ANU-key dispatch candidate ·
15 실 +50/+51/+52 all-settled 재현 · 16 +53 result→event loop→summary
READY 재현.

무회귀: +44/+47/+49/+53 합산 +54 추가 시 122→**140 passed**(정확히 +18
신규).

## 5. PRE-EXISTING 단일 FAIL 투명 보고 (silent skip 아님)

`test_callback_owner_validation_2553plus49.py::RealPathGuardWiring::
test_23_registration_helper_guard_called_and_raises` 1건 FAIL — 단,

- **+54 부재 조건**(`-k "2553plus44 or 47 or 49 or 53"`, +54 제외)에서도
  **동일하게 1 failed 재현**.
- **+49 validation suite 단독 실행 시 19/19 PASS**, 해당 test 단독 PASS.

→ 다른 2553plus* suite 와 합산 실행 시 발생하는 **교차 테스트 상태 오염
(PRE-EXISTING)**, task-2553+54 와 무관하며 +54 가 깬 것이 아님. §6 HOLD
조건 "기존 +44/+47/+49/+53 regression 깨짐" 미충족(원인이 본 task 아님).
silent skip 하지 않고 투명 기록.

## 6. 불변식

- git HEAD `20456b5f83fc039f2fd6f50f4b94095c29b41bfb` · branch
  `task/task-2553p1-f1-clean-replacement` 전후 EQUAL.
- `callback_4tuple_index.jsonl` byte-0 (sha `388c2c9d…`, 12라인) —
  read-only consume, write-back 로직 신설 0(+53 소관).
- `anu_v3/callback_4tuple_registry.py` `774d5506…` byte-0 (+44 소관·9-R.1
  carve-out 미사용), `callback_event_trigger.py` `352ad0f5…` byte-0,
  policy_profile_engine·parallel_batch_coordinator·+50/+51/+52/+53 산출물
  byte-0 무변.
- expected_files allowlist 외 write 0. 신규 untracked 파일만 추가, 기존
  predecessor 모듈 0 수정. 불가피 read helper escalation 불필요(9-R.1).

## 7. 권한 경계 / executor self 0

event loop = 감지·평가·proposal 까지만 자동. 실 dispatch/merge/write 0.
executor self key(109fa85250c6d46b) 결과 JSON 전체 미등장. 회수·검증·
Codex audit·ANU-Codex adjudication·next_action/batch settle/consolidated
인지 = 독립 ANU key c119085addb0f8b7 세션이 §2 event loop 로 dogfood 수행.
executor 자가심사/자가Codex/자가collector/신규 dispatch/delegation 0.
완료 직후 normal completion callback = 독립 ANU key c119085addb0f8b7
(chat 6937032012)로만 발사.
