diff --git a/scripts/auditor_gate.sh b/scripts/auditor_gate.sh index e5f12f1..620ee5e 100644 --- a/scripts/auditor_gate.sh +++ b/scripts/auditor_gate.sh @@ -35,14 +35,17 @@ fi # (BYPASS는 기존 PostToolUse 경고 메커니즘 전용, 본 차단은 무조건 체크) # 5. 활성 매니페스트 존재 확인 (2026-05-06 (나) 채택 — main 워크트리 .claude/manifest/ 일괄 SOT) +# 2026-05-07 결함 1 패치: 다중 매니페스트 union 처리 (단일 매니페스트 의존 폐기) GCD=$(git rev-parse --git-common-dir 2>/dev/null) MAIN_ROOT=$(cd "$GCD/.." 2>/dev/null && pwd) [ -z "$MAIN_ROOT" ] && MAIN_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) MANIFEST_DIR="$MAIN_ROOT/.claude/manifest/active" mkdir -p "$MANIFEST_DIR" 2>/dev/null -ACTIVE=$(ls -t "$MANIFEST_DIR"/*.md 2>/dev/null | head -1) -if [ -z "$ACTIVE" ]; then +# 활성 매니페스트 목록 (전수) +MANIFEST_COUNT=$(ls "$MANIFEST_DIR"/*.md 2>/dev/null | wc -l) + +if [ "$MANIFEST_COUNT" -eq 0 ]; then cat >&2 </dev/null) if [ -n "$REF_ROOT" ] && [ -n "$FILE_PATH_NORM" ]; then - REL=$(realpath --relative-to="$REF_ROOT" "$FILE_PATH_NORM" 2>/dev/null || echo "$FILE_PATH_NORM") + # 2026-05-07 결함 2 패치: -m (canonicalize-missing) 추가 — 신규 파일도 정상 상대 경로 추출 + REL=$(realpath -m --relative-to="$REF_ROOT" "$FILE_PATH_NORM" 2>/dev/null || echo "$FILE_PATH_NORM") else REL="$FILE_PATH_NORM" fi # target_files 목록에서 검색 (YAML frontmatter " - " 형태) - if ! grep -qF " - $REL" "$ACTIVE" 2>/dev/null; then + # 2026-05-07 결함 1 패치: 모든 활성 매니페스트 union 검색 + MATCHED_MANIFEST="" + for MANIFEST_FILE in "$MANIFEST_DIR"/*.md; do + [ -f "$MANIFEST_FILE" ] || continue + if grep -qF " - $REL" "$MANIFEST_FILE" 2>/dev/null; then + MATCHED_MANIFEST="$MANIFEST_FILE" + break + fi + done + + if [ -z "$MATCHED_MANIFEST" ]; then + # 활성 매니페스트 목록 출력 (사용자 진단 보조) + MANIFEST_LIST=$(ls "$MANIFEST_DIR"/*.md 2>/dev/null | xargs -n1 basename 2>/dev/null | sed 's/^/ - /') cat >&2 </.claude/manifest/` (.gitignore 처리, PC·worktree 휘발성). **worktree 격리 회피 3축**: ① `git rev-parse --git-common-dir` 기반 main 루트 추출 ② `auditor_gate.sh` line 64 `realpath` 기준을 `MAIN_ROOT`로 변경 ③ `cygpath -u` Windows 경로 정규화. **변경 7개 파일** (main 영역) — `scripts/auditor_gate.sh`·`manifest_register.sh`·`manifest_archive.sh`·`.gitignore`·`SKILL.md` line 1247·`개발팀_PD_지시_로그.md` BT9·`공유/대화로그/조직운영/2026-05-06.md` 신설. **본 worktree(`stupefied-spence-727cd7`) 영역 4종 동기화** — main 영역과 동일 변경 적용 (worktree hook이 자체 working copy 사용하므로). **잔존 매니페스트 6건 삭제** PowerShell `Remove-Item -Recurse -Force` (active 1·archived 5, audit_logs·unity_sync 영역 보존). **pm-auditor 사전 감사** Critical 0·Major 3 (gitignore·잔존 마이그레이션·audit_logs 보존) 전수 반영. 신 매니페스트 `2026-05-06_133000_manifest_sot` 7개 target_files 등록 + auditor_gate 시뮬레이션 EXIT=0 통과 검증. | — | PM 수행 대기: 기획팀 SKILL.md 개정 + pm-auditor 감사 → commit + push 후 Phase 완료 처리 → 완료 아카이브 이동 | | BT5-Dev | 2026-04-23 | **EerieVillage Phase 3 파일럿 (개발)** — ①Unity git 초기화·자동 sync ②캐릭터 교체·이동·공격·i-frame ③템플릿 분석 ④**PlayerTestGirl 아틀라스 최종 집행** (2026-04-24 추가) | **진행중** | [1·3단계 완료] `9f689c1` 원격 push · `scripts/unity_auto_sync.sh` · `01~03_*.md` 분석 3종 [2단계 v0.2 완료] Player·Enemy prefab 편집 + 8 EditMode tests [**3단계(PlayerTestGirl 아틀라스) 완료 2026-04-24 0003**] PD `PlayerTestGirl.png` 직접 저장 (1536×1024, 4x2 8 sprite, walk 4+attack 4 프레임 신규 캐릭터) → B안 채택 (PlayerIdle·PlayerRun m_PPtrCurves 교체 + PlayerAttack.anim 신설). **meta 재생성** (9→8 sprite, 384×512 grid, guid 유지) · **Idle·Run.anim 전면 재작성** (4 sprite loop) · **PlayerAttack.anim + meta 신설** (guid `c8d7e5a1...`) · **Player.controller 확장** (attack Trigger·Player-Attack State·AnyState/Exit Transition 3종) · **Player.prefab m_Sprite 교체** · **EditMode 테스트 +2** (총 10). C6-1 백업 5종 `bak_20260424_0003`. PD 수동 1건 (Play 검증). `feedback_pm_image_verification_skip.md` 신설 (`tier: constitutional`) + `feedback_pm_dev_task_delegation_failure.md` 3회차 append. 재발 방지 5종 체크리스트 전부 이행 (시각 확인·전수 ls·기존 meta 재활용·guid 충돌 검증·백업 5종) | `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md` · `프로젝트/EerieVillage/개발/04_BT5-Dev_2단계_구현보고.md` v0.2 · Unity `Assets/Character/{Sprites/PlayerTestGirl.png.meta, Animations/{PlayerIdle,PlayerRun,PlayerAttack,Player.controller}}` · `Assets/Prefabs/Player.prefab` · `Assets/Tests/Editor/PlayerAttackTests.cs` · `memory/org/feedback_pm_image_verification_skip.md` (신설) · `memory/org/feedback_pm_dev_task_delegation_failure.md` (3회차) · `공유/대화로그/EerieVillage/2026-04-23.md` `[캐릭터리소스교체최종]` 엔트리 | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → push → Unity 프로젝트는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(10 tests green + walk/attack 애니메이션 재생) 수령 → 완료 아카이브 이동 | --- @@ -53,3 +52,4 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**. | BT2 | 2026-04-21 | BT 조직 전환 8개 지시: ①시행착오 노하우 조직 자산화 (전 에이전트 동원) ②너드나비스→BurningTimes ③수상한잡화점 삭제+교훈 보존 ④BT.Framework 이름 갱신 ⑤영문화 ⑥Unity 경로 `E:/NerdNavis/EerieVillage` (하드코딩 금지) ⑦Discord 웹훅 등록 ⑧새 프로젝트 "기묘한 고을: 조선퇴마뎐" (EerieVillage, Unity 6000.3.13f1 LTS, 2D PlatformerMicrogame) | **완료** | [완료: 2026-04-21 02:10 · commit: `5d5b1dd`→`8ff5a1f` · 참조: `공유/대화로그/조직운영/2026-04-21.md` · 시행착오 아카이브 14종 `공유/조직자산/시행착오_아카이브/` · `프로젝트/EerieVillage/` · `paths.local.json` (gitignore) · SKILL.md P17 폐기 + P29 EerieVillage 재작성 · `공유/조직공지/2026-04-21_BT_조직_출범_인계서.md`] 8개 지시 전수 집행 완료 | — | EerieVillage 착수 안건 7종은 Phase 3로 분리 (PD 결정 6) | | BT3 | 2026-04-21 | **Unity MCP 도입 셋업** — BT 조직은 A안(gitignore + setup 자동 clone)으로 관리. Claude Desktop 클라이언트 연동 | **완료** | [완료: 2026-04-22 · commit: `aa61028`→`6550dc7`→(본 세션 후속 commit) · 참조: `공유/대화로그/조직운영/2026-04-21.md` Unity MCP 섹션 · `공유/개발팀_자산/Unity_MCP_연동_가이드_v1.md` · `공유/개발팀_자산/claude_desktop_config.example.json`] **연동 완전 성공 실증** — `mcp__unityMCP__read_console` 호출로 Unity Console 5건 실수신 확인. uvx `mcpforunityserver==9.6.6` stdio 방식, Unity Editor MCP for Unity v9.6.6 Package bridge 정상. PD 수동 집행 5종(Claude Desktop config merge·완전 재시작·Unity Package 설치·Transport stdio 전환·Configure)·PM 집행 7종 (paths 정정·gitignore·setup 자동 clone·config 템플릿·가이드 v1·uv 0.11.7 winget·ToolSearch·Agent 권한 추가) 모두 완결 | — | Phase 3 EerieVillage 착수 시 Unity MCP 편집 표준 워크플로우 v2 조직공지 승격 집행. 트러블슈팅 경위(HTTP 미지원·좀비 인스턴스·pywin32 캐시 락·Transport 스위칭)는 `공유/개발팀_자산/Unity_MCP_연동_가이드_v1.md` §트러블슈팅 섹션에 영구 아카이브 | | BT4 | 2026-04-23 | 세션 시작 교훈 환기 체계 **6계층 확장** (1·2·3A·4E·5안 일괄 승인) — 토큰 효율·응답 속도·맥락 복원 보장. 계층 0 고정 주입(`tier: constitutional` 9종·활성 PD 지시·기각안·장기 SOT·project_context_조직운영 20개)·계층 1~4 공백일수 자동 확장·계층 3 전수 탐색·계층 5 내용축 트리거. 감사관 E안 자동 윈도우(1일 최소·30일 상한·`--extend=N`). 게임 명칭 영문 "EerieVillage: Joseon Exorcist" 전파. **pm-auditor 지속 모니터링 의무** — archive 첫 엔트리 이동 시점 자동 보고서 | **완료** | [완료: 2026-04-23 · commit: `d35b0cc`(Phase1 구조물)→`2306435`(Phase2 스크립트)→`cbc1b19`(Phase3 규칙·에이전트)→(Phase4 공지·완료 처리 commit) · 참조: `공유/대화로그/조직운영/2026-04-23.md` · `공유/조직공지/2026-04-23_세션시작_교훈환기_6계층_확장.md` · `memory/org/feedback_session_restore_monitoring.md` · `memory/org/project_context_조직운영.md`] 교차검증 Critical 2·Major 6 반영 v3 전부 집행 완료. 매니페스트 4단계(6계층확장·Phase2_scripts·Phase3_rules·Phase4_공지) 자동 archived 이동. SKILL.md 3중 전파 C10-6·C37-7 준수 | — | 운영 데이터 기반 개선 사이클 대기 — pm-auditor가 archive 첫 엔트리 이동 감지 시 자동 보고서 생성 + PD 개선 보고 | +| BT9 | 2026-04-24 | NerdNavisAi 과거 조직 룰 분석·BT 프로세스 개선 (Phase 1~4 완료) | **완료** | [완료: 2026-05-06 22:15 · commit: `8519cda` · 참조: `공유/대화로그/조직운영/2026-05-06.md` 엔트리 1] Phase 1 Explore 분석 + Phase 2 scripts 2종 이식 + Phase 3 Hook 2종 신설(fact_first_check·identity_guard) + Phase 4 매니페스트 SOT (나) 채택. SKILL.md 개정 + pm-auditor 감사 잔여는 BT10 PoC 영역에 흡수 | — | BT10 PoC 결과 수령 시 통합 처리 |