fix(setup): 경로 동적 추정·UTF-8 BOM 처리 + 메모리 노하우 2건 적재
setup_windows.ps1: - Unity·Framework default 값 하드코딩 제거. NerdNavisRoot 드라이브 기반 동적 추정 (예: E:\NerdNavisAi → E:\NerdNavis\*). -UnityRoot/-FrameworkRoot 인자 명시 시 그 값 우선. - paths.local.json 출력 인코딩을 [System.IO.File]::WriteAllText + UTF-8 no BOM으로 명시. 한국어 깨짐 방지. - 스크립트 파일 자체에 UTF-8 BOM 추가. PowerShell 5.1이 cp949로 오인하던 문제 해결. - 미존재 경로 표기로 사용자가 paths.local.json 수동 수정 필요성 즉시 인지. memory/org/: - feedback_setup_verification.md: 셋팅 점검 시 파일 존재만이 아니라 reparse point·실파일·실행 결과까지 검증할 것 (총괄PM 셋팅 점검 누락 사건 교훈). - feedback_insight_capture.md: 인사이트·노하우 발견 즉시 메모리 기록 원칙 (PD님 직접 지시). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
42ecd19d62
commit
0009ea015b
|
|
@ -3,3 +3,5 @@
|
|||
- [승인 반복 절대 금지](feedback_approval_process.md) — Bash/Edit/Write 포괄 허용, 개별 승인 반복 금지
|
||||
- [세션 재시작 사전 고지](feedback_session_restart.md) — 다음 세션부터 적용되는 변경 시 재시작 필요를 반드시 미리 안내
|
||||
- [PM 공유는 코어룰의 기본](feedback_pm_share_principle.md) — 부서의 모든 작업은 PD 직접 지시 여부와 무관하게 무조건 PM 공유. 공유 의무 약화 옵션 제시 절대 금지
|
||||
- [셋팅 점검은 동작·실체까지 검증](feedback_setup_verification.md) — 파일 존재만이 아니라 실파일·junction reparse point·setup 실행 결과까지 확인
|
||||
- [인사이트 즉시 메모리 기록 원칙](feedback_insight_capture.md) — 노하우·교훈·재발방지 룰은 발견 즉시 memory/org/ 에 기록하여 조직 자산으로 축적
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
name: 인사이트 즉시 메모리 기록 원칙
|
||||
description: 작업 중 얻은 노하우·교훈·개선 인사이트는 발견 즉시 memory/org/ 에 기록하여 조직 노하우로 축적
|
||||
type: feedback
|
||||
---
|
||||
|
||||
작업 중 발견한 노하우·교훈·재발 방지 룰·프로세스 개선 인사이트는 **그 자리에서 즉시 메모리에 기록**한다. "다음에 정리"는 곧 휘발이다.
|
||||
|
||||
**Why:** PD님이 2026-04-15 총괄PM 셋팅 점검 보고에서 "본 셋팅 건 관련 메모리 학습 제안"을 보고 "아주 좋은 자세"라 명시 칭찬하시며 "앞으로도 이렇게 인사이트를 얻을 때마다 반드시 기록을 통해 노하우를 축적하도록 해"라고 직접 지시. 조직 노하우 축적은 너드나비스 운영의 핵심 자산임.
|
||||
|
||||
**How to apply:**
|
||||
- 작업 중 다음 신호가 보이면 즉시 메모리 기록 검토:
|
||||
- 같은 실수를 반복할 위험이 있는 교훈 (재발 방지 룰)
|
||||
- 외부 도구·환경의 비자명한 동작 패턴 (Claude Code 해시 폴더 naming, PowerShell 인코딩 quirk 등)
|
||||
- 부서·역할·프로세스의 고유 운영 노하우
|
||||
- PD님 칭찬·확정 발언으로 검증된 비명시적 판단 기준
|
||||
- 기록 형식: feedback/project/reference 중 적합한 type 선택. 본문에 **Why**(근거·계기) + **How to apply**(적용 시점) 필수.
|
||||
- PD님께 "메모리 기록하겠습니다"라고 사전 보고 후 진행 — 메모리는 영구 노하우이므로 PD님 인지·암묵적 합의하에 적재.
|
||||
- 충돌·중복 메모리는 통합·갱신 (이중 기록 금지).
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
name: 셋팅 점검은 동작·실체까지 검증
|
||||
description: 파일 존재만으로 "셋팅 OK" 판정하지 말고 paths.local.json 실파일·junction reparse point 실체·setup 스크립트 실행 이력까지 검증할 것
|
||||
type: feedback
|
||||
---
|
||||
|
||||
셋팅·환경 점검 보고 시 **파일/디렉토리 존재 여부**만으로 "정상"이라 판정하면 안 된다. 실제 동작에 필요한 다음 3축을 모두 확인할 것:
|
||||
|
||||
1. **로컬 환경 파일 실파일 존재** — template만 있고 실파일이 없으면 변수 참조 해석 불가. `paths.local.json`·`settings.local.json` 등.
|
||||
2. **OS 레벨 연결 실체** — junction/symlink가 단순 폴더 존재가 아니라 reparse point 속성을 갖고 있고 Target이 의도한 경로를 가리키는지. PowerShell `(Get-Item -Force).Attributes` / `fsutil reparsepoint query` 로 검증.
|
||||
3. **셋업 스크립트 실행 이력 + 결과 메시지** — `setup_windows.ps1` 같은 init 스크립트가 실행되었는지, 실행됐다면 warning 없이 의도 작업을 완료했는지(특히 "Junction 생성:" 로그 라인 확인).
|
||||
|
||||
**Why:** 2026-04-15 총괄PM 셋팅 점검 시 Explore 서브에이전트로 파일 존재만 체크해 "정상" 보고했으나, PD님이 개발실 세션의 셋팅 미완 보고를 받고 재점검 지시. 실제로는 paths.local.json 실파일 미생성 + memory junction 미연결 + setup 스크립트 필터 버그(매칭 실패)의 3중 미완 상태였음. PD님께 잘못된 안심을 드린 것은 C5(정직성)·C3(이슈 은폐 금지) 위반에 준함.
|
||||
|
||||
**How to apply:**
|
||||
- 환경 셋팅·신규 PC 셋업·세션 재시작 후 점검 시 본 3축 검증을 의무 적용.
|
||||
- 서브에이전트 위임 시 "파일 존재" 대신 "동작 가능 여부 + 실행 검증"을 명시적으로 지시.
|
||||
- 의심되면 setup 스크립트를 실제 실행해 결과 메시지를 직접 확인할 것.
|
||||
|
|
@ -1,20 +1,28 @@
|
|||
# 너드나비스 조직 레포 - Windows PC 셋업
|
||||
# 너드나비스 조직 레포 - Windows PC 셋업
|
||||
# 사용: PowerShell에서 실행
|
||||
# .\setup_windows.ps1
|
||||
# 또는 인자로 지정: .\setup_windows.ps1 -NerdNavisRoot "C:\...\너드나비스"
|
||||
|
||||
param(
|
||||
[string]$NerdNavisRoot = $(Resolve-Path (Join-Path $PSScriptRoot "..")).Path,
|
||||
[string]$UnityRoot = "D:\NerdNavis\FilGoodBandits\DeckBuilding",
|
||||
[string]$FrameworkRoot = "D:\NerdNavis\NerdNavis.Framework",
|
||||
[string]$UnityRoot = "",
|
||||
[string]$FrameworkRoot = "",
|
||||
[string]$GiteaUrl = "https://burning.i234.me",
|
||||
[string]$GiteaSsh = "ssh://git@burning.i234.me:30030"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# 경로 추정: NerdNavisRoot 드라이브 기반 동적 default (PC별 하드코딩 회피)
|
||||
# 사용자가 -UnityRoot/-FrameworkRoot 명시하면 그 값 우선, 미명시면 NerdNavisRoot 드라이브의 \NerdNavis\* 패턴으로 추정
|
||||
$rootDriveLetter = (Split-Path $NerdNavisRoot -Qualifier).TrimEnd(':')
|
||||
if (-not $UnityRoot) { $UnityRoot = "${rootDriveLetter}:\NerdNavis\FilGoodBandits\DeckBuilding" }
|
||||
if (-not $FrameworkRoot) { $FrameworkRoot = "${rootDriveLetter}:\NerdNavis\NerdNavis.Framework" }
|
||||
|
||||
Write-Host "=== 너드나비스 조직 레포 셋업 ==="
|
||||
Write-Host "NerdNavisRoot: $NerdNavisRoot"
|
||||
Write-Host "UnityRoot: $UnityRoot $(if (-not (Test-Path $UnityRoot)) { '(경로 미존재 - paths.local.json 생성 후 수동 수정 권장)' })"
|
||||
Write-Host "FrameworkRoot: $FrameworkRoot $(if (-not (Test-Path $FrameworkRoot)) { '(경로 미존재 - paths.local.json 생성 후 수동 수정 권장)' })"
|
||||
|
||||
# 1. Git 확인
|
||||
git --version | Out-Null
|
||||
|
|
@ -33,8 +41,10 @@ if (-not (Test-Path $pathsFile)) {
|
|||
GITEA_SSH = $GiteaSsh
|
||||
HOSTNAME = $env:COMPUTERNAME
|
||||
}
|
||||
$paths | ConvertTo-Json -Depth 5 | Out-File -FilePath $pathsFile -Encoding utf8
|
||||
Write-Host "paths.local.json 작성 완료: $pathsFile"
|
||||
# UTF-8 BOM 없음으로 명시 출력 (PowerShell 5.1의 기본 -Encoding utf8은 BOM 포함 + 한국어 깨짐 이슈 회피)
|
||||
$jsonText = $paths | ConvertTo-Json -Depth 5
|
||||
[System.IO.File]::WriteAllText($pathsFile, $jsonText, [System.Text.UTF8Encoding]::new($false))
|
||||
Write-Host "paths.local.json 작성 완료 (UTF-8 no BOM): $pathsFile"
|
||||
} else {
|
||||
Write-Host "paths.local.json 이미 존재. 유지."
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue