# task-2606 — Track C: TASK_2553_PLUS58_MICRO_FIX (additive-only) — DONE

- **Spec**: `memory/tasks/task-2606.md` sha256 `842758659aa026280c76d27ba6b20e647a239d2e6b0374ebac33f247a8d59037` — **검증 일치**.
- **Preflight 정본**: `memory/events/task-2604-multitrack-preflight-decision_260519.json` (TrackC, SAFE_PARALLEL, additive-only).
- **9-R**: GO_READY (ANU-Codex lint, HIGH/CRITICAL 0). 독립 task — task-2553+N 아님.
- **모드**: additive-only. 기존 +58 산출물 **byte-0** (in-place edit 0, write 0). 신규 모듈로만 산출.

## 1. Codex 이슈 처리

### HIGH — test15 mock-guard defect → FIXED_ADDITIVE
+58 `test_15` 는 `M.sha256_of(PATH) == _sha(PATH)` 로 **동일 disk 파일을 양변에서 재해시**한다. 실 entrypoint/모듈이 stub 으로 치환돼도 self-hash 가 trivially 일치하므로 stub-only FAIL 을 강제하지 못한다.

신규 `tests/regression/test_fallback_acceptance_2606_hardening.py` (기존 +58 test 파일 무수정):
- +58 산출물 5종을 **test-local 독립 hashlib** 로 계산해 fixture 의 **외부 pinned 상수**와 대조 (모듈 자기해시 아님 — trivial-equality 차단의 핵심).
- 실 entrypoint code-object `co_filename`·`inspect` 소스파일이 실 `SCRIPT_PATH` 임을 검증 (순수 mock 은 source file 부재 → FAIL).
- +58 모듈 자체 hasher `M.sha256_of` 가 pinned 상수와 일치 (정직성, 외부 anchor 대조).
- **MOCK-ONLY FAIL 실증**: `sha256_of` 를 위조한 stub 모듈을 hardening 가드(`assert_real_plus58_entrypoint`)에 넣으면 `AssertionError` 로 거부됨을 직접 검증 — 동시에 그 stub 이 +58 test_15-식 self-check 는 통과함을 보여 결함이 닫혔음을 입증.
- 실 entrypoint 직접 호출 행위 회귀 (criterion b → `OPERATIONAL_PASS`, anti_pattern → `OPERATIONAL_QUALITY_FAIL`).

→ **11 passed**.

### MEDIUM#1 — coherence cross-assert 누락 → FIXED_ADDITIVE
+58 `check_criteria_schema_coherence` 12-check 가 `marked_by_collector_role`·`bound_after_normal_durable_success`·`expected_on_fire` 의 schema↔criteria↔fixture cross-assert 를 누락.

신규 **실 entrypoint** `scripts/validate_fallback_acceptance_2606_coherence_ext.py`:
- 기존 +58 validator 를 **read-only importlib import** (byte-0), 기존 12-check 를 **그대로 재호출**(재구현 0).
- 세 안전필드의 cross-assert 만 additive 보강 (schema const/enum + schema.required + criteria 의미 + +58 fixture 마크 값 일치).
- `base_coherent AND ext_coherent` 일 때만 `coherent=true`. 파일 write 0.

→ 실행 `rc=0`, `coherent=True` (base=True, ext=True, plus58_modified=False, writes=0).

### MEDIUM#2 — runtime callback-actor identity 증명 부재 → NO-CODE-FIX (design-correct)
schema 가 `owner_key`/`chat_id`/`marked_by_collector_role`/`normal_success_unchanged`/`progress_trigger`/`cancel_on_success_applied` 를 self-MARKING const 로 강제 → 비-ANU/위조 마크는 schema-invalid 로 **fail-closed**. 런타임 actor 인증은 +49 코드 정본·durable registry collector_key **다층통제**의 책임 영역이며, 본 acceptance 모듈은 그 산출을 사후 검증하는 오프라인 검증기로 설계됨(scope boundary). 모듈에 runtime actor-auth 추가는 runtime architecture 대형변경·scope 확대로 §3/§6 위반.

→ `memory/events/task-2606.microfix-disposition.json` 에 INFO 로 명시 기록 (silent skip 아님).

## 2. 불변식 검증

- **기존 +58 산출물 byte-0**: 5종 전부 사전=사후 digest 동일 (validator `b3c973d6…`, +58 test `48a8b742…`, schema `5cb2a5df…`, criteria `c2b7fdd5…`, fixture `9e58c577…`).
- **+60 PASS 의미 불변**: `test_fallback_acceptance_2553plus58.py` 재실행 **17 passed**, +58 validator `coherent=True` self_sample 동일.
- **expected_files**: §4 allowlist 7개만 write. allowlist 외 write **0**. Track A/B/D/E 와 **DISJOINT** (preflight TrackC new_paths 와 일치).
- **git HEAD/branch EQUAL**: `20456b5f83fc039f2fd6f50f4b94095c29b41bfb` / `task/task-2553p1-f1-clean-replacement` (PR/branch/main write·merge 0).
- **문서-only 아님**: 실 entrypoint(coherence_ext) + 실 regression(hardening, mock-only FAIL 포함) 산출.
- **callback owner**: 독립 ANU key `c119085addb0f8b7` 만. executor self key `7943afbe12c12f7d` callback/collector 사용 **0** (+49 코드 정본).
- **HOLD_FOR_CHAIR**: 해당 없음 (Critical7 0·Codex unresolved HIGH/CRITICAL 0·기존 산출물 수정 0·self-* 0·진행트리거 0).

## 3. 산출물 (allowlist 7)

- `tests/regression/test_fallback_acceptance_2606_hardening.py` (HIGH, 실 regression)
- `scripts/validate_fallback_acceptance_2606_coherence_ext.py` (MEDIUM#1, 실 entrypoint)
- `memory/fixtures/task-2606.hardening-cases.json` (pinned digest + cross-assert 케이스)
- `memory/events/task-2606.microfix-disposition.json` (MEDIUM#2 INFO + 처리 disposition)
- `memory/events/task-2606.decision.json`
- `memory/events/task-2606.result.json`
- `memory/reports/task-2606.md` (본 보고서)

## 4. next action

normal-callback durable-success event → 독립 ANU key `c119085addb0f8b7` collector cron 등록 (executor self key 절대 금지). authoritative = 독립 ANU only.
