BurningTimesAi/memory/org/feedback_agent_path_boundar...

40 lines
3.1 KiB
Markdown
Raw Normal View History

feat(rules): C34 Live 증분 동기화 헌법급 신설 + worktree 격리 근원 해결 PD님 조직 생존급 선언 수용 — "이 문제가 해결되지 않으면 앞으로 우리 조직은 유지될 수 없어" / "철저히 검토해서 가능한 모든 수단을 써서 개선해". 헌법 제1원칙 ⑤(세션·PC 연속성) 근본 위협 판정. P25 → C34 승격 + 중앙 Junction 구조로 worktree 경계 무관 실시간 공유 복원. 집행 10종: - SKILL.md: C34 신설(14개 하위 조항) + P25 본문 삭제(C14-5-확장) + C16-1 .live/ junction 편입 + C31-1-E 표기 갱신 + 조직 핵심 자산 참조 갱신 - CLAUDE.md: 핵심 규칙 요약 28→29 + C34 추가, 프로젝트 규칙 요약 25→24 + P25 제거, 번호 구멍 목록 확장 - scripts/live_junction_ensure.sh: 신규 SessionStart hook (PowerShell New-Item Junction 우선, git-bash mklink 대비 신뢰성 우위 실증 반영) - setup/setup_windows.ps1·setup_macos.sh: 3.5 섹션 추가 - scripts/verify_setup.ps1: 2.5 Live junction 3축 검증 (실측 통과 확인) - .claude/settings.json: SessionStart hook 체인 최우선 삽입 - .gitignore: .live/* 제외 + README 예외 + 백업 제외 - 공유/조직공지/2026-04-18_C34_신설_worktree_격리_근원해결.md 신설 - 공유/조직공지/폐기_규칙_아카이브.md §13 P25 승격 6필드 기록 - memory/org/feedback_worktree_isolation.md + feedback_agent_path_boundary.md 신설 + MEMORY.md 인덱스 대화로그·PD 지시 로그 #39 완료 갱신 포함. Agent 경계 넘기 2차 사건 (개발팀장 Agent 절대 경로 하드코딩으로 레포 루트 유출) stash 이관 복구 + C34-11 Agent 경계 보호 조항 신설. 조직 전원 세션 1회 재시작 필요 — SessionStart hook이 live_junction_ensure.sh 자동 실행하여 junction 설치. verify_setup.ps1 통과 확인 후 작업 재개. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 12:59:41 +00:00
---
name: Agent 호출 시 절대 경로 하드코딩 금지 — worktree 경계 보호
description: 2026-04-18 worktree 격리 2차 사건. Agent가 절대 경로로 Write 호출 시 레포 루트로 산출물 유출. stash 이관 복구 절차 + 재발 방지 체크리스트
type: feedback
originSessionId: 0c3fc143-5c2a-4165-afb1-7becf72eaa0a
---
# Agent 호출 시 절대 경로 하드코딩 금지 — worktree 경계 보호
## 실증 (2026-04-18, worktree 격리 2차 사건)
PM(tender-liskov worktree)이 개발팀장 Agent를 호출. Agent가 산출물 경로에 **절대 경로 `E:\NerdNavisAi\공유\소통\개발팀→PM\...`**를 사용하여 Write. 이로 인해 파일이 **레포 루트(main 브랜치 체크아웃)에 기록**되고 본 워크트리는 해당 파일을 볼 수 없음.
Agent 응답에 "476줄 산출물 작성 완료"라 보고되었으나 PM 세션의 `공유/소통/개발팀→PM/`에는 없었음. `git -C "E:/NerdNavisAi" status` 확인으로 레포 루트에 uncommitted 변경 3건(PD 지시 로그·대화로그·보고서) 발견.
## 근본 원인
- Agent는 실행 환경의 `cwd`를 계승하나, Write 도구에 **절대 경로**를 전달하면 cwd와 무관하게 해당 경로에 기록
- `E:\NerdNavisAi`는 레포 루트(main 브랜치 체크아웃) — worktree가 아닌 독립 작업 디렉토리
- Agent가 worktree 경계를 인지하지 못하고 "레포 절대 경로 = 안전한 표준"으로 처리
- PM은 Agent 응답만 보고 산출물 실체 위치 미확인 → worktree 경계 이탈을 검증 없이 신뢰 (C23 관점에서도 문제)
## 복구 방법 (2026-04-18 실증)
1. `git -C <레포루트> stash push -u -- <영향 경로>` — Agent가 쓴 변경분을 stash로 수집
2. 본 worktree에서 `git stash pop` — 동일 base라면 conflict 없이 적용
3. `git -C <레포루트> status` 재확인 (clean 여부)
4. 본 worktree에서 변경분 검증 후 commit
## 재발 방지 의무 (세션 리더)
1. **Agent 호출 프롬프트에 경로 규약 명시**: "산출물 경로는 `$(git rev-parse --show-toplevel)` 기준 또는 상대 경로로 작성. 절대 경로 `E:\NerdNavisAi\...` 등 하드코딩 금지."
2. **Agent 응답 수령 직후 2축 검증**: 본 worktree `git status` + `git -C <레포루트> status` 병행 확인
3. **경계 이탈 발견 시**: stash 이관 복구 즉시 수행, PD님께 자진 보고 (C3·C5)
4. **감사 확장**: pm-auditor·dev-auditor 체크리스트에 "Agent 경계 이탈 확인" 항목 추가 안건
## 연관
- **C34-11** (Agent 경계 보호 조항)
- **C23** (허위 보고·역할 연기 금지)
- **feedback_worktree_isolation.md** (1차 사건)
- **조직공지**: `2026-04-18_C34_신설_worktree_격리_근원해결.md`
## 교훈
**Agent 위임은 PM 책임 해제가 아니다.** Agent 응답의 "완료" 선언을 실체 파일로 검증하지 않으면 worktree 격리 같은 숨겨진 경계로 인한 누락을 놓칠 수 있다. 특히 "절대 경로의 안전성" 직관은 worktree 체제에서 무력화됨 — Agent가 의도치 않게 다른 worktree/레포 루트에 쓸 수 있음.