diff --git a/scripts/verify_setup.ps1 b/scripts/verify_setup.ps1 index 163a8b5..36cca1b 100644 --- a/scripts/verify_setup.ps1 +++ b/scripts/verify_setup.ps1 @@ -195,6 +195,61 @@ if (Test-Path $claudeMemoryBase) { } } +# 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" +$auditMarker = ".junction-marker" + +Check "audit 중앙 저장소 실체 존재" (Test-Path $centralAudit) $centralAudit + +if (Test-Path $centralAudit) { + Check "audit 중앙 최상위 marker" (Test-Path (Join-Path $centralAudit $auditMarker)) "$centralAudit\$auditMarker" + + $auditSubs = @("auditor_calls", "warning_ignored", "bypass_log") + $subOk = 0 + $subMissing = @() + foreach ($sub in $auditSubs) { + $subDir = Join-Path $centralAudit $sub + $subMarkerPath = Join-Path $subDir $auditMarker + if ((Test-Path $subDir) -and (Test-Path $subMarkerPath)) { + $subOk += 1 + } else { + $subMissing += $sub + } + } + + if ($subOk -eq 3) { + Check "audit 중앙 하위 3종 marker" $true "auditor_calls / warning_ignored / bypass_log" + } else { + Warn "audit 중앙 하위 marker 결손" "정상 $subOk/3 — 부재: $($subMissing -join ', ') — audit_junction_ensure.sh 재실행 필요" + } + + # Junction 연결 검증 ($HOME/.claude/.nerdnavis_* → 중앙 하위) + $junctionMap = @{ + ".nerdnavis_auditor_calls" = "auditor_calls" + ".nerdnavis_warning_ignored" = "warning_ignored" + ".nerdnavis_bypass_log" = "bypass_log" + } + $linkedCount = 0 + $unlinkedList = @() + foreach ($localName in $junctionMap.Keys) { + $localPath = Join-Path $env:USERPROFILE ".claude\$localName" + $markerViaJunction = Join-Path $localPath $auditMarker + if (Test-Path $markerViaJunction) { + $linkedCount += 1 + } else { + $unlinkedList += $localName + } + } + + if ($linkedCount -eq 3) { + Check "audit junction 3종 연결" $true "전수 정상" + } elseif ($linkedCount -gt 0) { + Warn "audit junction 부분 연결" "정상 $linkedCount/3 — 미연결: $($unlinkedList -join ', ')" + } else { + Warn "audit junction 미연결" "세션 재시작 후 audit_junction_ensure.sh 자동 실행 필요" + } +} + # 3. 경로 추상화 적용 여부 (CLAUDE.md 계열에 구 하드코딩 경로 잔존 확인) $hardcodePatterns = @("C:/Users/PC/Documents", "D:/NerdNavis/FilGoodBandits", "D:/NerdNavis/NerdNavis.Framework") $scanTargets = @( diff --git a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md index b65154c..56c9cfd 100644 --- a/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md +++ b/공유/PD_지시_트래킹/개발팀_PD_지시_로그.md @@ -33,7 +33,6 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. |---|------|----------|----------|-----------|----------|----------| | 2 | 2026-04-14 | 서버 Critical 보안 3건 보류 | 보류 | `프로젝트/수상한잡화점/개발/05_서버연동_현황_v1.md` | 서버 파트 정비 미완료 (PD님 지시) | 서버팀 가동 시점에 블로커급 재개. 담당: 서버팀장. 재개 트리거: 서버 파트 정비 완료 통보 | | 38 | 2026-04-17 | (#28 후속 분리) Phase 3 재개 로드맵 결정 — Unity MCP 단일축 기반 밸런스 작업 재개 범위·선후관계·검증 축 확정 | 보류 | (로드맵 확정 시 기입) | PD님 별도 논의 예정 | 재개 트리거: PD님 Phase 3 재개 지시 수령. 기획팀 #3 동시 재개 | -| 49 | 2026-04-20 | (후속 안건·조직 공통) **#48 G 집행 기각안 1·2 후속 검토** — setup 3.7·verify 2.7·BYPASS 파일 2종(`.nerdnavis_bypass_active`·`.nerdnavis_bypass_reason`) 중앙화. PD님 2026-04-20 지시 "안건 등재만, 집행 착수는 추후 판단" | 대기 | (실질 필요성 4문항 검증 후 기입) | - | 재개 트리거: PD님 추가 지시 수령 + `feedback_pm_surface_rationale_proposal.md` 4문항 체크리스트 통과(C36-3). BYPASS 파일 중앙화는 Windows 파일 junction 불가로 디렉토리 이관 + `auditor_guard.sh` 경로 수정 필요. 현재 hook 자동 처리 중이므로 실질 필요성 미확정 | > **2026-04-15 오후 추가 갱신 (C4·C13 위반 자진 정정 2차)**: > #5번 신규 등재. PD님 3대 지시(A/B/C) 및 #1 산출물 경로에 Framework Tier 1 구현체(`D:/NerdNavis/NerdNavis.Framework/`)를 소급 등록. **B 착수 시점 및 Git 동기화 병렬 지시(#4) 착수 시점에 총괄PM 공유를 누락**한 건을 PD님이 직접 지적하여 즉시 정정. 근본 원인: "C 항목 진행 전 지시 대기" 지시를 본인이 **PM 공유 전체 보류**로 잘못 확대 해석. C4(총괄PM 하달)·C13(4단계 가시화)의 "작업 착수 시점=상시 공유 의무" 원칙을 거스른 것. 재발 방지 관례: **신규 트랙 착수 즉시 pm-general 공유 → TodoWrite 항목 생성** (총괄PM 채택 권고). 자체 경위는 `공유/일일보고/2026-04-15_개발팀.md` 오후 섹션 참조. @@ -92,6 +91,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. | # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 | |---|------|----------|----------|-----------|----------|----------| +| 49 | 2026-04-20 | (후속 안건·조직 공통) **verify_setup 2.7 단독 집행** — #48 G 기각안 1·2 후속 검토 중 verify_setup 2.7만 실질 이득 인정. setup 3.7·BYPASS 파일 2종 중앙화는 PD님 판단으로 **기각 확정** (재논의 대상 아님) | **완료 (2/3 기각)** | **[완료: 2026-04-20 12:40 · commit: (본 후속 commit) · 참조: `공유/대화로그/조직운영/2026-04-20.md` "#49 verify_setup 2.7 단독 집행" 엔트리]** `scripts/verify_setup.ps1` 2.7 섹션 신설 (audit 중앙 저장소 실체·marker·3종 하위 sub-marker·junction 3종 연결 검증). 기각 2종 경위는 본 대화로그 엔트리 | - | **기각 2종(setup 3.7·BYPASS 중앙화) 폐기 확정** — 향후 현황 보고 미포함 (P28-8) | | 48 | 2026-04-19 | (PD님 직접 지시) **세션 최종 점검 6개선 안건 이어받기 집행** — A·B·C 집행 + D·F·G 집행 + C36 헌법급 신설 + audit C34 3종 편입 | **완료** | **[완료: 2026-04-20 12:17 · commit: 224617d (A·B·C) + 9e8c0b0 (D·F·G·C36) + ccd37da (C10-6 3중 전파 완결·완료 이동) · 참조: `공유/대화로그/조직운영/2026-04-20.md` "#48 A·B·C 집행" + "#48 D·F·G 집행 + C36 헌법급 신설" 2개 엔트리]** (집행 11+종) A: `scripts/auditor_call_log.sh` grep -qw 수정 · B: `scripts/pm_context_restore.sh` 경로 필터 · C: 본 PC UNRESOLVED 수동 RESOLVED · D: 중앙 `.live/README.md` · F: pm-auditor 5-E 신설 · G (a): audit 중앙 통합 (scripts 3종 + settings.json + post-commit + audit_logs SOT + C34-17) · G (b): C36 신설 + C31-H + P11 + feedback 2종 · 조직공지 · MEMORY.md · CLAUDE.md · E 진행 안 함 | - | 본 commit push 완료 시 모든 PC git pull + 세션 재시작으로 자동 동기화. BYPASS 파일 2종·setup 3.7·verify 2.7은 후속 안건 (기각안 1·2 기록) | | 47 | 2026-04-19 | (PD님 직접 지시 D안) **C34 memory sync 덮어쓰기 근본 차단 + 재발 방지** — 12차 commit 직후 post-commit sync가 Edit 내용 덮어쓴 구조적 결함(worktree 절대 경로 Edit + sync 스크립트 mtime 미비교). D안 집행 | **완료** | **[완료: 2026-04-19 21:45 · commit: (본 13차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "memory sync 덮어쓰기 근본 차단" 엔트리]** (집행 4종) `scripts/sync_memory_central_to_repo.sh` mtime 비교 보호 추가 (레포 mtime이 중앙보다 최신이면 스킵 + 경고) · SKILL.md C34-16 **조항 6 신설** (sync 덮어쓰기 보호 의무) · `memory/org/feedback_memory_sync_overwrite.md` 신설 (본 사건 경위·근본 원인·해결·재발 방지·교훈) + MEMORY.md 인덱스 | - | 본 세션 C34 관련 구조적 결함 3연속 실증(sentinel·BYPASS·sync) 모두 feedback·규칙 반영 완료 | | 46 | 2026-04-19 | (PD님 직접 지시) **BYPASS 메커니즘 파일 기반 전환 — 옵션 A 집행** — 환경변수 방식이 Claude Code tool_use hook에 전달되지 않는 구조적 결함(2026-04-19 11차 commit 실증) 수정 | **완료** | **[완료: 2026-04-19 21:35 · commit: (본 12차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "BYPASS 파일 기반 전환" 엔트리]** (집행 3종) `scripts/auditor_guard.sh` 파일 기반 BYPASS 우선 분기 + 환경변수 fallback · SKILL.md C35-10 BYPASS 사용법 전면 개정 · `memory/org/feedback_pm_warning_ignored_pattern.md` 2차 실증 사례 append + 사용법 섹션 신설 | - | 파일 기반 플래그(`$HOME/.claude/.nerdnavis_bypass_active`)로 hook 환경과 무관하게 작동 보장. 작업 완료 시 플래그 제거 의무 명문화 | diff --git a/공유/대화로그/조직운영/2026-04-20.md b/공유/대화로그/조직운영/2026-04-20.md index ad51980..c54d8b7 100644 --- a/공유/대화로그/조직운영/2026-04-20.md +++ b/공유/대화로그/조직운영/2026-04-20.md @@ -153,3 +153,22 @@ Critical 1·Major 2·Minor 1·Improvement 1 지적 중: - 본 commit + push 완료 시 **다른 세션·PC 즉시 동기화 가능** - C10-6 3중 전파 완료 (조직공지 + CLAUDE.md 요약 + 감사관 파일 + feedback 2종 + 대화로그) - #48 활성 지시 종결 → 완료 아카이브 이동 + +--- + + +## [PM 집행 완료] #49 verify_setup 2.7 단독 집행 + setup 3.7·BYPASS 중앙화 기각 확정 + +- **요지**: PD님 지시 "verify_setup 2.7 항목만 진행, 나머지는 보류·아카이브. 폐기 안건은 추후 보고 미포함" 수용. #49를 3종 묶음에서 1종 단독 집행으로 축소. +- **집행**: `scripts/verify_setup.ps1` 2.7 섹션 신설 + - audit 중앙 저장소 실체 존재 검증 + - 최상위 marker + 3종 하위(`auditor_calls`·`warning_ignored`·`bypass_log`) sub-marker 검증 + - Junction 3종 연결 검증 (`$HOME/.claude/.nerdnavis_*` → 중앙 하위) + - 기존 2.5(Live)·2.6(memory) 패턴 동형. 파일 1종 수정 +- **실질 이득**: 향후 junction 이상(2026-04-19 sentinel 손실 사건급) 자동 감지 도구 확보 +- **기각 2종 (폐기 확정)**: + 1. **setup 3.7 (audit junction 자동 설치 섹션)** — 기각 사유: SessionStart hook이 `audit_junction_ensure.sh` 자동 실행으로 이미 처리. setup 스크립트 추가 설치는 **중복 안전망** 성격이며 실질 이득 미인정. 향후 hook 체계 변경 시 재검토 가능하나 현 구조에선 불요 + 2. **BYPASS 파일 2종 중앙화** — 기각 사유: BYPASS 설계 의도(일시 우회 + 작업 완료 직후 플래그 제거, SKILL.md C35-10)와 **상충**. 중앙화 시 PC A의 미제거 플래그가 PC B로 전파되어 **감사 사각지대 확대** 위험. 헌법 제1원칙 ⑤ "일관 동기화"는 지속 자산(로그·규칙) 대상이며 일시 상태 플래그는 PC 로컬이 설계상 안전 +- **폐기 확정 처리**: "재논의 대상 아님". 향후 현황 보고·안건 리스트 미포함 (P28-8 준수) +- **산출물**: `scripts/verify_setup.ps1` · #49 완료 아카이브 이동 · 본 대화로그 엔트리 +- **상태**: 완료. commit + push 후 다른 PC에서 `powershell scripts/verify_setup.ps1` 실행으로 audit junction 상태 자동 검증 가능