diff --git a/.claude/settings.json b/.claude/settings.json index 6b911c7..4c5c7ff 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -105,6 +105,10 @@ "type": "command", "command": "bash scripts/sync_audit_repo_to_central.sh 2>/dev/null || true" }, + { + "type": "command", + "command": "bash scripts/unity_project_sync.sh 2>/dev/null || true" + }, { "type": "command", "command": "bash scripts/inbox_scan.sh 2>/dev/null || true" diff --git a/.claude/skills/너드나비스-코어룰/SKILL.md b/.claude/skills/너드나비스-코어룰/SKILL.md index bc1fb99..1d19e96 100644 --- a/.claude/skills/너드나비스-코어룰/SKILL.md +++ b/.claude/skills/너드나비스-코어룰/SKILL.md @@ -1031,7 +1031,7 @@ C20-7 자기검증 5문항에 다음 항목 추가: ### C30-1. 점검 대상 프로젝트 (예시, 비한정) - 조직 레포(`NerdNavisAi`) — SessionStart hook으로 자동 점검 중 -- Unity 프로젝트(`${UNITY_PROJECT_ROOT}`) — 수동 점검 필요 +- Unity 프로젝트(`${UNITY_PROJECT_ROOT}`) — **외부 저장소**(예: `NerdNavis/DeckBuilding.git`). PC별 클론 경로는 `paths.local.json`에 등록. **SessionStart hook `scripts/unity_project_sync.sh`로 자동 pull 이행** (2026-04-20 PD 옵션 A 승인). git 레포 아닌 경우 C34-12 Degraded 운영으로 경고만 출력 - NerdNavis.Framework 코어 레포 — 수동 점검 필요 - 차기 프로젝트 레포 — 추가 시 본 규칙 적용 - 기타 git 기반 모든 프로젝트 diff --git a/memory/org/MEMORY.md b/memory/org/MEMORY.md index be66059..d3e6445 100644 --- a/memory/org/MEMORY.md +++ b/memory/org/MEMORY.md @@ -41,3 +41,4 @@ - [auditor_call_log RESOLVED word boundary 결함](feedback_auditor_resolved_substring_bug.md) — 2026-04-20 #48 A 집행. grep -q "RESOLVED"가 "UN**RESOLVED**" 부분문자열 매칭되어 append 영구 실패. grep -qw 수정 + 본 PC UNRESOLVED 수동 해소로 즉시 검증. 모든 PC 공통 구조 결함 - [종결된 사유를 현재 HOLD 사유처럼 재프레이밍 금지 — 현 상태 왜곡 (5회차 판정 확정)](feedback_resolved_cause_as_current_hold.md) — 2026-04-20 4·5회차 + **PD님 판정 확정 (2026-04-20): 현 PM 유지 · C31-E 확장 승인 · 6회차 이관 선제 동의**. 4회차: #38 답변 중 해결 완료 Python 시뮬·Unity MCP 전환을 현재 HOLD 사유로 서술. 5회차: "세션 공유 후 남은 업무" 재요청에 **완료·push된 #52-B·#52-B2를 "대기"로 유지** (실측 응집성 실패 축). SKILL.md C31-1 E 그룹 "실측 응집성 축" 체크 문항 헌법급 편입. **재발 시마다 PM 반성 + 구조 개선안 자진 제시 + 체크리스트 확장 안건화 + 강조 선언 4종 의무 부과** (PD님 직접 지시). 6회차 재발 시 PM 역할 재검토는 PD님 명시 결정 영역 이관 - [PM 실측 가능 범위 자의적 축소 — 환경·능력 과소평가 금지](feedback_pm_capability_underestimation.md) — 2026-04-20 5회차 PM 의무 4종 후속. PM이 `mcp__unity-mcp__*` deferred tools를 실측 없이 "환경 부재"로 반복 단언하여 선행 조건 2를 "스켈레톤만"으로 축소. PD님 "유니티 MCP 연결 환경은 이미 확보되어 있어" 지적으로 정정. **ToolSearch + 간이 실측 의무화** + 환경·능력 주장 전 실측 근거 첨부 필수. C23 "추정의 사실화" 특수 유형. 과거 시점 설계 문서 "미확인 고지"를 현 시점 상태로 재적용 금지 +- [git 레포 점검 범위 축소 — 상위 디렉토리만 확인 후 "레포 아님" 단언](feedback_git_scope_shortcut.md) — 2026-04-20 #57 자진 고지 오류 양축. 개발팀장이 `D:\NerdNavis\FilGoodBandits` 상위만 확인 → "C30 점검 불가" 단언. 실제로는 하위 `DeckBuilding`이 git 레포 (remote `NerdNavis/DeckBuilding.git`). PM도 Agent 응답을 추가 재실측 없이 수용 (C27 변형 위반). **해결**: Unity 프로젝트 SessionStart 자동 pull 구축(옵션 A PD 승인) · `.git` 존재 검사 2~3단계 하위까지 · Agent 환경 판정 주장은 PM 재실측 의무. C30-1 조항 "수동 점검" → "자동 이행"으로 정비 diff --git a/memory/org/feedback_git_scope_shortcut.md b/memory/org/feedback_git_scope_shortcut.md new file mode 100644 index 0000000..ad1b138 --- /dev/null +++ b/memory/org/feedback_git_scope_shortcut.md @@ -0,0 +1,82 @@ +--- +name: git 레포 점검 범위 축소 — 상위 디렉토리만 확인 후 "레포 아님" 단언 +description: 2026-04-20 #57 자진 고지 오류. 개발팀장이 `D:\NerdNavis\FilGoodBandits`만 확인하고 git 레포 아님으로 단언 → 실제 하위 `DeckBuilding`이 git 레포였음. PM도 Agent 응답을 추가 검증 없이 수용 (C27 변형 위반). 양축 재발 방지 +type: feedback +--- + +# git 레포 점검 범위 축소 — 상위 디렉토리만 확인 후 "레포 아님" 단언 + +## 사건 개요 + +- **발생일**: 2026-04-20 +- **맥락**: PD 지시 #57 A 집행 중 C30(git 동기화 점검 의무) 준수 시 개발팀장 Agent가 Unity 프로젝트 경로 점검 +- **오류 경로**: `D:\NerdNavis\FilGoodBandits` 상위 디렉토리만 확인 +- **실제 경로**: `D:\NerdNavis\FilGoodBandits\DeckBuilding\.git` 실존 (remote: `https://burning.i234.me/NerdNavis/DeckBuilding.git`) +- **결과**: 개발팀장 #57 자진 고지 "C30 점검 불가"로 보고 → PM 대화로그·PD 지시 로그 등재 → 나중 PM 실측으로 오류 확인 + +## 양축 기록 + +### 개발팀장 축 — git 레포 점검 범위 축소 + +**위반 원칙**: +- **C23** 추정의 사실화 (하위 미점검 상태에서 "레포 아님" 단언) +- **C5** 정직성 (실측 근거 불완전) +- **C2-1** 근본 원인 재정의 선행 (점검 "가능·불가능" 판정 전 경로 구조 재검토 누락) + +**근본 원인**: +- **Unity 프로젝트 경로 관성 해석**: Unity 프로젝트는 `{루트}/Assets/`·`{루트}/.git` 형태이나, 조직에 따라 상위 디렉토리(예: `FilGoodBandits`)에 `.git`이 없고 하위 `DeckBuilding`이 레포 루트인 구조 존재 +- **점검 경로 미실측**: `git -C <경로> rev-parse --is-inside-work-tree` 또는 `.git` 디렉토리 존재 검사를 **각 후보 경로 반복**하지 않음 +- **하위 디렉토리 전수 스캔 습관 부재**: "상위 = 루트" 가정 + +**재발 방지 체크**: +1. "레포 아님" 단언 전 **후보 경로 2~3단계 하위까지 `.git` 존재 검사** +2. `git -C <경로> remote -v` 또는 `rev-parse` 실측 근거 첨부 의무 +3. Unity MCP 편집 표준 워크플로우 v1 0단계에 `$UNITY_PROJECT_ROOT` 경로의 `.git` 확인 명시 + +### PM 축 — Agent 응답 수용 시 추가 검증 누락 (C27 변형 위반) + +**위반 원칙**: +- **C27** Agent 호출 완료 시 PM 로그 갱신 확인 (확장 해석: Agent 응답의 사실 주장도 PM 재검증 의무) +- **C5** 정직성 (개발팀장 자진 고지를 그대로 대화로그·PD 로그에 등재) + +**근본 원인**: +- **Agent 신뢰 과도**: 개발팀장 Agent의 "C30 점검 불가" 자진 고지가 **스스로 위반을 인정하는 형태**라 PM이 추가 의심 없이 수용 +- **PD 보고 시점 실측 미수행**: PM이 #57 완료 보고에 자진 고지 2건을 그대로 PD님께 전달 · PD님이 다시 활용하는 시점에서야 PM이 실측 수행 +- **C29-4 업무 완료 동기화 약화**: PM이 Agent 완료 결과를 **원본 경로 실측 없이** 조직 기록에 기입 + +**재발 방지 체크**: +1. Agent 응답 중 **"불가·부재·권한 없음·레포 아님" 단언**은 **PM이 직접 재실측** (tool_use 결과 이중 확인) +2. 개발팀 자진 고지 중 **환경·경로 판정**은 PM이 `bash` 또는 `ls`로 즉시 검증 +3. C31-B 체크리스트 확장 안건 고려: "Agent 응답의 환경 판정 사실 주장을 PM이 재실측했는가?" + +## 영향 범위 + +- **본 건**: 저위험 (실제로 git 레포 존재 + 파일 편집 성공 + 복구 경로 확보) +- **재발 시 고위험**: 레포 존재함에도 "레포 아님"으로 오판 → C30 점검 누락 → 구버전 상태 작업 → 충돌·회귀 +- **C30 규칙 체계 훼손**: "수동 점검 필요"로 표기된 대상이 사실 자동화 가능한데 방치 + +## 해결 (2026-04-20 집행) + +1. **본 feedback 신설** (양축 근본 원인 + 재발 방지 체크) +2. **Unity 프로젝트 SessionStart 자동 pull 구축** (옵션 A · PD 승인) — 양축 오류 구조적 차단 +3. **SKILL.md C30-1 조항 정비** — "Unity 프로젝트 — 수동 점검 필요" → "SessionStart hook 자동 이행" +4. **verify_setup.ps1 2.8 섹션** — UNITY_PROJECT_ROOT·git 레포·sync 스크립트 3축 검증 +5. **paths.local.json** 기반 PC별 경로 관리 (이미 `UNITY_PROJECT_ROOT` 변수 존재) + +## 연관 + +- **C2-1** 근본 원인 재정의 (환경 판정 시 재검토) +- **C5** 정직성 (실측 근거 불완전 단언 금지) +- **C23** 추정의 사실화 (Agent 자진 고지도 추정 포함 가능) +- **C27** Agent 결과 검증 의무 (변형 외연) +- **C30** git 동기화 점검 (본 건 직접 대상) +- `feedback_pm_capability_underestimation.md` (PM 실측 가능 범위 자의적 축소 — 개발팀장 축과 유사) +- `feedback_c6_backup_before_edit_violation.md` (Unity MCP 집행 시 표준 워크플로우) + +## 재발 기록 (향후 append) + +| 회차 | 일시 | 유형 | 경위 요지 | +|------|------|------|----------| +| 1 | 2026-04-20 | 개발팀장·PM 양축 | #57 A 집행 · FilGoodBandits 상위만 확인 · PM 재실측 누락 | + +(향후 재발 시 회차 추가) diff --git a/scripts/unity_project_sync.sh b/scripts/unity_project_sync.sh new file mode 100644 index 0000000..17d9a67 --- /dev/null +++ b/scripts/unity_project_sync.sh @@ -0,0 +1,87 @@ +#!/bin/bash +# Unity 프로젝트 SessionStart 자동 pull (2026-04-20 PD 옵션 A 승인) +# +# 역할: paths.local.json의 UNITY_PROJECT_ROOT 경로를 읽어 git pull --ff-only 수행 +# 근거: C30 git 동기화 점검 의무 · 외부 저장소 Unity 프로젝트 자동 이행 +# C34-12 Degraded 운영: 경로 미설정·레포 아님·pull 실패 시 경고만, 작업 차단 금지 + +set +e # Degraded 운영 — 실패 시 exit 0 보장 + +# Lock 파일 (race 방지) +LOCK_FILE="$HOME/.claude/.nerdnavis_unity_sync.lock" +LOCK_STALE_SECONDS=300 # 5분 이상 lock = stale + +# Stale lock cleanup (trap 이전) +if [ -f "$LOCK_FILE" ]; then + LOCK_MTIME=$(stat -c %Y "$LOCK_FILE" 2>/dev/null || stat -f %m "$LOCK_FILE" 2>/dev/null) + NOW=$(date +%s) + if [ -n "$LOCK_MTIME" ] && [ $((NOW - LOCK_MTIME)) -gt $LOCK_STALE_SECONDS ]; then + rm -f "$LOCK_FILE" 2>/dev/null + echo "ℹ️ [Unity sync] stale lock 제거 ($((NOW - LOCK_MTIME))s)" + else + echo "ℹ️ [Unity sync] 이미 진행 중 (lock 존재) — 스킵" + exit 0 + fi +fi + +# Lock 획득 + 종료 시 자동 제거 (trap) +touch "$LOCK_FILE" +trap 'rm -f "$LOCK_FILE" 2>/dev/null' EXIT + +# paths.local.json 존재 확인 +PATHS_FILE="paths.local.json" +if [ ! -f "$PATHS_FILE" ]; then + echo "⚠️ [Unity sync] paths.local.json 부재 — template 복사 후 UNITY_PROJECT_ROOT 설정 필요" + exit 0 +fi + +# UNITY_PROJECT_ROOT 추출 (jq 없으면 grep 대체) +if command -v jq >/dev/null 2>&1; then + UNITY_ROOT=$(jq -r '.UNITY_PROJECT_ROOT // empty' "$PATHS_FILE" 2>/dev/null) +else + UNITY_ROOT=$(grep -oP '"UNITY_PROJECT_ROOT"\s*:\s*"\K[^"]+' "$PATHS_FILE" 2>/dev/null) +fi + +if [ -z "$UNITY_ROOT" ] || [ "$UNITY_ROOT" = "null" ]; then + echo "⚠️ [Unity sync] UNITY_PROJECT_ROOT 미설정" + exit 0 +fi + +# 경로 실체 확인 +if [ ! -d "$UNITY_ROOT" ]; then + echo "⚠️ [Unity sync] 경로 부재: $UNITY_ROOT" + exit 0 +fi + +# git 레포 확인 +if [ ! -d "$UNITY_ROOT/.git" ]; then + echo "⚠️ [Unity sync] git 레포 아님: $UNITY_ROOT (C30 수동 점검 대상 외)" + exit 0 +fi + +# fetch + pull --ff-only +cd "$UNITY_ROOT" || { echo "⚠️ [Unity sync] cd 실패"; exit 0; } + +FETCH_OUT=$(git fetch origin 2>&1) +FETCH_EXIT=$? +if [ $FETCH_EXIT -ne 0 ]; then + echo "⚠️ [Unity sync] fetch 실패 (network·인증 확인 필요)" + echo "$FETCH_OUT" | head -3 + exit 0 +fi + +BEHIND=$(git rev-list --count HEAD..@{u} 2>/dev/null || echo "0") +if [ "$BEHIND" -gt 0 ]; then + PULL_OUT=$(git pull --ff-only 2>&1) + PULL_EXIT=$? + if [ $PULL_EXIT -eq 0 ]; then + echo "✅ [Unity sync] $BEHIND 커밋 pull 완료 — $UNITY_ROOT" + else + echo "⚠️ [Unity sync] pull 실패 (충돌·manual merge 필요): $UNITY_ROOT" + echo "$PULL_OUT" | head -3 + fi +else + echo "✅ [Unity sync] 최신 상태 — $UNITY_ROOT" +fi + +exit 0 diff --git a/scripts/verify_setup.ps1 b/scripts/verify_setup.ps1 index 36cca1b..a584c85 100644 --- a/scripts/verify_setup.ps1 +++ b/scripts/verify_setup.ps1 @@ -285,6 +285,37 @@ if (Test-Path $gi) { Check ".gitignore 존재" $false ".gitignore 파일 없음" } +# 2.8. Unity 프로젝트 자동 pull 설정 검증 (C30 자동 이행 · 2026-04-20 옵션 A PD 승인) +$pathsLocal = Join-Path $repoRoot "paths.local.json" +if (Test-Path $pathsLocal) { + try { + $pathsJson = Get-Content $pathsLocal -Raw | ConvertFrom-Json + $unityRoot = $pathsJson.UNITY_PROJECT_ROOT + if ($unityRoot) { + Check "Unity 프로젝트 경로 설정 (paths.local.json)" $true $unityRoot + if (Test-Path $unityRoot) { + $unityGit = Join-Path $unityRoot ".git" + if (Test-Path $unityGit) { + Check "Unity 프로젝트 git 레포 실체" $true $unityRoot + } else { + Warn "Unity 프로젝트 git 레포 아님" "$unityRoot — C30 수동 점검 대상 외 (C34-12 Degraded)" + } + } else { + Warn "Unity 프로젝트 경로 부재" "$unityRoot — paths.local.json UNITY_PROJECT_ROOT 재확인 필요" + } + } else { + Warn "UNITY_PROJECT_ROOT 미설정" "paths.local.json에 경로 지정 필요" + } + } catch { + Warn "paths.local.json 파싱 실패" $_.Exception.Message + } +} else { + Warn "paths.local.json 부재" "paths.local.json.template 복사 후 UNITY_PROJECT_ROOT 설정 필요 (C30 자동 pull 미작동)" +} + +$unitySyncScript = Join-Path $repoRoot "scripts\unity_project_sync.sh" +Check "scripts/unity_project_sync.sh 존재" (Test-Path $unitySyncScript) $unitySyncScript + # 5. settings.json (조직 공용 승인) 존재 $settings = Join-Path $repoRoot ".claude\settings.json" Check ".claude/settings.json (조직 공용 승인)" (Test-Path $settings) $settings diff --git a/공유/대화로그/조직운영/2026-04-20.md b/공유/대화로그/조직운영/2026-04-20.md index 4a8dc74..92eb0f1 100644 --- a/공유/대화로그/조직운영/2026-04-20.md +++ b/공유/대화로그/조직운영/2026-04-20.md @@ -1114,3 +1114,84 @@ PD님 2종 지시 수령 → PM이 개발팀장·기획팀장 Task Agent 병렬 - Agent 병렬 호출 완료 · 양 팀장 응답 수령 완료 - PM 통합 보고 발신 (본 엔트리) - PD 결정 3종 대기 + +--- + + +## [PM 집행 완료] 옵션 A — Unity 프로젝트 SessionStart 자동 pull 구축 + +### 요지 + +PD님 직접 승인 "옵션 A로 진행" 수용. Unity 프로젝트(외부 저장소 `NerdNavis/DeckBuilding.git`) SessionStart 시 자동 pull 메커니즘 구축. PC별 클론 경로 상이 수용 + C30 이행 자동화 + C30 예외 명시 불요로 전환. pm-auditor 사전 감사 Critical 2·Major 3 정정 후 집행. + +### 자진 고지 (C3·C5 양축) + +개발팀장 #57 자진 고지 "C30 점검 불가"는 **상위 디렉토리만 확인한 오류**. PM 실측으로 `D:\NerdNavis\FilGoodBandits\DeckBuilding\.git` 실존 확인 (remote: `https://burning.i234.me/NerdNavis/DeckBuilding.git`). PM도 Agent 응답 재실측 없이 수용 (C27 변형 위반). 양축 feedback 기록 필수. + +### 집행 (7종) + +1. **`scripts/unity_project_sync.sh` 신설** + - paths.local.json에서 `UNITY_PROJECT_ROOT` 읽기 (jq 또는 grep 대체) + - `git fetch origin && git pull --ff-only` 수행 + - Lock 파일 `$HOME/.claude/.nerdnavis_unity_sync.lock` + stale cleanup (5분 타임아웃) + trap 자동 제거 + - C34-12 Degraded 운영 주석 포함 (경로 미설정·레포 아님·pull 실패 시 exit 0) + +2. **`.claude/settings.json` SessionStart hook 편입** + - audit sync 다음에 `unity_project_sync.sh` 추가 + - 기존 hook 체인 유지 · 독립 실행 + +3. **`paths.local.json.template`** — `UNITY_PROJECT_ROOT` 기존 존재 확인 (추가 변경 불요) + +4. **`scripts/verify_setup.ps1` 2.8 섹션 신설** + - paths.local.json · UNITY_PROJECT_ROOT 설정 · 경로 실체 · git 레포 · sync 스크립트 존재 4축 검증 + +5. **SKILL.md C30-1 조항 정비** + - 기존: "Unity 프로젝트(`${UNITY_PROJECT_ROOT}`) — 수동 점검 필요" + - 변경: "Unity 프로젝트 — **외부 저장소**. PC별 클론 경로는 `paths.local.json`에 등록. **SessionStart hook `scripts/unity_project_sync.sh`로 자동 pull 이행** (2026-04-20 PD 옵션 A 승인). git 레포 아닌 경우 C34-12 Degraded 운영으로 경고만 출력" + - **외연 유지 · 축소·확장 없음** (C37-2) + +6. **`memory/org/feedback_git_scope_shortcut.md` 신설 (양축)** + - 개발팀장 축: 상위 디렉토리만 확인 후 "레포 아님" 단언 · 하위 스캔 의무 신설 + - PM 축: Agent 응답 "환경 판정" 사실 주장을 재실측 없이 수용 · C27 변형 위반 + - 재발 방지 체크 양축 분리 기록 + +7. **`memory/org/MEMORY.md` 인덱스** 및 **`.live/2026-04-20_옵션A_UnityPull구축.md` 더미** + +### pm-auditor 감사 결과 반영 + +- **Critical-1 (매니페스트 범위)**: 신규 매니페스트 `2026-04-20_옵션A_Unity자동pull` 등록 (target_files 9종) 해소 +- **Critical-2 (C30-1 본문 수정 범위)**: 운용 세칙 기입 + 외연 유지로 C36-2 경계선 통과 (축소·확장 없음) +- **Major-1 (C34-15 5문항)**: 본 엔트리·`.live` 더미에 5문항 체크 결과 명시 +- **Major-2 (feedback 양축)**: `feedback_git_scope_shortcut.md`에 개발팀장·PM 양축 기록 +- **Major-3 (Lock cleanup)**: sync.sh에 stale lock cleanup + trap 제거 로직 포함 +- **Minor·Improvement**: 주석·섹션 번호·예시 구체화 반영 + +### C34-15 5문항 체크 결과 + +1. **PC 단위 vs worktree 단위**: PC 단위 (paths.local.json 변수 PC별 상이) +2. **경계 안전성**: Unity 레포는 외부 저장소 · 조직 레포 worktree와 무관 +3. **중앙화 필요성**: 불필요 (외부 저장소 · PC별 독립) +4. **레포 루트 vs worktree 실행 차이**: paths.local.json이 .gitignore 대상이라 worktree 전파는 C34 기존 관리 +5. **Agent 경계 보호**: Unity MCP 편집은 외부 레포라 절대 경로 불가피 · Agent 프롬프트에 `UNITY_PROJECT_ROOT` 변수 사용 의무 (후속 개발팀장 Task에서 명시) + +### Unity MCP 편집 표준 워크플로우 v1 0단계 추가 (후속 개발팀장 Task) + +PD 승인 범위 "옵션 A + 체크리스트 보조"에 포함. 개발팀장 Task로 워크플로우 v1 0단계("작업 전 `unity_project_sync.sh` 실행 확인") 추가 집행 예정. 본 commit 이후 별도 Task 호출. + +### C30 예외 명시 — **불요로 전환** + +PD님 요구 "항상 Pull"은 C30 이행의 자동화이지 예외가 아님. 외부 저장소 조항 추가·자동 pull 구축으로 C30 의무 충족 → 예외 명시 불필요. PD 결정 3(C30 예외 보류)는 자연 종결. + +### 기각안 + +1. **UserPromptSubmit hook 주기 fetch 추가** — PD 승인 "SessionStart 자동 pull" 범위 밖. 별도 안건 상정 가능하나 본 집행 범위 아님. 기각 (C36 준수) +2. **Unity MCP 편집 표준 워크플로우 0단계 본 commit 동시 집행** — 개발팀장 영역 (`.claude/agents/` 참조 링크)이라 개발팀장 Task 위임. PM 재량 직접 편집은 Agent 경계 침범. 기각 +3. **개발팀장 #57 자진 고지 오류를 본 feedback에 미기록** — C3 은폐에 해당. 양축 기록 필수 (Major-2). 기각 +4. **paths.local.json.template 수정** — 기존 `UNITY_PROJECT_ROOT` 변수 이미 존재. 추가 수정 불요. 기각 (C37-1 중복 금지) + +### 상태 + +- 집행 7종 완료 · commit + push 후 조직 공유 완료 (C18) +- 개발팀장 Task 후속: Unity MCP 편집 표준 워크플로우 v1 0단계 추가 +- C30 예외 명시 자연 종결 (PD 결정 3 보류 → 불요 전환) +- 신규 PC 셋업 가이드: paths.local.json 복사 + UNITY_PROJECT_ROOT 지정 → verify_setup.ps1 통과 → 이후 자동 pull 작동