fix(rules): BYPASS 메커니즘 파일 기반 전환 — 옵션 A

PD님 직접 지시 옵션 A 수용. 환경변수 방식이 Claude Code tool_use hook에
전달 안 되는 구조적 결함(2026-04-19 11차 commit 실증) 수정.

집행 3종:
- scripts/auditor_guard.sh 파일 기반 BYPASS 우선 분기 신설
  ($HOME/.claude/.nerdnavis_bypass_active 존재 시 exit 0 + 사유 로그)
  환경변수 방식은 fallback 유지
- SKILL.md C35-10 BYPASS 섹션 전면 개정 (사용 절차 4단계·자동 기록·
  재발 방지 체크·위반 시 C3 준용)
- memory/org/feedback_pm_warning_ignored_pattern.md 2차 실증 사례 +
  사용법 섹션 신설

본 집행 BYPASS 활용 실증: 스크립트 수정 직후 플래그 파일 생성 →
나머지 Edit·commit 정상 BYPASS 통과 → 작업 후 플래그 제거.

PD 지시 로그 #46 완료 아카이브 등록.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-04-19 21:32:05 +09:00
parent d8ec32fe9f
commit 1b409a0a1a
6 changed files with 95 additions and 6 deletions

View File

@ -1835,9 +1835,27 @@ PD님 직접 지시 2종 이행:
3. **개선 안건화**: pm-auditor 감사 체크 확장·C35-1 대상 조정·hook 로직 개선
4. **PD님 보고**: 분기별 개선 안건 요약 + PM 재량 집행·PD 승인 구분
#### BYPASS 우회 사유 기록 의무 (2026-04-19 신설)
#### BYPASS 우회 사유 기록 의무 (2026-04-19 신설 · 파일 기반 전환)
`NERDNAVIS_AUDITOR_BYPASS=1` 사용 시 **`NERDNAVIS_AUDITOR_BYPASS_REASON` 환경변수로 사유 명시 의무**. `auditor_guard.sh``$HOME/.claude/.nerdnavis_bypass_log/<date>.log`에 자동 기록. 사유 미기록 시 `(사유 미기록)`으로 남겨 감사 대상으로 식별.
**작동 방식** (2026-04-19 옵션 A 파일 기반 전환):
Claude Code tool_use hook 실행 환경에서 PM이 명령 prefix(`NERDNAVIS_AUDITOR_BYPASS=1 git ...`)로 설정한 환경변수가 전달되지 않는 것이 본 세션 11차 commit 실패 사례로 실증됨. 이에 따라 BYPASS 메커니즘을 **파일 기반으로 전환**.
**사용 절차**:
1. 사유 기록: `echo "사유 텍스트" > $HOME/.claude/.nerdnavis_bypass_reason`
2. 플래그 생성: `touch $HOME/.claude/.nerdnavis_bypass_active`
3. 작업 수행 (Edit·Write·commit·push 등 의무 영역)
4. **작업 완료 직후 플래그·사유 파일 제거**: `rm $HOME/.claude/.nerdnavis_bypass_active $HOME/.claude/.nerdnavis_bypass_reason`
**자동 기록**: `auditor_guard.sh`가 플래그 파일 존재 시 `$HOME/.claude/.nerdnavis_bypass_log/<date>.log``BYPASS (file) reason=...` 자동 기록 후 `exit 0`.
**환경변수 방식 fallback 유지**: Claude Code가 미래에 hook 환경변수 전달 지원 시 작동. 현재 PM 명령 prefix로는 미작동 (실증).
**재발 방지 체크 (세션 리더 의무)**:
- BYPASS 사용 전 `ls $HOME/.claude/.nerdnavis_bypass_active`로 플래그 설정 검증
- **작업 완료 직후 반드시 플래그 제거** — 잔존 시 차후 모든 작업이 BYPASS 상태로 통과 (감사 사각지대 발생)
- C35-10 분기별 review 시 BYPASS 로그 누적 검토 필수
**위반 시**: BYPASS 플래그 장기 잔존·사유 미기록 시 C3 이슈 은폐 금지 위반에 준함. 자진 고지 + 플래그 즉시 제거.
#### 연관 자산

View File

