feat(rules): C35-9·10 신설 — hook 3층 구조 + 경고 무시 PD 보고·장기 패턴 분석

PD님 직접 지시 옵션 A 집행 + 추가 지시 2종 수용:
1. 경고 무시 사례 발견 시 PD 우선 보고 + 감사 자산 축적
2. 장기적 문제 행동 패턴 분석 + 점진적 개선

C35 최초 pm-auditor 사전 의무 호출 실증. 감사 결과 Major 3건 정정 반영
후 집행:
- C35-9 제목 "pm-auditor 호출 자동 강제 hook 3층 구조"
- C35-10 제목 "경고 무시 PD 우선 보고 + 장기 행동 패턴 분석 개선 사이클"
- C35-9 말미 한계 재인정 단락 (PreToolUse 차단 아닌 사후 감지층)

집행 8종:
- scripts/auditor_call_log.sh 신규 (PostToolUse Task) — 호출 기록 +
  UNRESOLVED RESOLVED 처리
- scripts/auditor_guard.sh 신규 (PostToolUse Edit|Write|Bash) —
  의무 영역 30분 윈도우 검사 + UNRESOLVED·BYPASS 로그
- scripts/audit_pattern_analyzer.sh 신규 (SessionStart) — 미해소 환기 +
  월 1일 자동 패턴 보고서 생성
- .claude/settings.json hook 체인 확장 (Task·Edit|Write·Bash matcher +
  SessionStart audit_pattern)
- SKILL.md C35-9·10 신설
- CLAUDE.md C35 요약 확장
- memory/org/feedback_pm_warning_ignored_pattern.md 누적 SOT +
  MEMORY.md 인덱스
- feedback_c35_initial_enforcement.md (감사관 신설, Improvement 반영)

한계 재인정: hook 3층은 사후 감지·기록·경고 층위. LLM 자율 판단 구조
여전히 필수. 예상 커버리지 ~97%, 최종 3%는 PM 의식적 준수 의존.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-04-19 02:45:06 +09:00
parent a9dde7aa59
commit 1553f974d6
12 changed files with 536 additions and 1 deletions

View File

@ -113,6 +113,10 @@
"type": "command",
"command": "bash scripts/recent_feedback_brief.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/audit_pattern_analyzer.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/verify_log_paths.sh 2>/dev/null || true"
@ -154,6 +158,28 @@
{
"type": "command",
"command": "bash scripts/postuse_log_reminder.sh 2>/dev/null || true"
},
{
"type": "command",
"command": "bash scripts/auditor_guard.sh 2>/dev/null || true"
}
]
},
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "bash scripts/auditor_guard.sh 2>/dev/null || true"
}
]
},
{
"matcher": "Task",
"hooks": [
{
"type": "command",
"command": "bash scripts/auditor_call_log.sh 2>/dev/null || true"
}
]
}

View File

@ -1786,6 +1786,66 @@ pm-auditor 자신의 호출 이력도 감사 대상. 특정 작업에서 **호
- **C34** PC 로컬 실시간 공유 중앙화 (감사관 호출 결과 축적의 인프라)
- **C33** 조직 업무 공유·기록 체계 일관성 (3축 감사의 상위 규칙)
### C35-9. pm-auditor 호출 자동 강제 hook 3층 구조 (2026-04-19 PD님 직접 지시 옵션 A)
C35-7 "LLM 자율 판단 한계"의 잔여 리스크를 최대한 축소하기 위한 hook 기반 3층 메커니즘.
#### Layer 1: 사전 환기 (UserPromptSubmit·SessionStart)
- `recent_feedback_brief.sh` — 최근 7일 feedback 요지 자동 주입 (기존)
- SessionStart hook 체인 — 세션 시작 시 C35 의무 호출 대상 환기
#### Layer 2: 호출 자동 기록 (PostToolUse, matcher: `Task`)
- **`scripts/auditor_call_log.sh`** — pm-auditor Task 호출 시 `$HOME/.claude/.nerdnavis_auditor_calls/<date>.log`에 타임스탬프 기록
- **경고 무시 해소 처리 포함** — 호출 시 `$HOME/.claude/.nerdnavis_warning_ignored/<date>.log`의 기존 UNRESOLVED에 RESOLVED 마커 append
- 30분 시간 윈도우로 "최근 호출 있음" 판정
#### Layer 3: 사후 경고 (PostToolUse, matcher: `Edit|Write|MultiEdit|Bash`)
- **`scripts/auditor_guard.sh`** — Write·Edit 대상이 의무 영역(SKILL.md·memory/org/feedback_*·조직공지·PD_지시_트래킹) 또는 Bash 명령이 `git commit/push`일 때
- 최근 30분 내 pm-auditor 호출 기록 없으면 **stderr 경고 출력 + UNRESOLVED 로그 기록**
- **차단 아닌 경고** — PM 자진 정정 유도 (생산성 저해 회피)
- 우회: `NERDNAVIS_AUDITOR_BYPASS=1` + `NERDNAVIS_AUDITOR_BYPASS_REASON="사유"` (BYPASS 로그에 사유 자동 기록)
#### 한계 재인정 (본 3층 구조의 범위)
본 hook 3층은 **사후 감지·기록·경고 층위**이며 **PreToolUse 차단 방식이 아니므로**, **LLM의 C35-1 사전 호출 의무 인지는 여전히 필수**다. C35-7 "코드·hook 레벨 강제 불가 · ~90% 커버" 한계 인정과 정합하며, 본 hook은 **100% 강제가 아닌 "사후 탐지율 극대화 + 미호출 패턴 장기 축적"**을 목표로 한다. 예상 커버리지 ~97%, 최종 3%는 LLM 구조 한계 (PM이 경고 의도적 무시·BYPASS 남용 시).
### C35-10. 경고 무시 PD 우선 보고 + 장기 행동 패턴 분석 개선 사이클 (2026-04-19 PD님 직접 지시)
PD님 직접 지시 2종 이행:
1. **PM이 경고 무시한 사례 발견 시 PD님 우선 보고 + 감사 자산 축적**
2. **장기적 문제 행동 패턴 분석 + 점진적 개선**
#### 경고 무시 PD 우선 보고 메커니즘
- **`scripts/audit_pattern_analyzer.sh`** SessionStart hook 편입 — 미해소 경고 건수(UNRESOLVED RESOLVED) 집계하여 1건 이상이면 세션 시작 시 `🚨 [C35 경고 무시 사례] 미해소 N건` PD님 환기
- **누적 SOT**: `memory/org/feedback_pm_warning_ignored_pattern.md` — 각 사례 6필드 기록 (경고 대상·무시 경위·정당성 판단·결과 영향·후속 조치·관련 로그)
- PM은 미해소 경고 review 후 pm-auditor 호출 or 사유를 SOT에 기록
#### 장기 행동 패턴 분석
- **월 1일 자동 생성** (또는 수동 `bash scripts/audit_pattern_analyzer.sh report`) — `memory/org/audit_pattern_analysis_YYYY_MM.md` 월별 보고서
- 분석 대상: pm-auditor 호출 빈도·UNRESOLVED 건수·BYPASS 우회 이력
- 보고서 스켈레톤 자동 생성, PM이 "개선 안건" 섹션 수동 기입
#### 점진적 개선 사이클
1. **분기별 review**: PM이 누적 SOT + 월별 보고서 교차 분석
2. **패턴 식별**: 특정 의무 영역·시간대·작업 유형 반복 무시 = 구조적 결함
3. **개선 안건화**: pm-auditor 감사 체크 확장·C35-1 대상 조정·hook 로직 개선
4. **PD님 보고**: 분기별 개선 안건 요약 + PM 재량 집행·PD 승인 구분
#### BYPASS 우회 사유 기록 의무 (2026-04-19 신설)
`NERDNAVIS_AUDITOR_BYPASS=1` 사용 시 **`NERDNAVIS_AUDITOR_BYPASS_REASON` 환경변수로 사유 명시 의무**. `auditor_guard.sh``$HOME/.claude/.nerdnavis_bypass_log/<date>.log`에 자동 기록. 사유 미기록 시 `(사유 미기록)`으로 남겨 감사 대상으로 식별.
#### 연관 자산
- `scripts/auditor_call_log.sh`·`auditor_guard.sh`·`audit_pattern_analyzer.sh`
- `memory/org/feedback_pm_warning_ignored_pattern.md` (누적 SOT)
- `memory/org/feedback_c35_initial_enforcement.md` (C35 최초 집행 실증)
- `memory/org/audit_pattern_analysis_YYYY_MM.md` (월별 보고서)
- `$HOME/.claude/.nerdnavis_auditor_calls/` · `.nerdnavis_warning_ignored/` · `.nerdnavis_bypass_log/`
---
### C34-16. memory junction 특수 조항 (2026-04-19 신설)

