# task-2553+30 — TRACK B: parallel_batch_coordinator v0 일반화 (회장 GO, 코드/파일 자동화, NO-CRON)

> **Lv**: Lv.4 — generic batch coordinator (실행코드/schema/fixture/regression/decision·result JSON). **Executor**: dev4-team 비슈누 (key 7943afbe12c12f7d) 1회 한정. **TTL**: 2.5h.
> **상태**: 회장 GO Track B — +26~+29 batch closeout ACCEPT(후속 대기열 B 진입). 본 task = parallel_batch_coordinator v0 를 **일반화** — 향후 병렬 작업 발생 시 ANU 가 track별 상태·callback·fallback·dependency·loop 진행·final authority packet·closeout 가능 여부를 **자동 통합**하도록 코드/파일 자동화. **md 문서화 아님 — 실행코드·schema·fixture·regression·decision/result JSON 필수.** fixture = 이번 +26~+29 batch closeout.
> **선행**: +29 runtime registry(read-only 보조 계층, ACCEPT)·+26~+29 batch closeout(`task-2553.batch-closeout-decision_260517.json`·`.result.json`·consolidated summary). **NO-CRON**(회장 §금지 "cron 신규 등록/제거" → +29 정합 변형). **후속**: Track C(policy profile engine 일반화) = +26 MERGED 확정으로 진입 가능, 별도.

---

## 1. 확정 전제 (변경 불가)

batch closeout CLOSED_CONFIRMED: +26 MERGED·+27 PASS·+28 DONE·+29 ACCEPT, HOLD0/Critical7 0/contamination 0, frozen byte-0(anu_delegation_completion_callback.py 83b3e307…·durable v1 parallel-batch-state.json fe705d84… read-only), git tracked HEAD 20456b5f EQUAL. +29 registry = read-only 보조 무권한(merge/write/closeout 확정/collector 강제 0).

## 2. 목표 (회장 verbatim)

parallel_batch_coordinator v0 를 일반화하여, 앞으로 병렬 작업이 발생하면 ANU 가 **track별 상태·callback·fallback·dependency·loop 진행·final authority packet·closeout 가능 여부를 자동 통합**하도록 코드/파일 자동화하라. 이번 +26~+29 batch closeout 을 fixture 로 사용.

## 3. 원칙 (회장 verbatim)

- 실행은 병렬
- 각 track 은 goal 달성까지 ANU-Codex loop
- 판단은 batch coordinator 가 통합
- 회장은 최종 decision 만
- 문서화만 금지, 코드/파일 자동화 산출물 필수

## 4. 필수 구현 (회장 verbatim)

- generic batch plan schema
- generic batch state schema
- track runtime record schema
- callback 4-tuple registry
- dependency / expected_files overlap checker
- forbidden target overlap checker
- result-ready-no-normal-callback classifier
- pending fallback non-blocking rule
- track-level loop state machine
- batch-level next action resolver
- final authority packet selector
- consolidated summary generator

**일반화 방식**: +29 registry(read-only) 를 재사용·확장한 **generic 계층**(신규 generic 모듈 + schema). 기존 `anu_v3/parallel_batch_coordinator.py`·+17/+19/+29 API 무회귀(additive 일반화 — break 0). 회장 durable v1 `memory/events/task-2553.parallel-batch-state.json` **read-only**(mutation·overwrite·coupling 0). generic batch_state 권위 파일 = **신규 별도 경로**(예: `memory/events/task-2553.generic-batch-state.json`), durable v1 과 별개.

## 5. 필수 regression (회장 verbatim)

- +26 MERGED, +27 PASS, +28 DONE, +29 ACCEPT 를 하나의 batch_state 로 표현
- normal callback missing but result ready → RESULT_READY_NO_NORMAL_CALLBACK
- pending fallback after result ready → non-blocking
- fallback duplicate → DUPLICATE_CALLBACK_IGNORED
- 4-tuple mismatch → TRACK_MISMATCH
- cross-track contamination → BATCH_HOLD
- one track HOLD does not block independent accepted track
- closeout eligible 가 evidence 기반으로 산출됨
- coordinator 는 merge/write/cron/closeout 을 직접 수행하지 않음

## 6. 금지 (회장 verbatim — D-SPEC-EXACTNESS 원문 박제)

- PR/branch/main write
- merge
- cron 신규 등록/제거
- dev 재가동
- credential/OWNER PAT 조작
- +26/+27/+28/+29 원본 산출물 수정
- evidence 없는 closeout 확정

추가 scope: executor 자기작업중 신규 dispatch·delegation·executor handoff 0 / `parallel_batch_coordinator.py`·+17/+19/+29 기존 API break 0(additive 일반화만) / 회장 durable v1 parallel-batch-state.json·frozen anu_delegation_completion_callback.py(83b3e307…)·anu_v3 frozen 무변 / live `/home/jay/workspace`(repo root) git tracked HEAD/branch/ref(`task/task-2553p1-f1-clean-replacement` `20456b5f`) 전후 assertEqual(task-2553+30.*·신규 generic 모듈/schema/tests=git-untracked, 위반 아님).

