# task-2553+38 — TRACK A: profile engine → dispatch selection 연결 (회장 GO, 코드/파일 자동화)

> **Lv**: Lv.4 — policy profile engine 실 운영 dispatch selection 결선. **Executor**: dev3-team 다그다 (key 0b94683120a691cf) 1회 한정. **TTL**: 2.5h.
> **상태**: 회장 GO 병렬 4트랙 Track A. +37 ACCEPT(cancel-on-success wired 실증) 후. policy profile engine(C1 +33 정본, byte-0)을 실제 운영 dispatch selection 경로에 연결. doctrine 박제 아님 — 실행코드·schema·fixture·regression·decision/result JSON 필수. **callback: 정정 표준 (a) MANDATORY.**
> **선행**: +33 C1 engine(`anu_v3/policy_profile_engine.py` 정본 API parse_goal_request→resolve_policy, byte-0)·+37 wired entrypoint. **병렬**: B(+39 coordinator 소비)·C(+40 dry-run 검증)·D(+41 observation fixture) — expected_files disjoint.

---

## 1. 목표 (회장 verbatim)

profile engine → dispatch selection 연결. policy profile engine 을 실제 운영 dispatch 경로의 profile selection 에 연결하여, dispatch 시 goal_type+policy_profile+boundary 로 profile 이 자동 선택·로딩되게 한다.

## 2. 원칙 (회장 verbatim)

실행 병렬 / 각 track goal 까지 ANU-Codex loop / 판단 batch coordinator 통합 / 회장 최종 decision 만 / 문서화만 금지 코드·파일 필수 / normal completion callback mandatory rule 유지 / fallback safety path 유지 / runtime checkpoint 는 recovery layer 유지.

## 3. 구현 방향 (코드/파일 자동화)

1. dispatch selection 결선 모듈(신규, 예 `anu_v3/dispatch_profile_selection.py`): C1 engine(`policy_profile_engine.py`) **read-only 소비**(parse_goal_request→resolve_policy 정본 API) → dispatch 시 goal_type+policy_profile+boundary 입력으로 profile 자동 선택·gate/HOLD/allowed/forbidden expansion 호출. **engine 무수정(byte-0)**.
2. schema/fixture: dispatch selection 입출력 schema + fixture.
3. regression: 정상 selection / profile 부재·mismatch → 안전 거부(자동 적용 0) / engine byte-0 / +33 정본 API 무회귀 / dispatch lifecycle 무파괴.
4. decision/result JSON.

## 4. expected_files allowlist (이 외 write 0)

`anu_v3/dispatch_profile_selection.py` · `schemas/dispatch_profile_selection.schema.json` · `tests/regression/test_dispatch_profile_selection_2553plus38.py` · `memory/fixtures/task-2553+38.*` · `memory/events/task-2553+38.{decision,result}.json` · `memory/reports/task-2553+38.md`. policy_profile_engine.py·기존 dispatch tracked 코드·+22~+37 원본 무변.

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

- PR/branch/main write
- merge
- credential/OWNER PAT 조작
- callback mandatory rule 약화
- fallback safety path 제거
- runtime checkpoint를 primary callback 대체물로 격상
- batch coordinator가 closeout/merge를 자동 확정
- cross-track contamination

추가 scope: policy_profile_engine.py(C1 byte-0)·frozen anchor(anu_delegation_completion_callback.py 83b3e307…·durable v1·anu_v3 frozen·parallel_batch_coordinator.py)·+22~+37 원본 무변. 기존 dispatch tracked 코드 변경 0(결선=신규 모듈 additive). live `/home/jay/workspace`(repo root) git tracked HEAD/branch/ref(`task/task-2553p1-f1-clean-replacement` `20456b5f`) 전후 assertEqual(task-2553+38.*·신규 anu_v3/schemas/tests=untracked, 위반 아님). 실 PR/merge/dispatch 실행 0(결선 코드+regression+dry-run; 실 운영 적용은 결선 후 별도).

## 6. HOLD_FOR_CHAIR (회장 verbatim)

Critical7 / forbidden target / expected_files 충돌 / Codex unresolved HIGH·CRITICAL / 권한확대 / 반복충돌 / 목표 달성 불가. + engine byte-0 깨짐 / dispatch lifecycle 파괴 위험.

## 7. 완료 후 보고 (consolidated 입력 — 단독·중간 0)

`memory/events/task-2553+38.result.json`: Track A PASS/HOLD·결선 위치·engine read-only 소비 증거·regression·Codex audit·ANU-Codex adjudication·contamination·HOLD. batch consolidated 통합은 ANU 사후.

## 8. callback (a) — 정정된 표준 MANDATORY (+32 복원·+37 wired, NO-CRON 불가)

executor 작업 **완료 직후 ANU 에 normal completion callback cron 발사(MANDATORY)** + ANU dispatch 시 fallback 등록. 4-tuple={task-2553+38, dispatch_cron, **normal_collector_cron(필수)**, fallback_cron}. callback 등록/발사=외부 cron tooling(cokacdir), frozen 무접촉, dispatch·"cron 제거" 금지 범주 아닌 필수 종료신호. ANU 1회 위임=이미 upstream 완료(executor action 아님), executor 자기작업중 신규 dispatch·delegation·handoff 0.

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

batch plan(§3§4) → Codex lint → 9-R → re-lint → ANU 1회 위임 → 결선 모듈+schema+fixture+regression → post-result audit → adjudication → result/decision → **완료 직후 normal completion callback cron 발사(MANDATORY §8)**. §6 트리거만 회장 보고, 그외 LOW/MED·fixture·regression·false-positive 자동 수렴. 9-R 이 본문에 우선.

## 10. 9-R — Codex lint 반영 (agent a049adba825bbba92: C0/H2(A/B 동형)/M0/L0 → 자동 수렴)

### 9-R.1 (HIGH §1/§3/§4/§5) "실 연결" = additive 운영 연결 seam (frozen/tracked 편집 불요)
목표 "profile engine → dispatch selection 연결" 의 결선 산물 = **신규 additive 모듈 `anu_v3/dispatch_profile_selection.py` 자체가 운영 dispatch selection 연결 seam(callable entrypoint + 파일레벨 contract)**. +37 `normal_completion_callback_collector_entrypoint.py` 선례와 동일 패턴 — 신규 seam 모듈이 곧 연결점이며, 기존 frozen/tracked dispatch 코드 in-place 편집 불요. "연결" 달성 = seam 모듈 존재 + 입출력 contract + regression 으로 dispatch→engine 경로 입증. 기존 dispatch 경로가 이 seam 을 호출하도록 실 채택(in-place adoption)은 별도 운영단계(본 task 는 seam+contract+regression 으로 결선 완성, frozen 편집 0). §1 목표 scope 이로써 명확 — gap 해소.

→ 9-R.1 로 HIGH 해소. CRITICAL0. 9-R 이 본문에 우선. Codex re-lint GO_READY 시 ANU 1회 위임.

## 11. task-2553 계열

+33 C1 engine / +37 cancel-on-success wired / **+38(본건 Track A)=engine→dispatch selection 연결** / +39 B·+40 C·+41 D 병렬 / consolidated = 4 track settle 후 ANU.