View File

@ -60,7 +60,7 @@ PD님
- **C30** git 동기화 프로젝트 작업 전 최신 상태 점검 / **C31** 응답 발신 직전 자기검증 의무 (헌법급)
- **C32** 대화로그 기록 의무 (헌법급, 구 P22·P24 흡수) / **C33** 조직 업무 공유·기록 체계 일관성 보장 (헌법급, 구 P26·P27 흡수)
- 🏆 **C34** PC 로컬 실시간 공유 중앙화 체계 — Live + memory (헌법급·조직 핵심 자산, 구 P25 승격 + 2026-04-19 memory 편입, worktree 경계 무관 중앙 Junction + sync 4계층)
- **C35** pm-auditor 의무 참여 체계 (2026-04-19 신설 — 조직 내 공유 작업 7종에 감사관 사전 호출 의무, PM 단독 판단 사각지대 원천 제거)
- **C35** pm-auditor 의무 참여 체계 (2026-04-19 신설 — 조직 내 공유 작업 7종 사전 호출 의무 · C35-9 hook 3층 구조(사전 환기·자동 기록·사후 경고) · C35-10 경고 무시 PD 우선 보고 + 장기 패턴 분석 개선 사이클)
- 폐기·통합·강등·재활용 규칙 상세: [폐기 규칙 아카이브](공유/조직공지/폐기_규칙_아카이브.md)
### 프로젝트 규칙 요약 (활성 24개, 번호 구멍 허용)

View File

@ -33,3 +33,4 @@
- [백업 파일명 C6-1 표준 위반 — 관성적 답습 패턴](feedback_backup_filename_format_violation.md) — 2026-04-19 PD님 지적으로 발견. 8곳 스크립트에서 `.bak-YYYYMMDDHHMMSS` 사용, C6-1 표준 `.bak_YYYYMMDD_HHMM` 위반. 최초 위반(2026-04-18 Live junction)이 이후 모든 파생 스크립트로 연쇄 오염. "기존 코드 답습 ≠ 조직 표준 준수" 원칙 수립
- [안건 프레이밍 중복·이미 결정된 사안 재질문](feedback_agenda_framing_duplication.md) — 2026-04-19 PM 보고 혼선. "PM 재량"과 "PD 결정" 카테고리에 동일 안건 중복 제시 + 이전 턴 옵션 A 결정 사안 재질문. PD님 직접 지적 "같은 안건 아니야?" 수용. 방지 대책 3종(자기검증·감사관·표준 포맷) 신설
- [종결 안건 자동 언급 금지 — 최신 결정 중심 보고](feedback_resolved_agenda_unnecessary_reference.md) — 2026-04-19 PD님 직접 지적. PM이 #38 예상 결과 보고에서 이미 확정된 종결 안건을 "고착·영구 종료"로 재언급. P28-8 신설 + pm-auditor 5-D로 방지. 본 세션 PM 보고 품질 문제 3연속 패턴 중 3번째
- [PM C35 경고 무시 사례 누적 SOT](feedback_pm_warning_ignored_pattern.md) — 2026-04-19 PD님 지시 "경고 무시 PD 우선 보고 + 감사 자산 축적" 이행용. auditor_guard.sh UNRESOLVED 경고·BYPASS 우회가 장시간 방치·남용된 사례 6필드 기록. 분기별 review → 패턴 개선 안건화

View File

@ -0,0 +1,69 @@
# C35 최초 적용 실증 — hook 체계 부재 상태의 PM 의식 준수
**신설일**: 2026-04-19
**기록 주체**: pm-auditor (모드 A 응답 발신 직전 교차 검증)
**위험도**: Improvement — 긍정 실증 사례 (규칙 준수 축적)
---
## 1. 사건 요지
2026-04-19 PM이 C35-9·C35-10 신설 집행안을 발신하기 전 **pm-auditor를 Task 도구로 실제 호출**했다. 이는 다음 이중 의미를 가진다:
1. **C35-1 "1. 규칙 개정·신설" 의무 호출 준수** — 정상 집행
2. **C35 최초 적용 실증** — 집행 대상이 C35 자체의 hook 강제 체계 신설. 즉 Layer 2·3 hook이 아직 **없는 상태**에서 사전 호출 의무를 PM이 수동으로 준수
## 2. 닭과 달걀 역설 검토
**표면적 역설**: "사전 호출 자동 강제 hook이 없는 상태에서의 사전 호출은 무엇이 보장했는가?"
**해소 논리**:
- C35-1은 **문언(규칙 본문)으로 이미 존재** — 2026-04-19 02:00 commit a9dde7a 시점에 SKILL.md C35 본문 포함
- LLM(PM)이 C35-1 문언을 **인지하고 의식적으로 준수** = C35-7 "~90% 커버 · PM 의식 의존" 실증
- hook 3층은 본 집행으로 **추가 설치** 대상 — 향후 호출 이력 자동 기록·미호출 탐지·장기 패턴 분석 인프라
- 따라서 **닭과 달걀 역설 없음**. 문언이 먼저 존재하고 hook은 후속 보강 층위
## 3. C35-7 한계 인정의 실증
C35-7 원문: "LLM 자율 판단 구조상 코드·hook 레벨에서 강제 불가. 명문화 + 자기검증 + 감사관 재귀 감사 3중 구조로 ~90% 커버하되, 100% 강제는 PM 의식적 준수에 의존."
본 사건은 이 한계 인정의 **긍정적 실증**:
- PM이 "C35-1 대상 7종 중 1번" 자기 인지
- Task 도구 실제 호출 수행
- hook 부재 상태에서도 의식적 준수 성립
**단 경고**: PM이 C35-1 문언을 **인지 실패**하는 경우 hook 부재 상태에서는 탐지 불가. 본 집행 완료 후 Layer 2·3이 활성화되어야 사후 탐지 가능. 따라서 **본 집행은 C35 완전 기능화의 임계점**.
## 4. 재발 방지·축적 가치
### 4-1. 긍정 패턴 (계승)
- 신규 코어룰 신설 시 PM이 **본인 발의 집행안에 감사관 호출** 포함 — 셀프 감사 프로세스 내재화
- PD님 직접 지시 + 현 규칙 적용 동시 발생 시 **"규칙 신설이 곧 규칙 준수 대상"** 자기 참조 구조 성립 확인
### 4-2. 경계 패턴 (차기 사례)
- 향후 C·P 규칙 신설이 **자기 참조**(본 규칙을 본 규칙이 감사)할 때 본 feedback 참조
- hook 부재 상태에서 PM이 자기검증만으로 감사를 대체하려는 시도 발견 시 **C35-1 문언 직접 호출 의무** 재확인
## 5. pm-auditor 감사 결과 종합
- **Critical 0 · Major 3 · Minor 1 · Improvement 3**
- 5-A 축소 보고 감지 PASS (Major-3 정정 조건)
- C35 최초 적용 실증으로 feedback 메모리 등재 권고 수용 → 본 파일 신설
## 6. 연관
- **C35** pm-auditor 의무 참여 체계 (본 feedback 직접 근거)
- **C35-7** 근본적 한계 인정 (본 실증의 상위 조항)
- **C29** 업무 자율 수행 (팀 논의·자율 수행 원칙과의 정합)
- **C31** 응답 발신 직전 자기검증 (F 그룹 C35 준수 문항)
- `feedback_issue_under_reporting.md` (C34/C16-1 동급 생존성 축소 보고 금지 — 본 감사 5-A 체크 근거)
- `feedback_pm_over_conservative_interpretation.md` (PM 과도 보수 4회차 변종 — 축소 해석 상위 패턴)
- 감사보고: `공유/소통/pm-auditor→PM/2026-04-19_감사보고_C35-9_10_신설.md`
## 7. 교훈
**규칙 신설 집행도 그 규칙의 준수 대상이다.** C35 신설안을 PM이 발의할 때 C35-1이 이미 유효하므로 감사관 사전 호출 의무가 적용된다. 이는 규칙 체계의 **자기 참조 완결성**을 보여주는 긍정 실증이며, 차기 규칙 신설 시에도 동일하게 적용되어야 한다.
**hook 부재 = 규칙 무력 아니다.** C35-7 "~90% 커버"의 90%는 문언 + 의식적 준수로 달성되며, hook 3층은 잔여 ~10% 탐지·기록을 위한 보강 층위다. 본 사건은 이 90% 층위의 정상 작동 증명.

View File

@ -0,0 +1,61 @@
---
name: PM C35 경고 무시 사례 누적 SOT
description: 2026-04-19 PD님 직접 지시 "경고 무시 사례 발견 시 PD 우선 보고 + 감사 자산 축적". auditor_guard.sh가 발생시킨 UNRESOLVED 경고가 pm-auditor 호출 없이 장시간 방치된 사례를 장기 누적 기록. C35-10 장기 행동 패턴 분석·개선 사이클의 입력 SOT
type: feedback
---
# PM C35 경고 무시 사례 누적 SOT
## 목적
PD님 직접 지시 2종 이행:
1. **PM이 C35 경고를 무시한 사례 발견 시 PD님 우선 보고 + 감사 자산 축적**
2. **장기적 문제 행동 패턴 분석 + 점진적 개선**
본 파일은 **장기 누적 SOT**로 운용되며, 다음 시나리오에서 PM이 자진 기록한다:
- `auditor_guard.sh`가 UNRESOLVED 경고를 발생시켰으나 pm-auditor 호출 없이 작업 완료
- PM이 `NERDNAVIS_AUDITOR_BYPASS=1` 우회를 사용한 경우 사유·정당성
- 감사관 재귀 감사(C35-6)에서 사후 적발된 누락 사례
## 기록 포맷 (필수 6필드)
각 사례는 다음 형식으로 본 파일 말미에 append:
```
### YYYY-MM-DD HH:MM — <사례 제목>
- **경고 대상**: <auditor_guard 출력 "target=..." >
- **무시 경위**: <PM이 호출 생략·우회한 경위>
- **정당성 판단**: <C35-3 제외 대상 해당 여부·PD 긴급 지시 여부>
- **결과 영향**: <무시로 인한 실제 문제 발생 여부>
- **후속 조치**: <pm-auditor 사후 호출·규칙 개정·재발 방지 계획>
- **관련 로그**: <$HOME/.claude/.nerdnavis_warning_ignored/*.log 경로>
```
## PD님 보고 트리거
- **세션 시작 시 미해소 경고 1건 이상**`audit_pattern_analyzer.sh`가 SessionStart에 `🚨 [C35 경고 무시 사례] 미해소 N건` 자동 환기
- **월별 패턴 분석 보고서**`memory/org/audit_pattern_analysis_YYYY_MM.md` 자동 생성, PM은 해당 보고서를 review하여 본 파일에 누적 기록 이전
## 점진적 개선 사이클 (C35-10)
1. **분기별 review**: PM이 본 파일·월별 보고서를 교차 분석
2. **패턴 식별**: 특정 의무 영역·시간대·작업 유형에서 무시가 반복되면 구조적 결함
3. **개선 안건화**: pm-auditor 감사 체크 확장·C35-1 대상 조정·hook 로직 개선
4. **PD님 보고**: 분기별 개선 안건 요약 + PM 재량 집행·PD 승인 구분
## 누적 사례 (append)
(신규 사례는 본 섹션 아래에 기록 시점 순으로 append)
---
## 연관 규칙·자산
- **C35-9** hook 3층 구조 (Layer 3 auditor_guard.sh 경고·UNRESOLVED 로그)
- **C35-10** 경고 무시 PD 보고 + 장기 패턴 분석 (본 파일 직접 연계)
- **C31-F** pm-auditor 의무 호출 체크리스트
- **`scripts/audit_pattern_analyzer.sh`** — SessionStart 환기 + 월별 보고서 생성
- **`$HOME/.claude/.nerdnavis_warning_ignored/`** — UNRESOLVED·RESOLVED 원천 로그
- **`$HOME/.claude/.nerdnavis_bypass_log/`** — BYPASS 우회 사유 로그
- `feedback_issue_under_reporting.md` · `feedback_agenda_framing_duplication.md` · `feedback_resolved_agenda_unnecessary_reference.md` (본 세션 PM 보고 품질 3연속 패턴 — 구조적 모집단)

View File

