# task-2607 — Track D 완료 보고 (read-only 진단)

**spec sha256**: `624b13bba34a0516bce2170fb773f736c96d5ebb23db01ab86f001e9ddbfd63b` ✓ 일치 확인 후 spec 그대로 수행.

## 결과: PASS — test_23 교차오염 root cause 확정 (수정 0)

### 핵심 결론
`anu_v3.callback_owner_validator` 모듈이 단일 인터프리터 내에서 **2개 이상 인스턴스로 공존** → `CallbackRegistrationBlocked` 예외 클래스 **identity 불일치**.

test_23 traceback 이 단정적 증거: 예외는 `anu_v3/callback_owner_validator.py:157` 에서 정상 raise 되었으나 `self.assertRaises(CallbackRegistrationBlocked)` 가 포착 실패 — 단일 인스턴스라면 불가능. 테스트가 collection 시 바인딩한 클래스(X)와 `cron_dispatch_guard.guard_callback_registration` 의 런타임 lazy-import 가 해석한 클래스(Y)가 서로 다른 모듈 객체에서 옴.

### 4대 구조요인 — 전부 CONFIRMED (코드 read-only 분석)
1. `test_..._2553plus49.py` `_load()` 10모듈 sys.modules pre-seed, **teardown 0**
2. `tests/conftest.py` restore fixture 가 `dispatch`(부모)·`verifiers.*` 만 복원 — pre-loaded 8~10모듈(`anu_v3.callback_owner_validator` 포함) **미커버**
3. unittest.TestCase: 바인딩(collection) vs raise(run) 시점 분리 + ordering 비결정 (Q1·Q2 각 PASS, 합산 FAIL 로 실증)
4. `pyproject.toml` 프로세스/순서 격리 **전무** (`addopts="-v"` 만) → 1879 테스트 단일 sys.modules 공유

### reproduction matrix (실데이터)
- 단독 +49 validation: **19/19 PASS**
- spec 인용 7-suite(44+47+49×4+53) 격리: **123/123 PASS** → 실패는 scope/order 의존 확정
- 전체 `tests/regression/`: **test_23 FAIL 결정론적 재현** (1879 passed / 8 failed / 17 skipped)
- bisection: 오염은 알파벳순 target-선행 H1(10파일) **누적 상호작용** (단일 파일 아님)

### 산출물 (§4 allowlist 한정)
- `memory/reports/task-2607.test23-rootcause.md` — root cause 상세 + traceback 증거
- `memory/events/task-2607.reproduction-matrix.json` — 8행 실증 매트릭스
- `memory/events/task-2607.affected-suites.json` — primary/at-risk/collateral 분리
- `memory/events/task-2607.fix-recommendation.json` — P0/P1/P2 (미적용)
- `memory/events/task-2607.{decision,result}.json`

### 불변 (read-only 준수)
- git HEAD 전후 EQUAL: `20456b5f83fc039f2fd6f50f4b94095c29b41bfb`
- branch: `task/task-2553p1-f1-clean-replacement` 불변
- 진단 대상(tests/·conftest.py·pyproject.toml·task-2553 산출물) **byte-0** — 코드 write 0
- allowlist 외 write 0 (pytest 부산물 __pycache__ 외 없음)
- 문서-only 아님 — reproduction matrix·fix-recommendation 실데이터 포함

### 수정 권고 (별도 GO 필수, 본 task 미적용)
P0(권장): 테스트가 예외 클래스를 lazy-import 와 동일 sys.modules 슬롯에서 동적 해석 — 진단대상 런타임모듈 byte-0 유지·최소표면. 상세 fix-recommendation.json.

### HOLD_FOR_CHAIR
미발동 — 진단 완료에 코드 수정 불필요. (권고안 적용은 별도 GO 필요.)

### callback
완료 직후 **독립 ANU key `c119085addb0f8b7`** (chat 6937032012) 로만 normal completion callback cron 발사. executor self key `fedf78d1d09509f5` callback/collector **절대 금지**(+49 코드 정본). authoritative = 독립 ANU only.
