# task-2553+17 — ANU_PARALLEL_BATCH_COORDINATOR_V0 + GOAL_DRIVEN_LOOP_GENERALIZATION (Track 2+3, 회장 GO, 코드/파일 자동화)

> **Lv**: Lv.4 — 신규 anu_v3 인프라 구현. **Executor**: dev1-team 헤르메스 (key c38fb9955616e24d) 1회 한정. **TTL**: 2h.
> **상태**: 회장 Track 2+3 GO — 병렬 batch 통합 관리 계층 + goal-driven loop 일반화(최소) 구현. Track 3 = Track 2 결합(충돌 sub-feature 만 follow-up 분리). md 박제만 금지 — 실행 코드+schema+fixture+regression+result JSON 필수. 중간 회장 보고 0.
> **선행**: task-2553 계열 markers(fixture source, read-only). Track 1(task-2553+16) 비대기·독립(SAFE_PARALLEL).

---

## 1. 목표 (회장 verbatim)

병렬 task 실행 시 각 track 의 상태·callback·dependency·final authority packet·cross-contamination·next action 을 **단일 batch state 로 통합 관리**하는 코드/파일 자동화 계층. + (Track 3) 회장이 goal+boundary+policy_profile 만 주면 ANU 가 각 track 의 Codex lint/refinement/impl/audit/adjudication/callback/next-action loop 를 자동 구성하는 구조를 코드/파일로 표현. batch coordinator 는 여러 goal track 을 받아 병렬가능=병렬·각 track loop 목표진행·결과 batch state 통합·회장 최종 decision 만.

## 2. 필수 구현 (회장 verbatim — 신규 anu_v3 infra, 기존 frozen anchor 무변)

parallel batch plan schema / batch state schema / track result schema / callback 4-tuple registry / dependency matrix / expected_files overlap checker / forbidden_write_targets overlap checker / cross-track contamination checker / final authority packet selector / duplicate·pending fallback classifier / track-level loop state machine / batch-level next-action planner / consolidated summary writer. + (Track3) goal_request schema / track_goal binding / policy_profile binding / loop_plan generator / next_action resolver / HOLD condition resolver / final packet schema resolver.

## 3. expected_files (회장 후보 + Track3 최소)

`anu_v3/parallel_batch_coordinator.py` / `anu_v3/batch_dependency_matrix.py` / `anu_v3/callback_track_registry.py` / `anu_v3/batch_join_policy.py` / `anu_v3/track_loop_state.py` / `anu_v3/goal_loop_planner.py`(Track3 minimal) / `schemas/parallel_batch_plan.schema.json` / `schemas/parallel_batch_state.schema.json` / `schemas/track_result.schema.json` / `schemas/goal_request.schema.json`(Track3) / `tests/regression/test_parallel_batch_coordinator_2553.py` / `memory/fixtures/task-2553.parallel-batch.fixture.json` / `memory/events/task-2553.parallel-batch-state.json` / `memory/reports/task-2553.parallel-batch-summary.md` / `memory/events/task-2553+17.{activation-decision,hold-for-chair(조건부),result}.json` / `memory/reports/task-2553+17.md`.

## 4. 필수 기능 11 + Track3 (회장 verbatim)

1. batch_id 생성 2. 4-tuple(track_id/task_id/dispatch_cron_id/normal_collector_cron_id/fallback_callback_cron_id) 등록 3. dependency matrix 4. expected_files overlap 검사 5. forbidden_write_targets overlap 검사 6. shared artifact contamination 검사 7. track별 final authority packet 지정 8. duplicate/fallback/pending callback 분류 9. **track loop state machine 13상태**: PLANNED·DISPATCHED·RUNNING·NORMAL_COLLECTOR_COMPLETED·CODEX_AUDIT_PENDING·ANU_ADJUDICATION_PENDING·AUTO_MICRO_FIX·RETRY_WITHIN_SCOPE·ACCEPTED·LANDING_PENDING·MERGE_READY·MERGED·HOLD_FOR_CHAIR 10. batch-level next action 11. 회장용 consolidated final summary 생성. **Track3**: goal_request→track_goal·policy_profile binding→loop_plan generator(lint→refine→re-lint→impl→audit→adjudication→callback→next 자동구성)→next_action·HOLD·final-packet resolver. batch coordinator 와 연결(여러 goal track→병렬가능 병렬·loop 목표진행·batch state 통합·최종 decision만).

## 5. fixture = task-2553 계열 (회장 verbatim — 실증)

