BurningTimesAi/scripts/audit_pattern_analyzer.sh

231 lines
9.9 KiB
Bash
Raw Permalink Normal View History

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>
2026-04-18 17:45:06 +00:00
#!/bin/bash
# SessionStart hook + 수동 실행 (인자 `report` | `session_restore_report` | `auditor_window <name>`)
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>
2026-04-18 17:45:06 +00:00
# C35-10 장기 행동 패턴 분석·개선 사이클
# 2026-04-19 신설 — PD님 직접 지시 "장기적 문제 행동 패턴 분석 + 점진적 개선"
# 2026-04-23 확장 (BT4) — 감사관 E안 자동 윈도우 + session_restore_report 수동 발동
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>
2026-04-18 17:45:06 +00:00
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
[ -z "$REPO_ROOT" ] && exit 0
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>
2026-04-20 15:14:51 +00:00
CALL_DIR="$HOME/.claude/.burningtimes_auditor_calls"
WARN_DIR="$HOME/.claude/.burningtimes_warning_ignored"
BYPASS_DIR="$HOME/.claude/.burningtimes_bypass_log"
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>
2026-04-18 17:45:06 +00:00
# ─────────────────────────────────────────────────────────────────────
# 감사관 E안 자동 윈도우 (BT4, 2026-04-23)
# 메커니즘: 마지막 해당 감사관 호출 시점 → 현재 = 자동 윈도우
# 최소 1일, 최대 30일 상한, --extend=N 수동 확장
# ─────────────────────────────────────────────────────────────────────
get_auditor_window() {
local auditor_name="$1" # pm-auditor | dev-auditor | plan-auditor
local extend_override="$2" # 수동 확장 (일수, 선택)
# 수동 확장 우선
if [ -n "$extend_override" ] && [ "$extend_override" -gt 0 ] 2>/dev/null; then
echo "$extend_override"
return 0
fi
local now=$(date +%s)
local last_call=0
# 호출 이력 파일 순회 (최신 로그부터)
if [ -d "$CALL_DIR" ]; then
for f in $(ls -t "$CALL_DIR"/*.log 2>/dev/null); do
[ -f "$f" ] || continue
# "pm-auditor called" 같은 패턴 grep, 최신 라인의 타임스탬프 추출
local line=$(grep -h "${auditor_name} called" "$f" 2>/dev/null | tail -1)
if [ -n "$line" ]; then
# 타임스탬프가 앞에 ISO/epoch 형태로 있다고 가정. epoch 시도
local ts=$(echo "$line" | grep -oE '[0-9]{10}' | head -1)
if [ -n "$ts" ]; then
last_call=$ts
break
fi
# ISO 시도 (date 명령)
local iso=$(echo "$line" | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}[T ][0-9]{2}:[0-9]{2}(:[0-9]{2})?' | head -1)
if [ -n "$iso" ]; then
last_call=$(date -d "$iso" +%s 2>/dev/null || echo 0)
[ "$last_call" -gt 0 ] && break
fi
fi
done
fi
# 마지막 호출 없으면 기본 7일 (초기·PC 이관 대비)
if [ "$last_call" -eq 0 ]; then
echo 7
return 0
fi
# 공백일수 계산
local gap_sec=$((now - last_call))
local gap_days=$((gap_sec / 86400))
# 최소 1일·최대 30일 상한
[ "$gap_days" -lt 1 ] && gap_days=1
[ "$gap_days" -gt 30 ] && gap_days=30
echo "$gap_days"
}
# ─────────────────────────────────────────────────────────────────────
# BT4 6계층 운영 모니터링 — session_restore_report
# project_context_조직운영_archive.md 첫 엔트리 이동 시점 또는 수동 발동
# ─────────────────────────────────────────────────────────────────────
generate_session_restore_report() {
local arch_file="$REPO_ROOT/memory/org/project_context_조직운영_archive.md"
local ts=$(date +%Y-%m-%d_%H%M)
local report="$REPO_ROOT/memory/org/audit_pattern_analysis_6계층_${ts}.md"
{
echo "---"
echo "name: 세션 시작 교훈 환기 6계층 운영 모니터링 보고서 (${ts})"
echo "description: BT4 6계층 체계 운영 데이터 누적 분석. pm-auditor 지속 모니터링 SOT 기반. 개선 안건 식별 + PD 보고"
echo "type: audit_pattern"
echo "period: ${ts}"
echo "trigger: $([ -s "$arch_file" ] && echo 'archive_entry_moved' || echo 'manual')"
echo "---"
echo ""
echo "# BT4 6계층 운영 모니터링 보고서 — ${ts}"
echo ""
echo "## 1. 트리거 상태"
if [ -s "$arch_file" ]; then
local arch_count=$(grep -c "^- \[" "$arch_file" 2>/dev/null || echo 0)
echo "- project_context_조직운영_archive.md 엔트리 수: $arch_count"
else
echo "- 수동 발동 (archive 미이동)"
fi
echo ""
echo "## 2. 감사관 E안 자동 윈도우 실측"
for a in pm-auditor dev-auditor plan-auditor; do
local w=$(get_auditor_window "$a")
echo "- ${a}: ${w}"
done
echo ""
echo "## 3. 계층별 발동 통계 (pm-auditor 수동 기입 영역)"
echo "- 계층 0 고정 주입: 매 세션 1회 (기본 전제)"
echo "- 계층 1 (1일): (기입)"
echo "- 계층 2 (2~7일): (기입)"
echo "- 계층 3 (>7일): (기입)"
echo "- 계층 4 (--extend=N): (기입)"
echo "- 계층 5 (내용축 트리거): (기입)"
echo ""
echo "## 4. 개선 안건 (pm-auditor 수동 기입)"
echo "- (계층 추가·폐기·통합 / 트리거 조정 / 계층 0 대상 조정 / 감사관 윈도우 튜닝)"
echo ""
echo "## 5. PD 결정 요청"
echo "- (pm-auditor 우선순위 기입)"
echo ""
echo "## 연관"
echo "- \`memory/org/feedback_session_restore_monitoring.md\` (모니터링 SOT)"
echo "- \`memory/org/project_context_조직운영.md\` (트리거 기반)"
echo "- \`scripts/recent_feedback_brief.sh\` (6계층 구현)"
} > "$report"
echo "📊 [BT4 6계층] 운영 모니터링 보고서 생성: $report"
}
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>
2026-04-18 17:45:06 +00:00
# 미해소 경고 건수 집계 (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
# 수동 발동 명령 처리 (BT4 2026-04-23 확장)
TRIGGER="${1:-auto}"
# auditor_window <감사관명> [--extend=N] — E안 자동 윈도우 조회
if [ "$TRIGGER" = "auditor_window" ]; then
AUDITOR="${2:-pm-auditor}"
EXTEND=""
if [ "$3" = "--extend" ] && [ -n "$4" ]; then
EXTEND="$4"
fi
get_auditor_window "$AUDITOR" "$EXTEND"
exit 0
fi
# session_restore_report — BT4 6계층 운영 모니터링 보고서 수동 발동
if [ "$TRIGGER" = "session_restore_report" ]; then
generate_session_restore_report
exit 0
fi
# project_context_조직운영_archive.md 첫 엔트리 감지 → 자동 보고서 생성
ARCHIVE_FILE="$REPO_ROOT/memory/org/project_context_조직운영_archive.md"
AUTO_SESSION_REPORT_FLAG="$HOME/.claude/.burningtimes_bt4_session_report_done"
if [ -f "$ARCHIVE_FILE" ] && grep -q "^- \[" "$ARCHIVE_FILE" 2>/dev/null && [ ! -f "$AUTO_SESSION_REPORT_FLAG" ]; then
generate_session_restore_report
touch "$AUTO_SESSION_REPORT_FLAG"
echo "📌 [BT4] archive 첫 엔트리 감지 — 운영 모니터링 보고서 자동 생성 (재발동 금지 플래그 설정)"
fi
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>
2026-04-18 17:45:06 +00:00
# 월별 패턴 분석 보고서 (월 1일 자동 or 수동 `report` 인자)
MONTH=$(date +%Y_%m)
REPORT="$REPO_ROOT/memory/org/audit_pattern_analysis_${MONTH}.md"
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