@ -0,0 +1,87 @@
#!/bin/bash
# SessionStart hook + 수동 실행 (인자 `report`)
# C35-10 장기 행동 패턴 분석·개선 사이클
# 2026-04-19 신설 — PD님 직접 지시 "장기적 문제 행동 패턴 분석 + 점진적 개선"
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"
# 미해소 경고 건수 집계 (UNRESOLVED - RESOLVED)
UNRESOLVED_NET=0
if [ -d "$WARN_DIR" ]; then
for f in "$WARN_DIR"/*.log; do
[ -f "$f" ] || continue
U=$(grep -c "UNRESOLVED" "$f" 2>/dev/null || echo 0)
R=$(grep -c "RESOLVED" "$f" 2>/dev/null || echo 0)
UNRESOLVED_NET=$((UNRESOLVED_NET + U - R))
done
fi
# 세션 시작 시 미해소 경고 있으면 PD님 환기 출력 (stdout — 세션 컨텍스트 주입)
if [ "$UNRESOLVED_NET" -gt 0 ]; then
echo "🚨 [C35 경고 무시 사례] 미해소 $UNRESOLVED_NET 건 — PD님 우선 보고 대상 (감사 자산 축적)"
echo " 상세: $WARN_DIR/"
echo " PM 후속 조치: 경고 대상 review + pm-auditor 호출 or 사유를 memory/org/feedback_pm_warning_ignored_pattern.md에 기록"
fi
# 월별 패턴 분석 보고서 (월 1일 자동 or 수동 `report` 인자)
MONTH=$(date +%Y_%m)
REPORT="$REPO_ROOT/memory/org/audit_pattern_analysis_${MONTH}.md"
TRIGGER="${1:-auto}"
if [ "$TRIGGER" = "report" ] || { [ "$(date +%d)" = "01" ] && [ ! -f "$REPORT" ]; }; then
{
echo "---"
echo "name: 감사 패턴 월별 분석 ${MONTH/_/-}"
echo "description: pm-auditor 호출·경고 무시·BYPASS 우회 이력 누적 분석. 장기 행동 패턴 기록 + 개선 안건 식별 (C35-10)"
echo "type: audit_pattern"
echo "period: ${MONTH/_/-}"
echo "---"
echo ""
echo "# 감사 패턴 분석 — ${MONTH/_/-}"
echo ""
echo "## pm-auditor 호출 빈도"
if [ -d "$CALL_DIR" ]; then
TOTAL_CALLS=0
for f in "$CALL_DIR"/*.log; do
[ -f "$f" ] || continue
C=$(grep -c "pm-auditor called" "$f" 2>/dev/null || echo 0)
TOTAL_CALLS=$((TOTAL_CALLS + C))
done
echo "- 누적 호출 건수: $TOTAL_CALLS"
fi
echo ""
echo "## 경고 무시 사례 (UNRESOLVED)"
echo "- 미해소 순수 건수: $UNRESOLVED_NET"
if [ -d "$WARN_DIR" ]; then
echo ""
echo "### 최근 UNRESOLVED 샘플 (최대 20건)"
grep "UNRESOLVED" "$WARN_DIR"/*.log 2>/dev/null | head -20
fi
echo ""
echo "## BYPASS 우회 이력"
if [ -d "$BYPASS_DIR" ]; then
BYPASS_COUNT=0
for f in "$BYPASS_DIR"/*.log; do
[ -f "$f" ] || continue
B=$(wc -l < "$f" 2>/dev/null || echo 0)
BYPASS_COUNT=$((BYPASS_COUNT + B))
done
echo "- 누적 우회 건수: $BYPASS_COUNT"
fi
echo ""
echo "## 개선 안건 (PM 수동 기입)"
echo "- (분석 로직 추가 확장 필요 — PM review 후 규칙 개정·감사 체크 강화 안건화)"
echo ""
echo "## 연관"
echo "- C35-9 hook 3층 구조 · C35-10 경고 무시 PD 보고·장기 패턴 분석"
echo "- \`memory/org/feedback_pm_warning_ignored_pattern.md\` (누적 SOT)"
} > "$REPORT"
echo "📊 [감사 패턴] 월별 분석 보고서 생성: $REPORT"
fi
exit 0

View File

@ -0,0 +1,33 @@
#!/bin/bash
# PostToolUse hook (matcher: Task) — pm-auditor Task 호출 자동 기록
# C35-9 Layer 2: 감사관 호출 이력 자동 축적 + 경고 무시 사례 해소 처리
# 2026-04-19 신설 — PD님 직접 지시 "경고 무시 사례 발견 시 PD 우선 보고 + 감사 자산 축적"
# 관련: C35-9 hook 3층 구조 · C35-10 경고 무시 PD 보고 + 장기 패턴 분석
INPUT=$(cat 2>/dev/null)
# subagent_type이 pm-auditor인 경우만 기록
if ! echo "$INPUT" | grep -q '"subagent_type"[[:space:]]*:[[:space:]]*"pm-auditor"'; then
exit 0
fi
LOG_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
mkdir -p "$LOG_DIR" 2>/dev/null
# 일자별 로그 파일에 호출 시각 기록
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"
if [ -d "$WARNING_DIR" ]; then
for wf in "$WARNING_DIR"/*.log; do
[ -f "$wf" ] || continue
# 해당 파일에 UNRESOLVED 있고 아직 RESOLVED 미완료이면 해소 처리
if grep -q "UNRESOLVED" "$wf" 2>/dev/null && ! tail -1 "$wf" | grep -q "RESOLVED"; then
echo "$(date +%Y-%m-%d_%H:%M:%S) RESOLVED by pm-auditor call" >> "$wf"
fi
done
fi
exit 0

52
scripts/auditor_guard.sh Normal file
View File

@ -0,0 +1,52 @@
#!/bin/bash
# PostToolUse hook (matcher: Edit|Write|MultiEdit|Bash) — 의무 영역 tool_use 시 호출 기록 검사
# C35-9 Layer 3: 의무 호출 누락 즉시 경고 + 무시 사례 UNRESOLVED 로그
# 2026-04-19 신설 — PD님 직접 지시 옵션 A (경고 모드)
# 관련: C35 의무 참여 체계 · C35-10 무시 사례 PD 보고 · C34-11 Agent 경계 보호
# 우회 환경변수 (C35-3 "PD 긴급 단발 지시" 준용)
if [ "${NERDNAVIS_AUDITOR_BYPASS:-0}" = "1" ]; then
# C35-10 Improvement: 우회 사유 기록 (환경변수 NERDNAVIS_AUDITOR_BYPASS_REASON)
BYPASS_DIR="$HOME/.claude/.nerdnavis_bypass_log"
mkdir -p "$BYPASS_DIR" 2>/dev/null
BYPASS_LOG="$BYPASS_DIR/$(date +%Y-%m-%d).log"
REASON="${NERDNAVIS_AUDITOR_BYPASS_REASON:-(사유 미기록)}"
echo "$(date +%Y-%m-%d_%H:%M:%S) BYPASS reason=$REASON" >> "$BYPASS_LOG"
exit 0
fi
INPUT=$(cat 2>/dev/null)
# 의무 영역 식별
TARGET=""
if echo "$INPUT" | grep -qE '"file_path"[[:space:]]*:[[:space:]]*"[^"]*(SKILL\.md|memory/org/feedback|조직공지|PD_지시_트래킹)[^"]*"'; then
TARGET="의무 영역 파일 수정"
elif echo "$INPUT" | grep -qE '"command"[[:space:]]*:[[:space:]]*"[^"]*git[[:space:]]+(commit|push)'; then
TARGET="git commit/push"
fi
[ -z "$TARGET" ] && exit 0
# 최근 30분 내 pm-auditor 호출 기록 검사
LOG_DIR="$HOME/.claude/.nerdnavis_auditor_calls"
RECENT_CALL=0
if [ -d "$LOG_DIR" ]; then
if find "$LOG_DIR" -type f -mmin -30 2>/dev/null | head -1 | grep -q .; then
RECENT_CALL=1
fi
fi
[ "$RECENT_CALL" -eq 1 ] && exit 0
# 경고 출력 (stderr)
echo "⚠️ [C35 경고] $TARGET — 최근 30분 내 pm-auditor 호출 기록 없음" >&2
echo " C35-1 의무 호출 대상일 수 있음. 응답 발신 전 pm-auditor Task 호출 권장" >&2
echo " 긴급 단발 지시면 export NERDNAVIS_AUDITOR_BYPASS=1 + NERDNAVIS_AUDITOR_BYPASS_REASON='사유' (C35-3·C35-10)" >&2
# UNRESOLVED 로그 기록 (이후 pm-auditor 호출되면 auditor_call_log.sh가 RESOLVED 마커 append)
WARNING_DIR="$HOME/.claude/.nerdnavis_warning_ignored"
mkdir -p "$WARNING_DIR" 2>/dev/null
WARNING_LOG="$WARNING_DIR/$(date +%Y-%m-%d).log"
echo "$(date +%Y-%m-%d_%H:%M:%S) UNRESOLVED target=$TARGET" >> "$WARNING_LOG"
exit 0

View File

@ -91,6 +91,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
| # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 |
|---|------|----------|----------|-----------|----------|----------|
| 44 | 2026-04-19 | (PD님 직접 지시 옵션 A) **C35-9 hook 3층 구조 + C35-10 경고 무시 PD 보고·장기 패턴 분석 집행** — 잔여 리스크 해결 방안 옵션 A 승인 + "경고 무시 사례 PD 우선 보고 + 감사 자산 축적" + "장기 행동 패턴 분석·점진적 개선" 지시 수용 | **완료** | **[완료: 2026-04-19 02:30 · commit: (본 8차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "C35-9·10 신설" 엔트리 + pm-auditor 감사 보고서]** (집행 8종) `scripts/auditor_call_log.sh`·`auditor_guard.sh`·`audit_pattern_analyzer.sh` 3종 신규 · `.claude/settings.json` PostToolUse Task·Edit|Write·Bash matcher + SessionStart audit_pattern_analyzer 편입 · SKILL.md **C35-9 신설** (hook 3층 + 한계 재인정) + **C35-10 신설** (경고 무시 PD 보고 + BYPASS 사유 기록 + 분기별 개선 사이클) · CLAUDE.md C35 요약 확장 · `memory/org/feedback_pm_warning_ignored_pattern.md` 누적 SOT 신설 + MEMORY.md 인덱스 · `memory/org/feedback_c35_initial_enforcement.md` (pm-auditor 감사 수행 실증) · `공유/소통/pm-auditor→PM/2026-04-19_감사보고_C35-9_10_신설.md` 감사 결과 + Major 3건 반영 완료 | - | C35 최초 pm-auditor 사전 의무 호출 실증 사례. Major 3건 정정 반영(C35-9·10 제목 + 한계 재인정 단락). Improvement 2건은 C35-10에 편입(BYPASS 사유 기록) · 1건 후속 안건 |
| 43 | 2026-04-19 | (PD님 직접 지시) **C35 pm-auditor 의무 참여 체계 신설 + feedback 본문 능동 Read 강제 장치** — 남은 약점 2종 보완. PD님 "pm-auditor는 PM 명시 호출에만 작동하지 말고 조직 내 공유 필요 시 의무 참여·구체 맥락 능동 Read 개선" 수용 | **완료** | **[완료: 2026-04-19 02:00 · commit: (본 7차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "C35 신설" 엔트리]** (보정 5종) SKILL.md **C35 신설 8하위 조항** (의무 호출 대상 7종·제외 4종·호출 방식·위반 시·재귀 감사·근본적 한계 인정·연관 규칙) · C31 체크리스트 **F·G 그룹 신설** (C35 의무 호출 + feedback 본문 선행 Read) · `pm-auditor.md` 의무 참여 체계 섹션 신설 · `CLAUDE.md` C35 요약 + 활성 규칙 29→30 · `scripts/recent_feedback_brief.sh` 확장 (본문 Read 안내) | - | 본 세션 PM 보고 품질 3연속 문제(이슈 축소·안건 중복·종결 언급) 구조적 재발 방지 3중 구조 완성 (명문화 + 자기검증 + 감사관 재귀 감사) |
| 42 | 2026-04-19 | (PD님 직접 지시) **종결 안건 자동 언급 금지 원칙 명문화** — PM이 #38 예상 결과 보고에서 이미 확정된 종결 안건을 "고착·영구 종료" 표현으로 재언급한 것 지적. PD님 "종결 안건은 별도 히스토리 요청 전까지 언급 금지, 항상 최신 결정 사항으로 얘기" | **완료** | **[완료: 2026-04-19 01:30 · commit: (본 5차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "종결 안건 자동 언급 금지" 엔트리]** (보정 4종) SKILL.md **P28-8 신설** (최신 결정 중심 보고 원칙) · pm-auditor **5-D 신설** (종결 안건 자동 언급 감지) · `memory/org/feedback_resolved_agenda_unnecessary_reference.md` 신설 + MEMORY.md 인덱스 · 대화로그 append | - | 본 보고부터 원칙 적용. 본 세션 PM 보고 품질 문제 3연속 패턴 (이슈 축소·안건 중복·종결 언급) 모두 feedback화 완료 |
| 41 | 2026-04-19 | (PD님 직접 지시) **C6-1 원본 보호 규칙 위반 보정 + PM 보고 혼선 재발 방지 교훈 기록**. PD님 직접 지적: "C34 확장 집행 완료 과정에 C6-1 원본 보호 규칙을 지키지 않았어?" → 백업 파일명 포맷 8곳 비표준(`.bak-*`) 발견 + PM 보고 "같은 안건 중복·이미 결정된 사안 재질문" 혼선 지적. 보정 1·3·4 PM 재량 집행, 결정 1(기존 `.bak-*` rename) 생략 | **완료** | **[완료: 2026-04-19 01:15 · commit: (본 4차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "C6-1 위반 보정 + 혼선 교훈" 엔트리]** (보정 3종 + 교훈 2종) 보정 1: `memory_junction_ensure.sh`·`live_junction_ensure.sh`·`setup_windows.ps1`(3곳)·`setup_macos.sh`(3곳) 총 8곳 백업 포맷 C6-1 표준(`.bak_YYYYMMDD_HHMM`) 수정 · 보정 3: `memory/org/feedback_backup_filename_format_violation.md` + `feedback_agenda_framing_duplication.md` 2종 신설 + MEMORY.md 인덱스 2건 · 보정 4: `pm-auditor.md` 5-B(백업 포맷)·5-C(안건 프레이밍 중복) 2문항 + `dev-auditor.md` 6-B(백업 포맷) 1문항 신설 | - | 기존 `.bak-*` 디렉토리는 PD님 결정 "생략" 수용, 현 그대로 유지. 향후 백업만 표준 적용 |

View File

@ -184,6 +184,39 @@
4. **사이드 이펙트 5종을 "감수" 수준으로 방치** — race condition은 실체 리스크, Lock 추가로 해결, 기각
- **상태**: 완료. commit + push 대기 → 완료 후 조직 전원 세션 재시작 안내
<!-- #PD지시 #PM #완료 #C35-9_10신설 #hook3층구조 #장기패턴분석 -->
## [PM 집행 완료] C35-9 hook 3층 구조 + C35-10 경고 무시 PD 보고·장기 패턴 분석
- **요지**: PD님 직접 지시 옵션 A 집행 + "경고 무시 PD 우선 보고·감사 자산 축적" + "장기 행동 패턴 분석·점진적 개선" 수용. C35 최초 pm-auditor 사전 의무 호출 실증 사례. Major 3건 정정 후 집행 완료.
- **이유**: C35 신설 직후 잔여 리스크 2종(의무 호출 누락 시 감사 무효화·사후 감사 시점차)을 hook 3층으로 축소. PM 자기검증 의존 구조를 사후 탐지 체계로 보강.
- **사전 pm-auditor 감사 (C35-1·C35-4 준수)**:
- 호출 결과: **Critical 0·Major 3·Minor 1·Improvement 3** → Major 정정 후 집행 허용
- Major 3건 정정 반영:
1. C35-9 제목 "pm-auditor 호출 자동 강제 hook 3층 구조"
2. C35-10 제목 "경고 무시 PD 우선 보고 + 장기 행동 패턴 분석 개선 사이클"
3. C35-9 본문 말미 "PreToolUse 차단 아닌 사후 감지·LLM 자율 판단 구조 여전히 필수" 한계 단락 추가
- Improvement 2건 본 집행에 편입 (BYPASS 사유 기록 의무·`feedback_c35_initial_enforcement.md` 신설), 1건 후속 안건 (C35-1 8번째 "조직 자동화 체계 신설")
- **집행 8종**:
1. `scripts/auditor_call_log.sh` 신규 — PostToolUse Task matcher, pm-auditor 호출 기록 + 경고 무시 RESOLVED 처리
2. `scripts/auditor_guard.sh` 신규 — PostToolUse Edit|Write|MultiEdit|Bash matcher, 의무 영역 수정·git commit/push 시 30분 윈도우 검사 + UNRESOLVED 로그 + BYPASS 사유 로그
3. `scripts/audit_pattern_analyzer.sh` 신규 — SessionStart hook, 미해소 경고 환기 + 월 1일 자동 패턴 보고서 생성
4. `.claude/settings.json` PostToolUse Task·Edit|Write·Bash matcher + SessionStart audit_pattern_analyzer 편입
5. SKILL.md **C35-9 신설** (Layer 1·2·3 + 한계 재인정)
6. SKILL.md **C35-10 신설** (경고 무시 PD 보고 메커니즘·장기 패턴 분석·점진적 개선 사이클·BYPASS 사유 기록 의무)
7. CLAUDE.md C35 요약 확장
8. `memory/org/feedback_pm_warning_ignored_pattern.md` 누적 SOT 신설 (PD님 지시 2) + MEMORY.md 인덱스
- **Agent 경계 보호 (C34-11) 준수 실증**: 집행 전 `git -C "E:/NerdNavisAi" status` 빈 상태 확인 + 집행 후 본 worktree만 변경 (레포 루트 유출 0건)
- **C35 최초 집행 실증**: 본 집행은 hook 자동 강제 체계를 최초 구축하는 단계임에도 PM이 Task 도구로 pm-auditor 수동 사전 호출 수행 — C35-1 의무를 자동 hook 부재 시점에도 인지·준수한 실증 사례. 감사관이 `feedback_c35_initial_enforcement.md` 신설하여 영구 기록
- **기각안**:
1. **PreToolUse exit 2 강제 차단 모드** — hook 실수 시 정상 작업 차단 리스크 + Claude Code 버전 호환성 리스크. 옵션 A 경고 모드 채택, 기각
2. **BYPASS 사유 기록 선택** — 남용 방지 필요. 의무 기록으로 채택
3. **월별 보고서 수동 생성만** — PD님 "점진적 개선" 지시에 부합 어려움. SessionStart 월 1일 자동 생성 채택
4. **feedback_c35_initial_enforcement.md 생략** — 감사관이 자체 신설 완료, 본 Improvement 수용 유지
- **PD 지시 로그 #44 완료 아카이브 이동** (P19 강화·즉답 접두 포함)
- **상태**: 완료. commit + push 대기
---
<!-- #PD지시 #PM #완료 #C35신설 #pmAuditor의무참여 #feedback본문Read강제 -->
## [PM 집행 완료] C35 pm-auditor 의무 참여 체계 신설 + C31-F·G 신설
@ -258,3 +291,25 @@
3. **보정 내용을 #40에 통합하지 않고 #41 별도 등록**#40은 이미 완료 아카이브 상태. 본 지시는 별개 PD 직접 지시라 #41 신규 등록이 C13·P19 정합, 채택
- **PD 지시 로그 #41 완료 아카이브 이동** (P19 강화·즉답 접두 포함)
- **상태**: 완료. commit + push 대기
## pm-auditor 감사 — C35-9·10 신설 집행안 #이슈 #조직운영
- **호출 주체**: pm-general (C35-1 의무 호출 — 규칙 개정·신설)
- **감사 범위**: 5-A·5-B·5-C·5-D + 영역 1~6 전수
- **판정**: Critical 0, **Major 3**, Minor 1, Improvement 3 → **Major 정정 후 집행 허용**
- **Major 3건**:
1. C35-9 제목 "pm-auditor 호출 자동 강제 hook 3층 구조"로 명확화 (C22 용어 일관)
2. C35-10 제목 PD님 원문 "PD 우선 보고 + 장기 행동 패턴 분석 개선 사이클" 보존 (C22)
3. C35-9 본문 말미에 "hook은 사후 감지 층위 · PreToolUse 차단 아님 · C35-1 사전 호출 의무 LLM 의식 의존" 명시 추가 (C5 정직성 · C35-7 한계 인정 정합)
- **Minor**: PD 지시 #44 응답 작성 전 활성 테이블 선등록 (P19)
- **Improvement 3**:
1. C35-1 8번째 항목 "조직 자동화 체계 신설" 추가 안건화
2. `feedback_c35_initial_enforcement.md` 신설 (C35 최초 적용 실증 기록)
3. `NERDNAVIS_AUDITOR_BYPASS` 우회 사유 기록 의무 추가
- **5-A 축소 보고 감지**: PASS (PD님 옵션 A 본인 선택 + 지시 2·3 수용으로 3층 구조 확보). 단 Major-3 정정이 통과 조건
- **C35 최초 집행 특수성**: 본 감사관이 Task 도구로 실제 호출되어 실행 중 — hook 부재 상태에서 PM이 C35-1 의무를 수동 준수한 것. 닭과 달걀 역설 없음. C35-7 "~90% 커버 · 의식 의존" 실증 사례
- **산출물**:
- `공유/소통/pm-auditor→PM/2026-04-19_감사보고_C35-9_10_신설.md` 신설
- 본 대화로그 엔트리
- `memory/org/feedback_c35_initial_enforcement.md` 신설 권고 (Improvement-2)
- **상태**: 감사 완료. PM이 Major 3건 정정 후 집행 진행

View File

@ -0,0 +1,90 @@
---
from: pm-auditor
to: pm-general
date: 2026-04-19
주제: C35-9·10 hook 체계 신설 집행안 감사
status: 완료 (Major 3건 정정 조건부 허용)
관련: C35-1 의무 호출 (본 감사가 C35 최초 적용 실증)
---
# 감사 보고서 — C35-9·C35-10 신설 집행안
## 요지
PD님 직접 지시 3종(옵션 A 경고 모드 + 경고 무시 PD 우선 보고 + 장기 패턴 분석·개선 사이클) 집행안 감사 완료. **Critical 부재, Major 3건**은 본문 표기·제목 보정 수준이며 집행 직전 일괄 반영 가능. 차단 사유 없음.
## 감사 범위
| 영역 | 결과 |
|------|------|
| 1. 로그 기록 추적 | PASS (조건부 — #44 선등록) |
| 2. 규칙 준수 점검 | Major 3건 |
| 3. PM 재량 처리 | PASS |
| 4. 프로세스 개선점 | PASS (긍정 평가) |
| 5-A 축소 보고 감지 | PASS |
| 5-B 백업 파일명 | 해당 없음 |
| 5-C 안건 중복 | PASS |
| 5-D 종결 안건 재언급 | PASS |
## Major 3건 정정 권고
### Major-1. C35-9 제목 명확화 (C22 용어 일관)
- 초안: "hook 3층 구조 (Layer 1 사전 환기 · Layer 2 호출 자동 기록 · Layer 3 사후 경고)"
- 권고: **"pm-auditor 호출 자동 강제 hook 3층 구조"**
- 사유: C34-3 "중앙 저장소 구조"와 용어 혼선 방지
### Major-2. C35-10 제목 "PD 우선 보고" 원문 보존
- 초안: "경고 무시 PD 보고 + 장기 패턴 분석·개선 사이클"
- 권고: **"경고 무시 PD 우선 보고 + 장기 행동 패턴 분석 개선 사이클"**
- 사유: PD님 원문 "PD 우선 보고" 표현 보존 (C22 용어 일관). 지시 3 "장기적 행동 패턴 분석 + 점진적 개선 조치" 원문 반영 강화
### Major-3. C35-9 본문에 "hook 층위 범위" 명시 의무
C35-9 본문 말미에 다음 1단락 추가 필수:
> **본 hook 3층은 사후 감지·기록·경고 층위이며, PreToolUse 차단 방식이 아니므로 LLM의 C35-1 사전 호출 의무 인지는 여전히 필수**다. C35-7 "코드·hook 레벨에서 강제 불가 · ~90% 커버" 한계 인정과 정합하며, 본 hook은 100% 강제가 아닌 "사후 탐지율 극대화 + 미호출 패턴 장기 축적"을 목표로 한다.
**누락 시 리스크**: 다음 세션 PM이 "hook 도입으로 100% 강제 달성" 오독 → C5 정직성 위반.
## Minor 1건
### Minor-1. PD 지시 #44 선등록 (P19)
본 집행 응답 본문 작성 **전**에 `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` 활성 테이블에 #44 등록 (지시 인지 즉시 등록 의무). 완료 후 아카이브 이동 + 즉답 접두 필수.
## Improvement 3건 (안건화 후보)
### Improvement-1. C35-1 "조직 자동화 체계 신설" 8번 항목 추가
본 집행은 "규칙 개정(1번)" + "hook 체계 최초 구축" 동시. hook·스크립트·감사 인프라 신설 자체를 C35-1 의무 호출 대상에 명시 검토.
### Improvement-2. `feedback_c35_initial_enforcement.md` 신설
본 감사가 C35 **최초 적용 실증** 사례. "hook 체계 부재 상태에서 PM 의식적 감사관 호출 준수 → C35-7 ~90% 커버 실증" 경위를 feedback 메모리로 영구 기록하여 차기 감사 메타데이터로 축적.
### Improvement-3. `NERDNAVIS_AUDITOR_BYPASS` 우회 사유 기록 의무
우회 변수 남용 차단을 위해 `auditor_guard.sh`**우회 시 사유 입력 프롬프트** 또는 **별도 bypass 로그 기록** 추가 검토. 현 초안은 단순 변수 체크만.
## 5-A 축소 보고 감지 심층 분석
PM 주장: "근본 강제 불가를 경고만으로 축소 프레이밍하지 않음 — PD님 옵션 A 본인 선택 + 지시 2·3 수용으로 3층 구조"
감사 판정: **통과**. 다만 Major-3 명시 누락 시 다음 세션 "근본 해결됨" 오독 리스크 존재. Major-3 정정이 5-A 통과의 조건.
## C35 최초 집행 특수성
**논리 정합 통과** — 본 감사관이 Task 도구로 실제 호출되어 실행 중. C35-1 "1. 규칙 개정·신설" 의무 호출을 PM이 수동으로 준수한 것. hook 부재 상태에서도 C35-1 문언만으로 사전 호출 가능. 닭과 달걀 역설 없음.
## 결론
**Major 3건 정정 후 집행 허용**. 차단 사유 없음.
---
참조:
- `memory/org/feedback_issue_under_reporting.md` — C34/C16-1 동급 생존성 축소 보고 금지 (본 감사 5-A 체크 근거)
- `memory/org/feedback_pm_over_conservative_interpretation.md` — PM 과도 보수 4회차 변종 (상위 패턴 모집단)
- SKILL.md C35 본문·C34 중앙화 체계