---
from: 개발팀장
to: PM
type: 실무검토보고서
subject: memory junction HOME 중앙화 근원 해결안 (옵션 A) 실무 검토
date: 2026-04-19
status: 대기
priority: 조직 생존급
관련_PD지시: 개발팀 PD 지시 로그 #40
연관_자산: C34 Live 증분 동기화 / C16-1 PC 독립 셋업 / 헌법 제1원칙 ⑤
---

# memory junction HOME 중앙화 근원 해결안 — 실무 검토 보고서

## 0. 요약 (TL;DR)

1. **결함 실재 확정** — 실측 결과 레포 루트 `memory/org/`와 본 worktree `memory/org/`가 **이미 분기 실체 발생**. 파일 누락·내용 상이 확인. 본 worktree(`tender-liskov-844a72`)는 **user memory junction 자체가 없음** — 더 심각한 단절 상태.
2. **근원 해결 방향 확정** — 옵션 A(HOME 중앙화) 정당성 재확인. C34(`.live/` 중앙 Junction)와 완전 동형 패턴. 헌법 제1원칙 ⑤의 근본 보호장치.
3. **권장 세부 방식** — **옵션 (a) sync 스크립트 방식**을 채택한다 (git symlink 추적 옵션 b 거부 근거 §3.1). 레포 `memory/org/`는 실체 디렉토리 유지, 중앙은 `$HOME/.claude/nerdnavis-memory/`, 양방향 동기화 스크립트 + post-commit·SessionStart hook 자동화.
4. **규칙 체계** — **C34 확장** 권장 (C35 독립 신설 거부 근거 §3.5). C34를 "Live + memory 공통 중앙화 체계"로 재명명·포괄.
5. **집행 순서 9단계** 포함 — 마이그레이션·역방향 sync·기존 PC 역호환·감사 체크 항목 포함. C6-1 백업 의무 선행.

---

## 1. 실측 결함 확정 (근거 데이터)

### 1.1 실측 내역

```
$ for d in "$HOME/.claude/projects/"E--NerdNavisAi*; do ... done
E--NerdNavisAi                                             -> /e/NerdNavisAi/memory/org
E--NerdNavisAi------claude-worktrees-cool-blackwell        -> /e/NerdNavisAi/memory/org
E--NerdNavisAi------claude-worktrees-pensive-ellis         -> /e/NerdNavisAi/memory/org
E--NerdNavisAi------claude-worktrees-vibrant-hellman       -> /e/NerdNavisAi/memory/org
E--NerdNavisAi------claude-worktrees-wizardly-snyder       -> /e/NerdNavisAi/memory/org
E--NerdNavisAi--claude-worktrees-cool-cerf                 -> /e/NerdNavisAi/memory/org
E--NerdNavisAi--claude-worktrees-exciting-shirley          -> /e/NerdNavisAi/memory/org
E--NerdNavisAi--claude-worktrees-inspiring-lichterman      -> /e/NerdNavisAi/memory/org
E--NerdNavisAi--claude-worktrees-quirky-panini             -> /e/NerdNavisAi/memory/org
E--NerdNavisAi--claude-worktrees-trusting-buck             -> /e/NerdNavisAi/memory/org
E--NerdNavisAi--claude-worktrees-tender-liskov-844a72      -> (link 없음 — 결함 실체)
... (이하 23개 worktree 해시 폴더 중 약 13개 junction 부재)
```

### 1.2 결정적 증거 — 내용 분기

```
$ diff -qr /e/NerdNavisAi/memory/org /e/NerdNavisAi/.claude/worktrees/tender-liskov-844a72/memory/org
Files .../MEMORY.md and .../memory/org/MEMORY.md differ
Only in .../tender-liskov-844a72/memory/org: feedback_active_archive_promotion_omission.md
```

본 worktree의 `feedback_active_archive_promotion_omission.md`(2026-04-19 00:11 생성)가 레포 루트에 누락. MEMORY.md도 내용 상이. **즉 다음 commit 시 덮어쓰기 또는 병합 충돌 리스크 실재**.

### 1.3 현 결함의 정확한 유형 3종 (옵션 A 무관 이미 존재)

1. **junction 부재 worktree**: Claude가 user memory Write 시 `$HOME/.claude/projects/E--NerdNavisAi--claude-worktrees-<name>/memory/...`에 **별도 일반 디렉토리로** 기록. git 완전 단절.
2. **junction 존재 worktree**: Write가 레포 루트 `memory/org/`로 기록. 해당 worktree에서는 `git status`에 보이지 않음. 이 상태에서 worktree가 commit 시 구버전 덮어쓰기.
3. **본 worktree의 실체 디렉토리**: `.claude/worktrees/tender-liskov-844a72/memory/org/`도 실체로 존재 — git checkout 시점의 memory/org/를 그대로 포함. 중앙화 전환 시 "어느 것이 정(正)인가" 판정 필수.