## 7. NO-CRON 변형 (callback (a) — 회장 §금지 "cron 신규 등록/제거" 우선)

본 task 어떤 cron 도 신규 등록·제거 0(executor normal-collector cron 0, fallback cron 0). 회수 = 정상종료 시 `memory/events/task-2553+30.result.json` + `memory/events/task-2553+30.done` 산출 + generic coordinator/registry 의 reconcile read(dogfooding — +29 와 동일 패턴). callback (a) 시스템 아키텍처(primary completion callback→collector→loop / fallback dead-man / cancel-on-success)는 **폐기·변경 0** — 본 task 는 그 위 보조·통합 일반화 계층.

## 8. HOLD_FOR_CHAIR

generic coordinator 가 +26~+29 fixture 를 일관 표현 못함 / callback 4-tuple ambiguity / cross-track contamination 발견 / Codex HIGH·CRITICAL unresolved / expected_files·forbidden target 충돌 / 구현에 credential·write 권한 필요 / 기존 coordinator API break 불가피 / evidence 없는 closeout 필요 / 회장 durable v1 mutation 필요 / Critical7.

## 9. 무변경 anchor (byte-0)

`memory/events/task-2553.parallel-batch-state.json`(회장 durable v1, read-only)·`utils/anu_delegation_completion_callback.py` sha `83b3e307c8207c76a3e311c408aab4951373bd317896e51687d3007907b0c3d4`·anu_v3 frozen·+22/+24/+25/+26/+27/+28/+29 원본 산출물 무변. 기존 `anu_v3/parallel_batch_coordinator.py`·+17/+19/+29 API break 0(additive 일반화만 — 신규 generic 모듈이 권위, 기존 import 결합·signature 변경 0).

## 10. 완료 후 보고 (회장 verbatim — consolidated summary 만, 단독·중간 0)

parallel_batch_coordinator v0 PASS/HOLD / regression 결과 / Codex audit / ANU-Codex adjudication / 다음 Track C 진입 가능 여부 — 만 consolidated summary 로 보고.

## 11. ANU-Codex loop + callback (자동, 중간보고 0)

batch plan(§4§5) → Codex lint → ANU refine(9-R) → re-lint → **ANU(orchestrator) 1회 위임**(loop 기계; executor 자기작업중 신규 dispatch·cron·delegation·handoff 0, 필요 시 HOLD_FOR_CHAIR) → generic schemas + 4-tuple registry + overlap/forbidden checker + classifier + non-blocking rule + loop state machine + next-action resolver + authority packet selector + summary generator + regression(§5) → post-result audit → adjudication → result.json + report. **callback (a) +30 NO-CRON 변형(§7)**: cron 0, 회수 = result.json+`.done`+dogfooding. +26~+29 산출물 = **read-only fixture: read/parse/reference 허용, modify/register/overwrite 금지**, batch 통합 ANU 사후. §8 트리거만 회장 보고, 그외 LOW/MED·fixture·regression·false-positive 자동 수렴. 9-R 이 본문에 우선.

## 12. 9-R — Codex lint 반영 (agent ad45f102b4f0751ba: C0/H0/M2/L1 → 자동 수렴)

### 9-R.1 (MED §4/§5/§7/§11) coordinator 컴포넌트 = read-only decision logic
next-action resolver·final authority packet selector·consolidated summary generator·result-ready classifier·overlap/forbidden checker 는 **read-only 결정 로직 — derive/propose/read 만, execute·confirm 0**. 모든 write·report emission·closeout 확정·merge·cron 은 coordinator authority 경계 **밖**(회장 결정/ANU additive). §5 "coordinator merge/write/cron/closeout 직접 수행 0" 와 정합 — 컴포넌트는 상태를 산출·제안만.

### 9-R.2 (MED §2/§4/§11) fixture 동사 명시
+26~+29 batch closeout fixture: **read/parse/reference 허용 / modify·register·overwrite 금지**("인용 0" 모호 표현 폐기 — regression·state 표현에 필요한 fixture 데이터 read/parse/reference 는 허용, 원본 변경·register·overwrite 만 금지).

### 9-R.3 (LOW §3/§11) single-dispatch 의미 명확화
초기 ANU→executor 1회 위임 이후 모든 re-lint·refine·loop iteration 은 **동일 단일 ANU orchestration 내**에서 발생, executor-initiated 신규 dispatch 0. "각 track goal 달성까지 loop" = 그 단일 위임 내부 loop 기계(추가 dispatch 아님).

→ 9-R.1~9-R.3 으로 M2+L1 해소. CRITICAL0/HIGH0. 9-R 이 본문에 우선. Codex re-lint GO_READY 시 ANU 1회 위임.

## 13. task-2553 계열

+26 MERGED / +27 PASS / +28 DONE / +29 ACCEPT(registry) / **+30(본건 Track B)=parallel_batch_coordinator v0 일반화** / Track C(profile engine 일반화)=후속 별도.
