BurningTimesAi/scripts/live_junction_ensure.sh

69 lines
2.9 KiB
Bash
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
#!/bin/bash
# SessionStart hook — .live/ 디렉토리를 $HOME/.claude/nerdnavis-live/로 junction 보장
# worktree 격리를 제거하여 모든 세션이 동일한 실제 .live/ 디렉토리를 공유한다.
# 2026-04-18 신설 — C34 헌법급 Live 증분 동기화 체계의 근원 해결 장치
# 관련 규칙: C34 · C16-1 PC 독립 셋업 · 헌법 제1원칙 ⑤ 세션·PC 연속성
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CENTRAL_LIVE="$HOME/.claude/nerdnavis-live"
LOCAL_LIVE="$REPO_ROOT/.live"
MARKER_NAME=".junction-marker"
# 1. 중앙 저장소 + marker 보장
mkdir -p "$CENTRAL_LIVE" 2>/dev/null
if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then
echo "nerdnavis-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME" 2>/dev/null
fi
# 2. 이미 올바르게 junction 연결되어 있으면 조기 종료 (sentinel 경유 판정)
if [ -f "$LOCAL_LIVE/$MARKER_NAME" ]; then
exit 0
fi
# 3. 로컬 .live/ 가 실체 디렉토리인 경우 → 백업 후 junction 전환 (C6-1 원본 보호)
if [ -d "$LOCAL_LIVE" ] && [ ! -L "$LOCAL_LIVE" ]; then
fix(rules): C6-1 백업 포맷 위반 8곳 보정 + 안건 프레이밍 혼선 교훈 PD님 2차 지적 2건 수용: 1. "C34 확장 집행 과정에 C6-1 지키지 않았어?" — 8곳 스크립트에서 백업 파일명 `.bak-YYYYMMDDHHMMSS` 사용 → C6-1 표준 `.bak_YYYYMMDD_HHMM` 위반. 2026-04-18 Live junction 최초 도입 포맷이 이후 모든 파생 스크립트로 연쇄 오염. 관성적 답습 패턴. 2. "보정 2와 결정 1이 같은 안건 아니야?" — PM이 동일 안건을 "PM 재량"·"PD 결정" 카테고리에 중복 제시 + 이전 턴 옵션 A 결정 사안을 "결정 2"로 재질문. 카테고리 경계 자기검증 부재. 보정 1 (PM 재량): - memory_junction_ensure.sh·live_junction_ensure.sh 2곳 - setup_windows.ps1 3곳 (Section 3·3.5·3.6) - setup_macos.sh 3곳 (Section 3·3.5·3.6) - 포맷 `.bak_$(date +%Y%m%d_%H%M)` (bash) / `.bak_$(Get-Date -Format yyyyMMdd_HHmm)` (PowerShell) 보정 3 (PM 재량): - memory/org/feedback_backup_filename_format_violation.md 신설 - memory/org/feedback_agenda_framing_duplication.md 신설 - MEMORY.md 인덱스 2건 append 보정 4 (PM 재량): - pm-auditor 5-B (백업 포맷 준수 감지) + 5-C (안건 중복·재질문) - dev-auditor 6-B (백업 포맷 준수 감지) 결정 1 (PD님): 기존 `.bak-*` 디렉토리 rename 생략. 데이터 멀쩡·복구 가능. PD 지시 로그 #41 완료 아카이브 등록 (P19 강화·즉답 접두). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 17:01:49 +00:00
BAK="$LOCAL_LIVE.bak_$(date +%Y%m%d_%H%M)"
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
# 기존 파일 중앙으로 복사 (기존 중앙 파일 덮어쓰기 안 함)
for f in "$LOCAL_LIVE"/*.md "$LOCAL_LIVE"/*.json; do
[ -f "$f" ] || continue
BASENAME=$(basename "$f")
[ ! -f "$CENTRAL_LIVE/$BASENAME" ] && cp "$f" "$CENTRAL_LIVE/$BASENAME" 2>/dev/null
done
mv "$LOCAL_LIVE" "$BAK" 2>/dev/null || { echo "⚠️ [Live Junction] 기존 .live/ 백업 실패 — Degraded 모드" >&2; exit 0; }
echo "📦 [Live Junction] 기존 .live/ 백업: $BAK"
fi
# 4. Junction 생성 (OS별·3회 재시도)
ATTEMPT=0
MAX_ATTEMPTS=3
while [ "$ATTEMPT" -lt "$MAX_ATTEMPTS" ]; do
ATTEMPT=$((ATTEMPT + 1))
if command -v powershell >/dev/null 2>&1; then
# Windows — PowerShell New-Item Junction (git-bash의 cmd //c mklink 대비 신뢰성 우위, 2026-04-18 실증)
CENTRAL_WIN=$(cygpath -w "$CENTRAL_LIVE" 2>/dev/null || echo "$CENTRAL_LIVE")
LOCAL_WIN=$(cygpath -w "$LOCAL_LIVE" 2>/dev/null || echo "$LOCAL_LIVE")
powershell -NoProfile -ExecutionPolicy Bypass -Command "New-Item -ItemType Junction -Path '$LOCAL_WIN' -Target '$CENTRAL_WIN' -Force | Out-Null" >/dev/null 2>&1
else
# Unix — symlink
ln -s "$CENTRAL_LIVE" "$LOCAL_LIVE" 2>/dev/null
fi
if [ -f "$LOCAL_LIVE/$MARKER_NAME" ]; then
[ "$ATTEMPT" -eq 1 ] && echo "✅ [Live Junction] $LOCAL_LIVE$CENTRAL_LIVE"
[ "$ATTEMPT" -gt 1 ] && echo "✅ [Live Junction] 연결 성공 (재시도 $ATTEMPT회)"
exit 0
fi
sleep 1
done
# 5. 실패 — Degraded 모드 (작업 차단 안 함, C34 기본 원칙)
mkdir -p "$LOCAL_LIVE" 2>/dev/null
echo "⚠️ [Live Junction] 생성 실패 — Degraded 모드 (로컬 .live/ 사용). worktree 간 동기화 불가" >&2
echo "⚠️ [Live Junction] 해결: 관리자 권한으로 setup 스크립트 재실행 또는 수동 mklink/ln -s 필요" >&2
exit 0