### 1.4 `.live/`와의 비교 (왜 `.live/`는 C34로 해결됐고 memory는 안 됐나)

| 축 | `.live/` | `memory/org/` |
|----|----------|---------------|
| git 추적 | **제외** (`.gitignore`에 `.live/*`) | **추적** (git ls-files 31개) |
| 변경 주체 | PM만 Write | Claude user memory 시스템 + 에이전트 |
| 경로 의존 | `$REPO_ROOT/.live/` (상대) | `$HOME/.claude/projects/<hash>/memory` (절대) |
| 중앙화 난이도 | 낮음 (`.gitignore` 제외 덕에 symlink 자유) | 높음 (git 추적 + symlink 양립 설계 필요) |
| 현 해결 상태 | ✅ C34 완료 | ❌ 본 검토 대상 |

이 차이가 **옵션 (b) git symlink 추적안을 거부하는 핵심 근거**이며, **옵션 (a) sync 스크립트 방식의 정당성의 출발점**이다.

---

## 2. PM 1차 설계안 대응 — 9개 검토 항목

### 2.1 검토 1: git-tracked vs junction 양립 — 옵션 (a) vs (b) 결론

**권장: 옵션 (a) sync 스크립트 방식** — 옵션 (b) 거부.

#### 옵션 (a) sync 스크립트 방식 (✅ 권장)

**설계**:
- 실 저장: `$HOME/.claude/nerdnavis-memory/` (C34와 동형, PC 로컬)
- user memory junction: 11개 worktree 해시 폴더의 `memory` link → **중앙** 경로로 재연결
- 레포 `memory/org/`: **실체 디렉토리 유지** (git 추적 정상)
- 동기화: `scripts/sync_memory_to_repo.sh`로 중앙→레포 단방향, `scripts/sync_memory_from_repo.sh`로 레포→중앙 단방향
- 자동화: post-commit hook(레포→중앙 자동 복구), SessionStart hook(pull 후 역방향 sync), UserPromptSubmit hook 고려(PM이 user memory에 쓴 직후 레포 반영)

**장점**:
1. git 추적 정상 — 현 SOT 체계 변경 없음 (`.gitignore` 수정 불필요)
2. PC clone 시 즉시 memory/org/ 접근 가능 (setup 전에도 읽기 가능)
3. 백업·롤백 용이 (레포 실체 vs 중앙 실체 양쪽 다 존재)
4. Windows junction + symlink 호환성 무관 (일반 파일 rsync 수준)
5. C6-1 원본 보호 원칙과 잘 맞음 (중앙·레포 모두 실체이므로 이중 백업)

**단점**:
1. 동기화 스크립트 누락·실패 시 분기 누적 리스크
2. post-commit hook 인프라에 의존 (hook 미실행 환경 대비 fallback 필요)
3. 엔진 복잡도 증가 (C14 토큰 효율 약간 저하)

#### 옵션 (b) git symlink 추적 (❌ 거부)

**거부 근거 5종**:

1. **Windows core.symlinks 이슈**: Windows에서 git symlink는 `core.symlinks=true` + 관리자 권한 필요. PD님 PC 환경이 이 조건을 상시 충족한다는 보장 없음. 새 PC 합류 시 clone 단계에서 symlink가 일반 텍스트 파일로 체크아웃되는 사고 실증 다수.
2. **PC clone 후 setup 전 접근 불가**: clone 직후 setup 스크립트가 실행되기 전까지 `memory/org/` 내 모든 파일이 symlink 텍스트(42바이트 정도)로만 존재. 이 상태에서 PM이 실수로 읽거나 `grep feedback_*`하면 실 내용 미발견.
3. **한국어 경로 호환성**: 한국어 경로(`공유/`·`기획팀/`)와 symlink 조합이 Windows에서 예측 불가능 케이스 다수.
4. **Junction과 Symlink 혼용 리스크**: `.live/`는 Junction(디렉토리)이고 `memory/org/`를 Symlink(파일 단위)로 만들면 두 체계 혼재로 감사·디버그 난이도 증가.
5. **git 히스토리 손상 리스크**: 기존 커밋들이 실 파일로 기록된 상태에서 symlink로 전환하는 대규모 리팩토링은 history rewrite 위험(C19-2 되돌리기 어려움 액션).

### 2.2 검토 2: sync 시점·주체

**권장: 다계층 자동 sync + 수동 비상 스크립트**.

