# CODE_ROOT_NORMALIZATION_PACKET (read-only 설계 — 실제 git 조작 회장 승인 전 0)

작성: 2026-06-10 KST / ANU 직접 read-only / 대상: /home/jay/p0b-pickup-main
상태: `TASK2730_CODE_MERGED_ACTIVE_FALSE_CLOSEOUT_SEPARATION_PENDING`
목적: PR #199 merge 후 CODE_ROOT 가 r2 브랜치로 parked 된 상태 → 다음 dispatch worktree base 오염 방지를 위한 정상화 **설계만**. checkout/reset/clean/stash/branch 변경 실행 = 회장 별도 승인.

## 1. 현재 branch / head
- CODE_ROOT: `/home/jay/p0b-pickup-main` (메인 worktree)
- 현재 branch: **task/task-2730-r2-dev2**
- 현재 HEAD: **52f44673** (task-2730-r2 dir-guard fixes)
- working tree: `?? memory/reports/task-2730-r2.md` (untracked, dev2 생성 report — tracked 변경 0)

## 2. expected target
- CODE_ROOT 는 **clean origin/main** 이어야 다음 dispatch 가 안전한 worktree base 로 사용 가능.
- target: **origin/main = 95941e4e** (PR #199 merge 후 HEAD, task-2730 전체 + dir-guard fix 포함).
- 즉 CODE_ROOT 를 `main`(또는 95941e4e) 으로 전환 + working tree clean.

## 3. 변경 필요성 (위험 근거)
- 현재 CODE_ROOT 가 r2 브랜치(52f44673)로 parked → 다음 dispatch 가 `CODE_ROOT 에서 worktree 분기` 시 **r2 브랜치 base 로 오염**(origin/main 아닌 52f44673 기준 worktree 생성 위험).
- ★ 안전 근거: `git merge-base --is-ancestor 52f44673 origin/main` = **false**(squash merge 특성 — 52f44673 commit 은 ancestor 아님). 단 **내용은 95941e4e 에 전부 squash 반영**(dir-guard fix L395/L456 + task-2730 신규 3파일 origin/main 존재 확인). → 정상화 시 **r2 브랜치 변경 손실 0**(내용 이미 main).
- untracked `task-2730-r2.md` = dev2 report. 정상화 전 보존 필요(삭제 금지).

## 4. 정상화 절차 (설계 — 실행 회장 승인 후)
1. untracked `memory/reports/task-2730-r2.md` 보존: canonical(`/home/jay/workspace/memory/reports/`)로 복사 또는 안전 위치 백업.
2. `git fetch origin main` (최신 95941e4e 확인).
3. `git checkout main` → `git reset --hard origin/main`(95941e4e) **또는** `git checkout 95941e4e`(detached).
4. working tree clean 확인(`git status` 빈 상태).
5. r2 로컬 브랜치(task/task-2730-r2-dev2) = 삭제 가능(내용 main 반영) 또는 보존(reflog). **삭제는 선택·회장 결정**.
6. 다음 dispatch worktree base = clean origin/main 확인.

## 5. 금지사항 (현재)
- checkout / reset / clean / stash / branch 변경 / branch 삭제 = **회장 별도 승인 전 0**.
- untracked report 삭제 금지(보존).
- canonical(`/home/jay/workspace`) 무관(별개 repo, 본 packet 대상 아님).
- PR #198/#199 branch 조작 금지.

## 6. rollback 기준
- 정상화(reset --hard origin/main) 후 문제 발생 시: r2 브랜치(52f44673)는 **reflog 로 복원 가능**(로컬 ref 보존 시) + 내용은 origin/main(95941e4e)에 이미 있어 코드 손실 0.
- untracked report 백업본으로 복원.
- 정상화는 **idempotent**(이미 clean origin/main 이면 no-op).
- 실패 시 abort → 현 parked 상태(52f44673) 유지(merge 결과 무영향).

## 7. 위험도 판정
- 정상화 미수행 시: 다음 dispatch CODE_ROOT base 오염(중간 위험). 단 각 dispatch 가 worktree 분기 시 base 명시하면 회피 가능.
- 정상화 수행 시: 내용 손실 0(squash 반영 확인), untracked report 보존만 주의.
- → **정상화 권장하나 긴급 아님. 회장 승인 시 §4 절차로 실행.**

## 판정
- **CODE_ROOT_NORMALIZATION_PACKET_READY** (read-only 설계). 현재 r2 parked(52f44673) → target clean origin/main(95941e4e). 내용 squash 반영 확인(손실 0). untracked report 보존 필요. 실제 git 조작(checkout/reset/clean/branch) = 회장 별도 승인. ACTIVE=false 무관(코드 base 정상화, activation 아님).
