> 🟢 **역사 보존 (해결 완료 2026-04-26)** — worktree 자동 생성·Junction 체계 폐기로 본 패턴 구조 차단. 본 메모리는 조직 학습 자산으로 보존.

---
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 파일 등) 도입 시 동일 원칙 적용 권고.