| 시점 | 방식 | 주체 | 방향 |
|------|------|------|------|
| **SessionStart hook** | `sync_memory_repo_to_central.sh` | 자동 | 레포 → 중앙 (pull 직후 중앙 최신화) |
| **post-commit hook** | `sync_memory_central_to_repo.sh` (no-op if 이미 동기) | 자동 | 중앙 → 레포 (commit에 포함할 최신본 보장) |
| **수동 명시** | `scripts/sync_memory.sh both` | 개발자 | 양방향 강제 sync |
| **PM 작업 직후** | (선택) UserPromptSubmit 후처리 | 자동 | 중앙 → 레포 (세션 내 Write 반영) |
| **감사관 주기 체크** | `pm-auditor`·`dev-auditor` | 주기 감사 | 분기 상태 감지 → 자동 복구 요청 |

post-commit hook은 **이미 존재** (`scripts/git-hooks/post-commit`). 본 sync 로직을 여기 append하여 commit할 때 중앙 최신본이 레포에 반영된 상태로 commit되도록.

**pre-commit hook 논의**: PM 요청안에 "commit 전 실행(pre-commit hook)" 제시됨. **거부** — pre-commit은 실패 시 commit 차단으로 작업 흐름 단절. post-commit에서 "불일치 시 경고 + 다음 commit 자동 보정" 방식이 덜 파괴적(C34-12 Degraded 운영 원칙 동일 정신).

### 2.3 검토 3: 역방향 sync (git pull 후)

**가장 복잡한 엣지 케이스** — 중앙 로컬 쓰기와 원격 pull 결과가 모두 최신일 때 어느 쪽이 정(正)인가?

#### 3층 해결안

1. **기본 정책: 레포가 SOT**
   - `git pull` 후 레포 `memory/org/`가 항상 진실. 중앙은 레포를 따라간다.
   - SessionStart hook이 pull 직후 `sync_memory_repo_to_central.sh` 실행 — **중앙 덮어쓰기 (백업 자동)**.
2. **예외: 중앙에만 있는 unflushed 변경**
   - 중앙 `$HOME/.claude/nerdnavis-memory/` 파일 mtime이 레포 대응 파일보다 새롭고, 레포 파일의 git log HEAD 커밋 mtime과 비교해 아직 commit 안 된 것이면 "unflushed" 판정.
   - 이 경우 중앙 파일을 `$HOME/.claude/nerdnavis-memory.conflict-$(date +%Y%m%d%H%M%S)/`에 대피 → 레포본으로 덮어씀 → 경고 출력.
   - 대피본은 `verify_setup.ps1` 2.6 섹션이 감지하여 "unflushed 중앙 변경 감지 — 수동 병합 필요" 경고.
3. **감사관 백업**: pm-auditor가 주기 감사 시 `$HOME/.claude/nerdnavis-memory.conflict-*` 발견 시 즉시 보고.

#### 특수 상황: 다른 PC가 원격에 push한 변경 수신

- PC1이 `feedback_X.md`를 push → PC2가 pull → SessionStart hook이 레포→중앙 sync → PC2의 중앙에 `feedback_X.md` 등장 → PC2의 user memory junction 경유 Read 시 즉시 보임. **정상 작동**.

### 2.4 검토 4: 초기 마이그레이션 안전성

**현 실측 기반** — 본 검토 보고서 1.2 절 증거.

#### 마이그레이션 전 필수 확인

1. **모든 worktree `memory/org/` 실체 수집 감사**:
   ```
   for wt in $(git worktree list --porcelain | grep '^worktree ' | cut -d' ' -f2); do
     echo "=== $wt ==="
     diff -qr "$wt/memory/org" "/e/NerdNavisAi/memory/org" 2>&1 | head
   done
   ```
2. **타임스탬프·내용 충돌 전수 스캔**: 파일별 "레포 루트 vs 중앙(현 레포 루트 기반) vs worktree들"의 3축 비교.
3. **우선순위 규칙 (정(正) 판정)**:
   - A. worktree에만 있고 레포 루트에 없는 파일 → **worktree본이 정**, 중앙으로 흡수.
   - B. 레포 루트와 worktree 양쪽 있고 내용 다름 → **mtime 최신본이 정**, 단 양쪽 다 `feedback_active_archive_promotion_omission.md` 같은 신규 파일이면 PD님에게 보고 후 결정.
   - C. junction 없는 worktree 해시 폴더의 `memory/` 일반 디렉토리 내용 → 전수 스캔하여 중앙에 누락분 흡수.

#### 백업 의무 (C6-1 원본 보호)

1. 레포 루트 `memory/org/` → `$HOME/.claude/nerdnavis-memory.bak_PREMIGRATION_$(date +%Y%m%d%H%M%S)/` 전체 복사
2. 각 worktree `memory/org/` → 동일 백업 디렉토리 내 `worktree-<name>/` 하위 보존
3. 각 junction 타깃 폴더 → 동일 백업 디렉토리 내 `junction-<hash>/` 하위 보존

이 3층 백업 이후에만 junction 재연결·중앙 구축 진행.

### 2.5 검토 5: C34 확장 vs C35 신설

