feat(BT·신설): 조직 신설 Phase 1 — git 저장소 교체 + 중앙 저장소 A안 분리
PD님 2026-04-21 직접 지시 5개 중 1·2·4 이행.
## 집행 내역
1. git remote: NerdNavisAi.git → BurningTimesAi.git 교체 (BT main + 본 worktree)
- E:/NerdNavisAi 레포 원격은 원상 유지 (실측 확인)
2. 중앙 저장소 A안 분리: ~/.claude/burningtimes-{live,memory,audit}/
- nerdnavis-* 중앙 저장소에서 cp -r 복사 (원본 미변경)
- .junction-marker 내용 BT로 갱신
3. 본 worktree .live junction 재연결 → burningtimes-live
4. audit junction 3종 신설: .burningtimes_{auditor_calls,warning_ignored,bypass_log}
5. scripts·setup 28파일 하드코딩 일괄 치환 (nerdnavis/NerdNavis/너드나비스/NERDNAVIS → burningtimes/BurningTimes/BURNINGTIMES)
6. paths.local.json.template BT 전용 재작성 (Unity·Framework 경로 __TBD__ placeholder)
7. .gitignore: .live.bak_*/ 패턴 추가
## 보류 항목 (PD 재논의 예정)
- 3. memory/org/ 내용 초기화 (PD 지시)
- 5. Unity 프로젝트 경로 (PD 신규 경로 제공 전까지)
- SKILL.md·CLAUDE.md 조직명 전환 및 P17·P29 처리
- 프로젝트/수상한잡화점/ 등 수상한잡화점 관련 일괄 정리
- 코어코드/NerdNavis.Framework/ → BT-프레임워크 이름 전환
- 공유/조직공지/ 너드나비스 맥락 공지 처리
- .claude/agents/*.md frontmatter skills 참조명
## 감사
pm-auditor 사전 감사 통과 (Critical 0건, Major 2건 commit 전 정정 완료).
매니페스트: bt-org-split-phase1 (C35-9 PreToolUse 차단 해제).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8de90029c4
commit
4911b7485a
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_description": "너드나비스 조직 공용 Claude Code permission + hook 설정 (SOT). PD님 일괄 승인 원칙 + 자동 동기화 hook. 단일 세션 + Agent 병렬 호출 구조. 모든 PC 동일 적용. 루트 단일 관리.",
|
||||
"_description": "BurningTimes 조직 공용 Claude Code permission + hook 설정 (SOT). PD님 일괄 승인 원칙 + 자동 동기화 hook. 단일 세션 + Agent 병렬 호출 구조. 모든 PC 동일 적용. 루트 단일 관리.",
|
||||
"permissions": {
|
||||
"defaultMode": "acceptEdits",
|
||||
"allow": [
|
||||
|
|
|
|||
|
|
@ -108,4 +108,5 @@ build/
|
|||
.live/*
|
||||
!.live/README.md
|
||||
.live.bak-*/
|
||||
.live.bak_*/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"_description": "환경별 로컬 경로 설정 템플릿. 이 파일을 paths.local.json으로 복사 후 실값 입력. 실값 파일은 .gitignore로 커밋 금지.",
|
||||
"_hostname_example": "NERDNAVIS-MAIN-PC | HOME-PC | LAPTOP-01",
|
||||
"_hostname_example": "BURNINGTIMES-MAIN-PC | HOME-PC | LAPTOP-01",
|
||||
|
||||
"NERDNAVIS_ROOT": "C:/Users/PC/Documents/너드나비스",
|
||||
"UNITY_PROJECT_ROOT": "D:/NerdNavis/FilGoodBandits/DeckBuilding",
|
||||
"FRAMEWORK_PKG_ROOT": "D:/NerdNavis/NerdNavis.Framework",
|
||||
"BURNINGTIMES_ROOT": "E:/BurningTimes",
|
||||
"UNITY_PROJECT_ROOT": "__TBD_PD_WILL_PROVIDE__",
|
||||
"FRAMEWORK_PKG_ROOT": "__TBD_BT_Framework_경로__",
|
||||
"TABLE_EXPORT_ROOT": "${UNITY_PROJECT_ROOT}/Assets/ResWork/Table/Export",
|
||||
"GITEA_URL": "https://burning.i234.me",
|
||||
"GITEA_SSH": "ssh://git@burning.i234.me:30030",
|
||||
"GIT_REMOTE": "https://burning.i234.me/NerdNavis_AiDev/BurningTimesAi.git",
|
||||
|
||||
"_per_pc_hint": {
|
||||
"회사_PC": "D 드라이브 Unity, C 드라이브 org",
|
||||
"집_PC": "E 드라이브 Unity 예시",
|
||||
"노트북": "C 드라이브 통합 예시"
|
||||
"Unity_경로_보류": "PD님이 BT 전용 Unity 프로젝트 경로 제공 전까지 UNITY_PROJECT_ROOT·TABLE_EXPORT_ROOT 사용 금지",
|
||||
"Framework": "BT-프레임워크(구 NerdNavis.Framework 계승) 경로는 별도 안건으로 확정 후 기입"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,20 +3,20 @@
|
|||
# 2026-04-20 #48 G 집행 신설 — PD님 직접 지시 "어떤 PC에서도 일관 상태 동시화"
|
||||
# 관련 규칙: C34-17 audit 특수 조항 · C36 PM 재량 상한 · 헌법 제1원칙 ⑤
|
||||
|
||||
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
|
||||
CENTRAL_AUDIT="$HOME/.claude/burningtimes-audit"
|
||||
MARKER_NAME=".junction-marker"
|
||||
|
||||
# 디렉토리 매핑: 로컬 디렉토리명(점 제외) | 중앙 하위 디렉토리명
|
||||
MAPPINGS=(
|
||||
"nerdnavis_auditor_calls|auditor_calls"
|
||||
"nerdnavis_warning_ignored|warning_ignored"
|
||||
"nerdnavis_bypass_log|bypass_log"
|
||||
"burningtimes_auditor_calls|auditor_calls"
|
||||
"burningtimes_warning_ignored|warning_ignored"
|
||||
"burningtimes_bypass_log|bypass_log"
|
||||
)
|
||||
|
||||
# 1. 중앙 저장소 최상위 + marker 보장
|
||||
mkdir -p "$CENTRAL_AUDIT" 2>/dev/null
|
||||
if [ ! -f "$CENTRAL_AUDIT/$MARKER_NAME" ]; then
|
||||
echo "nerdnavis-audit central junction target (C34-17, 2026-04-20 #48 G)" > "$CENTRAL_AUDIT/$MARKER_NAME" 2>/dev/null
|
||||
echo "burningtimes-audit central junction target (C34-17, 2026-04-20 #48 G)" > "$CENTRAL_AUDIT/$MARKER_NAME" 2>/dev/null
|
||||
fi
|
||||
|
||||
# 2. 각 매핑 처리
|
||||
|
|
@ -29,7 +29,7 @@ for MAPPING in "${MAPPINGS[@]}"; do
|
|||
# 중앙 하위 디렉토리 + sub marker 보장
|
||||
mkdir -p "$CENTRAL_DIR" 2>/dev/null
|
||||
if [ ! -f "$CENTRAL_DIR/$MARKER_NAME" ]; then
|
||||
echo "nerdnavis-audit/$CENTRAL_SUB junction target (C34-17)" > "$CENTRAL_DIR/$MARKER_NAME" 2>/dev/null
|
||||
echo "burningtimes-audit/$CENTRAL_SUB junction target (C34-17)" > "$CENTRAL_DIR/$MARKER_NAME" 2>/dev/null
|
||||
fi
|
||||
|
||||
# sentinel 판정: 로컬에서 marker 접근 가능하면 이미 연결 완료
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
CALL_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
|
||||
WARN_DIR="$HOME/.claude/.nerdnavis_warning_ignored"
|
||||
BYPASS_DIR="$HOME/.claude/.nerdnavis_bypass_log"
|
||||
CALL_DIR="$HOME/.claude/.burningtimes_auditor_calls"
|
||||
WARN_DIR="$HOME/.claude/.burningtimes_warning_ignored"
|
||||
BYPASS_DIR="$HOME/.claude/.burningtimes_bypass_log"
|
||||
|
||||
# 미해소 경고 건수 집계 (UNRESOLVED - RESOLVED)
|
||||
UNRESOLVED_NET=0
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ if ! echo "$INPUT" | grep -q '"subagent_type"[[:space:]]*:[[:space:]]*"pm-audito
|
|||
exit 0
|
||||
fi
|
||||
|
||||
LOG_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
|
||||
LOG_DIR="$HOME/.claude/.burningtimes_auditor_calls"
|
||||
mkdir -p "$LOG_DIR" 2>/dev/null
|
||||
|
||||
# 일자별 로그 파일에 호출 시각 기록
|
||||
|
|
@ -19,7 +19,7 @@ LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d).log"
|
|||
echo "$(date +%Y-%m-%d_%H:%M:%S) pm-auditor called" >> "$LOG_FILE"
|
||||
|
||||
# 경고 무시 사례 해소 처리 — 기존 UNRESOLVED 로그에 RESOLVED 마커 append
|
||||
WARNING_DIR="$HOME/.claude/.nerdnavis_warning_ignored"
|
||||
WARNING_DIR="$HOME/.claude/.burningtimes_warning_ignored"
|
||||
if [ -d "$WARNING_DIR" ]; then
|
||||
for wf in "$WARNING_DIR"/*.log; do
|
||||
[ -f "$wf" ] || continue
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ fi
|
|||
# (BYPASS는 기존 PostToolUse 경고 메커니즘 전용, 본 차단은 무조건 체크)
|
||||
|
||||
# 5. 활성 매니페스트 존재 확인
|
||||
MANIFEST_DIR="$HOME/.claude/nerdnavis-audit/manifest/active"
|
||||
MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest/active"
|
||||
mkdir -p "$MANIFEST_DIR" 2>/dev/null
|
||||
ACTIVE=$(ls -t "$MANIFEST_DIR"/*.md 2>/dev/null | head -1)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# SessionStart hook용 — 마지막 확인 이후 변경 요약 출력
|
||||
# 세션 간 소통 부재(문제 2) 해소: 커밋 메시지 자체가 소통 채널 역할
|
||||
|
||||
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
|
||||
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
|
||||
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
||||
|
||||
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
# 주 동기화는 scripts/sync_signal.sh (로컬 IPC 시그널) 담당. 본 스크립트는
|
||||
# 시그널이 없거나 다른 PC에서 push된 경우를 위한 fallback.
|
||||
|
||||
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
|
||||
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
|
||||
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
||||
|
||||
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
|
||||
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
|
||||
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
||||
HOLD_HASH_FILE="$THROTTLE_DIR/hold_files_hash"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|||
LIVE_DIR="$REPO_ROOT/.live"
|
||||
[ ! -d "$LIVE_DIR" ] && exit 0
|
||||
|
||||
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
|
||||
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
|
||||
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
||||
|
||||
OUTPUT=""
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
# SessionStart hook — .live/ 디렉토리를 $HOME/.claude/nerdnavis-live/로 junction 보장
|
||||
# SessionStart hook — .live/ 디렉토리를 $HOME/.claude/burningtimes-live/로 junction 보장
|
||||
# worktree 격리를 제거하여 모든 세션이 동일한 실제 .live/ 디렉토리를 공유한다.
|
||||
# 2026-04-18 신설 — C34 헌법급 Live 증분 동기화 체계의 근원 해결 장치
|
||||
# 관련 규칙: C34 · C16-1 PC 독립 셋업 · 헌법 제1원칙 ⑤ 세션·PC 연속성
|
||||
|
|
@ -7,14 +7,14 @@
|
|||
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
CENTRAL_LIVE="$HOME/.claude/nerdnavis-live"
|
||||
CENTRAL_LIVE="$HOME/.claude/burningtimes-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
|
||||
echo "burningtimes-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME" 2>/dev/null
|
||||
fi
|
||||
|
||||
# 2. 이미 올바르게 junction 연결되어 있으면 조기 종료 (sentinel 경유 판정)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|||
LIVE_DIR="$REPO_ROOT/.live"
|
||||
[ ! -d "$LIVE_DIR" ] && exit 0
|
||||
|
||||
THROTTLE_DIR="$HOME/.claude/.nerdnavis_throttle"
|
||||
THROTTLE_DIR="$HOME/.claude/.burningtimes_throttle"
|
||||
mkdir -p "$THROTTLE_DIR" 2>/dev/null
|
||||
|
||||
OUTPUT=""
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# C35-9 Layer 3 근본 해결 2026-04-20
|
||||
# M-1 수용: commit diff vs manifest target_files cross-check (부분집합 감지)
|
||||
|
||||
MANIFEST_DIR="$HOME/.claude/nerdnavis-audit/manifest"
|
||||
MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest"
|
||||
ACTIVE_DIR="$MANIFEST_DIR/active"
|
||||
ARCHIVED_DIR="$MANIFEST_DIR/archived"
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ EOF
|
|||
exit 1
|
||||
fi
|
||||
|
||||
MANIFEST_DIR="$HOME/.claude/nerdnavis-audit/manifest/active"
|
||||
MANIFEST_DIR="$HOME/.claude/burningtimes-audit/manifest/active"
|
||||
mkdir -p "$MANIFEST_DIR" 2>/dev/null
|
||||
|
||||
MANIFEST="$MANIFEST_DIR/$PLAN_ID.md"
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ while (i < lines.length) {
|
|||
}
|
||||
|
||||
const doc = new Document({
|
||||
creator: '너드나비스 개발팀',
|
||||
creator: 'BurningTimes 개발팀',
|
||||
title: '인간 서버 개발자 업무 지시서 — 수상한잡화점',
|
||||
styles: {
|
||||
default: { document: { run: { font: FONT, size: 22 } } },
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
# SessionStart hook — memory/org junction을 $HOME/.claude/nerdnavis-memory/로 보장
|
||||
# SessionStart hook — memory/org junction을 $HOME/.claude/burningtimes-memory/로 보장
|
||||
# Claude user memory 경로(`$HOME/.claude/projects/*/memory`)의 모든 worktree 해시 폴더를
|
||||
# 중앙 저장소로 연결하여 worktree 경계 무관 조직 기억 실시간 공유 보장.
|
||||
# 2026-04-19 신설 — C34 확장 (P25 승격 + memory/org/ 편입)
|
||||
|
|
@ -8,10 +8,10 @@
|
|||
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
|
||||
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
|
||||
MARKER_NAME=".memory-junction-marker"
|
||||
CLAUDE_PROJECTS="$HOME/.claude/projects"
|
||||
LOCK_FILE="$HOME/.claude/.nerdnavis_memory_junction.lock"
|
||||
LOCK_FILE="$HOME/.claude/.burningtimes_memory_junction.lock"
|
||||
|
||||
# 0. Lock (race condition 방지, 동시 세션 시작 시 junction 중복 시도 차단)
|
||||
ATTEMPT=0
|
||||
|
|
@ -25,19 +25,19 @@ trap 'rm -f "$LOCK_FILE"' EXIT
|
|||
# 1. 중앙 저장소 + marker 보장
|
||||
mkdir -p "$CENTRAL_MEM" 2>/dev/null
|
||||
if [ ! -f "$CENTRAL_MEM/$MARKER_NAME" ]; then
|
||||
echo "nerdnavis-memory central junction target (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME" 2>/dev/null
|
||||
echo "burningtimes-memory central junction target (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME" 2>/dev/null
|
||||
fi
|
||||
|
||||
# 2. Claude projects base 부재 시 조기 종료 (Claude Code 첫 실행 전 PC)
|
||||
[ ! -d "$CLAUDE_PROJECTS" ] && exit 0
|
||||
|
||||
# 3. E--NerdNavisAi* 패턴 해시 폴더 순회 (루트·worktree 모두 포괄)
|
||||
# 3. E--BurningTimesAi* 패턴 해시 폴더 순회 (루트·worktree 모두 포괄)
|
||||
RECONNECTED=0
|
||||
CREATED=0
|
||||
SKIPPED=0
|
||||
FAILED=0
|
||||
|
||||
for hash_dir in "$CLAUDE_PROJECTS"/E--NerdNavisAi*; do
|
||||
for hash_dir in "$CLAUDE_PROJECTS"/E--BurningTimesAi*; do
|
||||
[ -d "$hash_dir" ] || continue
|
||||
mem_link="$hash_dir/memory"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
#!/bin/bash
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# NerdNavis — NAS git 서버측 post-receive hook
|
||||
# BurningTimes — NAS git 서버측 post-receive hook
|
||||
# Phase 3 (2026-04-15 PD님 승인)
|
||||
#
|
||||
# 목적: git push 도달 즉시 Discord 채널로 실시간 알림 발송
|
||||
# → 부서 세션이 구동되지 않은 상태에서도 PD님·PM·부서가 push 이벤트를 즉시 인지
|
||||
#
|
||||
# 배치 위치: <NAS bare repo 경로>/hooks/post-receive
|
||||
# 예: /volume1/git-repos/NerdNavisAi.git/hooks/post-receive
|
||||
# 예: /volume1/git-repos/BurningTimesAi.git/hooks/post-receive
|
||||
# 배치 후: chmod +x post-receive
|
||||
#
|
||||
# 환경변수 파일: 같은 hooks/ 디렉토리에 post-receive-env 파일 생성 후 다음 변수 정의
|
||||
|
|
@ -52,7 +52,7 @@ send_discord() {
|
|||
"title": "$TITLE",
|
||||
"description": "$DESC",
|
||||
"color": $COLOR,
|
||||
"footer": {"text": "너드나비스 git server · post-receive"}
|
||||
"footer": {"text": "BurningTimes git server · post-receive"}
|
||||
}]
|
||||
}
|
||||
EOF
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# Junction 해제 + 중앙 백업 + 레포 memory/org/ 원본 복구
|
||||
# 2026-04-19 신설 — C34 집행 실패 시 사용 (C6-1 롤백 경로 확보 의무)
|
||||
|
||||
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
|
||||
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
|
||||
CLAUDE_PROJECTS="$HOME/.claude/projects"
|
||||
|
||||
echo "=== memory 중앙화 롤백 시작 ==="
|
||||
|
|
@ -17,7 +17,7 @@ fi
|
|||
|
||||
# 2. 모든 worktree 해시 폴더의 user memory junction 제거
|
||||
REMOVED=0
|
||||
for hash_dir in "$CLAUDE_PROJECTS"/E--NerdNavisAi*; do
|
||||
for hash_dir in "$CLAUDE_PROJECTS"/E--BurningTimesAi*; do
|
||||
[ -d "$hash_dir" ] || continue
|
||||
mem_link="$hash_dir/memory"
|
||||
[ -e "$mem_link" ] || [ -L "$mem_link" ] || continue
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ if [ "$TODAY_COMMITS" -gt 0 ]; then
|
|||
NEEDS_CORE=1
|
||||
fi
|
||||
# 조직 룰(SKILL.md·C·P) 변경도 코어프레임워크 차기 활용 영향
|
||||
if echo "$CHANGED_FILES" | grep -qE "^\.claude/skills/너드나비스-코어룰/|^공유/인계서/"; then
|
||||
if echo "$CHANGED_FILES" | grep -qE "^\.claude/skills/BurningTimes-코어룰/|^공유/인계서/"; then
|
||||
NEEDS_CORE=1
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
|
||||
CENTRAL_AUDIT="$HOME/.claude/burningtimes-audit"
|
||||
[ ! -d "$CENTRAL_AUDIT" ] && exit 0
|
||||
|
||||
HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|||
REPO_AUDIT="$REPO_ROOT/memory/org/audit_logs"
|
||||
[ ! -d "$REPO_AUDIT" ] && exit 0
|
||||
|
||||
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
|
||||
CENTRAL_AUDIT="$HOME/.claude/burningtimes-audit"
|
||||
[ ! -d "$CENTRAL_AUDIT" ] && exit 0
|
||||
|
||||
HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
# post-commit hook — 중앙 $HOME/.claude/nerdnavis-memory/ → 레포 memory/org/ 단방향 sync
|
||||
# post-commit hook — 중앙 $HOME/.claude/burningtimes-memory/ → 레포 memory/org/ 단방향 sync
|
||||
# Claude user memory에 Write된 내용을 commit 포함시키기 위해 commit 직후 레포로 반영.
|
||||
# 2026-04-19 신설 — C34-3 동기화 4계층 (commit 최신본 보장)
|
||||
|
||||
|
|
@ -7,9 +7,9 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
REPO_MEM="$REPO_ROOT/memory/org"
|
||||
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
|
||||
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
|
||||
MARKER_NAME=".memory-junction-marker"
|
||||
LOCK_FILE="$HOME/.claude/.nerdnavis_memory_sync.lock"
|
||||
LOCK_FILE="$HOME/.claude/.burningtimes_memory_sync.lock"
|
||||
|
||||
[ ! -d "$CENTRAL_MEM" ] && exit 0
|
||||
[ ! -d "$REPO_MEM" ] && exit 0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/bash
|
||||
# SessionStart hook — 레포 memory/org/ → 중앙 $HOME/.claude/nerdnavis-memory/ 단방향 sync
|
||||
# SessionStart hook — 레포 memory/org/ → 중앙 $HOME/.claude/burningtimes-memory/ 단방향 sync
|
||||
# git pull 직후 원격 반영분을 중앙에 최신화. unflushed 중앙 변경은 대피 백업.
|
||||
# 2026-04-19 신설 — C34-3 동기화 4계층 (레포 SOT 원칙)
|
||||
|
||||
|
|
@ -7,9 +7,9 @@ REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
|
|||
[ -z "$REPO_ROOT" ] && exit 0
|
||||
|
||||
REPO_MEM="$REPO_ROOT/memory/org"
|
||||
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
|
||||
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
|
||||
MARKER_NAME=".memory-junction-marker"
|
||||
LOCK_FILE="$HOME/.claude/.nerdnavis_memory_sync.lock"
|
||||
LOCK_FILE="$HOME/.claude/.burningtimes_memory_sync.lock"
|
||||
|
||||
[ ! -d "$REPO_MEM" ] && exit 0
|
||||
|
||||
|
|
@ -24,7 +24,7 @@ trap 'rm -f "$LOCK_FILE"' EXIT
|
|||
|
||||
# 1. 중앙 저장소 보장
|
||||
mkdir -p "$CENTRAL_MEM" 2>/dev/null
|
||||
[ ! -f "$CENTRAL_MEM/$MARKER_NAME" ] && echo "nerdnavis-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME"
|
||||
[ ! -f "$CENTRAL_MEM/$MARKER_NAME" ] && echo "burningtimes-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MARKER_NAME"
|
||||
|
||||
# 2. unflushed 중앙 변경 탐지 (중앙 mtime > 레포 mtime + HEAD 미반영 의심)
|
||||
CONFLICT_COUNT=0
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
# bash sync_signal.sh update # push 성공 시 호출: 플래그 파일 갱신
|
||||
# bash sync_signal.sh check # UserPromptSubmit hook: 플래그 변경 시 pull
|
||||
|
||||
BUS_DIR="$HOME/.claude/.nerdnavis_bus"
|
||||
BUS_DIR="$HOME/.claude/.burningtimes_bus"
|
||||
mkdir -p "$BUS_DIR" 2>/dev/null
|
||||
|
||||
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
set +e # Degraded 운영 — 실패 시 exit 0 보장
|
||||
|
||||
# Lock 파일 (race 방지)
|
||||
LOCK_FILE="$HOME/.claude/.nerdnavis_unity_sync.lock"
|
||||
LOCK_FILE="$HOME/.claude/.burningtimes_unity_sync.lock"
|
||||
LOCK_STALE_SECONDS=300 # 5분 이상 lock = stale
|
||||
|
||||
# Stale lock cleanup (trap 이전)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# 너드나비스 조직 레포 - 신 PC 셋팅 검증 스크립트 (Windows / PowerShell)
|
||||
# BurningTimes 조직 레포 - 신 PC 셋팅 검증 스크립트 (Windows / PowerShell)
|
||||
#
|
||||
# 목적: `setup/setup_windows.ps1` 실행 후, 본 PC가 조직 레포를 정상 사용할 수 있는 상태인지
|
||||
# 파일 존재·OS 동작(reparse point)·실행 결과(JSON 파싱) 3축으로 검증.
|
||||
|
|
@ -31,7 +31,7 @@ function Warn([string]$name, [string]$detail) {
|
|||
$script:warn += "$name :: $detail"
|
||||
}
|
||||
|
||||
Write-Host "=== 너드나비스 셋팅 검증 ==="
|
||||
Write-Host "=== BurningTimes 셋팅 검증 ==="
|
||||
Write-Host "RepoRoot: $repoRoot"
|
||||
Write-Host ""
|
||||
|
||||
|
|
@ -65,7 +65,7 @@ if (Test-Path $pathsFile) {
|
|||
Check "paths.local.json 존재" $false "파일 없음(메인 레포도). setup_windows.ps1 선행 필요: $pathsFile"
|
||||
}
|
||||
|
||||
$required = @("NERDNAVIS_ROOT","UNITY_PROJECT_ROOT","FRAMEWORK_PKG_ROOT","TABLE_EXPORT_ROOT")
|
||||
$required = @("BURNINGTIMES_ROOT","UNITY_PROJECT_ROOT","FRAMEWORK_PKG_ROOT","TABLE_EXPORT_ROOT")
|
||||
if ($paths) {
|
||||
foreach ($k in $required) {
|
||||
$v = $paths.$k
|
||||
|
|
@ -73,9 +73,9 @@ if ($paths) {
|
|||
Check "paths.local.json 키 [$k]" $ok ("값=" + ($v -as [string]))
|
||||
}
|
||||
|
||||
# NERDNAVIS_ROOT 실제 디렉토리 존재 여부
|
||||
if ($paths.NERDNAVIS_ROOT) {
|
||||
Check "NERDNAVIS_ROOT 디렉토리 존재" (Test-Path $paths.NERDNAVIS_ROOT) $paths.NERDNAVIS_ROOT
|
||||
# BURNINGTIMES_ROOT 실제 디렉토리 존재 여부
|
||||
if ($paths.BURNINGTIMES_ROOT) {
|
||||
Check "BURNINGTIMES_ROOT 디렉토리 존재" (Test-Path $paths.BURNINGTIMES_ROOT) $paths.BURNINGTIMES_ROOT
|
||||
}
|
||||
# Unity·Framework·TableExport는 경고 수준 (존재하지 않아도 일부 작업은 가능)
|
||||
foreach ($k in @("UNITY_PROJECT_ROOT","FRAMEWORK_PKG_ROOT","TABLE_EXPORT_ROOT")) {
|
||||
|
|
@ -137,7 +137,7 @@ if (Test-Path $claudeMemoryBase) {
|
|||
|
||||
# 2.5. Live 증분 동기화 Junction 3축 검증 (C34, 2026-04-18 신설)
|
||||
# 축 1: 중앙 저장소 실체 / 축 2: reparse point / 축 3: marker 경유 읽기
|
||||
$centralLive = Join-Path $env:USERPROFILE ".claude\nerdnavis-live"
|
||||
$centralLive = Join-Path $env:USERPROFILE ".claude\burningtimes-live"
|
||||
$localLive = Join-Path $repoRoot ".live"
|
||||
$markerName = ".junction-marker"
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ if (Test-Path $localLive) {
|
|||
}
|
||||
|
||||
# 2.6. memory/org/ 중앙 저장소 + Junction 3축 검증 (C34-16, 2026-04-19 신설)
|
||||
$centralMemory = Join-Path $env:USERPROFILE ".claude\nerdnavis-memory"
|
||||
$centralMemory = Join-Path $env:USERPROFILE ".claude\burningtimes-memory"
|
||||
$memoryMarker = ".memory-junction-marker"
|
||||
|
||||
Check "memory 중앙 저장소 실체 존재" (Test-Path $centralMemory) $centralMemory
|
||||
|
|
@ -169,7 +169,7 @@ if (Test-Path $claudeMemoryBase) {
|
|||
$repoRootCount = 0
|
||||
$otherCount = 0
|
||||
|
||||
foreach ($d in (Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -like "E--NerdNavisAi*" })) {
|
||||
foreach ($d in (Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -like "E--BurningTimesAi*" })) {
|
||||
$memLink = Join-Path $d.FullName "memory"
|
||||
if (Test-Path (Join-Path $memLink $memoryMarker)) {
|
||||
$centralCount += 1
|
||||
|
|
@ -189,14 +189,14 @@ if (Test-Path $claudeMemoryBase) {
|
|||
}
|
||||
|
||||
# unflushed 중앙 대피본 감지
|
||||
$conflictDirs = Get-ChildItem "$env:USERPROFILE\.claude" -Directory -Filter "nerdnavis-memory.conflict-*" -ErrorAction SilentlyContinue
|
||||
$conflictDirs = Get-ChildItem "$env:USERPROFILE\.claude" -Directory -Filter "burningtimes-memory.conflict-*" -ErrorAction SilentlyContinue
|
||||
if ($conflictDirs.Count -gt 0) {
|
||||
Warn "memory unflushed 중앙 대피본 잔류" "$($conflictDirs.Count) 건 — 수동 병합 후 정리 필요: $($conflictDirs[0].FullName)"
|
||||
}
|
||||
}
|
||||
|
||||
# 2.7. audit 중앙 저장소 + Junction 3종 검증 (C34-17, 2026-04-20 #48 I-1 부분 집행 — verify_setup 2.7 단독)
|
||||
$centralAudit = Join-Path $env:USERPROFILE ".claude\nerdnavis-audit"
|
||||
$centralAudit = Join-Path $env:USERPROFILE ".claude\burningtimes-audit"
|
||||
$auditMarker = ".junction-marker"
|
||||
|
||||
Check "audit 중앙 저장소 실체 존재" (Test-Path $centralAudit) $centralAudit
|
||||
|
|
@ -223,11 +223,11 @@ if (Test-Path $centralAudit) {
|
|||
Warn "audit 중앙 하위 marker 결손" "정상 $subOk/3 — 부재: $($subMissing -join ', ') — audit_junction_ensure.sh 재실행 필요"
|
||||
}
|
||||
|
||||
# Junction 연결 검증 ($HOME/.claude/.nerdnavis_* → 중앙 하위)
|
||||
# Junction 연결 검증 ($HOME/.claude/.burningtimes_* → 중앙 하위)
|
||||
$junctionMap = @{
|
||||
".nerdnavis_auditor_calls" = "auditor_calls"
|
||||
".nerdnavis_warning_ignored" = "warning_ignored"
|
||||
".nerdnavis_bypass_log" = "bypass_log"
|
||||
".burningtimes_auditor_calls" = "auditor_calls"
|
||||
".burningtimes_warning_ignored" = "warning_ignored"
|
||||
".burningtimes_bypass_log" = "bypass_log"
|
||||
}
|
||||
$linkedCount = 0
|
||||
$unlinkedList = @()
|
||||
|
|
@ -251,7 +251,7 @@ if (Test-Path $centralAudit) {
|
|||
}
|
||||
|
||||
# 3. 경로 추상화 적용 여부 (CLAUDE.md 계열에 구 하드코딩 경로 잔존 확인)
|
||||
$hardcodePatterns = @("C:/Users/PC/Documents", "D:/NerdNavis/FilGoodBandits", "D:/NerdNavis/NerdNavis.Framework")
|
||||
$hardcodePatterns = @("C:/Users/PC/Documents", "D:/BurningTimes/FilGoodBandits", "D:/BurningTimes/BurningTimes.Framework")
|
||||
$scanTargets = @(
|
||||
(Join-Path $repoRoot "CLAUDE.md"),
|
||||
(Join-Path $repoRoot ".claude\skills")
|
||||
|
|
|
|||
|
|
@ -1,29 +1,29 @@
|
|||
#!/bin/bash
|
||||
# 너드나비스 조직 레포 - macOS / Linux 셋업
|
||||
# BurningTimes 조직 레포 - macOS / Linux 셋업
|
||||
# 사용: bash setup_macos.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
NERDNAVIS_ROOT="${NERDNAVIS_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
|
||||
BURNINGTIMES_ROOT="${BURNINGTIMES_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
|
||||
UNITY_ROOT="${UNITY_ROOT:-$HOME/dev/DeckBuilding}"
|
||||
FRAMEWORK_ROOT="${FRAMEWORK_ROOT:-$HOME/dev/NerdNavis.Framework}"
|
||||
FRAMEWORK_ROOT="${FRAMEWORK_ROOT:-$HOME/dev/BurningTimes.Framework}"
|
||||
GITEA_URL="${GITEA_URL:-https://burning.i234.me}"
|
||||
GITEA_SSH="${GITEA_SSH:-ssh://git@burning.i234.me:30030}"
|
||||
|
||||
echo "=== 너드나비스 조직 레포 셋업 ==="
|
||||
echo "NERDNAVIS_ROOT: $NERDNAVIS_ROOT"
|
||||
echo "=== BurningTimes 조직 레포 셋업 ==="
|
||||
echo "BURNINGTIMES_ROOT: $BURNINGTIMES_ROOT"
|
||||
|
||||
# 1. git 확인
|
||||
command -v git >/dev/null 2>&1 || { echo "git 필요"; exit 1; }
|
||||
|
||||
# 2. paths.local.json
|
||||
PATHS_FILE="$NERDNAVIS_ROOT/paths.local.json"
|
||||
PATHS_FILE="$BURNINGTIMES_ROOT/paths.local.json"
|
||||
if [ ! -f "$PATHS_FILE" ]; then
|
||||
cat > "$PATHS_FILE" <<EOF
|
||||
{
|
||||
"_description": "로컬 환경 경로. 커밋 금지.",
|
||||
"NERDNAVIS_ROOT": "$NERDNAVIS_ROOT",
|
||||
"BURNINGTIMES_ROOT": "$BURNINGTIMES_ROOT",
|
||||
"UNITY_PROJECT_ROOT": "$UNITY_ROOT",
|
||||
"FRAMEWORK_PKG_ROOT": "$FRAMEWORK_ROOT",
|
||||
"TABLE_EXPORT_ROOT": "$UNITY_ROOT/Assets/ResWork/Table/Export",
|
||||
|
|
@ -38,12 +38,12 @@ echo "paths.local.json 이미 존재. 유지."
|
|||
fi
|
||||
|
||||
# 3. 메모리 symlink
|
||||
ORG_MEM="$NERDNAVIS_ROOT/memory/org"
|
||||
ORG_MEM="$BURNINGTIMES_ROOT/memory/org"
|
||||
mkdir -p "$ORG_MEM"
|
||||
|
||||
CLAUDE_BASE="$HOME/.claude/projects"
|
||||
if [ -d "$CLAUDE_BASE" ]; then
|
||||
for d in "$CLAUDE_BASE"/*Documents*/ "$CLAUDE_BASE"/*너드나비스*/; do
|
||||
for d in "$CLAUDE_BASE"/*Documents*/ "$CLAUDE_BASE"/*BurningTimes*/; do
|
||||
[ -d "$d" ] || continue
|
||||
MEM="$d/memory"
|
||||
if [ -L "$MEM" ]; then
|
||||
|
|
@ -61,14 +61,14 @@ fi
|
|||
|
||||
# 3.5. Live 증분 동기화 중앙 저장소 + Symlink (C34, 2026-04-18 PD님 직접 지시)
|
||||
# worktree 격리로 인한 .live/ 물리 분리 해결을 위해
|
||||
# $HOME/.claude/nerdnavis-live/ 중앙 디렉토리로 symlink 연결한다.
|
||||
CENTRAL_LIVE="$HOME/.claude/nerdnavis-live"
|
||||
LOCAL_LIVE="$NERDNAVIS_ROOT/.live"
|
||||
# $HOME/.claude/burningtimes-live/ 중앙 디렉토리로 symlink 연결한다.
|
||||
CENTRAL_LIVE="$HOME/.claude/burningtimes-live"
|
||||
LOCAL_LIVE="$BURNINGTIMES_ROOT/.live"
|
||||
MARKER_NAME=".junction-marker"
|
||||
|
||||
mkdir -p "$CENTRAL_LIVE"
|
||||
if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then
|
||||
echo "nerdnavis-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME"
|
||||
echo "burningtimes-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME"
|
||||
fi
|
||||
|
||||
if [ -L "$LOCAL_LIVE" ]; then
|
||||
|
|
@ -89,17 +89,17 @@ else
|
|||
fi
|
||||
|
||||
# 3.6. memory/org/ 중앙 저장소 + Symlink (C34-16, 2026-04-19 신설)
|
||||
CENTRAL_MEM="$HOME/.claude/nerdnavis-memory"
|
||||
CENTRAL_MEM="$HOME/.claude/burningtimes-memory"
|
||||
MEMORY_MARKER=".memory-junction-marker"
|
||||
|
||||
mkdir -p "$CENTRAL_MEM"
|
||||
if [ ! -f "$CENTRAL_MEM/$MEMORY_MARKER" ]; then
|
||||
echo "nerdnavis-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MEMORY_MARKER"
|
||||
echo "burningtimes-memory central (C34-16, 2026-04-19)" > "$CENTRAL_MEM/$MEMORY_MARKER"
|
||||
fi
|
||||
|
||||
# 초기 sync 레포 → 중앙
|
||||
if [ -d "$NERDNAVIS_ROOT/memory/org" ]; then
|
||||
for f in "$NERDNAVIS_ROOT/memory/org"/*.md "$NERDNAVIS_ROOT/memory/org"/*.json; do
|
||||
if [ -d "$BURNINGTIMES_ROOT/memory/org" ]; then
|
||||
for f in "$BURNINGTIMES_ROOT/memory/org"/*.md "$BURNINGTIMES_ROOT/memory/org"/*.json; do
|
||||
[ -f "$f" ] || continue
|
||||
BASENAME=$(basename "$f")
|
||||
[ ! -f "$CENTRAL_MEM/$BASENAME" ] && cp "$f" "$CENTRAL_MEM/$BASENAME"
|
||||
|
|
@ -108,7 +108,7 @@ fi
|
|||
|
||||
# user memory symlink 중앙 재연결
|
||||
if [ -d "$CLAUDE_BASE" ]; then
|
||||
for d in "$CLAUDE_BASE"/E--NerdNavisAi*/; do
|
||||
for d in "$CLAUDE_BASE"/E--BurningTimesAi*/; do
|
||||
[ -d "$d" ] || continue
|
||||
mem_link="${d}memory"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# 너드나비스 조직 레포 - Windows PC 셋업
|
||||
# BurningTimes 조직 레포 - Windows PC 셋업
|
||||
# 사용: PowerShell에서 실행
|
||||
# .\setup_windows.ps1 ← 기본 셋업만
|
||||
# .\setup_windows.ps1 -CreateShortcuts ← 기본 셋업 + 바탕화면 바로가기 3종 생성 (주의 아래)
|
||||
# .\setup_windows.ps1 -NerdNavisRoot "C:\..." ← 레포 경로 지정
|
||||
# .\setup_windows.ps1 -BurningTimesRoot "C:\..." ← 레포 경로 지정
|
||||
# .\setup_windows.ps1 -CreateShortcuts -ClaudeExePath "C:\Tools\claude\claude.exe"
|
||||
# ← claude.exe 자동 탐지 실패 시 경로 수동 지정
|
||||
#
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
# 상세: memory/org/feedback_permissions_portability.md
|
||||
|
||||
param(
|
||||
[string]$NerdNavisRoot = $(Resolve-Path (Join-Path $PSScriptRoot "..")).Path,
|
||||
[string]$BurningTimesRoot = $(Resolve-Path (Join-Path $PSScriptRoot "..")).Path,
|
||||
[string]$UnityRoot = "",
|
||||
[string]$FrameworkRoot = "",
|
||||
[string]$GiteaUrl = "https://burning.i234.me",
|
||||
|
|
@ -25,14 +25,14 @@ param(
|
|||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# 경로 추정: NerdNavisRoot 드라이브 기반 동적 default (PC별 하드코딩 회피)
|
||||
# 사용자가 -UnityRoot/-FrameworkRoot 명시하면 그 값 우선, 미명시면 NerdNavisRoot 드라이브의 \NerdNavis\* 패턴으로 추정
|
||||
$rootDriveLetter = (Split-Path $NerdNavisRoot -Qualifier).TrimEnd(':')
|
||||
if (-not $UnityRoot) { $UnityRoot = "${rootDriveLetter}:\NerdNavis\FilGoodBandits\DeckBuilding" }
|
||||
if (-not $FrameworkRoot) { $FrameworkRoot = "${rootDriveLetter}:\NerdNavis\NerdNavis.Framework" }
|
||||
# 경로 추정: BurningTimesRoot 드라이브 기반 동적 default (PC별 하드코딩 회피)
|
||||
# 사용자가 -UnityRoot/-FrameworkRoot 명시하면 그 값 우선, 미명시면 BurningTimesRoot 드라이브의 \BurningTimes\* 패턴으로 추정
|
||||
$rootDriveLetter = (Split-Path $BurningTimesRoot -Qualifier).TrimEnd(':')
|
||||
if (-not $UnityRoot) { $UnityRoot = "${rootDriveLetter}:\BurningTimes\FilGoodBandits\DeckBuilding" }
|
||||
if (-not $FrameworkRoot) { $FrameworkRoot = "${rootDriveLetter}:\BurningTimes\BurningTimes.Framework" }
|
||||
|
||||
Write-Host "=== 너드나비스 조직 레포 셋업 ==="
|
||||
Write-Host "NerdNavisRoot: $NerdNavisRoot"
|
||||
Write-Host "=== BurningTimes 조직 레포 셋업 ==="
|
||||
Write-Host "BurningTimesRoot: $BurningTimesRoot"
|
||||
Write-Host "UnityRoot: $UnityRoot $(if (-not (Test-Path $UnityRoot)) { '(경로 미존재 - paths.local.json 생성 후 수동 수정 권장)' })"
|
||||
Write-Host "FrameworkRoot: $FrameworkRoot $(if (-not (Test-Path $FrameworkRoot)) { '(경로 미존재 - paths.local.json 생성 후 수동 수정 권장)' })"
|
||||
|
||||
|
|
@ -41,11 +41,11 @@ git --version | Out-Null
|
|||
if (-not $?) { throw "Git이 설치되지 않았습니다." }
|
||||
|
||||
# 2. paths.local.json 생성
|
||||
$pathsFile = Join-Path $NerdNavisRoot "paths.local.json"
|
||||
$pathsFile = Join-Path $BurningTimesRoot "paths.local.json"
|
||||
if (-not (Test-Path $pathsFile)) {
|
||||
$paths = [ordered]@{
|
||||
"_description" = "로컬 환경 경로. 커밋 금지."
|
||||
NERDNAVIS_ROOT = $NerdNavisRoot
|
||||
BURNINGTIMES_ROOT = $BurningTimesRoot
|
||||
UNITY_PROJECT_ROOT = $UnityRoot
|
||||
FRAMEWORK_PKG_ROOT = $FrameworkRoot
|
||||
TABLE_EXPORT_ROOT = (Join-Path $UnityRoot "Assets\ResWork\Table\Export")
|
||||
|
|
@ -63,7 +63,7 @@ if (-not (Test-Path $pathsFile)) {
|
|||
|
||||
# 3. Claude 사용자 메모리 연결 (junction)
|
||||
$claudeMemoryBase = "$env:USERPROFILE\.claude\projects"
|
||||
$orgMemoryTarget = Join-Path $NerdNavisRoot "memory\org"
|
||||
$orgMemoryTarget = Join-Path $BurningTimesRoot "memory\org"
|
||||
|
||||
if (-not (Test-Path $orgMemoryTarget)) {
|
||||
New-Item -ItemType Directory -Path $orgMemoryTarget | Out-Null
|
||||
|
|
@ -72,15 +72,15 @@ if (-not (Test-Path $orgMemoryTarget)) {
|
|||
$hashDirs = @()
|
||||
if (Test-Path $claudeMemoryBase) {
|
||||
# Claude Code는 프로젝트 경로의 각 세그먼트를 '-'로 이어 해시 폴더명을 만든다
|
||||
# (예: E:\NerdNavisAi → E--NerdNavisAi, C:\Users\PC\Documents\너드나비스 → C--Users-PC-Documents-너드나비스)
|
||||
# NerdNavisRoot의 리프 이름·드라이브 prefix·관례적 키워드를 모두 포괄하도록 필터 확장
|
||||
$rootLeaf = Split-Path $NerdNavisRoot -Leaf
|
||||
$rootDrive = (Split-Path $NerdNavisRoot -Qualifier).TrimEnd(':')
|
||||
# (예: E:\BurningTimesAi → E--BurningTimesAi, C:\Users\PC\Documents\BurningTimes → C--Users-PC-Documents-BurningTimes)
|
||||
# BurningTimesRoot의 리프 이름·드라이브 prefix·관례적 키워드를 모두 포괄하도록 필터 확장
|
||||
$rootLeaf = Split-Path $BurningTimesRoot -Leaf
|
||||
$rootDrive = (Split-Path $BurningTimesRoot -Qualifier).TrimEnd(':')
|
||||
$hashDirs = Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue |
|
||||
Where-Object {
|
||||
$_.Name -like "*Documents*" -or
|
||||
$_.Name -like "*너드나비스*" -or
|
||||
$_.Name -like "*NerdNavis*" -or
|
||||
$_.Name -like "*BurningTimes*" -or
|
||||
$_.Name -like "*BurningTimes*" -or
|
||||
$_.Name -like "*$rootLeaf*" -or
|
||||
$_.Name -like "$rootDrive--*"
|
||||
}
|
||||
|
|
@ -112,12 +112,12 @@ if ($hashDirs.Count -eq 0) {
|
|||
|
||||
# 3.5. Live 증분 동기화 중앙 저장소 + Junction (C34, 2026-04-18 PD님 직접 지시)
|
||||
# worktree 격리로 인한 .live/ 물리 분리 문제를 해결하기 위해
|
||||
# $HOME\.claude\nerdnavis-live\ 중앙 디렉토리로 junction 연결한다.
|
||||
# $HOME\.claude\burningtimes-live\ 중앙 디렉토리로 junction 연결한다.
|
||||
# 헌법 제1원칙 ⑤ 세션·PC 연속성의 근원 보장 장치.
|
||||
$centralLive = Join-Path $env:USERPROFILE ".claude\nerdnavis-live"
|
||||
$localLive = Join-Path $NerdNavisRoot ".live"
|
||||
$centralLive = Join-Path $env:USERPROFILE ".claude\burningtimes-live"
|
||||
$localLive = Join-Path $BurningTimesRoot ".live"
|
||||
$markerName = ".junction-marker"
|
||||
$markerText = "nerdnavis-live central junction target (C34, 2026-04-18)"
|
||||
$markerText = "burningtimes-live central junction target (C34, 2026-04-18)"
|
||||
|
||||
if (-not (Test-Path $centralLive)) {
|
||||
New-Item -ItemType Directory -Path $centralLive -Force | Out-Null
|
||||
|
|
@ -153,11 +153,11 @@ if (Test-Path $localLive) {
|
|||
}
|
||||
|
||||
# 3.6. memory/org/ 중앙 저장소 + Junction (C34-16, 2026-04-19 신설)
|
||||
# Claude user memory junction 대상을 $HOME\.claude\nerdnavis-memory\로 변경.
|
||||
# Claude user memory junction 대상을 $HOME\.claude\burningtimes-memory\로 변경.
|
||||
# 레포 `memory/org/`는 git 추적 SOT로 실체 디렉토리 유지 + sync 스크립트가 양방향 동기화.
|
||||
$centralMemory = Join-Path $env:USERPROFILE ".claude\nerdnavis-memory"
|
||||
$centralMemory = Join-Path $env:USERPROFILE ".claude\burningtimes-memory"
|
||||
$memoryMarkerName = ".memory-junction-marker"
|
||||
$memoryMarkerText = "nerdnavis-memory central (C34-16, 2026-04-19)"
|
||||
$memoryMarkerText = "burningtimes-memory central (C34-16, 2026-04-19)"
|
||||
|
||||
if (-not (Test-Path $centralMemory)) {
|
||||
New-Item -ItemType Directory -Path $centralMemory -Force | Out-Null
|
||||
|
|
@ -170,7 +170,7 @@ if (-not (Test-Path $centralMemoryMarker)) {
|
|||
}
|
||||
|
||||
# 초기 sync — 레포 memory/org → 중앙 (기존 중앙 파일 덮어쓰기 안 함)
|
||||
$repoMemoryOrg = Join-Path $NerdNavisRoot "memory\org"
|
||||
$repoMemoryOrg = Join-Path $BurningTimesRoot "memory\org"
|
||||
if (Test-Path $repoMemoryOrg) {
|
||||
Get-ChildItem $repoMemoryOrg -File -ErrorAction SilentlyContinue | Where-Object { $_.Extension -in @('.md','.json') } | ForEach-Object {
|
||||
$dst = Join-Path $centralMemory $_.Name
|
||||
|
|
@ -179,9 +179,9 @@ if (Test-Path $repoMemoryOrg) {
|
|||
Write-Host "memory 초기 sync 레포 → 중앙 완료"
|
||||
}
|
||||
|
||||
# 모든 E--NerdNavisAi* 해시 폴더 순회하여 junction 중앙으로 재연결 (광범위 filter)
|
||||
# 모든 E--BurningTimesAi* 해시 폴더 순회하여 junction 중앙으로 재연결 (광범위 filter)
|
||||
$allHashDirs = Get-ChildItem $claudeMemoryBase -Directory -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.Name -like "E--NerdNavisAi*" -or $_.Name -like "*NerdNavisAi*" }
|
||||
Where-Object { $_.Name -like "E--BurningTimesAi*" -or $_.Name -like "*BurningTimesAi*" }
|
||||
|
||||
foreach ($d in $allHashDirs) {
|
||||
$memLink = Join-Path $d.FullName "memory"
|
||||
|
|
@ -216,11 +216,11 @@ foreach ($d in $allHashDirs) {
|
|||
# 4. .claude/settings.json 부서 동기화 (루트 SOT → 개발팀/기획팀 복제)
|
||||
# Claude Code는 .claude/ 계층 auto-merge를 지원하지 않으므로 자식 디렉토리에서 세션 시작 시
|
||||
# 루트 settings.json을 인식하지 못함. 이를 우회하기 위해 루트 settings.json을 부서 디렉토리로 복제.
|
||||
$rootSettings = Join-Path $NerdNavisRoot ".claude\settings.json"
|
||||
$rootSettings = Join-Path $BurningTimesRoot ".claude\settings.json"
|
||||
if (Test-Path $rootSettings) {
|
||||
$deptPaths = @("개발팀", "기획팀")
|
||||
foreach ($dept in $deptPaths) {
|
||||
$deptClaudeDir = Join-Path $NerdNavisRoot "$dept\.claude"
|
||||
$deptClaudeDir = Join-Path $BurningTimesRoot "$dept\.claude"
|
||||
$deptSettings = Join-Path $deptClaudeDir "settings.json"
|
||||
if (-not (Test-Path $deptClaudeDir)) {
|
||||
New-Item -ItemType Directory -Path $deptClaudeDir -Force | Out-Null
|
||||
|
|
@ -286,9 +286,9 @@ if ($CreateShortcuts) {
|
|||
$desktop = [Environment]::GetFolderPath("Desktop")
|
||||
|
||||
$targets = @(
|
||||
@{ Name = "너드나비스_총괄PM"; Dir = $NerdNavisRoot; Desc = "너드나비스 총괄PM 세션 (루트)" },
|
||||
@{ Name = "너드나비스_개발팀"; Dir = (Join-Path $NerdNavisRoot "개발팀"); Desc = "너드나비스 개발팀 세션" },
|
||||
@{ Name = "너드나비스_기획팀"; Dir = (Join-Path $NerdNavisRoot "기획팀"); Desc = "너드나비스 기획팀 세션" }
|
||||
@{ Name = "BurningTimes_총괄PM"; Dir = $BurningTimesRoot; Desc = "BurningTimes 총괄PM 세션 (루트)" },
|
||||
@{ Name = "BurningTimes_개발팀"; Dir = (Join-Path $BurningTimesRoot "개발팀"); Desc = "BurningTimes 개발팀 세션" },
|
||||
@{ Name = "BurningTimes_기획팀"; Dir = (Join-Path $BurningTimesRoot "기획팀"); Desc = "BurningTimes 기획팀 세션" }
|
||||
)
|
||||
|
||||
foreach ($t in $targets) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue