BurningTimesAi/memory/org/feedback_worktree_isolation.md

40 lines
3.0 KiB
Markdown
Raw Normal View History

feat(rules): C34 Live 증분 동기화 헌법급 신설 + worktree 격리 근원 해결 PD님 조직 생존급 선언 수용 — "이 문제가 해결되지 않으면 앞으로 우리 조직은 유지될 수 없어" / "철저히 검토해서 가능한 모든 수단을 써서 개선해". 헌법 제1원칙 ⑤(세션·PC 연속성) 근본 위협 판정. P25 → C34 승격 + 중앙 Junction 구조로 worktree 경계 무관 실시간 공유 복원. 집행 10종: - SKILL.md: C34 신설(14개 하위 조항) + P25 본문 삭제(C14-5-확장) + C16-1 .live/ junction 편입 + C31-1-E 표기 갱신 + 조직 핵심 자산 참조 갱신 - CLAUDE.md: 핵심 규칙 요약 28→29 + C34 추가, 프로젝트 규칙 요약 25→24 + P25 제거, 번호 구멍 목록 확장 - scripts/live_junction_ensure.sh: 신규 SessionStart hook (PowerShell New-Item Junction 우선, git-bash mklink 대비 신뢰성 우위 실증 반영) - setup/setup_windows.ps1·setup_macos.sh: 3.5 섹션 추가 - scripts/verify_setup.ps1: 2.5 Live junction 3축 검증 (실측 통과 확인) - .claude/settings.json: SessionStart hook 체인 최우선 삽입 - .gitignore: .live/* 제외 + README 예외 + 백업 제외 - 공유/조직공지/2026-04-18_C34_신설_worktree_격리_근원해결.md 신설 - 공유/조직공지/폐기_규칙_아카이브.md §13 P25 승격 6필드 기록 - memory/org/feedback_worktree_isolation.md + feedback_agent_path_boundary.md 신설 + MEMORY.md 인덱스 대화로그·PD 지시 로그 #39 완료 갱신 포함. Agent 경계 넘기 2차 사건 (개발팀장 Agent 절대 경로 하드코딩으로 레포 루트 유출) stash 이관 복구 + C34-11 Agent 경계 보호 조항 신설. 조직 전원 세션 1회 재시작 필요 — SessionStart hook이 live_junction_ensure.sh 자동 실행하여 junction 설치. verify_setup.ps1 통과 확인 후 작업 재개. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:59:41 +00:00
---
name: worktree 격리로 인한 조직 실시간 동기화 체계 실패 — 재발 방지
description: 2026-04-18 PD님 조직 생존급 선언. P25→C34 승격 + 중앙 Junction 근원 해결. worktree 경계는 실시간 공유 체계의 숨겨진 경계이므로 새 체계 설계 시 최우선 검토 대상
type: feedback
originSessionId: 0c3fc143-5c2a-4165-afb1-7becf72eaa0a
---
# worktree 격리로 인한 조직 실시간 동기화 체계 실패
## 실증 (2026-04-18)
세션 A(`tender-liskov-844a72` worktree)와 세션 B(`nifty-wing-4752bd` worktree)에서 P25 Live 증분 동기화 테스트 수행. 세션 B가 `.live/ping.md`에 PING 마커 작성 후 세션 A에서 hook 주입 확인 → **미수신**. 원인은 git worktree가 각 worktree에 독립 파일시스템 디렉토리를 부여하므로 `.live/`가 물리적으로 분리됨.
## 왜 중요한가 (조직 생존급)
PD님 직접 선언: **"이 문제가 해결되지 않으면 앞으로 우리 조직은 유지될 수 없어."**
헌법 제1원칙 ⑤ "세션·PC 연속성 보장"의 근본 위협. P25(조직 핵심 자산 선언)가 특정 조건(같은 worktree)에서만 작동한다는 사실이 조직 기반 전제를 훼손.
## 근본 원인
`live_inject.sh` hook이 `git rev-parse --show-toplevel`로 얻은 경로의 `.live/`를 스캔하는데, 이 명령은 **worktree별로 다른 경로를 반환**함. 따라서 worktree A와 B의 `.live/`가 서로 다른 디렉토리이며 hook이 상호 주입 불가.
## 해결 (C34 신설 + 중앙 Junction)
1. 실 저장 경로를 `$HOME/.claude/nerdnavis-live/`로 중앙화 (PC 로컬 단일)
2. 각 worktree의 `.live/`를 중앙 디렉토리로 Junction(Windows `mklink /J`) / Symlink(Unix `ln -s`) 연결
3. `scripts/live_junction_ensure.sh`가 SessionStart hook 체인에서 보장 (git fetch 직후 최우선 삽입)
4. `setup_*` 스크립트 3.5 섹션에서 자동 설치
5. Sentinel 파일 `.junction-marker`로 OS-agnostic 판정
## 재발 방지 체크 (세션 리더 의무)
- 신 PC·신 worktree 첫 세션 시 `verify_setup.ps1`의 2.5 "Live 중앙 저장소 실체·reparse·marker 경유 읽기" 3축 통과 확인
- `.live/`가 실체 디렉토리로 남아있으면 `setup_windows.ps1` 재실행
- 조직 전원 세션 1회 재시작 필수 안내 (C1 사전 고지)
- **새 조직 공유 체계 설계 시 worktree 경계 조건을 첫 검토 항목에 포함** (본 사건 재발 방지)
## 연관
- **C34** (헌법급 본 체계 — P25 승격)
- **C16-1** (`.live/` junction 자동 연결 편입)
- **feedback_agent_path_boundary.md** (Agent 경계 넘기 2차 사건)
- **조직공지**: `2026-04-18_C34_신설_worktree_격리_근원해결.md`
## 교훈
**worktree 기능은 편리하나 조직 공유 체계의 숨겨진 경계를 만든다.** "같은 PC = 같은 파일시스템"이라는 직관은 worktree 앞에서 성립하지 않음. 앞으로 공유 체계 설계 시 "실 저장 = 중앙 1곳, 접근 = junction/symlink"을 기본 패턴으로 채택 (C16-1 memory junction과 동일 원칙).