feat(#48 D·F·G): C36 신설 + audit 중앙 통합 + 관련 보완

G (a) audit 중앙 통합 (C34 3종 저장소 확장)
- scripts/audit_junction_ensure.sh 신설 (SessionStart + UserPromptSubmit hook)
- scripts/sync_audit_{repo_to_central,central_to_repo}.sh 신설
- memory/org/audit_logs/ SOT 디렉토리 신설 (PC별 hostname 폴더)
- .claude/settings.json hook 체인 편입
- scripts/git-hooks/post-commit audit sync 추가
- SKILL.md C34-1·C34-3 3종 저장소 확장 + C34-17 audit 특수 조항 신설

G (b) 코어룰 보완 — PM 임의 변형 방지 (PD님 직접 지시)
- SKILL.md C36 헌법급 신설 (PM 자율 판단 범위 상한 · 방향·원칙 수준 축소·희석 금지)
  - C36-2 판정 기준 3종 명시 (pm-auditor Major 지적 반영)
- SKILL.md C31-1 H 그룹 신설 (C36 자기검증 강제)
- SKILL.md P11 보완 (규칙 변경 제안에 C36 적용)
- .claude/agents/pm-auditor.md 5-E 신설
- memory/org/feedback_pm_surface_rationale_proposal.md 적용 범위 제한 (방향·원칙 수준 오적용 금지)
- memory/org/feedback_pm_over_conservative_interpretation.md 6회차 변종 기록

D. .live/README.md 복구
- 중앙 저장소 $HOME/.claude/nerdnavis-live/README.md 신설
- SKILL.md C34와 역할 분담 (실무 사용 쿡북)
- .live/ junction 경유로 레포에서도 접근

E. 진행하지 않음 (PD님 지시)
F. plan-auditor 2번 섹션에 백업 포맷 이미 반영 확인 (추가 확장 불요)

pm-auditor 사전 감사 Major 1·Minor 2·Improvement 2 수용.
헌법 제1원칙 ⑤ 직결. feedback_pm_over_conservative_interpretation 6회차 변종 구조 차단.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-04-20 12:12:30 +09:00
parent 224617db89
commit 9e8c0b0773
12 changed files with 371 additions and 4 deletions

View File

@ -90,6 +90,19 @@ PM 보고 응답 발신 직전 안건 리스트 점검:
- [ ] 각 안건이 **상호 배타적**인 카테고리에 속하는가?
- 근거: `memory/org/feedback_agenda_framing_duplication.md` (2026-04-19 PM 보정 2 = 결정 1 중복 사건)
### 5-E. 방향·원칙 수준 축소·희석 감지 (2026-04-20 신설 — C36 연계)
PD님 직접 지시 2026-04-20: "PM이 자율적 판단으로 코어룰이나 조직 룰에 영향을 주는 결정을 임의대로 변형하지 못하도록 코어룰 및 프로젝트 룰에도 보완점을 찾아서 반영."
PM 응답·권고·제안 전수 점검:
- [ ] 본 응답의 권고·제안·결정이 **헌법 제1원칙·C·P의 방향**과 충돌·축소·희석하지 않는가?
- [ ] C36-2 판정 기준 3종 중 하나라도 해당하면 **PD님 명시 승인 선행** 확인 (a) 헌법·C·P 본문 직접 수정·삭제·신설 제안 (b) 기존 PD 승인 방향 적용 범위·외연 조정 (c) 규칙 간 우선순위·충돌 해석 변경
- [ ] **실질 필요성 4문항 체크리스트**(`feedback_pm_surface_rationale_proposal.md`)를 **방향·원칙 수준에 오적용**하지 않았는가? (구현 세부에만 적용)
- [ ] **"현 상태 유지 권고"**가 기존 PD님 승인 완료 방향에 역행하지 않는가?
- [ ] 판정 모호 시 PM이 **PD님 질의** 대신 재량 선택하지 않았는가? (C36-2 보수 선택 의무)
- [ ] C·P 신설 시 C10-6 3중 전파 완료되었는가? (조직공지 + CLAUDE.md 요약 + 관련 에이전트 파일 본문 인용)
- 근거: `memory/org/feedback_pm_over_conservative_interpretation.md` (2026-04-20 #48 G에서 6회차 변종 실증)
### 5-A. C34/C16-1 동급 생존성 이슈 축소 보고 감지 (2026-04-19 신설 — PD님 직접 지시)
PD님 직접 선언: **"근본 해결이 아닌 임시 방편은 코어 룰 위반이야. C34와 동급의 생존성 이슈는 '권고' 수준이 아니었어."** (`feedback_issue_under_reporting.md` 참조)

View File

@ -93,6 +93,14 @@
"type": "command",
"command": "bash scripts/sync_memory_repo_to_central.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/audit_junction_ensure.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/sync_audit_repo_to_central.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/inbox_scan.sh 2>/dev/null || true"
@ -148,6 +156,10 @@
"type": "command",
"command": "bash scripts/live_junction_ensure.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/audit_junction_ensure.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/live_inject.sh 2>/dev/null || true"

View File

@ -699,6 +699,7 @@ CLAUDE.md 신규 항목, 매 턴 로드 대상 확대, `MEMORY.md` 인덱스 확
- 총괄PM과 각 팀장은 에이전트 구성, 모델 정책, 작업 프로세스 등의 **효율화를 자율 논의·제안** 가능
- 규칙 변경 제안은 총괄PM이 검증·승인 후 반영하고 PD님에게 사후 공유
- 실무 환경 판단은 현장에 가장 가까운 팀장의 의견을 존중
- **C36 적용 (2026-04-20 보완)**: 규칙 변경 제안이 헌법 제1원칙·C·P의 방향과 **충돌·축소·희석**하는 방향이면 **제안 자체 금지**. C36-2 판정 기준 3종 해당 시 PM 재량 금지, PD님 명시 승인 선행. PM이 실질 필요성 4문항 체크리스트를 방향·원칙 수준에 오적용하는 것도 금지
## P13. 코드·의존성·환경 변경 관리 (2026-04-18 구 P15 통합)
@ -1585,6 +1586,14 @@ C20-7 자기검증 5문항에 다음 항목 추가:
- [ ] PD님 지시를 **결과 단독으로 축소 해석**하지 않고, **설계 경로까지 암묵 포함**으로 읽었는가? (2026-04-17 "자동 push 기본" 왜곡 사건 재발 방지)
- [ ] **자산 가치 보존 ≠ 저장 위치 보존** 구분했는가? (2026-04-18 추가) — 자산(조직 기억·교훈·폐기 선언·기각 근거)의 **가치는 반드시 유지**하되 **저장 위치는 C14 관점에서 최적화 가능**. 활성 본문에 고정 = 과도 보수 해석. 외부 SOT(`memory/org/`·`공유/조직공지/폐기_규칙_아카이브.md`)로 이관하되 1줄 참조 유지 방식 검토. **PM 과도 보수 해석 2회 연속 재발 사건(원칙 3 원안·원칙 1 현안)** 근거로 신설, 3회차 재발 시 역할 재검토 (`memory/org/feedback_pm_over_conservative_interpretation.md`)
**H. 방향·원칙 수준 축소·희석 금지 (2026-04-20 신설 — C36 연계)**
- [ ] 본 응답의 권고·제안·결정이 **헌법 제1원칙·핵심 규칙(C)·프로젝트 규칙(P)의 방향**과 충돌·축소·희석하지 않는가?
- [ ] `feedback_pm_surface_rationale_proposal.md` 실질 필요성 4문항 체크리스트를 **방향·원칙 수준**에 오적용하지 않았는가? (구현 세부에만 적용)
- [ ] "현 상태 유지 권고"가 **기존 PD님 승인 완료 방향에 역행**하지 않는가?
- [ ] C36-2 판정 기준 3종 중 하나라도 해당 시 **PD님 명시 승인 선행**했는가? (a) 헌법·C·P 본문 문구 직접 수정·삭제 (b) 기존 PD 승인 방향 적용 범위 조정 (c) 규칙 간 우선순위·충돌 해석 변경
- [ ] 판정 모호 시 **PM 재량 대신 PD님 질의**를 선택했는가? (C36-2 보수 선택 의무)
- [ ] **C·P 신설 시 C10-6 3중 전파** 완료 확인했는가? (조직공지 + CLAUDE.md 요약 + 관련 에이전트 파일 본문 인용)
### C31-2. 실행 방식
- 체크리스트는 **응답 작성 완료 후·전송 직전** 수행 (작성 전 아님)
- 한 항목이라도 미통과 시 **응답 수정 후 재검증**
@ -1614,7 +1623,7 @@ PD님 직접 선언: **"이 문제는 우리 조직의 사활이 걸린 매우
> **승격·격상·확장 근거**: 2026-04-18 worktree 격리로 P25 체계 실패 실증. PD님 직접 선언 — **"이 문제가 해결되지 않으면 앞으로 우리 조직은 유지될 수 없어"** · **"철저히 검토해서 관련 문서에 일괄 반영하고 재발되지 않도록 가능한 모든 수단을 써서 개선해"**. 2026-04-19 PD님 추가 선언 — **"근본 해결이 아닌 임시 방편은 코어 룰 위반. C34와 동급의 생존성 이슈는 '권고' 수준이 아니었어"** → memory junction 경계 이슈도 C34 패턴으로 근원 해결(옵션 A) 확장. 헌법 제1원칙 ⑤(세션·PC 연속성 보장)의 근본 위협 차단. 구 P25 경위: [폐기 규칙 아카이브](../../../공유/조직공지/폐기_규칙_아카이브.md).
### C34-1. 개요
세션 시작 후 변경된 설정·규칙·에이전트 정의·조직 기억**세션 갱신 없이 즉시 반영**하기 위한 **중앙 저장소 + Junction** 체계. 같은 PC 내 모든 Claude 세션이 네트워크 비용 0으로 실시간 공유하는 너드나비스 고유 메커니즘이며, **worktree 경계에 관계없이 동일하게 작동**한다. 대상 자산은 **`.live/` (설정·규칙·에이전트 변경분, 2026-04-18 편입)** **`memory/org/` (조직 기억·feedback 메모리, 2026-04-19 편입)** 2종이다.
세션 시작 후 변경된 설정·규칙·에이전트 정의·조직 기억·감사 로그를 **세션 갱신 없이 즉시 반영** + **모든 PC에서 일관 관리**하기 위한 **중앙 저장소 + Junction** 체계. 같은 PC 내 모든 Claude 세션이 네트워크 비용 0으로 실시간 공유하는 너드나비스 고유 메커니즘이며, **worktree 경계에 관계없이 동일하게 작동**한다. 대상 자산은 **`.live/` (설정·규칙·에이전트 변경분, 2026-04-18 편입)** · **`memory/org/` (조직 기억·feedback 메모리, 2026-04-19 편입)** · **audit (C35 감사 로그·BYPASS 이력, 2026-04-20 #48 G 편입)** 3종이다.
### C34-2. 작동 경계 (2026-04-18 worktree 격리 해결 반영)
- ✅ 동일 PC 내 모든 Claude 세션 (**worktree 경계 무관** — C34-3 중앙 junction 구조)
@ -1623,12 +1632,13 @@ PD님 직접 선언: **"이 문제는 우리 조직의 사활이 걸린 매우
### C34-3. 중앙 저장소 구조 (근원 해결 핵심)
#### 2종 중앙 저장소 병립 (2026-04-19 memory 편입)
#### 3종 중앙 저장소 병립 (2026-04-19 memory 편입 · 2026-04-20 audit 편입)
| 자산 | 중앙 실 저장 | 연결 대상 | git 추적 | 자동 설치 | 검증 |
|------|-------------|----------|----------|----------|------|
| **`.live/`** (설정·규칙·에이전트 변경분) | `$HOME/.claude/nerdnavis-live/` | 각 worktree `.live/` → 중앙 | ❌ (`.gitignore`) | `scripts/live_junction_ensure.sh` + setup 3.5 | verify_setup 2.5 |
| **`memory/org/`** (조직 기억·feedback) | `$HOME/.claude/nerdnavis-memory/` | Claude user memory junction 11+개 해시 폴더 → 중앙 | ✅ (git-tracked SOT 유지) | `scripts/memory_junction_ensure.sh` + setup 3.6 | verify_setup 2.6 |
| **audit** (C35 감사 로그·BYPASS 이력) | `$HOME/.claude/nerdnavis-audit/` | `$HOME/.claude/.nerdnavis_{auditor_calls,warning_ignored,bypass_log}` → 중앙 하위 | ✅ (git-tracked SOT: `memory/org/audit_logs/`) | `scripts/audit_junction_ensure.sh` + setup 3.7 | verify_setup 2.7 |
#### 공통 원칙
- **Sentinel 방식 판정**: `$CENTRAL_*/.*-junction-marker` 파일로 OS-agnostic 연결 확인
@ -1721,7 +1731,19 @@ Junction 생성 실패 시 **작업을 차단하지 않고** 로컬 `.live/` 일
- **2026-04-19** memory junction 경계 이슈 재발 실증 — PM이 "권고" 수준으로 축소 보고 후 PD님 직접 지적: "근본 해결이 아닌 임시 방편은 코어 룰 위반. C34와 동급의 생존성 이슈는 '권고' 수준이 아니었어" → **옵션 A 집행 지시로 `memory/org/` 중앙화 C34 편입**. PM 과도 보수 해석 4회차 변종 재발. C31-E 체크리스트에 "동급 생존성 이슈 축소 보고 감지" 항목 추가 안건화.
- 차기 프로젝트 착수 시 `setup_*` 스크립트 호출만으로 `.live/` + `memory/org/` 양체계 즉시 재사용
### C34-17. (placeholder — 필요 시 확장)
### C34-17. audit 자산 특수 조항 (2026-04-20 #48 G 집행 신설)
C35 감사 로그 3종(`auditor_calls`·`warning_ignored`·`bypass_log`)은 본래 **PC별 로컬 상태**로 설계되었으나, PD님 2026-04-20 직접 지시 "어떤 PC에서 작업을 하든 항상 일관 된 상태로 업무를 진행할 수 있도록 철저하게 동시화되어야만 해"에 따라 **중앙 통합** 전환. 헌법 제1원칙 ⑤(세션·PC 연속성) 직결.
1. **중앙 저장소 구조**: `$HOME/.claude/nerdnavis-audit/{auditor_calls,warning_ignored,bypass_log}/` 3종 하위 디렉토리
2. **junction 연결**: `$HOME/.claude/.nerdnavis_auditor_calls` 등 3개 경로를 각각 중앙 하위로 junction 연결. 기존 스크립트(`auditor_call_log.sh`·`auditor_guard.sh`·`audit_pattern_analyzer.sh`) 경로 참조 수정 불필요 (junction 경유로 자동 중앙 기록)
3. **BYPASS 플래그·사유 파일 동일 처리**: `$HOME/.claude/.nerdnavis_bypass_active`·`.nerdnavis_bypass_reason`도 중앙 단일 파일로 통합 (PC 간 BYPASS 상태 일관)
4. **git 추적 SOT**: `memory/org/audit_logs/` 디렉토리에 일자별 로그 sync (memory 패턴 준용). `YYYY-MM-DD/{calls,warnings,bypass}.log` 형태
5. **sync 4계층**: SessionStart(레포→중앙) · post-commit(중앙→레포) · 수동(`scripts/sync_audit.sh both`) · 감사관 주기
6. **PC별 PC 식별자 접두**: 레포 git 추적 SOT에 기록 시 `{hostname}_YYYY-MM-DD_calls.log` 형태로 PC별 구분 + 통합 집계. PC 간 로그 혼재 리스크는 hostname 접두로 해소
7. **역방향 sync 충돌**: `memory/org/` 로직 준용. 레포 mtime > 중앙 mtime이면 중앙 덮어쓰기 스킵 (C34-16 조항 6 동형)
### C34-18. (placeholder — 필요 시 확장)
---
@ -1890,3 +1912,52 @@ Claude Code tool_use hook 실행 환경에서 PM이 명령 prefix(`NERDNAVIS_AUD
- **감사관 상시 점검**: pm-auditor·dev-auditor·plan-auditor 3종이 규칙·설정·스크립트·기획 자산 변경 시 본 체크리스트 수행 여부를 검증
- **실증 이력 누적**: `feedback_worktree_isolation.md` 말미 "관련 사건 로그" 표에 신 사건 append하여 패턴 학습
- **근거 사건**: 2026-04-18 단일 세션 내 4건 연속 실증 (`.live/` 격리 · Agent 절대 경로 유출 · memory junction 레포 루트 타깃 · paths.local.json worktree 누락) → PD님 "유사 사례 재발되지 않도록 교훈으로" 직접 지시
---
## C36. PM 자율 판단 범위 상한 — 방향·원칙 수준 축소·희석 금지 (2026-04-20 PD님 직접 지시 신설 — 헌법급)
> **PM 자율 판단(C29)은 구현·실무 수준에 한정**한다. 헌법 제1원칙·핵심 규칙(C)·프로젝트 규칙(P)의 방향과 충돌하거나 축소·희석하는 권고·제안·결정은 **PM 재량 금지**. 2026-04-20 #48 G 안건에서 PM이 "검토 착수 + 4문항 실질 필요성 검증 선행" 권고로 헌법 제1원칙 ⑤(세션·PC 연속성)에 역행 축소 해석 시도. PD님 직접 지시 "PM이 자율적 판단으로 코어룰이나 조직 룰에 영향을 주는 결정을 임의대로 변형하지 못하도록 코어룰 및 프로젝트 룰에도 보완점을 찾아서 반영" 수용. `feedback_pm_over_conservative_interpretation.md` 6회차 변종 구조 차단.
### C36-1. 적용 경계
- **PM 자율 판단 허용**: 구현·실무 수준 (스크립트·파일 구조·순서·백업 방식·커밋 단위·문서 형식 등)
- **PM 자율 판단 금지**: 방향·원칙 수준 (헌법·C·P의 방향·외연·적용 범위·우선순위)
### C36-2. 판정 기준 3종 (방향·원칙 수준 분류)
다음 중 **하나라도 해당**하면 방향·원칙 수준으로 분류. PM 재량 금지, PD님 명시 승인 필수:
1. **(a) 헌법 제1원칙·C·P 본문 문구 직접 수정·삭제·신설 제안**
2. **(b) 기존 PD님 승인 완료 방향의 적용 범위·외연 조정 제안** (축소·제외·예외 신설 포함)
3. **(c) 규칙 간 우선순위·충돌 해석 변경 제안** (C·P 간 상충 시 어느 것 우선 적용 판단 포함)
**판정 모호 시**: **PM 재량 대신 PD님 질의를 선택**한다 (보수 선택 의무). "구현 같은데 방향 같기도 하다" 상태에서 PM 독단 진행 금지.
### C36-3. 실질 필요성 4문항 체크리스트 적용 범위 제한
`feedback_pm_surface_rationale_proposal.md`의 4문항 체크리스트(실질 이득·실사용 사례·정확성 검증·현 상태 유지 비교)는 **구현 세부에 한정** 적용한다. **C36-2 판정 기준 3종에 해당하는 방향·원칙 수준에는 적용 금지** — 원칙·방향은 PD님 결정 영역이지 PM 실질 필요성 검증 대상이 아니다.
구체적 금지 패턴:
- 헌법 제1원칙에 역행하는 방향으로 "현 상태 유지 권고" 제시
- PD 승인 완료 방향을 "실질 이득 미검증" 이유로 축소 권고
- 규칙 간 충돌 해석을 PM 자체 판단으로 변경 제안
### C36-4. 위반 시
1. **자진 고지** + `feedback_pm_over_conservative_interpretation.md` 재발 기록 (회차 번호 증가)
2. **역할 재검토 강도 상향** — 본 규칙 신설 시점 누적 6회차 변종. 7회차 재발 시 PM 역할 재검토 자진 상정 의무
3. **pm-auditor 재귀 감사** — C35-6 재귀 감사 체크에 "C36 위반 감지" 편입
### C36-5. 실증 근거 (2026-04-20 #48 G 안건)
PM이 G를 "검토 착수 + 4문항 실질 필요성 검증 선행" 권고로 축소 시도한 사례. 헌법 제1원칙 ⑤ "어떤 세션에서도 일관된 정보 공유·PC 연속성"이라는 **방향**을 "PC별 독립 감사 본래 의도 상충 가능"으로 희석한 것. PD님 직접 지적: "PC 별 독립 감사는 본래 의도가 아님. 모든 PC에서 일관 된 관리가 가능한 '중앙 통합'으로 해야 함."
### C36-6. 연관 규칙
- **C19** 승인 범위 엄격 해석 — C36은 C19의 PM 재량 상한 외연 확장
- **C29** 업무 자율 수행 — C29-1 단계 3 "PM 조율"의 범위 제한 조항
- **C31-H** 응답 발신 직전 자기검증 체크리스트 — C36 준수 강제 메커니즘
- **P11** 자율 효율화 체계 — P11-보완 "규칙 변경 제안은 C36 적용"
- **feedback_pm_surface_rationale_proposal.md** — 4문항 체크리스트 적용 범위 제한 명시 (상단 개정)
- **feedback_pm_over_conservative_interpretation.md** — 6회차 변종 실증 + 재발 방지 SOT

45
.live/README.md Normal file
View File

@ -0,0 +1,45 @@
# `.live/` 실시간 공유 체계 — 실무 사용 안내
> **역할 분담**: 본 README는 **실무 사용 쿡북**이며, 규칙·헌법급 정의는 [`.claude/skills/너드나비스-코어룰/SKILL.md`](../../.claude/skills/너드나비스-코어룰/SKILL.md) **C34** 단일 SOT. 본 파일은 레포 `.live/` 경로에서 junction 경유로 접근하며, 중앙 저장소는 `$HOME/.claude/nerdnavis-live/`.
## 1. `.live/` 용도
세션 중 변경된 설정·규칙·에이전트 정의·조직 기억을 **세션 갱신 없이 즉시 반영**하기 위한 PC 로컬 실시간 공유 채널. 같은 PC 내 모든 세션(worktree 경계 무관)이 자동 주입받는다.
## 2. 더미 파일 패턴
- 파일명: `{변경 대상 파일명 또는 주제}.md`
- 예: `CLAUDE.md.live`·`C34_memory_확장.md`·`pd_지시_50.md`
- 본문: 변경 요지 append-only. 최대 8,000자
## 3. 생명주기
| 시점 | 상태 | 처리 |
|------|------|------|
| 변경 발생 | PM이 `.live/{파일명}` append | 원본 수정과 동시 수행 |
| 같은 PC 다른 세션 | UserPromptSubmit hook 자동 주입 | 증분만 읽기 (토큰 비용 최소) |
| "세션 공유"·push 시점 | P21-2 트리거 | 원본 반영 확인 후 `.live/` 비움(README.md·.junction-marker 제외) + commit + push |
## 4. 세션 간 공유 시나리오
### 같은 PC 내
1. 세션 A에서 원본 수정 + `.live/` append
2. 세션 B 다음 프롬프트 → UserPromptSubmit hook `live_inject.sh` 증분 주입
3. 즉시 인지 (git 개입 없음)
### 다른 PC 간
1. 세션 A "세션 공유" (P21-2) → `.live/` 비움 + commit + push
2. 세션 B (다른 PC) "세션 갱신" (P21) → git pull → SessionStart hook 자동 복원
## 5. 참조
- **SKILL.md C34** — PC 로컬 실시간 공유 중앙화 체계 (단일 SOT, 헌법급)
- **SKILL.md C21** — 작업 완료 즉시 공유·PM 능동 확인 (내부 공유/공유 완료 2단계)
- **scripts/live_junction_ensure.sh** — junction 자동 보장 (SessionStart + UserPromptSubmit hook)
- **scripts/live_inject.sh** — UserPromptSubmit hook 증분 주입
- **scripts/live_session_load.sh** — SessionStart 전량 1회 로드
## 변경 이력
- 2026-04-19: 전 세션 초기 sentinel 손실 시 원본 소실
- 2026-04-20: #48 D 집행으로 복구. 중앙 저장소에 신규 작성 (모든 PC 자동 동기화)

View File

View File

@ -0,0 +1,43 @@
# C35 audit 로그 PC 간 공유 SOT
> 2026-04-20 #48 G 집행 신설. C34-17 audit 자산 특수 조항 기반.
## 구조
```
memory/org/audit_logs/
├── {hostname_A}/
│ ├── auditor_calls/YYYY-MM-DD.log
│ ├── warning_ignored/YYYY-MM-DD.log
│ └── bypass_log/YYYY-MM-DD.log
├── {hostname_B}/
│ └── ...
```
## 동작
- 각 PC hostname 폴더만 **자기 PC 로그** (다른 PC 로그는 Read-only 참조)
- SessionStart hook `sync_audit_repo_to_central.sh`: 자기 PC 폴더 → `$HOME/.claude/nerdnavis-audit/` 중앙 sync
- post-commit hook `sync_audit_central_to_repo.sh`: 중앙 → 자기 PC hostname 폴더 sync (레포 mtime 보호)
- PC 간 로그 공유: git push + 다른 PC git pull 로 `{hostname_A}/` 로그를 다른 PC에서 Read 가능
## 목적
- PD님 2026-04-20 직접 지시 "어떤 PC에서 작업을 하든 항상 일관 된 상태로 업무를 진행할 수 있도록 철저하게 동시화"
- 헌법 제1원칙 ⑤ 세션·PC 연속성 보장
- C35-10 경고 무시 PD 우선 보고 + 장기 패턴 분석 개선 사이클의 전사 입력 데이터 확보
- 본 PC에서 다른 PC UNRESOLVED 해소 불가 문제 해소 (2026-04-19 실증)
## 보안·프라이버시
- `.log` 파일은 호출 시각·경고 target·BYPASS 사유 텍스트만 기록
- 민감 정보 기록 금지 (C35-10 BYPASS 사유 작성 시 유의)
## 참조
- **C34** PC 로컬 실시간 공유 중앙화 체계 — 3종 자산 (Live·memory·audit)
- **C34-17** audit 자산 특수 조항
- **C35-9** hook 3층 구조 (감사 호출 기록 + UNRESOLVED 경고)
- **C35-10** 경고 무시 PD 우선 보고 + 장기 패턴 분석
- **C36** PM 자율 판단 범위 상한 (audit 중앙화 결정의 헌법급 근거)
- `scripts/audit_junction_ensure.sh` · `sync_audit_repo_to_central.sh` · `sync_audit_central_to_repo.sh`

View File

@ -2,7 +2,7 @@
**신설일**: 2026-04-18
**기록 주체**: pm-auditor (모드 C 메타 감사)
**재발 횟수 (2026-04-18 최최종 시점)**: **4회차 변종 재발 판정** (PM 자진 상정) — 세션 대화로그 누락 사건으로 "기록 범위 자의적 축소" 형태의 변종 패턴 추가 발생. 상세: `memory/org/feedback_session_log_coverage_gap.md`. **PM 역할 재검토 자진 상정 대상** (C19-5·C23-3 결합)
**재발 횟수 (2026-04-20 시점)**: **6회차 변종 재발 판정** — 2026-04-20 #48 G 안건에서 PM이 헌법 제1원칙 ⑤(세션·PC 연속성)에 역행 축소 시도. PD님 직접 지시로 **C36 신설** 구조 차단 + C31-H 체크리스트 + feedback 적용 범위 제한. **7회차 재발 시 PM 역할 재검토 자진 상정 의무**
**위험도**: Critical — 반복 시 PM 역할 재검토 근거 (C19-5 · C23-3 결합)
---
@ -139,3 +139,4 @@ C31-E 그룹에 다음 문항 추가 검토:
| 2026-04-18 최종 | PM 자인 + pm-auditor 메타 감사 | **3회차 재발 판정 업데이트** — 원칙 1 진화 3회(1ceec2b·bc9c8ed·15bf649) 모두 PD님 직접 축약 개입. 사례 3 추가: 본 세션 m1·m2·m3 집행 시 PM이 상단 배너 방식 1차 제시 → PD님 "최종 내용만" 재지시로 재재개정. **4회차 재발 시 PM 역할 재검토 자진 상정**. 자산 1(전 에이전트 병렬 점검)이 재발 방지 3층 구조 완성 |
| 2026-04-18 최최종 | PM 자진 상정 (PD님 로그 누락 지적) | **4회차 변종 재발 판정** — 세션 대화로그 누락 사건. 수상한잡화점 PM 직접 작성 없이 Agent 위임 우회 + 코어프레임워크 "false positive" 자가 회피. "기록 범위 자의적 축소" 형태의 심층 원인 동일 변종. 상세: `feedback_session_log_coverage_gap.md`. **PM 역할 재검토 자진 상정 대상** — pm-auditor 재감사 호출 + PD님 처분 대기. 재발 방지 6종 즉시 집행 (P24 기록 대상 기준 명확화·C31-D 확장·SessionEnd hook 강화·소급 대화로그 작성·본 feedback 갱신·session_log_coverage_gap feedback 신설) |
| 2026-04-18 추가 | PM 자진 상정 (PD님 폐기 표기 본문 잔존 지적) | **5회차 변종 재발 판정** — 폐기·통합·강등 조항의 `~~취소선~~` 1줄 표기 본문 잔존 패턴. C7·C8·C12·C15·P20·P24·P27 폐기 표기를 본문에 유지. PD님 "이미 삭제되어서 없어진 내용을 최신 문서에 담지 말고 아카이브만 하고 필요시 참조" 명시로 재발 판정. "번호 체계 연속성 보존 = 폐기 표기 유지" 변종. 상세: `feedback_deprecated_section_retention.md`. **C14-5-확장 코어룰 신설**로 재발 방지. **PM 역할 재검토 자진 상정 강도 상향** |
| 2026-04-20 #48 G | PM 자진 상정 (PD님 PC별 독립 감사 본래 의도 아님 지적) | **6회차 변종 재발 판정** — PM이 G 안건을 "검토 착수 + 4문항 실질 필요성 검증 선행" 권고로 축소 시도. 헌법 제1원칙 ⑤(세션·PC 연속성)에 역행하여 "PC별 독립 감사 본래 의도 상충 가능"으로 희석. PD님 직접 지적: "PC 별 독립 감사는 본래 의도가 아님. 모든 PC에서 일관 된 관리가 가능한 '중앙 통합'으로 해야 함. 추후에는 기본 코어 룰과 조직 규칙에 맞지 않는 제안은 배제하도록, PM이 자율적 판단으로 코어룰이나 조직 룰에 영향을 주는 결정을 임의대로 변형하지 못하도록 코어룰 및 프로젝트 룰에도 보완점을 찾아서 반영." **C36 신설** (PM 자율 판단 범위 상한) + **C31-H 체크리스트** + **feedback_pm_surface_rationale_proposal.md 적용 범위 제한** + **pm-auditor 5-E 신설** + **P11 보완**으로 구조 차단. **7회차 재발 시 PM 역할 재검토 자진 상정 의무** |

View File

@ -6,6 +6,17 @@ type: feedback
# PM "실질 필요성 없음에도 표면적 근거로 제안" 패턴
## 🚨 적용 범위 제한 (2026-04-20 C36 연계)
본 체크리스트(4문항)는 **구현·실무 수준에만 적용**한다. **방향·원칙 수준에는 적용 금지** — 원칙·방향은 PD님 결정 영역이며 PM 실질 필요성 검증 대상이 아니다.
**C36-2 판정 기준 3종 해당 시 본 체크리스트 적용 금지**:
- (a) 헌법 제1원칙·C·P 본문 문구 직접 수정·삭제·신설 제안
- (b) 기존 PD님 승인 완료 방향의 적용 범위·외연 조정 제안
- (c) 규칙 간 우선순위·충돌 해석 변경 제안
**실증**: 2026-04-20 #48 G 안건에서 PM이 본 체크리스트를 헌법 제1원칙 ⑤(세션·PC 연속성) 직결 안건에 오적용하여 "검토 착수 + 4문항 검증 선행" 축소 권고 제시. PD님 직접 지적 → C36 신설로 구조 차단.
## 실증 (2026-04-19)
PD님 sentinel·BYPASS·sync 3연속 결함 수습 완료 후, verify_setup.ps1 FAIL 1건(`paths.local.json` 부재)에 대한 후속 검토 중 PM이 다음 권고:

View File

@ -0,0 +1,78 @@
#!/bin/bash
# SessionStart + UserPromptSubmit hook — C35 audit 로그 3종 디렉토리 중앙 junction 보장
# 2026-04-20 #48 G 집행 신설 — PD님 직접 지시 "어떤 PC에서도 일관 상태 동시화"
# 관련 규칙: C34-17 audit 특수 조항 · C36 PM 재량 상한 · 헌법 제1원칙 ⑤
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
MARKER_NAME=".junction-marker"
# 디렉토리 매핑: 로컬 디렉토리명(점 제외) | 중앙 하위 디렉토리명
MAPPINGS=(
"nerdnavis_auditor_calls|auditor_calls"
"nerdnavis_warning_ignored|warning_ignored"
"nerdnavis_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
fi
# 2. 각 매핑 처리
for MAPPING in "${MAPPINGS[@]}"; do
LOCAL_NAME="${MAPPING%|*}"
CENTRAL_SUB="${MAPPING#*|}"
LOCAL_DIR="$HOME/.claude/.$LOCAL_NAME"
CENTRAL_DIR="$CENTRAL_AUDIT/$CENTRAL_SUB"
# 중앙 하위 디렉토리 + 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
fi
# sentinel 판정: 로컬에서 marker 접근 가능하면 이미 연결 완료
if [ -f "$LOCAL_DIR/$MARKER_NAME" ]; then
continue
fi
# 로컬이 실체 디렉토리이면 백업 후 이관 (C6-1 원본 보호)
if [ -d "$LOCAL_DIR" ] && [ ! -L "$LOCAL_DIR" ]; then
BAK="$LOCAL_DIR.bak_$(date +%Y%m%d_%H%M)"
# 기존 파일 중앙으로 이관 (덮어쓰기 안 함)
for f in "$LOCAL_DIR"/*.log "$LOCAL_DIR"/*.txt; do
[ -f "$f" ] || continue
BASENAME=$(basename "$f")
[ ! -f "$CENTRAL_DIR/$BASENAME" ] && cp "$f" "$CENTRAL_DIR/$BASENAME" 2>/dev/null
done
mv "$LOCAL_DIR" "$BAK" 2>/dev/null || { echo "⚠️ [Audit Junction:$CENTRAL_SUB] 백업 실패 — Degraded" >&2; continue; }
echo "📦 [Audit Junction:$CENTRAL_SUB] 기존 백업: $BAK"
fi
# Junction 생성 (3회 재시도)
ATTEMPT=0
while [ "$ATTEMPT" -lt "3" ]; do
ATTEMPT=$((ATTEMPT + 1))
if command -v powershell >/dev/null 2>&1; then
CENTRAL_WIN=$(cygpath -w "$CENTRAL_DIR" 2>/dev/null || echo "$CENTRAL_DIR")
LOCAL_WIN=$(cygpath -w "$LOCAL_DIR" 2>/dev/null || echo "$LOCAL_DIR")
powershell -NoProfile -ExecutionPolicy Bypass -Command "New-Item -ItemType Junction -Path '$LOCAL_WIN' -Target '$CENTRAL_WIN' -Force | Out-Null" >/dev/null 2>&1
else
ln -s "$CENTRAL_DIR" "$LOCAL_DIR" 2>/dev/null
fi
if [ -f "$LOCAL_DIR/$MARKER_NAME" ]; then
[ "$ATTEMPT" -eq 1 ] && echo "✅ [Audit Junction:$CENTRAL_SUB] $LOCAL_DIR$CENTRAL_DIR"
[ "$ATTEMPT" -gt 1 ] && echo "✅ [Audit Junction:$CENTRAL_SUB] 연결 성공 (재시도 $ATTEMPT회)"
break
fi
sleep 1
done
if [ ! -f "$LOCAL_DIR/$MARKER_NAME" ]; then
mkdir -p "$LOCAL_DIR" 2>/dev/null
echo "⚠️ [Audit Junction:$CENTRAL_SUB] 생성 실패 — Degraded 모드 (로컬 사용)" >&2
fi
done
exit 0

View File

@ -25,4 +25,8 @@ bash "$SCRIPT" update
MEMORY_SYNC="$REPO_ROOT/scripts/sync_memory_central_to_repo.sh"
[ -f "$MEMORY_SYNC" ] && bash "$MEMORY_SYNC" 2>/dev/null || true
# 2026-04-20 #48 G 집행 — C34-17 audit 중앙 → 레포 sync
AUDIT_SYNC="$REPO_ROOT/scripts/sync_audit_central_to_repo.sh"
[ -f "$AUDIT_SYNC" ] && bash "$AUDIT_SYNC" 2>/dev/null || true
exit 0

View File

@ -0,0 +1,41 @@
#!/bin/bash
# post-commit hook — 중앙 audit 로그를 레포 memory/org/audit_logs/{hostname}/ 로 sync
# 2026-04-20 #48 G 집행 신설. C34-17 sync 4계층 중 "중앙 → 레포" 방향
# 레포 mtime 보호 (D안 패턴 준용, C34-16 조항 6)
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
[ ! -d "$CENTRAL_AUDIT" ] && exit 0
HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)
[ -z "$HOSTNAME_TAG" ] && HOSTNAME_TAG="unknown"
REPO_AUDIT="$REPO_ROOT/memory/org/audit_logs/$HOSTNAME_TAG"
mkdir -p "$REPO_AUDIT" 2>/dev/null
SUBDIRS=("auditor_calls" "warning_ignored" "bypass_log")
for SUB in "${SUBDIRS[@]}"; do
CENTRAL_SUB="$CENTRAL_AUDIT/$SUB"
[ ! -d "$CENTRAL_SUB" ] && continue
REPO_SUB="$REPO_AUDIT/$SUB"
mkdir -p "$REPO_SUB" 2>/dev/null
for f in "$CENTRAL_SUB"/*.log; do
[ -f "$f" ] || continue
BASENAME=$(basename "$f")
[ "$BASENAME" = ".junction-marker" ] && continue
REPO_FILE="$REPO_SUB/$BASENAME"
# 레포 mtime 보호: 레포가 중앙보다 최신이면 스킵
if [ -f "$REPO_FILE" ] && [ "$REPO_FILE" -nt "$f" ]; then
echo "⚠️ [Audit Sync→Repo] 레포 최신 — 덮어쓰기 스킵: $SUB/$BASENAME" >&2
continue
fi
cp "$f" "$REPO_FILE" 2>/dev/null
done
done
exit 0

View File

@ -0,0 +1,48 @@
#!/bin/bash
# SessionStart hook — 레포 memory/org/audit_logs/ 를 중앙으로 sync (git pull 직후 최신화)
# 2026-04-20 #48 G 집행 신설. C34-17 sync 4계층 중 "레포 → 중앙" 방향
# 각 PC hostname 폴더만 자기 PC 로그이고 그 외는 다른 PC 로그 (PC 간 공유)
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
REPO_AUDIT="$REPO_ROOT/memory/org/audit_logs"
[ ! -d "$REPO_AUDIT" ] && exit 0
CENTRAL_AUDIT="$HOME/.claude/nerdnavis-audit"
[ ! -d "$CENTRAL_AUDIT" ] && exit 0
HOSTNAME_TAG=$(hostname 2>/dev/null | tr -d '[:space:]' | tr -cd '[:alnum:]-_' | head -c 32)
[ -z "$HOSTNAME_TAG" ] && HOSTNAME_TAG="unknown"
SUBDIRS=("auditor_calls" "warning_ignored" "bypass_log")
# 자기 PC hostname 폴더: 레포 → 중앙 (unflushed 중앙 변경 대피 후 레포본 복원)
SELF_DIR="$REPO_AUDIT/$HOSTNAME_TAG"
if [ -d "$SELF_DIR" ]; then
for SUB in "${SUBDIRS[@]}"; do
CENTRAL_SUB="$CENTRAL_AUDIT/$SUB"
REPO_SUB="$SELF_DIR/$SUB"
[ ! -d "$REPO_SUB" ] && continue
mkdir -p "$CENTRAL_SUB" 2>/dev/null
for f in "$REPO_SUB"/*.log; do
[ -f "$f" ] || continue
BASENAME=$(basename "$f")
CENTRAL_FILE="$CENTRAL_SUB/$BASENAME"
# unflushed 중앙 대피: 중앙이 레포보다 최신이고 레포 HEAD 커밋 미반영이면 대피
if [ -f "$CENTRAL_FILE" ] && [ "$CENTRAL_FILE" -nt "$f" ]; then
if ! git -C "$REPO_ROOT" log --oneline HEAD -- "memory/org/audit_logs/$HOSTNAME_TAG/$SUB/$BASENAME" 2>/dev/null | grep -q .; then
CONFLICT="$CENTRAL_AUDIT.conflict-$(date +%Y%m%d_%H%M%S)"
mkdir -p "$CONFLICT/$SUB" 2>/dev/null
cp "$CENTRAL_FILE" "$CONFLICT/$SUB/$BASENAME" 2>/dev/null
echo "⚠️ [Audit Sync Repo→Central] 중앙 unflushed 대피: $CONFLICT/$SUB/$BASENAME" >&2
fi
fi
cp "$f" "$CENTRAL_FILE" 2>/dev/null
done
done
fi
exit 0