**권장: C34 확장** — C35 독립 신설 거부.

#### C34 확장이 적정한 근거 5종

1. **패턴 완전 동형**: `.live/`·`memory/org/` 모두 "PC 로컬 실시간 공유 + worktree 무관 + HOME 중앙화" 동일 패턴.
2. **교훈 일관성**: 차기 프로젝트 인수인계 시 "C34를 보면 Live + memory 양쪽 체계 동시 이해"가 "C34·C35 개별 학습" 대비 훨씬 효율적.
3. **토큰 효율 (C14)**: 규칙 본문 축소. C35 신설 시 배경·연관·위반·격상 경위 등 중복 서술 대량 발생.
4. **`feedback_worktree_isolation.md` 이미 양쪽 포괄**: 현 메모리 문서가 `.live/`·`memory/org/`·`paths.local.json`을 동일 표에 정리 중 — 규칙도 같은 구조 권장.
5. **감사 체크리스트 통합**: C34-15(5개 질문 체크리스트)가 이미 "모든 신규 조직 설정·저장소"를 대상으로 함. memory junction은 그 체크리스트 적용 첫 사례.

#### 제안 개정 요지 (C34 → "Live + memory 공통 중앙화 체계")

- 이름: "Live 증분 동기화 체계" → **"PC 로컬 실시간 공유 중앙화 체계 (Live + memory)"**
- C34-1 개요에 `.live/`·`memory/org/` 공통 원칙 명시
- C34-3 중앙 저장소 구조를 표로 분리: Live(`nerdnavis-live/`), memory(`nerdnavis-memory/`)
- C34-4 대상에 "git 추적 대상 memory/org/는 sync 스크립트 방식으로 양립" 주석 추가
- C34-15 체크리스트 표의 `memory/org/` 행을 🟡 → ✅로 갱신 (근원 해결 완료 표시)

### 2.6 검토 6: Agent 경계 보호 (C34-11) 자기 준수

**본 Agent 작업의 경계 준수 증명**:

1. 본 보고서 작성 경로: `E:\NerdNavisAi\.claude\worktrees\tender-liskov-844a72\공유\소통\개발팀→PM\2026-04-19_memory_junction_중앙화_실무검토.md` — **본 worktree 절대 경로 명시**. junction 경유 회피.
2. 대화로그 엔트리 append 경로: `E:\NerdNavisAi\.claude\worktrees\tender-liskov-844a72\공유\대화로그\조직운영\2026-04-19.md` — 동일.
3. 본 검토 보고서 내부에서 경로 표기 시 `E:\NerdNavisAi\...` 하드코딩 **회피** 원칙으로 `$(git rev-parse --show-toplevel)` 기준 상대 경로 서술(§3 설계안에서 일관).
4. PM 응답 수령 후 확인 2축:
   - 본 worktree: `git -C /e/NerdNavisAi/.claude/worktrees/tender-liskov-844a72 status`
   - 레포 루트: `git -C /e/NerdNavisAi status`
   - 레포 루트 쪽에 `공유/소통/개발팀→PM/...` 파일이 등장하면 경계 이탈 — `git -C /e/NerdNavisAi stash push -u -- 공유/` → 본 worktree `git stash pop`.

### 2.7 검토 7: 리스크 평가 (집행 실패 시)

#### 리스크 7종

1. **마이그레이션 중 memory 파일 소실**
   - 확률: 중
   - 영향: 치명 (조직 기억·교훈 영구 손실)
   - 대응: §2.4 3층 백업 + 각 단계 `verify_*` 검증 + PD님 체크포인트 보고

2. **junction 재연결 중 오작동으로 타겟 혼동**
   - 확률: 중 (PD님 PC에는 기존 junction 존재)
   - 영향: 중 (일부 세션이 잘못된 디렉토리 참조)
   - 대응: `cmd /c mklink /J` 수행 전 `Remove-Item` + `Get-Item -Force` 확인 후 재생성. verify_setup 2.6 섹션이 **marker 경유 읽기 3축 검증**으로 잡음.

3. **sync 스크립트 race condition (여러 세션 동시 commit)**
   - 확률: 저
   - 영향: 중 (sync 중간 상태 파일 분기)
   - 대응: `flock`(Unix) 또는 `New-Item -ItemType File -Path lock.file` with `-ErrorAction Stop`(Windows)으로 lock 파일 기반 상호 배제.

4. **post-commit hook 미실행 환경 (e.g., `git commit --no-verify`)**
   - 확률: 중
   - 영향: 저 (분기 1회 발생 후 다음 SessionStart hook에서 복구)
   - 대응: SessionStart hook의 역방향 sync가 안전망.

