# PR #262 — Gemini HIGH evidence-resolve packet (OWNER, GPT 승인)

상태명: `PR262_DUPLICATE_HIGH_EVIDENCE_RESOLVE_PACKET_ACTIVE_FALSE`
작성: ANU 직접 (2026-07-02 KST). 근거: 회장 GPT 판정(중복/해소 HIGH를 evidence-based OWNER resolve 승인 · 진짜 신규 HIGH 있으면 STOP · MEDIUM backlog). head=`22bec5f5`.

## 판정 요약
PR #262의 unresolved Gemini HIGH 2건은 **둘 다 현재 head 코드로 이미 해소**됨 → 중복/outdated. 진짜 신규 HIGH/CRITICAL **없음**(STOP 조건 아님).

## HIGH #1 — symlink following (thread `PRRT_kwDORcJVSM6Nvtj-`, path utils/replacement_pr_runner.py)
- Gemini 지적: `target`이 symlink면 `write_text()`가 링크를 따라가 대상 파일을 덮어씀 → write 전 `if target.is_symlink(): target.unlink()` 필요.
- Gemini suggestion 코드 == **현재 22bec5f5 코드와 동일**:
```
        resolved_target = target.resolve()
        try:
            resolved_target.relative_to(repo_root)
        except ValueError:
            raise RuntimeError("TARGET_OUTSIDE_REPO_ROOT: ...")   # repo 밖 먼저 fail
        content = sr.stdout or ""
        target.parent.mkdir(parents=True, exist_ok=True)
        if target.is_symlink():      # ← Gemini 제안 그대로 이미 적용됨
            target.unlink()
        target.write_text(content, encoding="utf-8")
```
- 즉 Gemini가 요구한 수정이 **이미 적용**됨(task-2783+2, dev5). 회귀 T19(내부 symlink→regular 교체·victim 불변)·T20(외부 symlink→TARGET_OUTSIDE fail·미삭제·외부파일 불변)로 검증. → **duplicate/resolved.**

## HIGH #2 — EMPTY_OVERWRITE_REFUSED 과차단 (thread `PRRT_kwDORcJVSM6Nr243`, commit 62ea27ae, **outdated**)
- Gemini 지적: `EMPTY_OVERWRITE_REFUSED` guard가 정상 empty-file PR을 과차단(false-positive) → 제거 권고.
- 현재 코드: **해당 guard 제거됨**(task-2783+1, dev4). rc0+empty=정상 empty blob 허용, `GIT_SHOW_FAILED`(rc!=0)로 진짜 위험만 방어. T17(empty blob 허용)·T17b(git show 실패 fail-closed 보존)로 검증. → **outdated/resolved.**

## 남은 리스크 명시 (resolve와 별개)
- **WORKSPACE fallback(`cwd = repo_dir or str(WORKSPACE)`) 구조적 위험은 이 PR에서 미해결** → P1 후속 task(`p1_workspace_fallback_removal_design_260702.md`). merge≠구조위험 해소.

## MEDIUM (backlog, merge blocker 아님)
- `test:588`·`test:623`(22bec5f5): T19/T20의 `symlink_to`가 **Windows에선 관리자 권한 필요**(portability). 현재 Linux runner·CI green 기준 merge 무관 → **Windows symlink portability backlog** 기록.
- `test:518`(62ea27ae, outdated) MED: 구 T17 관련, 코드 변경으로 stale.

## resolve 대상 (GPT 승인)
- HIGH #1 `PRRT_kwDORcJVSM6Nvtj-` (symlink duplicate) → resolve
- HIGH #2 `PRRT_kwDORcJVSM6Nr243` (EMPTY_OVERWRITE outdated) → resolve
- MED 3건 → **미resolve(backlog 유지)**

## resolve 후 목표
unresolved HIGH = 0 → merge 승인 packet(head 22bec5f5 · diff 2파일 · CI green · HIGH0 · mergeable clean) → 회장 승인 후 gh merge.