`memory/fixtures/task-2553.parallel-batch.fixture.json` 최소 포함: +13 Track A closeout/ACCEPTED · +15 Track B landing/PR#129 OPEN · +9a callback cancel dry-run/PASS · +9 PR#128 open/ACCEPTED · +11 Gemini resolve/MERGE_READY · +12 PR#128 merge/post-merge smoke harness HOLD · +14 Track B 하드닝/PASS · duplicated fallback cases · pending fallback cases. 실 마커(memory/events/task-2553*.json) 읽어 fixture 구성(read-only).

## 6. 검증 (회장 verbatim 11 — regression 으로 실증)

`tests/regression/test_parallel_batch_coordinator_2553.py`: ① A↔B contamination 0 독립 ② A 완료가 B 비대기 ③ B가 A closeout 무수정 ④ 4-tuple mismatch→TRACK_MISMATCH ⑤ normal 선행 후 fallback→DUPLICATE_CALLBACK_IGNORED ⑥ pending fallback 이 회장 decision 비차단 ⑦ final authority packet task별 정확 선택 ⑧ batch summary 가 회장 최종 decision 만 압축 ⑨ 각 track 목표달성 loop 진행 표현 ⑩ 한 track HOLD가 독립 track 비차단 ⑪ cross-track contamination→batch-level HOLD 격상. 전건 PASS 필수.

## 7. boundary

기존 anu_v3 frozen anchor(pre_authorized_*·isolated_worktree_evidence·goal_activation_controller·pre_authorized_activation_runner·branch_ref_allocator·utils/anu_delegation_completion_callback·completion_callback_fallback_cancel) **byte-0**(신규 파일 추가만, import 결합 시에도 기존 파일 무변) / production·F2·phase3·mqe 무변 / **GitHub write 일체 0**(T23=코드 구현·로컬 파일만) / Track 1 expected_files(schemas/policy_profiles·task-2553+16.*) 무접촉 / Track A closeout 무접촉 / credential·OWNER PAT 0 / live `/home/jay/workspace` invariant **= 9-R.1 정의 적용**(git tracked HEAD/branch/ref SHA + 기존 frozen anchor sha 전후 assertEqual; 신규 추가 파일은 deliverable 로 invariant 대상 제외 — §7 본 문구는 9-R.1 에 종속). Track3 generalization 이 Track2 와 근본 충돌 시 → 충돌 sub-feature follow-up 분리(나머지 진행), 분리도 불가 시 HOLD.

## 8. HOLD_FOR_CHAIR

기존 anu_v3 frozen anchor 변경 필요 / GitHub write 필요 / Track 1 도메인 touch 필요 / Codex unresolved HIGH·CRITICAL / ANU-Codex 반복충돌 / goal 달성불가 / Track3 분리 불가 근본충돌 / Critical7. 그 외(LOW·MED·micro-fix·fixture·regression 보강) loop 자동·회장 보고 0.

## 9. 완료 후 (consolidated summary 통합 — 단독 보고 금지)

본 track 결과 = batch consolidated summary 항목 2(coordinator 구현: PASS/HOLD_FOR_CHAIR) + 항목 3(goal-loop generalization: PASS/FOLLOW_UP/HOLD_FOR_CHAIR) + 항목 4. 단독 보고 0. `task-2553.parallel-batch-state.json` 에 본 batch(+16/+17 외 task-2553 계열) 4-tuple registry·state 기록(durable, 향후 batch 재사용).

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

batch plan(§3) → Codex lint → ANU refine(9-R) → Codex re-lint → dispatch(dev1 1회 TTL2h, callback (a) normal+fallback, 4-tuple 분리·Track1 artifact 인용 0) → 구현 → regression 11검증 → fixture 실증 → post-result audit → adjudication → result.json → batch coordinator 통합. §8 트리거만 회장 보고.

## 12. 9-R — Codex lint 반영 (NEEDS_REFINEMENT → 자동 수렴, agent a18820f208b348b30: CRITICAL0/HIGH3/MED4/LOW1)

### 9-R.1 (HIGH#1) live-tree write vs invariant 모순 해소
live workspace invariant 정의 = **git tracked HEAD/branch/ref SHA + 기존 frozen anchor 파일 byte-0** 불변(task-2553+10 9-R.1/+13 9-R.1 패턴). 본 task 의 **신규 파일 생성**(anu_v3 신규 6모듈·schemas 신규·fixture·task-2553.parallel-batch-state.json·summary·task-2553+17.* marker)은 deliverable 이며 invariant 위반 아님 — 단 ① 기존 tracked 파일 0 변경 ② HEAD/branch/ref SHA 전후 동일 ③ 기존 anu_v3 frozen anchor sha 전후 동일. 구현·테스트는 sandbox/isolated 작업 후 **신규 산출물만** live `memory/`·`anu_v3/`·`schemas/`·`tests/`에 persist(기존 파일 미접촉). assertEqual 대상 = HEAD/branch/ref + frozen anchor sha (신규 파일 추가는 제외).