5. **중앙 디렉토리 삭제 (user가 실수로 `$HOME/.claude/nerdnavis-memory/` rmdir)**
   - 확률: 저
   - 영향: 중 (세션 시작 시 자동 재구축)
   - 대응: `sync_memory_repo_to_central.sh`가 중앙 부재 감지 시 레포에서 전량 복구. Sentinel `.memory-junction-marker` 검증 후 진행.

6. **신 PC clone 시 setup 전 Write 시도**
   - 확률: 저
   - 영향: 저 (일반 디렉토리 생성 + 다음 setup 실행 시 흡수)
   - 대응: `sync_memory_central_to_repo.sh`가 junction 부재 환경에서도 정상 실행되도록 설계 (junction 없으면 중앙 스킵).

7. **차기 프로젝트 계승 시 스크립트 경로 하드코딩**
   - 확률: 중
   - 영향: 저 (스크립트 내 `nerdnavis-memory` 문자열)
   - 대응: 스크립트 상단 변수 `CENTRAL_DIR_NAME="nerdnavis-memory"` 선언 + 차기 프로젝트는 값만 교체.

#### 백업·롤백 전략

- 모든 마이그레이션 단계별 백업 디렉토리 `$HOME/.claude/nerdnavis-memory.bak_STAGE_<N>_<stamp>/` 유지.
- 롤백 절차: (1) 중앙 삭제 (2) junction 제거 (3) 레포 루트 `memory/org/` 원본 복구 (4) 모든 worktree user memory junction을 레포 루트로 재연결 (현 상태로 복귀). 이 절차를 `scripts/rollback_memory_central.sh`로 문서화·준비.

### 2.8 검토 8: 기존 운영 PC 역호환

#### PD님 현 PC 실측 상태 (1.1 절)

- 11개 worktree 중 약 8개만 user memory junction 존재
- junction 없는 worktree: 13개 이상 (`tender-liskov-844a72` 포함)
- 이는 setup 스크립트의 현재 filter `*Documents* -or *너드나비스* -or *NerdNavis* -or *<rootLeaf>*`가 `E--NerdNavisAi--claude-worktrees-...` 패턴을 **완전 포괄하지 못해** 생긴 결함. `-like "$rootDrive--*"` filter가 `E--*`로 동작하지만 junction 생성 로직 자체가 누락된 폴더에는 실행되지 않음.

#### 역호환 집행 순서

1. 현 PC의 모든 worktree 해시 폴더 스캔 (Claude가 등록한 모든 프로젝트 경로)
2. **junction이 있으면 타겟 변경** (`Remove-Item` → 재생성), **없으면 신규 생성** — 모두 `$HOME/.claude/nerdnavis-memory/`로 연결
3. 기존 타깃(레포 루트 `memory/org/`) 삭제하지 않음 — §3의 sync 체계에서 양쪽 모두 유지
4. setup 스크립트 멱등성: 재실행 시 기존 정확한 junction은 skip (Attributes 확인), 잘못된 junction만 수정 → 재실행 부작용 없음

#### setup 스크립트 개선 포인트

- Line 78~86의 filter 조건을 `E--NerdNavisAi` 루트 문자열 기반으로 **더 넓게** 개정: `-like "$rootLeaf*"` 또는 `-like "*NerdNavisAi*"` 단독. PD님 PC의 worktree 해시 폴더를 **모두 포착**하도록.

### 2.9 검토 9: "생존성 이슈 축소 보고 금지" 원칙 감사 체크 편입

**PD님 직접 지시 반영** — 본 항목을 감사 체크에 편입 권고.

#### pm-auditor·dev-auditor 신규 체크리스트 항목

```
[ ] 최근 세션에 "memory junction 경계 이슈"·"worktree 격리 이슈"·"데이터 분기 위험" 등
    C34/C16-1 직결 이슈가 발견되었으나 PD님에게 축소 보고되거나 "권고·선택" 수준으로
    프레이밍된 사례가 없는가?

[ ] 발견된 헌법 제1원칙 ⑤ 직결 이슈는 "조직 생존급" 명시 보고했는가?

[ ] C34-15 5개 질문 체크리스트를 신 설정·저장소 도입 시 실제로 수행했는가?
    (수행 기록이 대화로그에 없으면 위반)
```

본 항목은 `memory/org/feedback_pm_over_conservative_interpretation.md`와 직결되는 4회차 변종 패턴 차단. 개발팀장은 본 검토에서 **옵션 A의 근거를 명확히 제시**함으로써 PM이 "권고·선택" 수준으로 희석하지 않도록 문서적으로 고정.

---

## 3. 권장 설계안 (옵션 A 세부)

### 3.1 옵션 (a) sync 스크립트 방식 최종 설계

