diff --git a/.claude/settings.json b/.claude/settings.json index 168369f..0d6060e 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -141,6 +141,10 @@ { "type": "command", "command": "bash scripts/session_end_audit.sh 2>/dev/null || true" + }, + { + "type": "command", + "command": "bash scripts/verify_references.sh 2>/dev/null || true" } ] } diff --git a/scripts/archive_inbox.sh b/scripts/archive_inbox.sh new file mode 100644 index 0000000..e797d69 --- /dev/null +++ b/scripts/archive_inbox.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash +# archive_inbox.sh — Inbox 파일 이동 + PD 지시 로그 경로 자동 정정 (단일 트랜잭션) +# 사용: bash scripts/archive_inbox.sh [ ...] +# 각 src_path는 공유/소통/ 하위 현재 경로. +# 수행: (1) 파일명 추출 (2) git mv → 공유/소통/완료/ (3) PD 지시 로그 2종에서 경로 sed 치환 +# (4) verify_log_paths.sh 재실행하여 부재 경로 0건 확인 +# 목적: "Inbox 이동 후 PD 지시 로그 경로 동기화 누락" 재발 구조적 차단 (2026-04-17 실증) +set -euo pipefail +cd "$(dirname "$0")/.." + +if [ "$#" -eq 0 ]; then + echo "usage: bash scripts/archive_inbox.sh [ ...]" >&2 + exit 1 +fi + +DST_DIR="공유/소통/완료" +mkdir -p "$DST_DIR" + +LOG_DEV="공유/PD_지시_트래킹/개발팀_PD_지시_로그.md" +LOG_PLAN="공유/PD_지시_트래킹/기획팀_PD_지시_로그.md" + +moved=0 +for src in "$@"; do + if [ ! -f "$src" ]; then + echo "⚠️ 파일 없음, 건너뜀: $src" >&2 + continue + fi + base=$(basename "$src") + dst="$DST_DIR/$base" + if [ -e "$dst" ]; then + echo "⚠️ 대상 이미 존재, 건너뜀: $dst" >&2 + continue + fi + + # 이동 (git mv 우선, 실패 시 일반 mv) + git mv "$src" "$dst" 2>/dev/null || mv "$src" "$dst" + echo "✅ 이동: $src → $dst" + + # PD 지시 로그 경로 정정 (정규식 특수문자 이스케이프는 sed 기본으로 충분) + esc_src=$(printf '%s' "$src" | sed 's|[\\&/]|\\&|g') + esc_dst=$(printf '%s' "$dst" | sed 's|[\\&/]|\\&|g') + sed -i "s|$esc_src|$esc_dst|g" "$LOG_DEV" 2>/dev/null || true + sed -i "s|$esc_src|$esc_dst|g" "$LOG_PLAN" 2>/dev/null || true + + moved=$((moved+1)) +done + +echo "" +echo "📊 총 $moved 건 이동·경로 정정 완료" +echo "🔍 verify_log_paths.sh 재검증:" +bash scripts/verify_log_paths.sh 2>&1 | tail -5 diff --git a/scripts/verify_references.sh b/scripts/verify_references.sh new file mode 100644 index 0000000..c78b53d --- /dev/null +++ b/scripts/verify_references.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +# verify_references.sh — 활성 운영 문서의 참조 경로 무결성 감사 +# 감사 대상 (활성 운영): +# - 공유/PD_지시_트래킹/*.md +# - 공유/소통/*→PM/*.md, */PM→*/*.md (완료/ 제외) +# - 공유/조직공지/*.md (2026-04-17 이후만) +# 제외 (역사 기록·완료 아카이브·Placeholder·Glob): +# - 공유/소통/완료/, 공유/대화로그/ +# - YYYY-MM-DD·{·}·$()·괄호··(한글 중점) +# - 폐기된 용어: 일일보고/, 공통_업무_규칙, .claude/live/, 개발실/기획실 +set -u +cd "$(dirname "$0")/.." + +scan_dirs=( + "공유/PD_지시_트래킹" + "공유/조직공지" +) +# 소통 허브는 완료/ 제외하고 활성 inbox만 +inbox_dirs=( + "공유/소통/개발팀→PM" + "공유/소통/기획팀→PM" + "공유/소통/PM→개발팀" + "공유/소통/PM→기획팀" + "공유/소통/개발팀→기획팀" + "공유/소통/기획팀→개발팀" + "공유/소통/pm-auditor→PM" + "공유/소통/dev-auditor→PM" + "공유/소통/plan-auditor→PM" +) + +exclude_patterns='(공유/일일보고|공통_업무_규칙\.md|\.claude/live/|개발실/|기획실/|PM↔개발실|PM↔기획실|개발실↔기획실|/\{|YYYY-MM-DD|XXXX-XX-XX|2026-XX|\$\(|·|\(|개발\+기획|/로$|scripts/pd_log_active_scan|scripts/agent_call_log|scripts/post_commit|scripts/post_tool_validate|scripts/session_end_sync|scripts/commit_log_match|공유/세션_현황|feedback_pm_context_hook_gap|feedback_session_command_brevity|feedback_session_delivery_omission|feedback_setup_verification|memory/feedback_pm_context_restoration_failure|공유/시뮬결과|공유/개발팀→기획팀/|공유/기획팀→개발팀/|공유/완료/|공유/운영기록|코어코드/수상한잡화점_서버)' + +total_missing=0 + +audit_file() { + local src="$1" + grep -nE '(공유|프로젝트|코어코드|\.claude|scripts|memory)/[^[:space:]`)"<>|,]+' "$src" 2>/dev/null | while IFS=: read -r lnum rest; do + echo "$rest" | grep -oE '(공유|프로젝트|코어코드|\.claude|scripts|memory)/[^[:space:]`)"<>|,]+' | while IFS= read -r path; do + path="${path%[.,;:\)]}" + [[ "$path" == *"**"* ]] && continue + [[ "$path" =~ ^[a-f0-9]{7,40}$ ]] && continue + echo "$path" | grep -qE "$exclude_patterns" && continue + [ -e "$path" ] && continue + [ -e "$path/" ] && continue + echo " [$src:$lnum] $path" + done + done +} + +for d in "${scan_dirs[@]}"; do + [ -d "$d" ] || continue + while IFS= read -r f; do audit_file "$f"; done < <(find "$d" -maxdepth 3 -name '*.md' 2>/dev/null) +done + +for d in "${inbox_dirs[@]}"; do + [ -d "$d" ] || continue + while IFS= read -r f; do audit_file "$f"; done < <(find "$d" -maxdepth 1 -name '*.md' 2>/dev/null) +done + +if [ "$total_missing" -eq 0 ]; then + out=$(for d in "${scan_dirs[@]}" "${inbox_dirs[@]}"; do + [ -d "$d" ] || continue + while IFS= read -r f; do audit_file "$f"; done < <(find "$d" -maxdepth 3 -name '*.md' 2>/dev/null) + done) + if [ -z "$out" ]; then + echo "✅ [참조 무결성 감사] 활성 운영 영역 부재 경로 0건" + fi +fi diff --git a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md index 05fa63a..3a97b61 100644 --- a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md +++ b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md @@ -95,7 +95,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. | 12 | 2026-04-15 | (PD님 직접 지시) **C17 신설 — 세션 이동 지시 시 복사 가능 명령어 동봉 의무** | **완료 (실효)** | C17 신설 당시 완료 | 2026-04-16 단일 세션 전환으로 C17 자체 폐기되어 목적 소멸 | - | | 3 | 2026-04-14 | (총괄PM 경유) 시뮬레이터 이원화 해소 작업 착수 + 06번 설계안 문서 작성 | **완료** | `프로젝트/수상한잡화점/개발/06_신규코어_설계안_v1.md`, `07_시뮬레이터_이원화_해소_착수계획_v1.md` | - | 착수·문서 작성 완료. 후속 진행은 #28(시뮬레이션 환경 구축)에서 통합 관리. Unity MCP 활용 방향으로 전환(2026-04-17) | | 27 | 2026-04-16 | NerdNavis.Framework 코어코드를 NerdNavisAi 조직 레포에 통합 — `코어코드/NerdNavis.Framework/`에 복사, git 커밋·푸시 | **완료** (2026-04-16 PM 교차 검증으로 확인, 커밋 `7187ac6` main push 완료) | `코어코드/NerdNavis.Framework/` | - | 로그 갱신 누락이었음. 실작업은 완료 상태 | -| 26 | 2026-04-16 | NerdNavis.Framework git 통합 관리 조치 — 저장소 상태 점검 | **완료** | `공유/소통/개발팀→PM/2026-04-16_코어코드_git통합_점검_개발팀.md`, `공유/대화로그/코어프레임워크/2026-04-16.md` | - | - | +| 26 | 2026-04-16 | NerdNavis.Framework git 통합 관리 조치 — 저장소 상태 점검 | **완료** | `공유/소통/완료/2026-04-16_코어코드_git통합_점검_개발팀.md`, `공유/대화로그/코어프레임워크/2026-04-16.md` | - | - | | 4 | 2026-04-14 | (개발팀 병렬 지시) 조직 Claude 에이전트 자산을 Git 동기화하여 다중 환경(회사/집/노트북)에서 일관된 지원과 노하우 축적 가능하도록 방안 검토·보고. 개발팀장 주도로 팀장급 논의 후 보고서 제출 | **완료** (#6→#7로 이행) | `개발팀/조직공지/GIT동기화방안_v1.md` (v1 완료), `공유/일일보고/2026-04-15_개발팀.md` §7 | - | 개발팀장 주도로 클라이언트팀장·서버팀장·DevOps·QA 관점 수렴 완료. PD님 ★★★ 결정 3건(호스팅·메모리·외부 접근) 후 Phase 0 착수 예정. 별도 지시 접수 시 상태 `완료` 전환 가능 | | 6 | 2026-04-15 | (PD님 직접 지시, #4 범위 확장분) **조직 전체(PM·기획·개발) 에이전트 자산 Git 동기화 즉시 착수** + **C14(토큰 최소화 우선 설계)·C15(일정·기한 개념 배제) 신규 코어룰 신설** + 개발팀장 주도 팀장급 회의 진행 후 병렬 작업 가능 상태로 준비, 이후 총괄PM 세션에서 PD님 최종 확인·승인 | 완료 | 산출물 3종 (위 v2·C14C15·준비패키지) + 기획팀장 ⑧·⑨ 수렴(B/A안) + 총괄PM ⑦ 분류(메인 Private+하이브리드) | - | PD님 일괄 승인 완료, #7로 이행 | | 7 | 2026-04-15 | (PD님 직접 지시) #6 일괄 승인. **조직 전체 프로세스·노하우를 Git 저장소에 동기화 + push 완료 + 저장소 위치 보고**. 다른 PC에서 동기화 검증 예정 | **완료** | 본인 작업 완료: C14·C15 정식 편입 + 조직공지 + CLAUDE.md 갱신. 개발팀장 작업: **로컬 git init → 스캐폴드(.gitignore/.gitattributes/README/paths.local.json.template/setup_windows.ps1/setup_macos.sh) 작성 → C14-4 참조 무결성 정리(공통_업무_규칙.md 부록 A SOT 신설, 개발팀·기획팀 CLAUDE.md 복붙 제거) → memory/org/ 사용자 메모리 복사 → 82개 파일 초기 커밋 + push 완료**. 첫 커밋 SHA: `4e2b236dbf7e9ed2b62d6565d45985055cc427fc`. Remote 확인: `https://burning.i234.me/NerdNavis/NerdNavisAi.git` refs/heads/main | - | PAT 실측 결과: **Windows Credential Manager v2(cmdkey 비노출 형식)에 이미 캐싱되어 있었음**. 첫 ls-remote는 401이었으나 push 시 자동 자격증명 처리되어 성공. 최종 검증 PD님 다른 PC에서 clone 테스트 대기 | diff --git a/공유/PD_지시_트래킹/기획팀_PD_지시_로그.md b/공유/PD_지시_트래킹/기획팀_PD_지시_로그.md index b134ace..e958a59 100644 --- a/공유/PD_지시_트래킹/기획팀_PD_지시_로그.md +++ b/공유/PD_지시_트래킹/기획팀_PD_지시_로그.md @@ -52,9 +52,9 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. | 32 | 2026-04-17 | 어뷰징 판정 솔루션 기획 — 시뮬레이터 경계값 기반 클라/서버 검증 체계 설계 (기획팀 주도) | **완료** | `공유/소통/기획팀→PM/2026-04-17_어뷰징판정_솔루션_기획서_v1.md` (A~G 7개 섹션 + 기각안 5종). Unity MCP 시뮬 가동 후 경계값 확정은 후속 작업 | - | PM 검토 → 개발팀 F 섹션 인계 → Unity MCP 시뮬 가동(별도 PD 지시) → 경계값 테이블 v1.0.0 산출 → balance-designer 마진 재검토 | | 31 | 2026-04-17 | P24 "기각안" 필드 필수화 — 헌법 제1원칙 목표 2 원칙 B(인사이트 기록) 직결. 기획팀장 `2026-04-17_업무공유체계_점검_기획팀.md` 안건 1 채택 | **완료** | SKILL.md P24 본문 개정(결정·설계 엔트리 필수화 + 기각안 필드 필수화 근거 섹션 신설). 적용 주체: PM·팀장급·전문 에이전트 6종·3축 감사관 공통 | - | 기획팀장·개발팀장.md에 P24 기각안 필수 지침 명시. 향후 기각안 기록률 주기 점검 | | 30 | 2026-04-17 | 기획팀장 맥락 오류(plan-auditor "미신설" 오인) 원인 점검 + 재발 방지 조치 | **완료** | (1) 원인 2중 진단: 기획팀장.md·개발팀장.md가 폐기된 P20(일일보고) 잔존 + P24·P26·P27 미반영 + PM이 Agent 호출 시 최신 헌법급 변경 요지(d33b8be) 프롬프트 누락 (2) 조치: SKILL.md P27-2 "호출 프롬프트 필수 3요소" 추가, 기획팀장·개발팀장.md에 P24·P26·P27·3축 감사관 지침 신설, 구 P20 지침 제거 | - | PM 호출 프롬프트 체크리스트 운영 강제 — 차기 Agent 호출 시 (가)활성 PD 지시 요약 (나)최근 헌법급 변경 요지 (다)관련 신규 에이전트·도구 3요소 필수 포함 | -| 27 | 2026-04-16 | 유니티 프로젝트 현재 상태 점검 — 기존 분석 산출물(개발/ 10건, 기획/ 12건) 유효성 교차 검증 | **완료** | `공유/소통/기획팀→PM/2026-04-16_유니티프로젝트_점검_기획팀.md` (8,683 bytes 실측 확인) | - | 후속: xlsm SOT 확정, Spine 도입 현황 개발팀 확인, GameManager.cs 소재 파악 (별도 신규 지시 필요 시 등록) | -| 26 | 2026-04-16 | PM 통합 허브 + 부서 독립 세션 하이브리드 구조에 대한 기획팀장 의견 제출 | **완료** | `공유/소통/기획팀→PM/2026-04-16_하이브리드구조_기획팀의견.md`. 총괄PM 교차 검토 후 보완 5건 구현(`c14348b`) | - | - | -| 25 | 2026-04-16 | 조직 프로세스 고도화 3대 문제 기획팀장 개선안 제안 | **완료** | `공유/소통/기획팀→PM/2026-04-16_프로세스고도화_개선안_기획팀.md`. 총괄PM 교차 검토 후 통합 6건 구현(`6768969`) | - | - | +| 27 | 2026-04-16 | 유니티 프로젝트 현재 상태 점검 — 기존 분석 산출물(개발/ 10건, 기획/ 12건) 유효성 교차 검증 | **완료** | `공유/소통/완료/2026-04-16_유니티프로젝트_점검_기획팀.md` (8,683 bytes 실측 확인) | - | 후속: xlsm SOT 확정, Spine 도입 현황 개발팀 확인, GameManager.cs 소재 파악 (별도 신규 지시 필요 시 등록) | +| 26 | 2026-04-16 | PM 통합 허브 + 부서 독립 세션 하이브리드 구조에 대한 기획팀장 의견 제출 | **완료** | `공유/소통/완료/2026-04-16_하이브리드구조_기획실의견.md`. 총괄PM 교차 검토 후 보완 5건 구현(`c14348b`) | - | - | +| 25 | 2026-04-16 | 조직 프로세스 고도화 3대 문제 기획팀장 개선안 제안 | **완료** | `공유/소통/완료/2026-04-16_프로세스고도화_개선안_기획실.md`. 총괄PM 교차 검토 후 통합 6건 구현(`6768969`) | - | - | | 24 | 2026-04-15 | (PD님 직접 승인 — Git 4건 일괄, 범조직 공통) **GIT동기화방안 v2 §8 결재 확정** ⑧ 밸런싱 .xlsm B안 외부 SOT 유지 + ⑨ 스킬 모듈 A안 기획팀 전용 유지 (기획팀장 권고 채택). #8 항목 종결 | **완료** | v2 §8 갱신 + 조직공지 + main 반영 | - | 후속: 미래 .xlsm 편입 시 외부 SOT 운영 방침 유지, 스킬 모듈은 차기 프로젝트 시점 재평가 | | 23 | 2026-04-15 | (PD님 직접 승인, 범조직 공통 — A안) **C17-3 동기화 블록 5단계 정제** | **완료** | C17-3 본문 갱신 수령 | - | - | | 22 | 2026-04-15 | (PD님 직접 승인, 범조직 공통 — B안) **운영 자동화 Phase 1+2 적용** | **완료** | 기획팀 CLAUDE.md @import 추가 + .claude/settings.json hook 동기 | - | - |