### 9-R.2 (HIGH#2) callback record 정규화 (4-tuple 모순 해소)
정규 구조 = **`callback_track_record`**: registry 는 `track_id` 키, 각 record = 5필드 `{track_id, task_id, dispatch_cron_id, normal_collector_cron_id, fallback_callback_cron_id}`. 회장 용어 "callback 4-tuple" = 그 중 **callback identity 4필드** `{task_id, dispatch_cron_id, normal_collector_cron_id, fallback_callback_cron_id}`(track_id 는 registry 키). schema(`parallel_batch_state.schema.json`)·fixture·regression 전부 이 단일 정의에 정렬(cardinality 일치). 모든 §2/§4/§9 "4-tuple" 참조 = 본 정의.

### 9-R.3 (HIGH#3) 13-state transition table 명세
`track_loop_state.py` 에 transition table 필수: 허용 predecessor/successor·terminal(ACCEPTED/MERGED/HOLD_FOR_CHAIR = terminal)·retry ceiling(RETRY_WITHIN_SCOPE max N, profile/goal 정의)·precedence(**HOLD_FOR_CHAIR > RETRY_WITHIN_SCOPE > AUTO_MICRO_FIX**)·callback precedence(NORMAL_COLLECTOR_COMPLETED 선행 시 fallback=DUPLICATE_CALLBACK_IGNORED). 불법 전이 reject. regression(§6)이 transition table 합법/불법/terminal/precedence 케이스 전부 검증.

### 9-R.4 (MED) frozen-anchor pre/post sha256 증거 의무
§7 보강: 기존 anu_v3 frozen anchor(10개 열거) + 본 task 미대상 기존 파일 pre/post **sha256 캡처**, `task-2553+17.result.json` 에 anchor별 before==after 증거 기록(1개 불일치 → HOLD). 신규 모듈이 frozen 모듈 import 시에도 frozen 파일 무수정 정적 증명.

### 9-R.5 (MED) fixture provenance·immutability
§5 보강: 소스 마커 glob 명시(`memory/events/task-2553*.json`·`task-2553+*.result.json` 등), 읽은 각 소스 마커 path+sha256(또는 mtime) 를 fixture 에 provenance 로 기록. fixture 조립 = **소스 마커 read-only**(rewrite 0, 소스 마커 pre/post sha 동일 증명). fixture 는 별도 신규 파일에만 기록.

### 9-R.6 (MED) selector/classifier 결정적 규칙
`final_authority_packet_selector`: task별 authority = result.json(schema anu_*_result/final_packet) 우선, 동일 task 복수 packet 시 **normal collector 산출 > fallback 산출**, ts 최신. `duplicate·pending fallback classifier`: normal collector 선행 완료 → 후행 fallback = DUPLICATE_CALLBACK_IGNORED / fallback 만 존재·normal 부재 → CALLBACK_PENDING(회장 decision 비차단 조건 = 해당 track 의 authority packet 이 normal 경로로 이미 확정됐거나 batch 최종 decision 이 그 track 에 비의존) / 4-tuple cron_id mismatch → TRACK_MISMATCH / cross-track artifact 인용 → batch-level CONTAMINATION_HOLD. 전부 deterministic·tie-breaker 명시·regression 검증.

### 9-R.7 (MED+LOW) Track3 split 경계 + bootstrap 비자기참조 명시
Track3 fold-in 결정룰: Track2 필수기능 11 중 하나라도 Track3 generalization 으로 인해 구현 불가/오염되면 = "근본 충돌" → 그 **generalization sub-feature 만** follow-up task 후보로 분리(Track2 필수 11 전부 보존·무손실 진행), 분리 후에도 Track2 필수기능 손상 불가피하면 HOLD. Track2 필수기능은 어떤 경우도 silent drop 0. **§10 명시**: 본 construction batch 는 ANU 수동 coordination(미구현 coordinator 가 자기 build/adjudication 관리 0 — bootstrap paradox 회피); 신규 coordinator 는 향후 batch 용, 본 task-2553 계열은 fixture·검증 대상일 뿐 실관리 대상 아님.

→ 9-R.1~9-R.7 로 HIGH3+MED4+LOW1 해소. CRITICAL0. Codex re-lint GO_READY 시 dispatch.

## 11. task-2553 계열

+15=Track B landing PR#129 OPEN / +16=Track1 PR#129 merge lifecycle(병렬) / **+17(Track2+3 본건)=ANU_PARALLEL_BATCH_COORDINATOR_V0 + goal-driven loop generalization(minimal, 충돌 sub→follow-up)**.