```
$HOME/.claude/nerdnavis-memory/           ← 중앙 실 저장소 (PC 로컬)
├── .memory-junction-marker               ← Sentinel
├── MEMORY.md
├── feedback_*.md (30+종)
├── project_org_structure.md
└── user_role.md

$HOME/.claude/projects/E--NerdNavisAi*/memory  ← Claude user memory junction
    → junction → $HOME/.claude/nerdnavis-memory/     (Windows mklink /J)

$REPO_ROOT/memory/org/                    ← git 추적 실체 디렉토리 (원본 SOT)
├── MEMORY.md
├── feedback_*.md (30+종)
└── ...

각 worktree의 memory/org/                 ← git checkout 실체 (worktree별 독립)
    ※ 본 워크트리 내부에서 Write 하면 worktree-local 파일이 되며
       post-commit hook이 트리거되면 중앙도 자동 갱신됨
```

### 3.2 신규·수정 스크립트 목록

1. **신규**: `scripts/memory_junction_ensure.sh`
   - SessionStart hook에서 실행
   - 11개 worktree 해시 폴더 순회하며 user memory junction을 중앙으로 연결
   - Sentinel `$CENTRAL_MEM/.memory-junction-marker`로 OS-agnostic 판정
   - Degraded 운영 (실패 시 작업 차단 안 함, 경고만)

2. **신규**: `scripts/sync_memory_repo_to_central.sh`
   - 레포 `memory/org/` → 중앙 덮어쓰기 (SessionStart hook, pull 직후)
   - 중앙 대피본 `$CENTRAL_MEM.conflict-<stamp>/` 생성 조건 체크

3. **신규**: `scripts/sync_memory_central_to_repo.sh`
   - 중앙 → 레포 `memory/org/` 덮어쓰기 (post-commit hook, PM Write 반영)
   - rsync 스타일(파일별 mtime·hash 비교), 파일 삭제는 동기화하지 않음 (안전망)

4. **신규**: `scripts/sync_memory.sh both|repo-to-central|central-to-repo`
   - 수동 비상 스크립트. 인자로 방향 명시.

5. **신규**: `scripts/rollback_memory_central.sh`
   - 롤백 절차 자동화. junction 해제 + 중앙 삭제 + 레포 복구.

6. **수정**: `setup/setup_windows.ps1`
   - 3.5 섹션 다음에 **3.6 섹션 신규**: Live와 동일 패턴으로 memory 중앙 저장소 + Junction 자동 설치
   - 기존 3절(Claude 사용자 메모리 연결) 개정: 타겟을 `$orgMemoryTarget` (레포 루트 memory/org/) → `$centralMemory` (중앙 memory)로 변경
   - filter 개선: 13개 이상 누락된 worktree 해시 폴더 포괄

7. **수정**: `setup/setup_macos.sh`
   - macOS symlink 버전 동일 로직 추가

8. **수정**: `scripts/verify_setup.ps1`
   - **2.6 섹션 신규**: memory 중앙 저장소 + Junction 3축 검증 (Live 2.5와 동형)

9. **수정**: `scripts/git-hooks/post-commit`
   - `sync_memory_central_to_repo.sh` 호출 추가 (sync_signal 다음에)
   - Lock 파일 기반 race condition 방어

10. **수정**: `.claude/settings.json` SessionStart hook 체인
    - `live_junction_ensure.sh` 다음에 `memory_junction_ensure.sh` 삽입
    - 그 다음에 `sync_memory_repo_to_central.sh` 삽입

### 3.3 규칙 문서 개정

1. `.claude/skills/너드나비스-코어룰/SKILL.md`:
   - **C34 제목 개정**: "Live 증분 동기화 체계" → "PC 로컬 실시간 공유 중앙화 체계 (Live + memory)"
   - **C34-3 중앙 저장소 구조**: 표 형식으로 Live·memory 병기
   - **C34-4 대상**: memory/org/ 포함, "git 추적 대상은 sync 스크립트 양립" 주석
   - **C34-15 체크리스트 표**: memory/org/ 행을 🟡 → ✅ 갱신
   - **C34-16 신규 (선택)**: "C34 확장 — memory/org/ 근원 해결 (2026-04-19)" 역사 기록

2. `CLAUDE.md` 루트:
   - "조직 핵심 자산" 섹션에 "Live + memory 중앙화" 병기

3. 아카이브 파일:
   - `공유/조직공지/폐기_규칙_아카이브.md`에 "C34 개정 2026-04-19" 기록
   - `공유/조직공지/방향전환_히스토리_아카이브.md`에 "memory junction 레포 루트 → 중앙화" 6필드 기록

### 3.4 조직공지 + memory feedback 신설

1. **신규**: `공유/조직공지/2026-04-19_C34_확장_memory_junction_중앙화.md`
   - 배경·내용·적용 시점·참조 명시
   - PD님 조직 생존급 선언 인용

