BurningTimesAi/memory/org/feedback_central_sentinel_l...

4.4 KiB

🟢 역사 보존 (해결 완료 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 부재 시 자동 재생성:

if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then
  echo "..." > "$CENTRAL_LIVE/$MARKER_NAME"
fi

한계

이미 시작된 세션 중간 손실 시 그 세션 동안 미검출 — 본 사건이 이 한계의 정확한 실증.

해결 (2026-04-19 안건 A 집행)

live_junction_ensure.shUserPromptSubmit hook 체인에도 편입:

  • 매 프롬프트마다 marker 부재 검사 + 자동 재생성
  • 손실 윈도우를 1프롬프트 이내로 축소
  • marker 정상 시 조기 종료(exit 0)로 토큰·시간 비용 미세
  • 신규 스크립트 불요 (기존 검증된 로직 재사용, 신규 위험 0)

집행 위치

.claude/settings.json UserPromptSubmit hook 체인의 live_inject.sh 직전:

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