--- name: C34 중앙 저장소 sentinel(`.junction-marker`) 손실 — 자동 보호 강화 description: 2026-04-19 다른 세션 verify_setup이 marker 부재 정확 감지. 본 worktree 동시 실측으로 confirm. git 외 작업으로 sentinel 손실. 본 사건 직접 차단 안건 A(UserPromptSubmit hook 편입)로 재발 윈도우 1프롬프트 이내로 축소 type: feedback --- # C34 중앙 저장소 sentinel 손실 — 자동 보호 강화 ## 실증 (2026-04-19) 다른 세션이 `verify_setup.ps1` 2.5 섹션 "Live Junction marker 경유 읽기"에서 FAIL 판정. 본 worktree 즉시 실측 결과: - 중앙 저장소 `$HOME/.claude/nerdnavis-live/`: **빈 디렉토리** (marker·README 모두 부재) - junction 자체는 정상 (38개 worktree 모두 중앙 연결 유지) - C34 운영 기능 자체는 영향 없음 (sentinel은 메타 파일) ## 영향 - **데이터 손실**: 0건 (sentinel은 연결 상태 판정용 메타) - **검증 도구 오판**: `verify_setup.ps1` 2.5 FAIL — 실제는 정상이나 marker 부재로 "junction 미연결"로 판정 - **운영 위험**: 본 사건 자체는 영향 없으나, marker 보호 미흡이 누적되면 차후 진단 신뢰성 훼손 ## 원인 분석 - **git history 검사**: `git log --since="2026-04-19" -- .live/`·관련 스크립트 commit 이력에 marker 삭제 흔적 없음 - **`.live/`는 `.gitignore` 대상** → git 외 작업으로 삭제됨 - **본 세션 PowerShell·Bash 명령 검사**: 명시 파일만 삭제 (marker 영향 없음) - **추정**: 다른 worktree·다른 세션의 cleanup·rollback 작업 또는 PowerShell 와일드카드 매칭 사고 - **확정 불가** — 로그 부재 자체가 별도 안건 (sentinel 변경 감사 로그 부재) ## 자동 회복 안전망 분석 ### 기존 안전망 (SessionStart 시점만) `live_junction_ensure.sh`가 SessionStart hook에서 marker 부재 시 자동 재생성: ```bash if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then echo "..." > "$CENTRAL_LIVE/$MARKER_NAME" fi ``` ### 한계 **이미 시작된 세션 중간 손실 시 그 세션 동안 미검출** — 본 사건이 이 한계의 정확한 실증. ## 해결 (2026-04-19 안건 A 집행) `live_junction_ensure.sh`를 **UserPromptSubmit hook 체인에도 편입**: - 매 프롬프트마다 marker 부재 검사 + 자동 재생성 - 손실 윈도우를 **1프롬프트 이내**로 축소 - marker 정상 시 조기 종료(`exit 0`)로 토큰·시간 비용 미세 - 신규 스크립트 불요 (기존 검증된 로직 재사용, 신규 위험 0) ### 집행 위치 `.claude/settings.json` UserPromptSubmit hook 체인의 `live_inject.sh` 직전: ```json { "type": "command", "command": "bash scripts/live_junction_ensure.sh 2>/dev/null || true" }, { "type": "command", "command": "bash scripts/live_inject.sh 2>/dev/null || true" } ``` ## 거부된 대안 - **B 명문화 강화**: 의도적 삭제만 방지. 실수·외부 작업에는 무력. 안건 A 집행 시 SKILL.md C34-3에 1줄 자연 포함 - **C sentinel 변경 감사 로그**: 사후 추적용. 사전 방지 효과 없음. 1회 사건이라 과잉 - **D 무행동**: 자동 회복 윈도우 결함 그대로 둠 ## 재발 방지 체크 (세션 리더 의무) - `verify_setup.ps1` 정기 실행 (SessionStart 외 의무 호출 대상 작업 전후) - marker 부재 발견 시 즉시 PowerShell `Set-Content` 또는 `live_junction_ensure.sh` 수동 실행 - 본 사건 같은 외부 작업 의심 시 다른 세션·다른 worktree 동시 진행 작업 확인 ## 연관 - **C34-3** Sentinel 자동 보호 1줄 추가 (2026-04-19 안건 A 반영) - **C34-12** Degraded 운영 (자동 회복 안전망 정신) - **헌법 제1원칙 ⑤** 세션·PC 연속성 보장 - **`scripts/live_junction_ensure.sh`** (변경 없이 hook 위치 추가만) - **`.claude/settings.json`** UserPromptSubmit 체인 확장 ## 교훈 **자동 회복 안전망은 트리거 시점이 충분히 자주여야 한다.** SessionStart만으로는 "이미 시작된 세션 중간 손실" 케이스 미커버. UserPromptSubmit 편입으로 손실 윈도우를 1프롬프트로 축소하면서 토큰 비용은 미세 — sentinel 같은 메타 파일 보호의 표준 패턴. 차기 자산(중앙 marker·sentinel·lock 파일 등) 도입 시 동일 원칙 적용 권고.