BurningTimesAi/scripts/auditor_guard.sh

53 lines
2.2 KiB
Bash
Raw 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
# 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