# PR #243 — MEDIUM known-backlog resolve 후보 + merge 후보 packet (260617)

상태: `PR243_LEDGER_ROBUSTNESS_MEDIUM_KNOWN_BACKLOG_PENDING_CI_ACTIVE_FALSE` (CI는 이제 GREEN) · ACTIVE=false · ★merge/resolve 실행 0 — 준비/보고만

## 1. PR #243 (head 6db9c44c, base main f641cd58)
move-first 최소 replacement(replaces #242). ledger compaction/robustness 축 제거, move-first 불변식만 보존.

## 2. CI 최종 상태
- **11/11 pass · fail 0 · pending 0 (GREEN)** · phase3-merge-gate pass · gemini-review-gate pass
- mergeState **BLOCKED** (원인 = unresolved Gemini thread, branch protection ruleset의 conversation 요구. CI/충돌 아님)

## 3. Gemini inline — CRITICAL/HIGH 0
- **CRITICAL 0 / HIGH 0 / MEDIUM 3 / LOW 0**
- MEDIUM 3 = 실제 **2개 항목**(중복 1):
  - **M-A** `anu_pickup_driver.py:1726` (×2, #1·#3 동일): ledger corrupt/incomplete entry에서 task_id/source_result_sha256가 None/비-문자열 → `(None,None)` seen 오염(dedup)
  - **M-B** `anu_pickup_driver.py:1834`: ledger 상대경로 dir 컴포넌트 없을 때 `os.makedirs("")` → FileNotFoundError(empty dirname)

## 4. MEDIUM 2가 DESIGN_BACKLOG known non-blocking인 근거
- 둘 다 **ledger robustness 축** = `P0B_LEDGER_ROBUSTNESS_DESIGN_BACKLOG`로 **이미 설계적으로 분리 승인**된 항목.
- PR #243 목표 = ledger robustness 완성 **아님**, **move-first 최소 불변식 보존**.
- 이 항목을 다시 코드로 고치면 PR #242의 compaction/self-healing whack-a-mole로 복귀(입증됨).
- ★ 이것은 "MEDIUM 재발 무시"가 **아니라**, 의도적으로 제거하고 backlog로 분리한 항목의 **반복 노출**. move-first 불변식 결함 0.

## 5. 추가 코드 수정 0 근거
- M-A/M-B는 우리가 제거한 robustness 방어의 부재 지적 → 넣으면 whack-a-mole. 따라서 **추가 수정 0**이 설계상 옳음.
- ★ 영구 known backlog: 다음 cycle에 같은 항목 재지적돼도 추가 수정 안 함(move-first 불변식 깨는 새 지적이면 그때 STOP_REPORT).

## 6. 안전 확인 (단발 read-only)
- expected_files 2파일(`anu_pickup_driver.py`·`test_p0b_event_strategy_2760.py`) 유지 · 밖 수정 **0**
- forbidden 0 · secret/raw key 0 · matching 재도입 0
- canary 0 · systemd enable 0 · admin override 0 · activation 0 · **ACTIVE=false**
- 추가 코드 수정 0 · canonical f641cd58 무변경

## 7. merge 후보 여부
**MERGE_READY_CANDIDATE** — CI GREEN(11/11) + CRITICAL/HIGH 0 + expected_files 유지 + forbidden/secret 0 + move-first 불변식 보존 충족.
단 mergeState BLOCKED 해소엔 **MEDIUM 2(M-A/M-B) thread resolve** 필요(non-blocking accepted 근거 코멘트와 함께). resolve는 회장 승인 범위 내, merge는 별도 승인.

## 8. 제안 (회장 결정)
- (a) MEDIUM 2 thread를 **DESIGN_BACKLOG known non-blocking accepted** 근거 코멘트와 함께 resolve → mergeState 해소 (task-2758 MEDIUM 10 resolve와 동일 패턴, 기존 권한 범위)
- (b) 그 후 PR #243 merge (★별도 회장 승인 필요 — 본 packet은 준비만)
- ledger robustness M-A/M-B는 `P0B_LEDGER_ROBUSTNESS_DESIGN_BACKLOG`로 영구 분류(별도 goal_id, _coerce와 통합 후보).