@ -34,4 +34,3 @@
- [안건 프레이밍 중복·이미 결정된 사안 재질문](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 → 패턴 개선 안건화
- [C34 중앙 저장소 sentinel 손실 — 자동 보호 강화](feedback_central_sentinel_loss.md) — 2026-04-19 다른 세션 verify_setup이 marker 부재 정확 감지. git 외 작업으로 손실 (원인 미상). 안건 A 집행: live_junction_ensure.sh를 UserPromptSubmit hook에 편입 → 손실 윈도우 1프롬프트 이내로 축소

View File

@ -17,6 +17,28 @@ PD님 직접 지시 2종 이행:
- PM이 `NERDNAVIS_AUDITOR_BYPASS=1` 우회를 사용한 경우 사유·정당성
- 감사관 재귀 감사(C35-6)에서 사후 적발된 누락 사례
## BYPASS 사용법 (2026-04-19 옵션 A 파일 기반 전환)
### 사용 절차
```bash
echo "사유 텍스트" > $HOME/.claude/.nerdnavis_bypass_reason
touch $HOME/.claude/.nerdnavis_bypass_active
# ... 의무 영역 작업 수행 (Edit·Write·commit·push) ...
rm $HOME/.claude/.nerdnavis_bypass_active $HOME/.claude/.nerdnavis_bypass_reason
```
### 자동 기록
`auditor_guard.sh`가 플래그 파일 감지 시 `$HOME/.claude/.nerdnavis_bypass_log/<date>.log``BYPASS (file) reason=...` 자동 기록.
### 재발 방지 체크
- 작업 완료 직후 플래그 파일 반드시 제거 (잔존 시 차후 모든 작업 BYPASS → 감사 사각지대 위험)
- 분기별 review 시 BYPASS 로그 누적 검토
### 환경변수 방식 (폐기 권장)
`NERDNAVIS_AUDITOR_BYPASS=1` prefix는 Claude Code hook 환경변수 미전달로 작동 안 함이 2026-04-19 실증. fallback 유지되나 **파일 기반 방식 사용 권장**.
---
## 기록 포맷 (필수 6필드)
각 사례는 다음 형식으로 본 파일 말미에 append:
@ -48,6 +70,15 @@ PD님 직접 지시 2종 이행:
(신규 사례는 본 섹션 아래에 기록 시점 순으로 append)
### 2026-04-19 21:11·21:12 — BYPASS 환경변수 hook 미전달 (구조적 결함, 옵션 A 전환 근거)
- **경고 대상**: 의무 영역 파일 수정 (11차 commit `d8ec32f` 관련 Edit/Write)
- **무시 경위**: PM이 `NERDNAVIS_AUDITOR_BYPASS=1 NERDNAVIS_AUDITOR_BYPASS_REASON="..." git add/commit` prefix로 BYPASS 시도. 환경변수가 git subprocess에만 적용되고 Claude Code가 Edit/Write tool_use 직후 호출하는 PostToolUse hook에는 **전달 안 됨**
- **정당성 판단**: BYPASS 의도는 정당 (단순 보강·검증 완료 권고안). 단 **메커니즘 자체가 작동 안 함** — PM 사용법이 아니라 구조적 결함
- **결과 영향**: BYPASS 사유 기록만 무효, 실제 집행은 정상 완료. 데이터 손실 0. 단 UNRESOLVED 2건 누적 (감사 자산으로 축적)
- **후속 조치**: 2026-04-19 옵션 A 집행 — **auditor_guard.sh 파일 기반 BYPASS로 전환**. `$HOME/.claude/.nerdnavis_bypass_active` 플래그 파일 존재 시 우선 판정. 환경변수 방식은 fallback 유지
- **관련 로그**: `$HOME/.claude/.nerdnavis_warning_ignored/2026-04-19.log` (UNRESOLVED 2건 기록 유지, 원인 분석 완료)
### 2026-04-19 02:45 — C35 hook 도입 직후 첫 commit false positive
- **경고 대상**: git commit/push (commit `1553f97` 시점)

View File

@ -4,14 +4,30 @@
# 2026-04-19 신설 — PD님 직접 지시 옵션 A (경고 모드)
# 관련: C35 의무 참여 체계 · C35-10 무시 사례 PD 보고 · C34-11 Agent 경계 보호
# 우회 환경변수 (C35-3 "PD 긴급 단발 지시" 준용)
# 우회 검사 (2026-04-19 옵션 A: 파일 기반 BYPASS 우선, 환경변수 fallback)
# 근거: Claude Code tool_use hook 실행 환경에서 PM이 명령 prefix로 설정한 환경변수가
# 전달되지 않는 것이 실증됨 (2026-04-19 본 세션 11차 commit 실패 사례)
BYPASS_FLAG_FILE="$HOME/.claude/.nerdnavis_bypass_active"
BYPASS_REASON_FILE="$HOME/.claude/.nerdnavis_bypass_reason"
# 1. 파일 기반 BYPASS (권장)
if [ -f "$BYPASS_FLAG_FILE" ]; then
BYPASS_DIR="$HOME/.claude/.nerdnavis_bypass_log"
mkdir -p "$BYPASS_DIR" 2>/dev/null
BYPASS_LOG="$BYPASS_DIR/$(date +%Y-%m-%d).log"
REASON="(사유 미기록)"
[ -f "$BYPASS_REASON_FILE" ] && REASON=$(cat "$BYPASS_REASON_FILE" 2>/dev/null | head -c 500 | tr -d '\n')
echo "$(date +%Y-%m-%d_%H:%M:%S) BYPASS (file) reason=$REASON" >> "$BYPASS_LOG"
exit 0
fi
# 2. 환경변수 기반 BYPASS (fallback, Claude Code hook에 전달되는 경우만 작동)
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"
echo "$(date +%Y-%m-%d_%H:%M:%S) BYPASS (env, may not trigger) reason=$REASON" >> "$BYPASS_LOG"
exit 0
fi

View File

@ -91,6 +91,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
| # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 |
|---|------|----------|----------|-----------|----------|----------|
| 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 환경과 무관하게 작동 보장. 작업 완료 시 플래그 제거 의무 명문화 |
| 45 | 2026-04-19 | (PD님 직접 지시) **C34 sentinel 자동 보호 강화 — 안건 A 단독 집행** — 다른 세션 verify_setup이 marker 부재 정확 감지(2026-04-19). 본 worktree 즉시 복구 + UserPromptSubmit hook에 live_junction_ensure 편입으로 손실 윈도우 1프롬프트 이내 축소 | **완료** | **[완료: 2026-04-19 21:15 · commit: (본 11차 commit) · 참조: `공유/대화로그/조직운영/2026-04-19.md` "sentinel 자동 보호 강화" 엔트리]** (집행 4종) `.claude/settings.json` UserPromptSubmit 체인에 live_junction_ensure 편입 · SKILL.md C34-3 "Sentinel 자동 보호" 1줄 추가 · `memory/org/feedback_central_sentinel_loss.md` 신설 + MEMORY.md 인덱스 · `$HOME/.claude/nerdnavis-live/.junction-marker` 즉시 복구 (PowerShell Set-Content) | - | C35-1 의무 영역 다중 해당(규칙·feedback·commit·PD 로그)이나 PD님 명시 단발 집행 지시 + 단순 hook 1줄 추가 + 검증된 기존 스크립트 재사용으로 BYPASS 사용 (사유: 단순 보강 + 검증 완료 권고안) |
| 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중 구조 완성 (명문화 + 자기검증 + 감사관 재귀 감사) |

View File

@ -184,6 +184,30 @@
4. **사이드 이펙트 5종을 "감수" 수준으로 방치** — race condition은 실체 리스크, Lock 추가로 해결, 기각
- **상태**: 완료. commit + push 대기 → 완료 후 조직 전원 세션 재시작 안내
<!-- #PD지시 #PM #완료 #옵션A #BYPASS파일기반전환 -->
## [PM 집행 완료] BYPASS 메커니즘 파일 기반 전환 (옵션 A)
- **요지**: PD님 직접 지시 옵션 A 수용. 11차 commit 시 BYPASS 환경변수 미전달 실증된 구조적 결함 수정. 파일 기반 플래그로 Claude Code hook 환경과 무관하게 작동 보장.
- **이유**: `NERDNAVIS_AUDITOR_BYPASS=1 git ...` prefix 환경변수가 git subprocess에만 적용되고 Claude Code가 Edit/Write tool_use 직후 호출하는 PostToolUse hook에는 전달 안 됨. 본 세션 11차 commit 시 UNRESOLVED 2건 발생으로 실증
- **집행 3종**:
1. `scripts/auditor_guard.sh` 파일 기반 BYPASS 우선 분기 신설 (`$HOME/.claude/.nerdnavis_bypass_active` 존재 시 즉시 exit 0 + 사유 로그). 환경변수 방식은 fallback 유지 (Claude Code 향후 지원 대비)
2. SKILL.md C35-10 BYPASS 섹션 전면 개정 — 사용 절차 4단계·자동 기록·재발 방지 체크·위반 시 C3 준용
3. `memory/org/feedback_pm_warning_ignored_pattern.md` 2차 실증 사례 append + "BYPASS 사용법" 섹션 신설
- **본 집행 BYPASS 활용 실증**: 집행 순서상 auditor_guard.sh 수정 직후 `touch $HOME/.claude/.nerdnavis_bypass_active` + 사유 파일 생성 → 나머지 Edit·commit이 파일 기반 BYPASS로 정상 통과. 작업 완료 후 플래그 제거 의무 명문화 준수
- **거부된 대안** (이전 응답 기준):
- B (BYPASS 폐기) — 단순 시정·긴급 단발 지시 시 과잉
- C (PreToolUse 차단 재설계) — 구현 복잡도·생산성 저해 리스크
- D (현 상태 유지) — UNRESOLVED 계속 누적·BYPASS 무실효
- **본 세션 "또" 발생 패턴 분석**:
- 1차 사건(02:45): hook 도입 시점차 false positive
- 2차 사건(21:11·21:12): BYPASS 환경변수 미전달 (본 사건)
- 두 사건 근본 원인 서로 다름. 공통점은 "C35-9 hook 3층 설계 가정과 Claude Code 실행 모델 불일치"
- 파일 기반 전환으로 2차 유형 근본 차단
- **PD 지시 로그 #46 완료 아카이브 등록** (P19 강화·즉답 접두)
- **상태**: 완료. commit + push + 플래그 파일 제거 대기
---
<!-- #PD지시 #PM #완료 #안건A집행 #sentinel자동보호 -->
## [PM 집행 완료] 안건 A 단독 집행 — sentinel 자동 보호 강화 (UserPromptSubmit hook 편입)