2. **신규**: `memory/org/feedback_memory_junction_repo_root_misdirect.md`
   - 결함 실증 (1.2 절 데이터)
   - "C34 패턴 적용 지연 배경 — git 추적 양립 설계 난제" 기록
   - `feedback_worktree_isolation.md`·`feedback_pm_over_conservative_interpretation.md` cross-reference

3. **갱신**: `memory/org/MEMORY.md`
   - 신규 feedback 파일 인덱스 추가

### 3.5 C35 신설 거부 근거 (재확인)

§2.5에서 상술. 요약:
- 패턴 동형 → 단일 규칙 포괄이 교훈 일관성·토큰 효율·학습 효율 모두 우위
- `feedback_worktree_isolation.md`가 이미 양 체계 동시 기록 중이므로 규칙도 대응

---

## 4. 집행 순서 9단계 (C34 집행과 동일 템포)

각 단계마다 PD님 체크포인트는 **없음** (C29 업무 자율 수행, PD님 원안 옵션 A가 명시 승인). 단, **단계 3 마이그레이션 직전에 사전 보고** (C6-1 원본 보호, 중대 변경 사전 고지 의무).

### 단계 1: C34 규칙 개정 드래프트
- SKILL.md C34-1·C34-3·C34-4·C34-15 개정본 작성
- 조직공지 드래프트 작성
- feedback 메모리 드래프트 작성
- 개발팀장 검토 완료 → PM 검토 요청

### 단계 2: 스크립트 구현 (신규 5종 + 수정 5종)
- §3.2 목록 전량 구현
- 본 worktree에서 구현 → push 전 dry-run 테스트

### 단계 3: 마이그레이션 — 백업 전량 수행 (PD님 사전 보고)
- 3층 백업 (§2.4): 레포 루트·worktree들·junction 타깃들
- 정(正) 판정 감사: §2.4의 A·B·C 규칙으로 파일 단위 판정
- 판정 결과를 표 형식으로 보고서화 → PD님에게 **사전 고지** (C6-1·C6-2 중대 변경)

### 단계 4: 중앙 저장소 구축
- `$HOME/.claude/nerdnavis-memory/` 생성
- Sentinel 설치
- 정(正) 판정된 파일 전량 복사 + chmod/ACL 정비
- verify_setup 2.6 3축 검증 통과

### 단계 5: Junction 재연결
- 11개 기존 junction worktree: 타깃 변경 (레포 루트 → 중앙)
- 13개 이상 junction 없는 worktree: 신규 junction 생성
- 검증: 각 worktree에서 Read 테스트 (sentinel 접근)

### 단계 6: Sync hook 활성화
- SessionStart hook 체인 갱신
- post-commit hook 갱신
- 세션 재시작 1회 권장 (C1 사전 고지)

### 단계 7: 검증 (C23 실증 기반)
- 양방향 sync 테스트 (중앙 → 레포 → commit → 다른 PC pull → 다른 PC 중앙 반영)
- 충돌 시나리오 테스트 (unflushed 중앙 변경 + pull 충돌)
- 각 worktree에서 Write → 중앙 반영 확인
- post-commit hook race condition 테스트 (2개 세션 동시 commit)

### 단계 8: 조직공지·feedback·규칙 반영
- SKILL.md 본문 개정 commit
- 조직공지 commit
- feedback 메모리 commit
- MEMORY.md 인덱스 갱신
- PD 지시 로그 #40 → 완료 상태 갱신 (산출물 경로 명시)

### 단계 9: 감사 체크 편입 + 차기 프로젝트 문서 갱신
- pm-auditor·dev-auditor·plan-auditor 3종 정의에 §2.9 체크리스트 추가
- C34-15 5개 질문 체크리스트의 memory/org/ 행 갱신
- 차기 프로젝트 계승용 `프로젝트/코어프레임워크/` 관련 문서 1줄 참조 추가

---

## 5. 테스트 시나리오 (집행 후 검증용)

### 5.1 기본 동작 시나리오 3종

1. **세션 A Write → 세션 B 감지**:
   - 세션 A: `echo "test" >> $HOME/.claude/projects/E--NerdNavisAi/memory/feedback_test.md`
   - 세션 B: Read 동일 경로 → **동일 내용 확인**

2. **세션 A commit → 레포 반영**:
   - 세션 A: user memory에 쓰기 → commit 실행
   - post-commit hook이 중앙 → 레포 sync 수행 → git status에 해당 파일 반영
   - commit 포함됨 확인

3. **Pull 후 역방향 sync**:
   - 다른 PC에서 push한 내용을 pull
   - SessionStart hook이 레포 → 중앙 sync
   - user memory에서 접근 시 새 파일 등장

### 5.2 엣지 케이스 시나리오 5종

1. **unflushed 중앙 변경 + pull 충돌**:
   - 중앙에만 `feedback_A.md` 존재 (레포 미반영), pull로 레포에 `feedback_B.md` 신규 등장
   - 예상: A는 `.conflict-*/`로 대피, B는 중앙·레포 양쪽 반영

2. **Junction 수동 삭제 복구**:
   - 사용자가 실수로 `Remove-Item $HOME/.claude/projects/E--NerdNavisAi/memory`
   - 예상: 다음 SessionStart hook이 재생성

3. **중앙 디렉토리 완전 삭제**:
   - `Remove-Item $HOME/.claude/nerdnavis-memory -Recurse`
   - 예상: 다음 SessionStart hook이 레포에서 전량 복구

4. **2개 세션 동시 commit**:
   - 거의 동시에 세션 A·B가 다른 파일 commit
   - 예상: lock 파일 기반 직렬화, 양쪽 반영

5. **`git commit --no-verify`**:
   - post-commit hook 우회
   - 예상: SessionStart hook 안전망이 다음 세션에서 복구

### 5.3 재해 시나리오 2종

1. **마이그레이션 중 전원 차단**:
   - 단계 4 복사 중간 전원 차단
   - 예상: 단계 3 백업으로 롤백 → `rollback_memory_central.sh` 실행

2. **차기 프로젝트 도입 시 경로 충돌**:
   - 다른 레포가 동일 PC에서 `nerdnavis-memory` 이름 사용 시도
   - 예상: 스크립트 변수가 `$CENTRAL_DIR_NAME` 변수로 분리되어 있으므로 충돌 회피 가능. 차기 프로젝트는 `{프로젝트명}-memory`로 채택.

---

## 6. 종합 권고 (PM·PD님 의사결정 지원)

### 6.1 집행 즉시 착수 가능 (PM 재량)

§3.1~§3.4의 설계안은 PD님 원안(옵션 A) 승인 범위 내이므로 PM 재량으로 집행 착수 가능. 단 §4 단계 3 직전 **사전 보고 필수** (C6-1 원본 보호 + C29-4 동기화).

### 6.2 PD님 사전 확인이 필요한 이슈

1. **단계 3 정(正) 판정 결과** — 본 worktree의 `feedback_active_archive_promotion_omission.md`처럼 "레포 루트에 없고 worktree에만 있는 파일"의 흡수 여부.
2. **C34 개정 vs C35 신설** — 본 검토 권고는 C34 확장이나 PD님 판단 시 C35 선호 가능.
3. **감사 체크리스트 신규 항목** (§2.9) — pm-auditor·dev-auditor 정의 변경은 C34-15 연계 범위 내이나, "축소 보고 감시" 항목의 표현은 PD님 원본 지시 인용 수준 확인 필요.

### 6.3 C34와 동급 집행 원칙 재확인

- 자원 제약 없음 (C9 완성도 우선)
- 롤백 경로 확보 후 집행 (`rollback_memory_central.sh` 선행 준비)
- PD님 조직 생존급 선언 → pm-auditor 3회차 재발 방지 + 본 건 축소 보고 방지 체크 편입
- Agent 경계 보호 (C34-11) 전 단계 준수

---

## 7. 본 검토 작업 대화로그·PD 지시 로그 갱신

### 7.1 대화로그 엔트리

`공유/대화로그/조직운영/2026-04-19.md`에 신규 엔트리 append 예정.

### 7.2 PD 지시 로그 #40 갱신 알림 (C27)

**본 실무 검토는 PD 지시 로그 #40 관련 산출물**이나, PM이 #40 항목을 어떻게 등록했는지 본 Agent는 접근 권한·책임 범위 밖. **PM이 Agent 결과 수령 후 직접 갱신 필요**:

- 상태 변경: `대기/진행중` → `진행중` (본 검토 보고서는 작업의 일부, 완료 아님)
- 산출물 경로 추가: `공유/소통/개발팀→PM/2026-04-19_memory_junction_중앙화_실무검토.md`
- 본 보고서를 PM이 검토한 뒤 §4 집행에 착수, 9단계 전부 완료 후 `완료` 상태 전환.

---

## 8. 요청 사항 (PM → PD님 상신 여부)

본 보고서는 **개발팀장의 실무 검토안**이며 PM의 승인을 거친 후 집행 착수한다. PM 판단에 따라 본 보고서를 PD님에게 상신할지 여부는 PM 재량이나, **§6.2의 3개 이슈는 PD님 확인 권장**.

PM이 본 보고서를 수령한 후:
1. PM 검토 → §4 단계 1·2 착수 승인
2. PM이 §6.2 3개 이슈를 안건 형식으로 정리하여 PD님 상신 (필요 시)
3. PM이 PD 지시 로그 #40 상태 갱신

---

**개발팀장 서명**
작성일: 2026-04-19
작성 환경: worktree `tender-liskov-844a72` (본 경계 내에서만 Write 수행, C34-11 준수)
Agent 호출 주체: 총괄PM (PD 지시 로그 #40 기반)
