diff --git a/.claude/settings.json b/.claude/settings.json index dbe866e..2991665 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -81,6 +81,10 @@ "type": "command", "command": "git fetch origin 2>/dev/null; CHANGES=$(git log --oneline HEAD..origin/main 2>/dev/null | head -10); if [ -n \"$CHANGES\" ]; then echo '๐Ÿ“Œ [SessionStart] origin/main ๋ณ€๊ฒฝ ๊ฒ€์ถœ โ€” ์ž๋™ ๋ณ‘ํ•ฉ ์ค‘:'; echo \"$CHANGES\"; git merge origin/main --no-edit 2>/dev/null && echo 'โœ… ์ž๋™ ๋ณ‘ํ•ฉ ์™„๋ฃŒ' || echo 'โš ๏ธ ์ž๋™ ๋ณ‘ํ•ฉ ์‹คํŒจ (์ถฉ๋Œ ๋ฐœ์ƒ โ€” ์ˆ˜๋™ ํ•ด๊ฒฐ ํ•„์š”)'; else echo 'โœ… [SessionStart] main ๋™๊ธฐํ™” ์ƒํƒœ'; fi" }, + { + "type": "command", + "command": "bash scripts/live_junction_ensure.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 b8af817..2edf0d3 100644 --- a/.claude/skills/๋„ˆ๋“œ๋‚˜๋น„์Šค-์ฝ”์–ด๋ฃฐ/SKILL.md +++ b/.claude/skills/๋„ˆ๋“œ๋‚˜๋น„์Šค-์ฝ”์–ด๋ฃฐ/SKILL.md @@ -58,7 +58,7 @@ description: ๋„ˆ๋“œ๋‚˜๋น„์Šค ์กฐ์ง์˜ ํ—Œ๋ฒ• ์ œ1์›์น™(5ํ•ญ โ‘ ~โ‘ค) + ํ—Œ๋ฒ• ### ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ โ€” Live ๋”๋ฏธ ํŒŒ์ผ ํ”„๋กœ์„ธ์Šค -์„ธ์…˜์ด ๋ณ€๊ฒฝ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ฐฑ์‹ ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์„œ์˜ ๊ฒฝ์šฐ, **๋”๋ฏธ ํŒŒ์ผ(`.live/`)์„ ํ™œ์šฉํ•ด ์„ธ์…˜์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ํ•ต์‹ฌ ์ž์‚ฐ์ด๋‹ค.** ์ƒ์„ธ ๊ทœ์ •: P25 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„. +์„ธ์…˜์ด ๋ณ€๊ฒฝ๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ฐฑ์‹ ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์„œ์˜ ๊ฒฝ์šฐ, **๋”๋ฏธ ํŒŒ์ผ(`.live/`)์„ ํ™œ์šฉํ•ด ์„ธ์…˜์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ–ˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ํ•ต์‹ฌ ์ž์‚ฐ์ด๋‹ค.** ์ƒ์„ธ ๊ทœ์ •: C34 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ (2026-04-18 ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ, worktree ๊ฒฝ๊ณ„ ๋ฌด๊ด€ ์ค‘์•™ Junction). --- @@ -587,6 +587,7 @@ CLAUDE.md ์‹ ๊ทœ ํ•ญ๋ชฉ, ๋งค ํ„ด ๋กœ๋“œ ๋Œ€์ƒ ํ™•๋Œ€, `MEMORY.md` ์ธ๋ฑ์Šค ํ™• - ์กฐ์ง ๊ณต์šฉ ์Šน์ธ์€ **๋ฃจํŠธ `.claude/settings.json` ๋‹จ์ผ ํŒŒ์ผ**์— ์„ ์–ธํ•˜๋ฉฐ git ์ปค๋ฐ‹์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค (๋ฃจํŠธ๊ฐ€ SOT). ๋‹จ์ผ ์„ธ์…˜ ๊ตฌ์กฐ์ด๋ฏ€๋กœ ๋ถ€์„œ๋ณ„ ๋ณ„๋„ settings.json ๋ณต์ œ๋Š” ๋ถˆํ•„์š”. - PC๋ณ„ ๋ณ€๋™๊ฐ’(`paths.local.json`)์€ `.gitignore`๋กœ ์ถ”์  ์ œ์™ธํ•˜๊ณ  `paths.local.json.template`๋งŒ ์ปค๋ฐ‹ํ•œ๋‹ค. - ์‚ฌ์šฉ์ž ๋ฉ”๋ชจ๋ฆฌ(`memory/org/`)๋Š” setup ์Šคํฌ๋ฆฝํŠธ๊ฐ€ `~/.claude/projects/<ํ•ด์‹œ>/memory` junction์œผ๋กœ ์ž๋™ ์—ฐ๊ฒฐํ•œ๋‹ค. +- **Live ์ฆ๋ถ„ ๋™๊ธฐํ™” `.live/`**๋Š” setup ์Šคํฌ๋ฆฝํŠธ + SessionStart hook(`scripts/live_junction_ensure.sh`)์ด `$HOME/.claude/nerdnavis-live/`๋กœ junction ์ž๋™ ์—ฐ๊ฒฐํ•œ๋‹ค โ€” **worktree ๊ฒฝ๊ณ„ ๋ฌด๊ด€ ์‹ค์‹œ๊ฐ„ ๊ณต์œ  ๋ณด์žฅ** (C34 ๊ทผ์› ํ•ด๊ฒฐ, 2026-04-18 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ ์‹ ์„ค). - `.claude/settings.local.json`์€ `.gitignore` ๋Œ€์ƒ์ด๋ฏ€๋กœ **PC ์ด๋™ ์‹œ ์†Œ์‹ค๋œ๋‹ค โ€” ์กฐ์ง ๊ณต์šฉ ์Šน์ธ์€ ์ ˆ๋Œ€ local ํŒŒ์ผ์— ๋‘์ง€ ์•Š๋Š”๋‹ค**. ### C16-2. ์„ธ์…˜ ์‹œ์ž‘ ํ‘œ์ค€ ์ ˆ์ฐจ (๋‹จ์ผ ์„ธ์…˜ โ€” ๋ ˆํฌ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘) @@ -921,47 +922,6 @@ PD๋‹˜์ด **"์„ธ์…˜ ๊ณต์œ "**๋ผ๊ณ  ์ง€์‹œํ•˜๋ฉด, ํ˜„์žฌ ์„ธ์…˜์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ - ๋ณ„๋„ ๊ฒฐ์ •๋กœ๊ทธ ํŒŒ์ผ(`๊ณต์œ /์†Œํ†ต/{๋ถ€์„œ}โ†’PM/`) ๋ฐœํ–‰์€ **์„ ํƒ ์‚ฌํ•ญ**์ด๋ฉฐ ๋Œ€ํ™”๋กœ๊ทธ ์—”ํŠธ๋ฆฌ๋งŒ์œผ๋กœ๋„ ์š”๊ฑด ์ถฉ์กฑ - ์ž๊ธฐ ์†ก์‹  ์ฑ„๋„ ๊ฒฐ์ •๋กœ๊ทธ ํŒŒ์ผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ(ํƒ€ ๋ถ€์„œ ์˜ํ–ฅ ๋ช…์‹œ์  ๊ณต์ง€ ๋“ฑ) ๋Œ€ํ™”๋กœ๊ทธ + ๊ฒฐ์ •๋กœ๊ทธ ๋ณ‘ํ–‰ ๊ฐ€๋Šฅ -## P25. Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ (2026-04-16 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ / 2026-04-17 ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ ์„ ์–ธ) - -> ๐Ÿ† **์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ (2026-04-17 PD๋‹˜ ์ง์ ‘ ๋ช…์‹œ)**: Live ๋”๋ฏธ + `sync_signal.sh` ์‹œ๊ทธ๋„ ์ฒด๊ณ„๋Š” **๊ฐ™์€ PC ์„ธ์…˜ ๊ฐ„ ๋„คํŠธ์›Œํฌ ๋น„์šฉ 0์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๊ณต์œ ** ๊ฐ€๋Šฅํ•œ ๋„ˆ๋“œ๋‚˜๋น„์Šค ๊ณ ์œ  ๋ฉ”์ปค๋‹ˆ์ฆ˜. "์ž‘์—… ์™„๋ฃŒ ์‹œ ๊ณต์œ  ๋ฌธ์„œ + Live ๋”๋ฏธ + ์‹œ๊ทธ๋„ ์ฆ‰์‹œ ๊ฐฑ์‹  โ†’ ๋‹ค๋ฅธ ์„ธ์…˜ ํ”„๋กฌํ”„ํŠธ ์‹œ ๊ฐ์ง€" ๊ตฌ์กฐ๋Š” ์ฐจ๊ธฐ ํ”„๋กœ์ ํŠธยท์กฐ์ง ํ™•์žฅ ์‹œ์—๋„ ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ์œผ๋กœ ๊ณ„์Šน๋œ๋‹ค. ํ–ฅํ›„ polling ๊ธฐ๋ฐ˜ ๋Œ€์•ˆ์œผ๋กœ ํšŒ๊ท€ ๊ธˆ์ง€. ์‹ ๊ทœ ๊ธฐ๋Šฅยท๋ฌธ์ œ ํ•ด๊ฒฐ ์‹œ ๋ณธ ์ฒด๊ณ„ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์šฐ์„  ๊ฒ€ํ† (C31-1-E). - -> ์„ธ์…˜ ์‹œ์ž‘ ํ›„ ๋ณ€๊ฒฝ๋œ ์„ค์ •ยท๊ทœ์น™ยท์—์ด์ „ํŠธ ์ •์˜๋ฅผ **์„ธ์…˜ ๊ฐฑ์‹  ์—†์ด ์ฆ‰์‹œ ๋ฐ˜์˜**ํ•˜๊ธฐ ์œ„ํ•œ ์ž„์‹œ ๋”๋ฏธ ํŒŒ์ผ ์ฒด๊ณ„. ์›๋ณธ ์ˆ˜์ • + ๋”๋ฏธ ๊ธฐ๋ก์˜ ์ด์ค‘ ๋ฐ˜์˜์œผ๋กœ, ํ˜„์žฌ ์„ธ์…˜์€ hook์ด ์ฆ‰์‹œ ์ฃผ์ž…ํ•˜๊ณ  ๋‹ค์Œ ์„ธ์…˜์€ ์›๋ณธ์ด ์ด๋ฏธ ์ตœ์‹ . - -### ๋Œ€์ƒ (์„ธ์…˜ ์ค‘ ๋ฐ˜์˜ ๋ถˆ๊ฐ€ 9์ข…) -CLAUDE.md, CLAUDE.local.md, .claude/settings.json, settings.local.json, .claude/skills/*/SKILL.md, .claude/agents/*.md, .claude/rules/*.md, .claude/commands/*.md, .mcp.json - -### ๋”๋ฏธ ํŒŒ์ผ ์œ„์น˜ -`.live/` โ€” ์›๋ณธ๊ณผ ๋™์ผ ํŒŒ์ผ๋ช…์œผ๋กœ **๋ณ€๊ฒฝ๋ถ„(diff)๋งŒ** ๊ธฐ๋ก. - -### ๋ณ€๊ฒฝ ๋ฐœ์ƒ ์‹œ ์ ˆ์ฐจ -1. **์›๋ณธ ํŒŒ์ผ ์ฆ‰์‹œ ์ˆ˜์ •** (๋‹ค์Œ ์„ธ์…˜ยท๋‹ค๋ฅธ PC๋ฅผ ์œ„ํ•ด) -2. **`.live/{ํŒŒ์ผ๋ช…}`์— ๋ณ€๊ฒฝ ์š”์ง€ append** (ํ˜„์žฌ ์„ธ์…˜ ์ฆ‰์‹œ ๋ฐ˜์˜์šฉ) -3. UserPromptSubmit hook(`live_inject.sh`)์ด ์ฆ๋ถ„ ๊ฐ์ง€ โ†’ ์ถ”๊ฐ€๋ถ„๋งŒ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… - -### ์ฆ๋ถ„ ์ฝ๊ธฐ ์›๋ฆฌ -- hook์ด ํŒŒ์ผ๋ณ„ "๋งˆ์ง€๋ง‰ ์ฝ์€ ์ค„ ๋ฒˆํ˜ธ" ๊ธฐ๋ก -- ๋‹ค์Œ ํ„ด์— ์ถ”๊ฐ€๋œ ์ค„๋งŒ stdout ์ถœ๋ ฅ โ†’ ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… -- ๋ณ€๊ฒฝ ์—†์œผ๋ฉด ์ถœ๋ ฅ ์—†์Œ (ํ† ํฐ ๋น„์šฉ 0) - -### ์„œ๋ธŒ์—์ด์ „ํŠธ ์˜๋ฌด -๋ชจ๋“  ์—์ด์ „ํŠธ๋Š” ์ž‘์—… ์ฐฉ์ˆ˜ ์ „ `.live/` ๋””๋ ‰ํ† ๋ฆฌ์— ๋”๋ฏธ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์กด์žฌํ•˜๋ฉด Readํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ธ์ง€ํ•œ๋‹ค. - -### Write ๊ถŒํ•œ -- **PM๋งŒ Write** (์„œ๋ธŒ์—์ด์ „ํŠธ๋Š” Read ์ „์šฉ) -- ๊ฐ ๋”๋ฏธ ํŒŒ์ผ ์ตœ๋Œ€ 8,000์ž - -### "์„ธ์…˜ ๊ณต์œ " ์‹œ ๋™๊ธฐํ™” (P21-2 ์—ฐ๊ณ„) -1. ๋”๋ฏธ ๋‚ด์šฉ์ด ์›๋ณธ์— ์ด๋ฏธ ๋ฐ˜์˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ -2. `.live/` ๋”๋ฏธ ํŒŒ์ผ ๋น„์šฐ๊ธฐ (README.md ์ œ์™ธ) -3. commit + push - -### C14 ์ค€์ˆ˜ -- ๋ณ€๊ฒฝ ์—†๋Š” ํ„ด: ํ† ํฐ ๋น„์šฉ 0 (ํ•ด์‹œ ๋น„๊ต๋งŒ) -- ๋ณ€๊ฒฝ ๊ฐ์ง€ ํ„ด: ์ถ”๊ฐ€๋ถ„๋งŒ ์ฃผ์ž… (์ „์ฒด ์žฌ์ฝ๊ธฐ ์—†์Œ) -- ์„ธ์…˜ ์‹œ์ž‘ ์‹œ: SessionStart hook์ด ์ „๋Ÿ‰ 1ํšŒ ๋กœ๋“œ - ---- - ## P29. ์ฝ”์–ด ์ฝ”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ํ”„๋กœ์ ํŠธ ๊ทœ์น™ (2026-04-18 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ) > **์ ์šฉ ๋ฒ”์œ„**: **์ฝ”์–ด ์ฝ”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ** ํ”„๋กœ์ ํŠธ (`์ฝ”์–ด์ฝ”๋“œ/NerdNavis.Framework/`ยท`ํ”„๋กœ์ ํŠธ/์ฝ”์–ดํ”„๋ ˆ์ž„์›Œํฌ/`) ์ „์šฉ ๊ทœ์น™. ๋ณธ ๊ทœ์น™์€ ํ”„๋กœ์ ํŠธ ๋‹จ์œ„ ๊ณ ์œ  ๊ทœ์น™์œผ๋กœ P17(์ˆ˜์ƒํ•œ์žกํ™”์  ์ „์šฉ)๊ณผ ๋™์ผ ์ธต์œ„. @@ -1560,7 +1520,7 @@ C20-7 ์ž๊ธฐ๊ฒ€์ฆ 5๋ฌธํ•ญ์— ๋‹ค์Œ ํ•ญ๋ชฉ ์ถ”๊ฐ€: **E. ๊ธฐ์กด ์กฐ์ง ์ž์‚ฐ ์šฐ์„  ํ™œ์šฉ ํ™•์ธ (2026-04-17 ์ถ”๊ฐ€)** - [ ] ์ƒˆ๋กœ์šด ๋ฌธ์ œยท์ง€์‹œ์— ๋Œ€ํ•œ ํ•ด๋ฒ•์„ ์„ค๊ณ„ํ•  ๋•Œ, **์กฐ์ง์— ์ด๋ฏธ ์žˆ๋Š” ์ฒด๊ณ„** ์ค‘ ๋ณธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ€์žฅ ๋จผ์ € ๊ฒ€ํ† ํ–ˆ๋Š”๊ฐ€? - - ํ•„์ˆ˜ ๊ฒ€ํ†  ๋Œ€์ƒ: **P25 Live ์ฆ๋ถ„ ๋™๊ธฐํ™”**(์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ) ยท P27 3์ถ• ๊ฐ์‚ฌ ยท memory/feedback ํŒจํ„ด ยท ๊ธฐ์กด `scripts/`ยท`git-hooks`ยทUserPromptSubmit/SessionStart/SessionEnd hook + - ํ•„์ˆ˜ ๊ฒ€ํ†  ๋Œ€์ƒ: **C34 Live ์ฆ๋ถ„ ๋™๊ธฐํ™”**(๐Ÿ† ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ, ๊ตฌ P25 ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ) ยท P27 3์ถ• ๊ฐ์‚ฌ ยท memory/feedback ํŒจํ„ด ยท ๊ธฐ์กด `scripts/`ยท`git-hooks`ยทUserPromptSubmit/SessionStart/SessionEnd hook - [ ] ๊ธฐ์กด ์ž์‚ฐ์„ ๋ฌด์‹œํ•˜๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์–‘์  ์กฐ์ •(์ˆซ์ž ๋‹จ์ˆœ ๋ณ€๊ฒฝ)์œผ๋กœ ํšŒํ”ผํ•˜์ง€ ์•Š์•˜๋Š”๊ฐ€? - [ ] PD๋‹˜ ์ง€์‹œ๋ฅผ **๊ฒฐ๊ณผ ๋‹จ๋…์œผ๋กœ ์ถ•์†Œ ํ•ด์„**ํ•˜์ง€ ์•Š๊ณ , **์„ค๊ณ„ ๊ฒฝ๋กœ๊นŒ์ง€ ์•”๋ฌต ํฌํ•จ**์œผ๋กœ ์ฝ์—ˆ๋Š”๊ฐ€? (2026-04-17 "์ž๋™ push ๊ธฐ๋ณธ" ์™œ๊ณก ์‚ฌ๊ฑด ์žฌ๋ฐœ ๋ฐฉ์ง€) - [ ] **์ž์‚ฐ ๊ฐ€์น˜ ๋ณด์กด โ‰  ์ €์žฅ ์œ„์น˜ ๋ณด์กด** ๊ตฌ๋ถ„ํ–ˆ๋Š”๊ฐ€? (2026-04-18 ์ถ”๊ฐ€) โ€” ์ž์‚ฐ(์กฐ์ง ๊ธฐ์–ตยท๊ตํ›ˆยทํ๊ธฐ ์„ ์–ธยท๊ธฐ๊ฐ ๊ทผ๊ฑฐ)์˜ **๊ฐ€์น˜๋Š” ๋ฐ˜๋“œ์‹œ ์œ ์ง€**ํ•˜๋˜ **์ €์žฅ ์œ„์น˜๋Š” C14 ๊ด€์ ์—์„œ ์ตœ์ ํ™” ๊ฐ€๋Šฅ**. ํ™œ์„ฑ ๋ณธ๋ฌธ์— ๊ณ ์ • = ๊ณผ๋„ ๋ณด์ˆ˜ ํ•ด์„. ์™ธ๋ถ€ SOT(`memory/org/`ยท`๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md`)๋กœ ์ด๊ด€ํ•˜๋˜ 1์ค„ ์ฐธ์กฐ ์œ ์ง€ ๋ฐฉ์‹ ๊ฒ€ํ† . **PM ๊ณผ๋„ ๋ณด์ˆ˜ ํ•ด์„ 2ํšŒ ์—ฐ์† ์žฌ๋ฐœ ์‚ฌ๊ฑด(์›์น™ 3 ์›์•ˆยท์›์น™ 1 ํ˜„์•ˆ)** ๊ทผ๊ฑฐ๋กœ ์‹ ์„ค, 3ํšŒ์ฐจ ์žฌ๋ฐœ ์‹œ ์—ญํ•  ์žฌ๊ฒ€ํ†  (`memory/org/feedback_pm_over_conservative_interpretation.md`) @@ -1586,3 +1546,89 @@ C20-7 ์ž๊ธฐ๊ฒ€์ฆ 5๋ฌธํ•ญ์— ๋‹ค์Œ ํ•ญ๋ชฉ ์ถ”๊ฐ€: ### C31-5. ๋ณธ ๊ทœ์น™์˜ ๋ฌด๊ฒŒ PD๋‹˜ ์ง์ ‘ ์„ ์–ธ: **"์ด ๋ฌธ์ œ๋Š” ์šฐ๋ฆฌ ์กฐ์ง์˜ ์‚ฌํ™œ์ด ๊ฑธ๋ฆฐ ๋งค์šฐ ์ค‘๋Œ€ํ•œ ๋ฌธ์ œ์•ผ."** ๋ณธ ๊ทœ์น™์ด ๋ฌด๋ ฅํ™”๋˜๋ฉด ์กฐ์ง ์šด์˜ ์ž์ฒด๊ฐ€ ๋ฌด๋ ฅํ™”๋œ๋‹ค. C23(ํ—ˆ์œ„ ๋ณด๊ณ  ๊ธˆ์ง€)๊ณผ ํ•จ๊ป˜ **๋„ˆ๋“œ๋‚˜๋น„์Šค ์กฐ์ง์˜ ์ƒ์กด 2๋Œ€ ๊ทœ์น™**์ด๋‹ค. + +--- + +## C34. Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ (๐Ÿ† ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ, 2026-04-18 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ๋กœ P25์—์„œ ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ + ๊ทผ์› ํ•ด๊ฒฐ) + +> **์Šน๊ฒฉยท๊ฒฉ์ƒ ๊ทผ๊ฑฐ**: 2026-04-18 worktree ๊ฒฉ๋ฆฌ๋กœ P25 ์ฒด๊ณ„ ์‹คํŒจ ์‹ค์ฆ. PD๋‹˜ ์ง์ ‘ ์„ ์–ธ โ€” **"์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด"** ยท **"์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•ด์„œ ๊ด€๋ จ ๋ฌธ์„œ์— ์ผ๊ด„ ๋ฐ˜์˜ํ•˜๊ณ  ์žฌ๋ฐœ๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด"**. ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค(์„ธ์…˜ยทPC ์—ฐ์†์„ฑ ๋ณด์žฅ)์˜ ๊ทผ๋ณธ ์œ„ํ˜‘ ํŒ์ • โ†’ ํ”„๋กœ์ ํŠธ ๊ทœ์น™์—์„œ ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ + ๊ทผ์› ํ•ด๊ฒฐ(์ค‘์•™ Junction) + Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ 3์ข… ๋™์‹œ ์ง‘ํ–‰. ๊ตฌ P25 ๊ฒฝ์œ„: [ํ๊ธฐ ๊ทœ์น™ ์•„์นด์ด๋ธŒ](../../../๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md). + +### C34-1. ๊ฐœ์š” +์„ธ์…˜ ์‹œ์ž‘ ํ›„ ๋ณ€๊ฒฝ๋œ ์„ค์ •ยท๊ทœ์น™ยท์—์ด์ „ํŠธ ์ •์˜๋ฅผ **์„ธ์…˜ ๊ฐฑ์‹  ์—†์ด ์ฆ‰์‹œ ๋ฐ˜์˜**ํ•˜๊ธฐ ์œ„ํ•œ **์ค‘์•™ ์ €์žฅ์†Œ + Junction** ์ฒด๊ณ„. ๊ฐ™์€ PC ๋‚ด ๋ชจ๋“  Claude ์„ธ์…˜์ด ๋„คํŠธ์›Œํฌ ๋น„์šฉ 0์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๊ณต์œ ํ•˜๋Š” ๋„ˆ๋“œ๋‚˜๋น„์Šค ๊ณ ์œ  ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋ฉฐ, **worktree ๊ฒฝ๊ณ„์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•˜๊ฒŒ ์ž‘๋™**ํ•œ๋‹ค. + +### C34-2. ์ž‘๋™ ๊ฒฝ๊ณ„ (2026-04-18 worktree ๊ฒฉ๋ฆฌ ํ•ด๊ฒฐ ๋ฐ˜์˜) +- โœ… ๋™์ผ PC ๋‚ด ๋ชจ๋“  Claude ์„ธ์…˜ (**worktree ๊ฒฝ๊ณ„ ๋ฌด๊ด€** โ€” C34-3 ์ค‘์•™ junction ๊ตฌ์กฐ) +- โœ… ๋ ˆํฌ ๋ฃจํŠธยทworktreeยท๋‹ค๋ฅธ worktree์—์„œ ์„ธ์…˜ ์‹œ์ž‘ํ•ด๋„ ๋™์ผ ํŒŒ์ผ์‹œ์Šคํ…œ ์ฐธ์กฐ +- โŒ ๋‹ค๋ฅธ PC ๊ฐ„ ์‹ค์‹œ๊ฐ„ ๊ณต์œ  (์ด ๊ฒฝ์šฐ `git push` ๊ฒฝ์œ  ๋ช…์‹œ ๊ณต์œ , P21-2) + +### C34-3. ์ค‘์•™ ์ €์žฅ์†Œ ๊ตฌ์กฐ (๊ทผ์› ํ•ด๊ฒฐ ํ•ต์‹ฌ) +- **์‹ค ์ €์žฅ**: `$HOME/.claude/nerdnavis-live/` (PC ๋กœ์ปฌ ๋‹จ์ผ) +- **๊ฐ worktree์˜ `.live/`**: ์œ„ ๊ฒฝ๋กœ๋กœ **Junction(Windows `mklink /J`) / Symlink(Unix `ln -s`) ์ž๋™ ์—ฐ๊ฒฐ** +- **์ž๋™ ์„ค์น˜**: `scripts/live_junction_ensure.sh` (SessionStart hook ์ฒด์ธ ์ตœ์šฐ์„  ์‚ฝ์ž…, git fetch ์งํ›„) + `setup/setup_windows.ps1`ยท`setup/setup_macos.sh` 3.5 ์„น์…˜์ด ๋ณด์žฅ +- **Sentinel ๋ฐฉ์‹ ํŒ์ •**: `$CENTRAL_LIVE/.junction-marker` ํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€๋กœ ์—ฐ๊ฒฐ ์ƒํƒœ OS-agnostic ํŒ์ • +- **๊ฒ€์ฆ**: `verify_setup.ps1` 2.5 ์„น์…˜ 3์ถ• ๊ฒ€์ฆ (์ค‘์•™ ์‹ค์ฒดยทreparse pointยทmarker ๊ฒฝ์œ  ์ฝ๊ธฐ) + +### C34-4. ๋Œ€์ƒ (์„ธ์…˜ ์ค‘ ๋ฐ˜์˜ ๋ถˆ๊ฐ€ 9์ข…) +CLAUDE.md, CLAUDE.local.md, .claude/settings.json, settings.local.json, .claude/skills/*/SKILL.md, .claude/agents/*.md, .claude/rules/*.md, .claude/commands/*.md, .mcp.json + +### C34-5. ๋ณ€๊ฒฝ ๋ฐœ์ƒ ์‹œ ์ ˆ์ฐจ +1. **์›๋ณธ ํŒŒ์ผ ์ฆ‰์‹œ ์ˆ˜์ •** (๋‹ค์Œ ์„ธ์…˜ยท๋‹ค๋ฅธ PC๋ฅผ ์œ„ํ•ด) +2. **`.live/{ํŒŒ์ผ๋ช…}`์— ๋ณ€๊ฒฝ ์š”์ง€ append** โ€” junction ๊ฒฝ์œ ๋กœ ์ค‘์•™ ์ €์žฅ์†Œ์— ์‹ค์ œ ๊ธฐ๋ก +3. UserPromptSubmit hook `live_inject.sh`๊ฐ€ ์ฆ๋ถ„ ๊ฐ์ง€ โ†’ **๋ชจ๋“  ์„ธ์…˜(worktree ๋ฌด๊ด€)์— ์ž๋™ ์ฃผ์ž…** + +### C34-6. ์ฆ๋ถ„ ์ฝ๊ธฐ ์›๋ฆฌ +- hook์ด ํŒŒ์ผ๋ณ„ "๋งˆ์ง€๋ง‰ ์ฝ์€ ์ค„ ๋ฒˆํ˜ธ" ๊ธฐ๋ก (`$HOME/.claude/.nerdnavis_throttle/`) +- ๋‹ค์Œ ํ„ด์— ์ถ”๊ฐ€๋œ ์ค„๋งŒ stdout ์ถœ๋ ฅ โ†’ ์—์ด์ „ํŠธ ์ปจํ…์ŠคํŠธ ์ฃผ์ž… +- ๋ณ€๊ฒฝ ์—†์œผ๋ฉด ์ถœ๋ ฅ ์—†์Œ (ํ† ํฐ ๋น„์šฉ 0) + +### C34-7. ์„œ๋ธŒ์—์ด์ „ํŠธ ์˜๋ฌด (Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ ๊ฐ•ํ™”) +๋ชจ๋“  ์—์ด์ „ํŠธ๋Š” ์ž‘์—… ์ฐฉ์ˆ˜ ์ „ `.live/` ๋””๋ ‰ํ† ๋ฆฌ์— ๋”๋ฏธ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์กด์žฌํ•˜๋ฉด Readํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ธ์ง€ํ•œ๋‹ค. +- **์ ˆ๋Œ€ ๊ฒฝ๋กœ `E:\NerdNavisAi\...` ๋“ฑ ํ•˜๋“œ์ฝ”๋”ฉ ๊ธˆ์ง€** โ€” ํ•ญ์ƒ `.live/` ์ƒ๋Œ€ ๊ฒฝ๋กœ ๋˜๋Š” `git rev-parse --show-toplevel` ๊ธฐ๋ฐ˜ ๊ฒฝ๋กœ ์‚ฌ์šฉ (C34-11 ์œ„๋ฐ˜ ์‚ฌ๊ฑด ์žฌ๋ฐœ ๋ฐฉ์ง€) + +### C34-8. Write ๊ถŒํ•œ +- **PM๋งŒ Write** (์„œ๋ธŒ์—์ด์ „ํŠธ๋Š” Read ์ „์šฉ) +- ๊ฐ ๋”๋ฏธ ํŒŒ์ผ ์ตœ๋Œ€ 8,000์ž + +### C34-9. "์„ธ์…˜ ๊ณต์œ " ์‹œ ๋™๊ธฐํ™” (P21-2 ์—ฐ๊ณ„) +1. ๋”๋ฏธ ๋‚ด์šฉ์ด ์›๋ณธ์— ์ด๋ฏธ ๋ฐ˜์˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ +2. `.live/` ๋”๋ฏธ ํŒŒ์ผ ๋น„์šฐ๊ธฐ (README.mdยท.junction-marker ์ œ์™ธ) +3. commit + push + +### C34-10. C14 ์ค€์ˆ˜ +- ๋ณ€๊ฒฝ ์—†๋Š” ํ„ด: ํ† ํฐ ๋น„์šฉ 0 (sentinel ๋น„๊ต๋งŒ) +- ๋ณ€๊ฒฝ ๊ฐ์ง€ ํ„ด: ์ถ”๊ฐ€๋ถ„๋งŒ ์ฃผ์ž… (์ „์ฒด ์žฌ์ฝ๊ธฐ ์—†์Œ) +- ์„ธ์…˜ ์‹œ์ž‘ ์‹œ: `live_junction_ensure.sh`๊ฐ€ junction ๋ณด์žฅ ํ›„ `live_session_load.sh`๊ฐ€ ์ „๋Ÿ‰ 1ํšŒ ๋กœ๋“œ + +### C34-11. Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ โ€” ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ ๊ธˆ์ง€ (2026-04-18 ์‹ค์ฆ ์‹ ์„ค) +Agent ๋„๊ตฌ๋กœ ํ˜ธ์ถœ๋œ ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ **์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ ˆํฌ ๋ฃจํŠธ๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋ฉด worktree ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด main ์ฒดํฌ์•„์›ƒ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณ€๊ฒฝ์ด ๊ธฐ๋ก๋˜๋Š” ์ด์Šˆ ์‹ค์ฆ** (2026-04-18 worktree ๊ฒฉ๋ฆฌ 2์ฐจ ์‚ฌ๊ฑด: ๊ฐœ๋ฐœํŒ€์žฅ Agent๊ฐ€ `E:\NerdNavisAi\๊ณต์œ \...`๋กœ Write ํ˜ธ์ถœํ•˜์—ฌ ๋ณธ ์›ŒํฌํŠธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋ ˆํฌ ๋ฃจํŠธ์— ํŒŒ์ผ ์ƒ์„ฑ). + +**์žฌ๋ฐœ ๋ฐฉ์ง€ ์˜๋ฌด**: +- Agent ํ˜ธ์ถœ ํ”„๋กฌํ”„ํŠธ์— **"ํ˜„์žฌ cwd ๊ธฐ์ค€ ์ƒ๋Œ€ ๊ฒฝ๋กœ ์‚ฌ์šฉ ์˜๋ฌด"** ๋ช…์‹œ +- ์‚ฐ์ถœ๋ฌผ ๊ฒฝ๋กœ๋Š” `$(git rev-parse --show-toplevel)` ๊ธฐ์ค€ ๋˜๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ +- PM์€ Agent ์‘๋‹ต ์ˆ˜๋ น ์งํ›„ `git -C <๋ ˆํฌ๋ฃจํŠธ> status` + ๋ณธ ์›ŒํฌํŠธ๋ฆฌ `git status` ๋ณ‘ํ–‰ ํ™•์ธ +- ๊ฒฝ๊ณ„ ์ดํƒˆ ๋ฐœ๊ฒฌ ์‹œ `git -C <๋ ˆํฌ๋ฃจํŠธ> stash push -u -- ๊ณต์œ /` โ†’ ๋ณธ ์›ŒํฌํŠธ๋ฆฌ `git stash pop`์œผ๋กœ ๋ณต๊ตฌ +- ์žฌ๋ฐœ ๋ฐฉ์ง€ ๋ฉ”๋ชจ๋ฆฌ: `memory/org/feedback_agent_path_boundary.md` + +### C34-12. Degraded ์šด์˜ (์ž‘์—… ์ฐจ๋‹จ ๊ธˆ์ง€ ์›์น™) +Junction ์ƒ์„ฑ ์‹คํŒจ ์‹œ **์ž‘์—…์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ ** ๋กœ์ปฌ `.live/` ์ผ๋ฐ˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋™์ž‘(๊ฒฝ๊ณ  ์ถœ๋ ฅ). ์ด์œ : +- ์กฐ์ง ์ƒ์กด ํ•ด๊ฒฐ์ด ๋˜ ๋‹ค๋ฅธ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜ ์—ญ์„ค ์œ ๋ฐœ ๋ฐฉ์ง€ +- Degraded ๋ชจ๋“œ ๊ฐ์ง€ ์‹œ ๋‹ค์Œ ์„ธ์…˜ ์‹œ์ž‘๋งˆ๋‹ค ์ž๋™ ์žฌ์‹œ๋„ (์ตœ๋Œ€ 3ํšŒ/์„ธ์…˜) +- ์˜๊ตฌ ์‹คํŒจ ์‹œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ setup ์Šคํฌ๋ฆฝํŠธ ์žฌ์‹คํ–‰ ๋˜๋Š” `๊ณต์œ /์กฐ์ง๊ณต์ง€/` ์ˆ˜๋™ ์ด์Šˆ ๋ณด๊ณ  + +### C34-13. ์—ฐ๊ด€ ๊ทœ์น™ยท์ž์‚ฐ +- **ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค** (์„ธ์…˜ยทPC ์—ฐ์†์„ฑ): ๋ณธ ๊ทœ์น™์˜ ์ƒ์œ„ ๊ทผ๊ฑฐ +- **C16-1** (PC ๋…๋ฆฝ ์…‹์—…): Live junction ์ž๋™ ์—ฐ๊ฒฐ์ด ๋ณธ ์กฐํ•ญ์— ํŽธ์ž…๋จ (2026-04-18 ๋ณด๊ฐ•) +- **C17** (์ตœ์‹  ์„ธ์…˜ ๊ด€๋ฆฌ ๊ธฐ์ค€): ์„ธ์…˜ ์‹œ์ž‘ ์‹œ junction ์‹ค์ฒด ๊ฒ€์ฆ ์˜๋ฌด +- **C21-โ‘ ** (๋‚ด๋ถ€ ๊ณต์œ  ์ƒํƒœ): ํ•ต์‹ฌ ์ˆ˜๋‹จ +- **C18** (์กฐ์ง ๊ณต์œ  ์™„๋ฃŒ ํŒ์ •): main push๋กœ์˜ ์ „ํ™˜ +- **P21-2** (์„ธ์…˜ ๊ณต์œ  ํ”„๋กœํ† ์ฝœ): ๋‹ค๋ฅธ PC ๊ฐ„ ์‹ค์‹œ๊ฐ„ ๊ณต์œ ์˜ ๋ช…์‹œ ์ˆ˜๋‹จ +- **`scripts/live_junction_ensure.sh`** (SessionStart hook ์ตœ์šฐ์„  ์‚ฝ์ž…) +- **`scripts/live_inject.sh`** (UserPromptSubmit hook) +- **`scripts/sync_signal.sh`** (post-commit hook ์‹œ๊ทธ๋„) + +### C34-14. ๊ฒฉ์ƒ ๊ฒฝ์œ„ (์กฐ์ง ๊ธฐ์–ต) +- **2026-04-16** P25 ์‹ ์„ค (PD๋‹˜ ์ง์ ‘ ์ง€์‹œ) +- **2026-04-17** PD๋‹˜ "์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ" ์ง์ ‘ ๋ช…์‹œ +- **2026-04-18 ์˜ค์ „** worktree ๊ฒฉ๋ฆฌ ์‹ค์ฆ โ€” ์„ธ์…˜ B(nifty-wing) `.live/ping.md` Write๊ฐ€ ์„ธ์…˜ A(tender-liskov) hook์— ๋ฏธ์ฃผ์ž… +- **2026-04-18 ์˜คํ›„** PD๋‹˜ ์กฐ์ง ์ƒ์กด๊ธ‰ ์„ ์–ธ + "๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ " ์ง€์‹œ โ†’ **ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ + ๊ทผ์› ํ•ด๊ฒฐ(์ค‘์•™ Junction) + Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ ๋™์‹œ ์ง‘ํ–‰** +- ์ฐจ๊ธฐ ํ”„๋กœ์ ํŠธ ์ฐฉ์ˆ˜ ์‹œ `setup_*` ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ๋งŒ์œผ๋กœ ๋ณธ ์ฒด๊ณ„ ์ฆ‰์‹œ ์žฌ์‚ฌ์šฉ diff --git a/.gitignore b/.gitignore index e5711f6..544dbaa 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,11 @@ node_modules/ coverage/ dist/ build/ + +# ===== Live ์ฆ๋ถ„ ๋™๊ธฐํ™” (C34 ์ค‘์•™ junction ์ฒด๊ณ„ โ€” 2026-04-18 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ) ===== +# .live/๋Š” worktree๋ณ„ junction/symlink ๋Œ€์ƒ์ด๋ฏ€๋กœ ๋‚ด๋ถ€ ํŒŒ์ผ์€ ์ถ”์  ์ œ์™ธ. +# README.md๋งŒ tracked ์œ ์ง€ (์กฐ์ง ๋ฌธ์„œ ์—ญํ• ). ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐฑ์—… ๋””๋ ‰ํ† ๋ฆฌ๋„ ์ œ์™ธ. +.live/* +!.live/README.md +.live.bak-*/ + diff --git a/CLAUDE.md b/CLAUDE.md index bb06902..b1385e7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,7 +33,7 @@ PD๋‹˜ | ๊ตฌ๋ถ„ | ์„ฑ๊ฒฉ | ๋ณ€๊ฒฝ ๊ถŒํ•œ | |------|------|----------| | **ํ—Œ๋ฒ• ์ œ1์›์น™** (5ํ•ญ โ‘ ~โ‘ค) | ์กฐ์ง์˜ **์ตœ์ƒ์œ„ ์›์น™** | **PD๋‹˜๋งŒ** ์ˆ˜์ • ๊ฐ€๋Šฅ (2026-04-18 ์ „๋ฉด ์žฌ์ž‘์„ฑ) | -| **ํ•ต์‹ฌ ๊ทœ์น™** (์ฝ”์–ด ๋ฃฐ, C1~C33) | ์กฐ์ง์˜ **ํ—Œ๋ฒ•** | **PD๋‹˜๋งŒ** ์ˆ˜์ • ๊ฐ€๋Šฅ (์ด๊ด„PM์ด ํŒ€์žฅ๊ธ‰๊ณผ ์ƒ์˜ ํ›„ ์ œ์•ˆ โ†’ PD๋‹˜ ์Šน์ธ) | +| **ํ•ต์‹ฌ ๊ทœ์น™** (์ฝ”์–ด ๋ฃฐ, C1~C34) | ์กฐ์ง์˜ **ํ—Œ๋ฒ•** | **PD๋‹˜๋งŒ** ์ˆ˜์ • ๊ฐ€๋Šฅ (์ด๊ด„PM์ด ํŒ€์žฅ๊ธ‰๊ณผ ์ƒ์˜ ํ›„ ์ œ์•ˆ โ†’ PD๋‹˜ ์Šน์ธ) | | **ํ”„๋กœ์ ํŠธ ๊ทœ์น™** (์กฐ์ง ๊ทœ์น™, P1~P31) | ์กฐ์ง์˜ **๋ฒ•๋ฅ ** | **ํŒ€์žฅ๊ธ‰ ์žฌ๋Ÿ‰ + PD๋‹˜ ์ตœ์ข… ์Šน์ธ ํ•„์ˆ˜** (2026-04-18 ๊ฐœ์ • โ€” ์‚ฌ์ „ ์Šน์ธ ์ฒด๊ณ„) | ### ํ—Œ๋ฒ• ์ œ1์›์น™ (2026-04-18 PD๋‹˜ ์ง์ ‘ ์ „๋ฉด ์žฌ์ž‘์„ฑ) @@ -44,7 +44,7 @@ PD๋‹˜ - **โ‘ค** ์„ธ์…˜ยทPC ๋ณ€๊ฒฝ ์‹œ์—๋„ ์ผ๊ด€๋œ ์ •๋ณด ๊ณต์œ ยท๋™๊ธฐํ™”๋œ ํ™˜๊ฒฝยท์—ฐ์†์„ฑ ์žˆ๋Š” ์—…๋ฌด ์ˆ˜ํ–‰ - ๊ตฌ 3๊ฐœ ๋ชฉํ‘œ ํ๊ธฐ: [ํ๊ธฐ ๊ทœ์น™ ์•„์นด์ด๋ธŒ #constitution-v1](๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md#constitution-v1) -### ํ•ต์‹ฌ ๊ทœ์น™ ์š”์•ฝ (ํ™œ์„ฑ 28๊ฐœ, ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ํ—ˆ์šฉ โ€” ํ๊ธฐ ํ‘œ๊ธฐ ๋ณธ๋ฌธ ์œ ์ง€ ๊ธˆ์ง€ ์›์น™) +### ํ•ต์‹ฌ ๊ทœ์น™ ์š”์•ฝ (ํ™œ์„ฑ 29๊ฐœ, ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ํ—ˆ์šฉ โ€” ํ๊ธฐ ํ‘œ๊ธฐ ๋ณธ๋ฌธ ์œ ์ง€ ๊ธˆ์ง€ ์›์น™) - **C1** ์ง€์‹œ=์Šน์ธ / **C2** ๊ทผ์›์  ๋ฌธ์ œ ํ•ด๊ฒฐ / **C3** ์ด์Šˆ ์€ํ ๊ธˆ์ง€ยท์ฆ‰์‹œ ๋ณด๊ณ  / **C4** ์ด๊ด„PM ํ•˜๋‹ฌ - **C5** ์ •๋ณด์˜ ์ •์ง์„ฑ / **C6** ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๋ฐ ํ”„๋กœ๋•์…˜ ๋ณดํ˜ธ (์›๋ณธยทํ”„๋กœ๋•์…˜ยท๋ณต๊ตฌ ๋ถˆ๊ฐ€ ๊ณ ์ง€ ์˜๋ฌด) - **C9** AI ์—์ด์ „ํŠธ ์กฐ์ง ์›์น™ โ€” ์™„์„ฑ๋„ ์šฐ์„ ยท์ผ์ • ๊ฐœ๋… ๋ฐฐ์ œ @@ -59,19 +59,20 @@ PD๋‹˜ - **C28** ๋ฌธ์„œ ์ˆ˜์ • ๋ฌด์Šน์ธ ์›์น™ / **C29** ์—…๋ฌด ์ž์œจ ์ˆ˜ํ–‰ ์ฒด๊ณ„ (์กฐ์ง ์ƒ์กด๊ธ‰) - **C30** git ๋™๊ธฐํ™” ํ”„๋กœ์ ํŠธ ์ž‘์—… ์ „ ์ตœ์‹  ์ƒํƒœ ์ ๊ฒ€ / **C31** ์‘๋‹ต ๋ฐœ์‹  ์ง์ „ ์ž๊ธฐ๊ฒ€์ฆ ์˜๋ฌด (ํ—Œ๋ฒ•๊ธ‰) - **C32** ๋Œ€ํ™”๋กœ๊ทธ ๊ธฐ๋ก ์˜๋ฌด (ํ—Œ๋ฒ•๊ธ‰, ๊ตฌ P22ยทP24 ํก์ˆ˜) / **C33** ์กฐ์ง ์—…๋ฌด ๊ณต์œ ยท๊ธฐ๋ก ์ฒด๊ณ„ ์ผ๊ด€์„ฑ ๋ณด์žฅ (ํ—Œ๋ฒ•๊ธ‰, ๊ตฌ P26ยทP27 ํก์ˆ˜) +- ๐Ÿ† **C34** Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ (ํ—Œ๋ฒ•๊ธ‰ยท์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ, ๊ตฌ P25 ์Šน๊ฒฉ, worktree ๊ฒฝ๊ณ„ ๋ฌด๊ด€ ์ค‘์•™ Junction โ€” 2026-04-18 ์กฐ์ง ์ƒ์กด๊ธ‰ ๊ทผ์› ํ•ด๊ฒฐ) - ํ๊ธฐยทํ†ตํ•ฉยท๊ฐ•๋“ฑยท์žฌํ™œ์šฉ ๊ทœ์น™ ์ƒ์„ธ: [ํ๊ธฐ ๊ทœ์น™ ์•„์นด์ด๋ธŒ](๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md) -### ํ”„๋กœ์ ํŠธ ๊ทœ์น™ ์š”์•ฝ (ํ™œ์„ฑ 25๊ฐœ, ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ํ—ˆ์šฉ) +### ํ”„๋กœ์ ํŠธ ๊ทœ์น™ ์š”์•ฝ (ํ™œ์„ฑ 24๊ฐœ, ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ํ—ˆ์šฉ) - **P1~P11** ๊ธฐ๋ณธ ์šด์˜ (ํ˜ธ์นญยทํ˜„ํ™ฉยท์ด์Šˆยทํ† ํฐยท์˜์‚ฌ๊ฒฐ์ •ยท์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ยท์œ„์ž„ยท๋ชจ๋ธยทํŠธ๋ž˜ํ‚นยท๋…ธํ•˜์šฐยท์ž์œจํšจ์œจํ™”) - **P13** ์ฝ”๋“œยท์˜์กด์„ฑยทํ™˜๊ฒฝ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ (๊ตฌ P15 ํ†ตํ•ฉ) / **P14** QA ๊ฒŒ์ดํŠธ / **P16** ์‚ฐ์ถœ๋ฌผ ์ถ”์ ์„ฑ - **P17** ์ˆ˜์ƒํ•œ์žกํ™”์  ์ „์šฉ โ˜… ์กฐ๊ฑด ๋ฐฐํƒ€ ๋ฐฐ์น˜ 7์ข… - **P18** ์„ค๊ณ„ ๋ฌธ์„œํ™” ์˜๋ฌด / **P19** PD๋‹˜ ์ง์ ‘ ์ง€์‹œ ํŠธ๋ž˜ํ‚น ๋ฐ ๊ณต์œ  ์˜๋ฌด - **P21** ์„ธ์…˜ ๊ฐฑ์‹  ํ”„๋กœํ† ์ฝœ / **P21-2** ์„ธ์…˜ ๊ณต์œ  ํ”„๋กœํ† ์ฝœ - **P23** ๊ธฐํš ๊ฒฐ์ • ์žฌ๋Ÿ‰ ๋ฒ”์œ„ -- ๐Ÿ† **P25** Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ (์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ) / **P28** ์กฐ์ง ์—…๋ฌด ํ˜„ํ™ฉ ๋ณด๊ณ  ํ‘œ์ค€ ํฌ๋งท +- **P28** ์กฐ์ง ์—…๋ฌด ํ˜„ํ™ฉ ๋ณด๊ณ  ํ‘œ์ค€ ํฌ๋งท (P25๋Š” C34๋กœ ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ โ€” 2026-04-18) - **P29** ์ฝ”์–ด ์ฝ”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ํ”„๋กœ์ ํŠธ ๊ทœ์น™ (์กฐ์ง ์ž์‚ฐ ๊ณ„์Šนยท์ฐจ๊ธฐ ํ”„๋กœ์ ํŠธ ํ™œ์šฉยทํ˜„ ํ”„๋กœ์ ํŠธ ์ธ์‚ฌ์ดํŠธ) - **P30** ์žฌ๋ฏธ ์šฐ์„  ์›์น™ (๊ธฐํšํŒ€ ์ „์šฉ) / **P31** PD๋‹˜ ๊ฒฝ์–ด ์‚ฌ์šฉ ์›์น™ -- ํ๊ธฐยท๊ฐ•๋“ฑยทํ†ตํ•ฉ๋œ ๊ตฌ P ๋ฒˆํ˜ธ(P12ยทP15ยทP20ยทP22ยทP24ยทP26ยทP27): [ํ๊ธฐ ๊ทœ์น™ ์•„์นด์ด๋ธŒ](๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md) ์ฐธ์กฐ +- ํ๊ธฐยท๊ฐ•๋“ฑยทํ†ตํ•ฉยท์Šน๊ฒฉ๋œ ๊ตฌ P ๋ฒˆํ˜ธ(P12ยทP15ยทP20ยทP22ยทP24ยทP25ยทP26ยทP27): [ํ๊ธฐ ๊ทœ์น™ ์•„์นด์ด๋ธŒ](๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md) ์ฐธ์กฐ ## ์ปจ๋ฒค์…˜ diff --git a/memory/org/MEMORY.md b/memory/org/MEMORY.md index caef3bc..b6067ee 100644 --- a/memory/org/MEMORY.md +++ b/memory/org/MEMORY.md @@ -25,3 +25,5 @@ - [dev-auditor ๊ฐ์‚ฌ ๋ฒ”์œ„ ํ˜•์‹์ฃผ์˜ ์˜คํŒ](feedback_dev_auditor_scope_shortcut.md) โ€” 2026-04-18 ๋ฐœ๊ฒฌ. SKILL.md ๋ฌธ์–ธ๋งŒ ๋ณด๊ณ  ์„ค๊ณ„ ๋งฅ๋ฝ ๋ฏธํ™•์ธ. ๊ฐ์‚ฌ ์ฐฉ์ˆ˜ ์ „ ๊ด€๋ จ ์„ค๊ณ„ ๋ฌธ์„œ ์„ ํ–‰ Read ์˜๋ฌด ์ถ”๊ฐ€ ์•ˆ๊ฑด - [์„ธ์…˜ ๋Œ€ํ™”๋กœ๊ทธ ๋ˆ„๋ฝ โ€” "๊ธฐ๋ก ๋ฒ”์œ„ ์ž์˜์  ์ถ•์†Œ" ํŒจํ„ด (๐Ÿšจ PM ๊ณผ๋„ ๋ณด์ˆ˜ 4ํšŒ์ฐจ ๋ณ€์ข…)](feedback_session_log_coverage_gap.md) โ€” 2026-04-18 ๋ฐœ๊ฒฌ. PM์ด ์ˆ˜์ƒํ•œ์žกํ™”์  Agent ์œ„์ž„ ์šฐํšŒ + ์ฝ”์–ดํ”„๋ ˆ์ž„์›Œํฌ "false positive" ์ž๊ฐ€ ํšŒํ”ผ๋กœ ๋Œ€ํ™”๋กœ๊ทธ ๋ˆ„๋ฝ. **PM ์—ญํ•  ์žฌ๊ฒ€ํ†  ์ž์ง„ ์ƒ์ • ๋Œ€์ƒ**. P24 ๊ธฐ๋ก ๋Œ€์ƒ ๊ธฐ์ค€ยทC31-D ์ฒดํฌยทSessionEnd hook ๊ฐ•ํ™”๋กœ ์žฌ๋ฐœ ๋ฐฉ์ง€ - [ํ๊ธฐ ์กฐํ•ญ ๋ณธ๋ฌธ ์ž”์กด โ€” "๋ฒˆํ˜ธ ์ฒด๊ณ„ ์—ฐ์†์„ฑ" ๊ด€์„ฑ (๐Ÿšจ PM ๊ณผ๋„ ๋ณด์ˆ˜ 5ํšŒ์ฐจ ๋ณ€์ข…)](feedback_deprecated_section_retention.md) โ€” 2026-04-18 ๋ฐœ๊ฒฌ. C7ยทC8ยทC12ยทC15ยทP20ยทP24ยทP27 ํ๊ธฐ ํ‘œ๊ธฐ๋ฅผ ๋ณธ๋ฌธ์— ์œ ์ง€. PD๋‹˜ "์ด๋ฏธ ์‚ญ์ œ๋œ ๋‚ด์šฉ์„ ์ตœ์‹  ๋ฌธ์„œ์— ๋‹ด์ง€ ๋ง๋ผ" ๋ช…์‹œ ์ง€์ . **C14-5-ํ™•์žฅ ์ฝ”์–ด๋ฃฐ ์‹ ์„ค**๋กœ ์žฌ๋ฐœ ๋ฐฉ์ง€. **PM ์—ญํ•  ์žฌ๊ฒ€ํ†  ์ž์ง„ ์ƒ์ • ๊ฐ•๋„ ์ƒํ–ฅ** +- [worktree ๊ฒฉ๋ฆฌ๋กœ ์ธํ•œ ์กฐ์ง ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™” ์‹คํŒจ ๐Ÿšจ ์กฐ์ง ์ƒ์กด๊ธ‰](feedback_worktree_isolation.md) โ€” 2026-04-18 PD๋‹˜ ์ง์ ‘ ์„ ์–ธ "ํ•ด๊ฒฐ ์•ˆ ๋˜๋ฉด ์กฐ์ง ์œ ์ง€ ๋ถˆ๊ฐ€". P25โ†’C34 ์Šน๊ฒฉ + ์ค‘์•™ Junction (C16-1 memory junction ํŒจํ„ด ์žฌ์‚ฌ์šฉ)์œผ๋กœ ๊ทผ์› ํ•ด๊ฒฐ. "๊ฐ™์€ PC=๊ฐ™์€ ํŒŒ์ผ์‹œ์Šคํ…œ" ์ง๊ด€์€ worktree์—์„œ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ +- [Agent ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ ๊ธˆ์ง€ โ€” worktree ๊ฒฝ๊ณ„ ๋ณดํ˜ธ](feedback_agent_path_boundary.md) โ€” 2026-04-18 worktree ๊ฒฉ๋ฆฌ 2์ฐจ ์‚ฌ๊ฑด. Agent๊ฐ€ `E:\NerdNavisAi\...`๋กœ Write ํ˜ธ์ถœ โ†’ ๋ ˆํฌ ๋ฃจํŠธ ์œ ์ถœ. `git stash push/pop` ์ด๊ด€ ๋ณต๊ตฌ + Agent ํ˜ธ์ถœ ํ”„๋กฌํ”„ํŠธ ๊ฒฝ๋กœ ๊ทœ์•ฝ ๋ช…์‹œ ์˜๋ฌด diff --git a/memory/org/feedback_agent_path_boundary.md b/memory/org/feedback_agent_path_boundary.md new file mode 100644 index 0000000..8ad2ba4 --- /dev/null +++ b/memory/org/feedback_agent_path_boundary.md @@ -0,0 +1,39 @@ +--- +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/๋ ˆํฌ ๋ฃจํŠธ์— ์“ธ ์ˆ˜ ์žˆ์Œ. diff --git a/memory/org/feedback_worktree_isolation.md b/memory/org/feedback_worktree_isolation.md new file mode 100644 index 0000000..3f2750f --- /dev/null +++ b/memory/org/feedback_worktree_isolation.md @@ -0,0 +1,39 @@ +--- +name: worktree ๊ฒฉ๋ฆฌ๋กœ ์ธํ•œ ์กฐ์ง ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ ์‹คํŒจ โ€” ์žฌ๋ฐœ ๋ฐฉ์ง€ +description: 2026-04-18 PD๋‹˜ ์กฐ์ง ์ƒ์กด๊ธ‰ ์„ ์–ธ. P25โ†’C34 ์Šน๊ฒฉ + ์ค‘์•™ Junction ๊ทผ์› ํ•ด๊ฒฐ. worktree ๊ฒฝ๊ณ„๋Š” ์‹ค์‹œ๊ฐ„ ๊ณต์œ  ์ฒด๊ณ„์˜ ์ˆจ๊ฒจ์ง„ ๊ฒฝ๊ณ„์ด๋ฏ€๋กœ ์ƒˆ ์ฒด๊ณ„ ์„ค๊ณ„ ์‹œ ์ตœ์šฐ์„  ๊ฒ€ํ†  ๋Œ€์ƒ +type: feedback +originSessionId: 0c3fc143-5c2a-4165-afb1-7becf72eaa0a +--- +# worktree ๊ฒฉ๋ฆฌ๋กœ ์ธํ•œ ์กฐ์ง ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ ์‹คํŒจ + +## ์‹ค์ฆ (2026-04-18) +์„ธ์…˜ A(`tender-liskov-844a72` worktree)์™€ ์„ธ์…˜ B(`nifty-wing-4752bd` worktree)์—์„œ P25 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰. ์„ธ์…˜ B๊ฐ€ `.live/ping.md`์— PING ๋งˆ์ปค ์ž‘์„ฑ ํ›„ ์„ธ์…˜ A์—์„œ hook ์ฃผ์ž… ํ™•์ธ โ†’ **๋ฏธ์ˆ˜์‹ **. ์›์ธ์€ git worktree๊ฐ€ ๊ฐ worktree์— ๋…๋ฆฝ ํŒŒ์ผ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ถ€์—ฌํ•˜๋ฏ€๋กœ `.live/`๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌ๋จ. + +## ์™œ ์ค‘์š”ํ•œ๊ฐ€ (์กฐ์ง ์ƒ์กด๊ธ‰) +PD๋‹˜ ์ง์ ‘ ์„ ์–ธ: **"์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด."** +ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค "์„ธ์…˜ยทPC ์—ฐ์†์„ฑ ๋ณด์žฅ"์˜ ๊ทผ๋ณธ ์œ„ํ˜‘. P25(์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ ์„ ์–ธ)๊ฐ€ ํŠน์ • ์กฐ๊ฑด(๊ฐ™์€ worktree)์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์กฐ์ง ๊ธฐ๋ฐ˜ ์ „์ œ๋ฅผ ํ›ผ์†. + +## ๊ทผ๋ณธ ์›์ธ +`live_inject.sh` hook์ด `git rev-parse --show-toplevel`๋กœ ์–ป์€ ๊ฒฝ๋กœ์˜ `.live/`๋ฅผ ์Šค์บ”ํ•˜๋Š”๋ฐ, ์ด ๋ช…๋ น์€ **worktree๋ณ„๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜**ํ•จ. ๋”ฐ๋ผ์„œ worktree A์™€ B์˜ `.live/`๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์ด๋ฉฐ hook์ด ์ƒํ˜ธ ์ฃผ์ž… ๋ถˆ๊ฐ€. + +## ํ•ด๊ฒฐ (C34 ์‹ ์„ค + ์ค‘์•™ Junction) +1. ์‹ค ์ €์žฅ ๊ฒฝ๋กœ๋ฅผ `$HOME/.claude/nerdnavis-live/`๋กœ ์ค‘์•™ํ™” (PC ๋กœ์ปฌ ๋‹จ์ผ) +2. ๊ฐ worktree์˜ `.live/`๋ฅผ ์ค‘์•™ ๋””๋ ‰ํ† ๋ฆฌ๋กœ Junction(Windows `mklink /J`) / Symlink(Unix `ln -s`) ์—ฐ๊ฒฐ +3. `scripts/live_junction_ensure.sh`๊ฐ€ SessionStart hook ์ฒด์ธ์—์„œ ๋ณด์žฅ (git fetch ์งํ›„ ์ตœ์šฐ์„  ์‚ฝ์ž…) +4. `setup_*` ์Šคํฌ๋ฆฝํŠธ 3.5 ์„น์…˜์—์„œ ์ž๋™ ์„ค์น˜ +5. Sentinel ํŒŒ์ผ `.junction-marker`๋กœ OS-agnostic ํŒ์ • + +## ์žฌ๋ฐœ ๋ฐฉ์ง€ ์ฒดํฌ (์„ธ์…˜ ๋ฆฌ๋” ์˜๋ฌด) +- ์‹  PCยท์‹  worktree ์ฒซ ์„ธ์…˜ ์‹œ `verify_setup.ps1`์˜ 2.5 "Live ์ค‘์•™ ์ €์žฅ์†Œ ์‹ค์ฒดยทreparseยทmarker ๊ฒฝ์œ  ์ฝ๊ธฐ" 3์ถ• ํ†ต๊ณผ ํ™•์ธ +- `.live/`๊ฐ€ ์‹ค์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋‚จ์•„์žˆ์œผ๋ฉด `setup_windows.ps1` ์žฌ์‹คํ–‰ +- ์กฐ์ง ์ „์› ์„ธ์…˜ 1ํšŒ ์žฌ์‹œ์ž‘ ํ•„์ˆ˜ ์•ˆ๋‚ด (C1 ์‚ฌ์ „ ๊ณ ์ง€) +- **์ƒˆ ์กฐ์ง ๊ณต์œ  ์ฒด๊ณ„ ์„ค๊ณ„ ์‹œ worktree ๊ฒฝ๊ณ„ ์กฐ๊ฑด์„ ์ฒซ ๊ฒ€ํ†  ํ•ญ๋ชฉ์— ํฌํ•จ** (๋ณธ ์‚ฌ๊ฑด ์žฌ๋ฐœ ๋ฐฉ์ง€) + +## ์—ฐ๊ด€ +- **C34** (ํ—Œ๋ฒ•๊ธ‰ ๋ณธ ์ฒด๊ณ„ โ€” P25 ์Šน๊ฒฉ) +- **C16-1** (`.live/` junction ์ž๋™ ์—ฐ๊ฒฐ ํŽธ์ž…) +- **feedback_agent_path_boundary.md** (Agent ๊ฒฝ๊ณ„ ๋„˜๊ธฐ 2์ฐจ ์‚ฌ๊ฑด) +- **์กฐ์ง๊ณต์ง€**: `2026-04-18_C34_์‹ ์„ค_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ.md` + +## ๊ตํ›ˆ +**worktree ๊ธฐ๋Šฅ์€ ํŽธ๋ฆฌํ•˜๋‚˜ ์กฐ์ง ๊ณต์œ  ์ฒด๊ณ„์˜ ์ˆจ๊ฒจ์ง„ ๊ฒฝ๊ณ„๋ฅผ ๋งŒ๋“ ๋‹ค.** "๊ฐ™์€ PC = ๊ฐ™์€ ํŒŒ์ผ์‹œ์Šคํ…œ"์ด๋ผ๋Š” ์ง๊ด€์€ worktree ์•ž์—์„œ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ. ์•ž์œผ๋กœ ๊ณต์œ  ์ฒด๊ณ„ ์„ค๊ณ„ ์‹œ "์‹ค ์ €์žฅ = ์ค‘์•™ 1๊ณณ, ์ ‘๊ทผ = junction/symlink"์„ ๊ธฐ๋ณธ ํŒจํ„ด์œผ๋กœ ์ฑ„ํƒ (C16-1 memory junction๊ณผ ๋™์ผ ์›์น™). diff --git a/scripts/live_junction_ensure.sh b/scripts/live_junction_ensure.sh new file mode 100644 index 0000000..6279add --- /dev/null +++ b/scripts/live_junction_ensure.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# SessionStart hook โ€” .live/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ $HOME/.claude/nerdnavis-live/๋กœ junction ๋ณด์žฅ +# worktree ๊ฒฉ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋ชจ๋“  ์„ธ์…˜์ด ๋™์ผํ•œ ์‹ค์ œ .live/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ณต์œ ํ•œ๋‹ค. +# 2026-04-18 ์‹ ์„ค โ€” C34 ํ—Œ๋ฒ•๊ธ‰ Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„์˜ ๊ทผ์› ํ•ด๊ฒฐ ์žฅ์น˜ +# ๊ด€๋ จ ๊ทœ์น™: C34 ยท C16-1 PC ๋…๋ฆฝ ์…‹์—… ยท ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค ์„ธ์…˜ยทPC ์—ฐ์†์„ฑ + +REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) +[ -z "$REPO_ROOT" ] && exit 0 + +CENTRAL_LIVE="$HOME/.claude/nerdnavis-live" +LOCAL_LIVE="$REPO_ROOT/.live" +MARKER_NAME=".junction-marker" + +# 1. ์ค‘์•™ ์ €์žฅ์†Œ + marker ๋ณด์žฅ +mkdir -p "$CENTRAL_LIVE" 2>/dev/null +if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then + echo "nerdnavis-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME" 2>/dev/null +fi + +# 2. ์ด๋ฏธ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ junction ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ์กฐ๊ธฐ ์ข…๋ฃŒ (sentinel ๊ฒฝ์œ  ํŒ์ •) +if [ -f "$LOCAL_LIVE/$MARKER_NAME" ]; then + exit 0 +fi + +# 3. ๋กœ์ปฌ .live/ ๊ฐ€ ์‹ค์ฒด ๋””๋ ‰ํ† ๋ฆฌ์ธ ๊ฒฝ์šฐ โ†’ ๋ฐฑ์—… ํ›„ junction ์ „ํ™˜ (C6-1 ์›๋ณธ ๋ณดํ˜ธ) +if [ -d "$LOCAL_LIVE" ] && [ ! -L "$LOCAL_LIVE" ]; then + BAK="$LOCAL_LIVE.bak-$(date +%Y%m%d%H%M%S)" + # ๊ธฐ์กด ํŒŒ์ผ ์ค‘์•™์œผ๋กœ ๋ณต์‚ฌ (๊ธฐ์กด ์ค‘์•™ ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ ์•ˆ ํ•จ) + for f in "$LOCAL_LIVE"/*.md "$LOCAL_LIVE"/*.json; do + [ -f "$f" ] || continue + BASENAME=$(basename "$f") + [ ! -f "$CENTRAL_LIVE/$BASENAME" ] && cp "$f" "$CENTRAL_LIVE/$BASENAME" 2>/dev/null + done + mv "$LOCAL_LIVE" "$BAK" 2>/dev/null || { echo "โš ๏ธ [Live Junction] ๊ธฐ์กด .live/ ๋ฐฑ์—… ์‹คํŒจ โ€” Degraded ๋ชจ๋“œ" >&2; exit 0; } + echo "๐Ÿ“ฆ [Live Junction] ๊ธฐ์กด .live/ ๋ฐฑ์—…: $BAK" +fi + +# 4. Junction ์ƒ์„ฑ (OS๋ณ„ยท3ํšŒ ์žฌ์‹œ๋„) +ATTEMPT=0 +MAX_ATTEMPTS=3 +while [ "$ATTEMPT" -lt "$MAX_ATTEMPTS" ]; do + ATTEMPT=$((ATTEMPT + 1)) + + if command -v powershell >/dev/null 2>&1; then + # Windows โ€” PowerShell New-Item Junction (git-bash์˜ cmd //c mklink ๋Œ€๋น„ ์‹ ๋ขฐ์„ฑ ์šฐ์œ„, 2026-04-18 ์‹ค์ฆ) + CENTRAL_WIN=$(cygpath -w "$CENTRAL_LIVE" 2>/dev/null || echo "$CENTRAL_LIVE") + LOCAL_WIN=$(cygpath -w "$LOCAL_LIVE" 2>/dev/null || echo "$LOCAL_LIVE") + powershell -NoProfile -ExecutionPolicy Bypass -Command "New-Item -ItemType Junction -Path '$LOCAL_WIN' -Target '$CENTRAL_WIN' -Force | Out-Null" >/dev/null 2>&1 + else + # Unix โ€” symlink + ln -s "$CENTRAL_LIVE" "$LOCAL_LIVE" 2>/dev/null + fi + + if [ -f "$LOCAL_LIVE/$MARKER_NAME" ]; then + [ "$ATTEMPT" -eq 1 ] && echo "โœ… [Live Junction] $LOCAL_LIVE โ†’ $CENTRAL_LIVE" + [ "$ATTEMPT" -gt 1 ] && echo "โœ… [Live Junction] ์—ฐ๊ฒฐ ์„ฑ๊ณต (์žฌ์‹œ๋„ $ATTEMPTํšŒ)" + exit 0 + fi + + sleep 1 +done + +# 5. ์‹คํŒจ โ€” Degraded ๋ชจ๋“œ (์ž‘์—… ์ฐจ๋‹จ ์•ˆ ํ•จ, C34 ๊ธฐ๋ณธ ์›์น™) +mkdir -p "$LOCAL_LIVE" 2>/dev/null +echo "โš ๏ธ [Live Junction] ์ƒ์„ฑ ์‹คํŒจ โ€” Degraded ๋ชจ๋“œ (๋กœ์ปฌ .live/ ์‚ฌ์šฉ). worktree ๊ฐ„ ๋™๊ธฐํ™” ๋ถˆ๊ฐ€" >&2 +echo "โš ๏ธ [Live Junction] ํ•ด๊ฒฐ: ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ setup ์Šคํฌ๋ฆฝํŠธ ์žฌ์‹คํ–‰ ๋˜๋Š” ์ˆ˜๋™ mklink/ln -s ํ•„์š”" >&2 + +exit 0 diff --git a/scripts/verify_setup.ps1 b/scripts/verify_setup.ps1 index a652521..feae6c4 100644 --- a/scripts/verify_setup.ps1 +++ b/scripts/verify_setup.ps1 @@ -120,6 +120,29 @@ if (Test-Path $claudeMemoryBase) { Warn "Claude ๋ฉ”๋ชจ๋ฆฌ ๋ฒ ์ด์Šค" "$claudeMemoryBase ๋ฏธ์กด์žฌ. Claude Code ์ฒซ ์‹คํ–‰ ์ „์ผ ๊ฐ€๋Šฅ์„ฑ" } +# 2.5. Live ์ฆ๋ถ„ ๋™๊ธฐํ™” Junction 3์ถ• ๊ฒ€์ฆ (C34, 2026-04-18 ์‹ ์„ค) +# ์ถ• 1: ์ค‘์•™ ์ €์žฅ์†Œ ์‹ค์ฒด / ์ถ• 2: reparse point / ์ถ• 3: marker ๊ฒฝ์œ  ์ฝ๊ธฐ +$centralLive = Join-Path $env:USERPROFILE ".claude\nerdnavis-live" +$localLive = Join-Path $repoRoot ".live" +$markerName = ".junction-marker" + +Check "Live ์ค‘์•™ ์ €์žฅ์†Œ ์‹ค์ฒด ์กด์žฌ" (Test-Path $centralLive) $centralLive + +if (Test-Path $localLive) { + $liveItem = Get-Item $localLive -Force + $isReparse = ($liveItem.Attributes -band [IO.FileAttributes]::ReparsePoint) -ne 0 + if ($isReparse) { + Check "Live .live/ Junction reparse ์‹ค์ฒด" $true "reparse point OK" + # ์ถ• 3: marker ๊ฒฝ์œ  ์ฝ๊ธฐ (Aโ†’B worktree ๋™๊ธฐํ™” ๊ฐ€๋Šฅ์„ฑ ์‹ค์ฆ) + $markerPath = Join-Path $localLive $markerName + Check "Live Junction marker ๊ฒฝ์œ  ์ฝ๊ธฐ" (Test-Path $markerPath) $markerPath + } else { + Check "Live .live/ Junction reparse ์‹ค์ฒด" $false "์‹ค์ฒด ๋””๋ ‰ํ† ๋ฆฌ (setup ์žฌ์‹คํ–‰ ํ•„์š”)" + } +} else { + Warn "Live .live/ ์กด์žฌ" "$localLive ๋ฏธ์กด์žฌ (์„ธ์…˜ 1ํšŒ ์‹œ์ž‘ ์‹œ hook ์ž๋™ ์ƒ์„ฑ)" +} + # 3. ๊ฒฝ๋กœ ์ถ”์ƒํ™” ์ ์šฉ ์—ฌ๋ถ€ (CLAUDE.md ๊ณ„์—ด์— ๊ตฌ ํ•˜๋“œ์ฝ”๋”ฉ ๊ฒฝ๋กœ ์ž”์กด ํ™•์ธ) $hardcodePatterns = @("C:/Users/PC/Documents", "D:/NerdNavis/FilGoodBandits", "D:/NerdNavis/NerdNavis.Framework") $scanTargets = @( diff --git a/setup/setup_macos.sh b/setup/setup_macos.sh index 1fdeb42..96f2aed 100644 --- a/setup/setup_macos.sh +++ b/setup/setup_macos.sh @@ -59,4 +59,33 @@ if [ -d "$CLAUDE_BASE" ]; then done fi +# 3.5. Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ค‘์•™ ์ €์žฅ์†Œ + Symlink (C34, 2026-04-18 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ) +# worktree ๊ฒฉ๋ฆฌ๋กœ ์ธํ•œ .live/ ๋ฌผ๋ฆฌ ๋ถ„๋ฆฌ ํ•ด๊ฒฐ์„ ์œ„ํ•ด +# $HOME/.claude/nerdnavis-live/ ์ค‘์•™ ๋””๋ ‰ํ† ๋ฆฌ๋กœ symlink ์—ฐ๊ฒฐํ•œ๋‹ค. +CENTRAL_LIVE="$HOME/.claude/nerdnavis-live" +LOCAL_LIVE="$NERDNAVIS_ROOT/.live" +MARKER_NAME=".junction-marker" + +mkdir -p "$CENTRAL_LIVE" +if [ ! -f "$CENTRAL_LIVE/$MARKER_NAME" ]; then + echo "nerdnavis-live central junction target (C34, 2026-04-18)" > "$CENTRAL_LIVE/$MARKER_NAME" +fi + +if [ -L "$LOCAL_LIVE" ]; then + echo "Live symlink ์ด๋ฏธ ์กด์žฌ. ์œ ์ง€: $LOCAL_LIVE" +elif [ -d "$LOCAL_LIVE" ]; then + BAK="$LOCAL_LIVE.bak-$(date +%s)" + for f in "$LOCAL_LIVE"/*.md "$LOCAL_LIVE"/*.json; do + [ -f "$f" ] || continue + DST="$CENTRAL_LIVE/$(basename "$f")" + [ ! -f "$DST" ] && cp "$f" "$DST" + done + mv "$LOCAL_LIVE" "$BAK" + ln -s "$CENTRAL_LIVE" "$LOCAL_LIVE" + echo "Live Symlink ์ƒ์„ฑ: $LOCAL_LIVE -> $CENTRAL_LIVE (๋ฐฑ์—…: $BAK)" +else + ln -s "$CENTRAL_LIVE" "$LOCAL_LIVE" + echo "Live Symlink ์ƒ์„ฑ: $LOCAL_LIVE -> $CENTRAL_LIVE" +fi + echo "์…‹์—… ์™„๋ฃŒ." diff --git a/setup/setup_windows.ps1 b/setup/setup_windows.ps1 index e8840d2..aa88978 100644 --- a/setup/setup_windows.ps1 +++ b/setup/setup_windows.ps1 @@ -110,6 +110,48 @@ if ($hashDirs.Count -eq 0) { Write-Warning "Claude ํ”„๋กœ์ ํŠธ ํ•ด์‹œ ํด๋”๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™ ์—ฐ๊ฒฐ ํ•„์š”." } +# 3.5. Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ค‘์•™ ์ €์žฅ์†Œ + Junction (C34, 2026-04-18 PD๋‹˜ ์ง์ ‘ ์ง€์‹œ) +# worktree ๊ฒฉ๋ฆฌ๋กœ ์ธํ•œ .live/ ๋ฌผ๋ฆฌ ๋ถ„๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด +# $HOME\.claude\nerdnavis-live\ ์ค‘์•™ ๋””๋ ‰ํ† ๋ฆฌ๋กœ junction ์—ฐ๊ฒฐํ•œ๋‹ค. +# ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค ์„ธ์…˜ยทPC ์—ฐ์†์„ฑ์˜ ๊ทผ์› ๋ณด์žฅ ์žฅ์น˜. +$centralLive = Join-Path $env:USERPROFILE ".claude\nerdnavis-live" +$localLive = Join-Path $NerdNavisRoot ".live" +$markerName = ".junction-marker" +$markerText = "nerdnavis-live central junction target (C34, 2026-04-18)" + +if (-not (Test-Path $centralLive)) { + New-Item -ItemType Directory -Path $centralLive -Force | Out-Null + Write-Host "Live ์ค‘์•™ ์ €์žฅ์†Œ ์ƒ์„ฑ: $centralLive" +} + +$centralMarker = Join-Path $centralLive $markerName +if (-not (Test-Path $centralMarker)) { + [System.IO.File]::WriteAllText($centralMarker, $markerText, [System.Text.UTF8Encoding]::new($false)) +} + +if (Test-Path $localLive) { + $liveItem = Get-Item $localLive -Force + $isReparse = ($liveItem.Attributes -band [IO.FileAttributes]::ReparsePoint) -ne 0 + if (-not $isReparse) { + # ์‹ค์ฒด ๋””๋ ‰ํ† ๋ฆฌ โ€” ๋ฐฑ์—… ํ›„ junction ์ „ํ™˜ (C6-1 ์›๋ณธ ๋ณดํ˜ธ) + $bak = "$localLive.bak-$(Get-Date -Format yyyyMMddHHmmss)" + # ๊ธฐ์กด ํŒŒ์ผ ์ค‘์•™์œผ๋กœ ๋ณต์‚ฌ (๊ธฐ์กด ์ค‘์•™ ํŒŒ์ผ ๋ฎ์–ด์“ฐ๊ธฐ ์•ˆ ํ•จ) + Get-ChildItem $localLive -File -ErrorAction SilentlyContinue | ForEach-Object { + $dst = Join-Path $centralLive $_.Name + if (-not (Test-Path $dst)) { Copy-Item $_.FullName $dst -Force } + } + Rename-Item $localLive $bak + Write-Host "๊ธฐ์กด .live/ ๋ฐฑ์—…: $bak" + New-Item -ItemType Junction -Path $localLive -Target $centralLive -Force | Out-Null + Write-Host "Live Junction ์ƒ์„ฑ: $localLive -> $centralLive" + } else { + Write-Host "Live Junction ์ด๋ฏธ ์กด์žฌ. ์œ ์ง€: $localLive" + } +} else { + New-Item -ItemType Junction -Path $localLive -Target $centralLive -Force | Out-Null + Write-Host "Live Junction ์ƒ์„ฑ: $localLive -> $centralLive" +} + # 4. .claude/settings.json ๋ถ€์„œ ๋™๊ธฐํ™” (๋ฃจํŠธ SOT โ†’ ๊ฐœ๋ฐœํŒ€/๊ธฐํšํŒ€ ๋ณต์ œ) # Claude Code๋Š” .claude/ ๊ณ„์ธต auto-merge๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ž์‹ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์„ธ์…˜ ์‹œ์ž‘ ์‹œ # ๋ฃจํŠธ settings.json์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•จ. ์ด๋ฅผ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ๋ฃจํŠธ settings.json์„ ๋ถ€์„œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์ œ. diff --git a/๊ณต์œ /PD_์ง€์‹œ_ํŠธ๋ž˜ํ‚น/๊ฐœ๋ฐœํŒ€_PD_์ง€์‹œ_๋กœ๊ทธ.md b/๊ณต์œ /PD_์ง€์‹œ_ํŠธ๋ž˜ํ‚น/๊ฐœ๋ฐœํŒ€_PD_์ง€์‹œ_๋กœ๊ทธ.md index 33c63e7..7d7d8ab 100644 --- a/๊ณต์œ /PD_์ง€์‹œ_ํŠธ๋ž˜ํ‚น/๊ฐœ๋ฐœํŒ€_PD_์ง€์‹œ_๋กœ๊ทธ.md +++ b/๊ณต์œ /PD_์ง€์‹œ_ํŠธ๋ž˜ํ‚น/๊ฐœ๋ฐœํŒ€_PD_์ง€์‹œ_๋กœ๊ทธ.md @@ -33,6 +33,7 @@ C3ยทC13 ์œ„๋ฐ˜์— ํ•ด๋‹น. **์ฆ‰์‹œ ์ž์ง„ ๋ณด๊ณ  ํ›„ ์†Œ๊ธ‰ ๋“ฑ๋ก**. |---|------|----------|----------|-----------|----------|----------| | 2 | 2026-04-14 | ์„œ๋ฒ„ Critical ๋ณด์•ˆ 3๊ฑด ๋ณด๋ฅ˜ | ๋ณด๋ฅ˜ | `ํ”„๋กœ์ ํŠธ/์ˆ˜์ƒํ•œ์žกํ™”์ /๊ฐœ๋ฐœ/05_์„œ๋ฒ„์—ฐ๋™_ํ˜„ํ™ฉ_v1.md` | ์„œ๋ฒ„ ํŒŒํŠธ ์ •๋น„ ๋ฏธ์™„๋ฃŒ (PD๋‹˜ ์ง€์‹œ) | ์„œ๋ฒ„ํŒ€ ๊ฐ€๋™ ์‹œ์ ์— ๋ธ”๋กœ์ปค๊ธ‰ ์žฌ๊ฐœ. ๋‹ด๋‹น: ์„œ๋ฒ„ํŒ€์žฅ. ์žฌ๊ฐœ ํŠธ๋ฆฌ๊ฑฐ: ์„œ๋ฒ„ ํŒŒํŠธ ์ •๋น„ ์™„๋ฃŒ ํ†ต๋ณด | | 38 | 2026-04-17 | (#28 ํ›„์† ๋ถ„๋ฆฌ) Phase 3 ์žฌ๊ฐœ ๋กœ๋“œ๋งต ๊ฒฐ์ • โ€” Unity MCP ๋‹จ์ผ์ถ• ๊ธฐ๋ฐ˜ ๋ฐธ๋Ÿฐ์Šค ์ž‘์—… ์žฌ๊ฐœ ๋ฒ”์œ„ยท์„ ํ›„๊ด€๊ณ„ยท๊ฒ€์ฆ ์ถ• ํ™•์ • | ๋ณด๋ฅ˜ | (๋กœ๋“œ๋งต ํ™•์ • ์‹œ ๊ธฐ์ž…) | PD๋‹˜ ๋ณ„๋„ ๋…ผ์˜ ์˜ˆ์ • | ์žฌ๊ฐœ ํŠธ๋ฆฌ๊ฑฐ: PD๋‹˜ Phase 3 ์žฌ๊ฐœ ์ง€์‹œ ์ˆ˜๋ น. ๊ธฐํšํŒ€ #3 ๋™์‹œ ์žฌ๊ฐœ | +| 39 | 2026-04-18 | (PD๋‹˜ ์กฐ์ง ์ƒ์กด๊ธ‰ ์„ ์–ธ ยท PM ๊ฒฝ์œ ) **C34 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ ์‹ ์„ค โ€” worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ (P25 ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ)**. PD๋‹˜ ์ง์ ‘ ํ‘œํ˜„: "์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด" ยท "์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•ด์„œ ๊ด€๋ จ ๋ฌธ์„œ์— ์ผ๊ด„ ๋ฐ˜์˜ํ•˜๊ณ  ์žฌ๋ฐœ๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด" | **์™„๋ฃŒ** | (10์ข… ์ผ๊ด„) SKILL.md C34 ์‹ ์„ค + P25 ๋ณธ๋ฌธ ์‚ญ์ œ + C16-1 ๋ณด๊ฐ• + C31-1-E ๊ฐฑ์‹  ยท CLAUDE.md ์š”์•ฝ 6๊ฑด ๊ฐฑ์‹  ยท `scripts/live_junction_ensure.sh` ์‹ ๊ทœ ยท `setup/setup_windows.ps1`ยท`setup/setup_macos.sh`ยท`scripts/verify_setup.ps1` ํ™•์žฅ ยท `.claude/settings.json`ยท`.gitignore` ๊ฐฑ์‹  ยท `๊ณต์œ /์กฐ์ง๊ณต์ง€/2026-04-18_C34_์‹ ์„ค_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ.md` ์‹ ์„ค ยท `๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md` ยง13 ์Šน๊ฒฉ ๊ธฐ๋ก ยท `๊ณต์œ /์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/2026-04-18_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ_์‹ค๋ฌด๊ฒ€ํ† .md` ์‹ค๋ฌด ๊ฒ€ํ† ์„œ ยท `memory/org/feedback_worktree_isolation.md`ยท`feedback_agent_path_boundary.md` ์‹ ์„ค + MEMORY.md ์ธ๋ฑ์Šค ยท `๊ณต์œ /๋Œ€ํ™”๋กœ๊ทธ/์กฐ์ง์šด์˜/2026-04-18.md` 2์—”ํŠธ๋ฆฌ (๊ฐœ๋ฐœํŒ€์žฅ + PM ์ง‘ํ–‰) | - | ์กฐ์ง ์ „์› ์„ธ์…˜ 1ํšŒ ์žฌ์‹œ์ž‘ ์•ˆ๋‚ด (C1 ์‚ฌ์ „ ๊ณ ์ง€) + 1์ฃผ์ผ ๊ด€์ฐฐ ํ›„ `.live.bak-*` ์ •๋ฆฌ ๊ณต์ง€ | > **2026-04-15 ์˜คํ›„ ์ถ”๊ฐ€ ๊ฐฑ์‹  (C4ยทC13 ์œ„๋ฐ˜ ์ž์ง„ ์ •์ • 2์ฐจ)**: > #5๋ฒˆ ์‹ ๊ทœ ๋“ฑ์žฌ. PD๋‹˜ 3๋Œ€ ์ง€์‹œ(A/B/C) ๋ฐ #1 ์‚ฐ์ถœ๋ฌผ ๊ฒฝ๋กœ์— Framework Tier 1 ๊ตฌํ˜„์ฒด(`D:/NerdNavis/NerdNavis.Framework/`)๋ฅผ ์†Œ๊ธ‰ ๋“ฑ๋ก. **B ์ฐฉ์ˆ˜ ์‹œ์  ๋ฐ Git ๋™๊ธฐํ™” ๋ณ‘๋ ฌ ์ง€์‹œ(#4) ์ฐฉ์ˆ˜ ์‹œ์ ์— ์ด๊ด„PM ๊ณต์œ ๋ฅผ ๋ˆ„๋ฝ**ํ•œ ๊ฑด์„ PD๋‹˜์ด ์ง์ ‘ ์ง€์ ํ•˜์—ฌ ์ฆ‰์‹œ ์ •์ •. ๊ทผ๋ณธ ์›์ธ: "C ํ•ญ๋ชฉ ์ง„ํ–‰ ์ „ ์ง€์‹œ ๋Œ€๊ธฐ" ์ง€์‹œ๋ฅผ ๋ณธ์ธ์ด **PM ๊ณต์œ  ์ „์ฒด ๋ณด๋ฅ˜**๋กœ ์ž˜๋ชป ํ™•๋Œ€ ํ•ด์„. C4(์ด๊ด„PM ํ•˜๋‹ฌ)ยทC13(4๋‹จ๊ณ„ ๊ฐ€์‹œํ™”)์˜ "์ž‘์—… ์ฐฉ์ˆ˜ ์‹œ์ =์ƒ์‹œ ๊ณต์œ  ์˜๋ฌด" ์›์น™์„ ๊ฑฐ์Šค๋ฅธ ๊ฒƒ. ์žฌ๋ฐœ ๋ฐฉ์ง€ ๊ด€๋ก€: **์‹ ๊ทœ ํŠธ๋ž™ ์ฐฉ์ˆ˜ ์ฆ‰์‹œ pm-general ๊ณต์œ  โ†’ TodoWrite ํ•ญ๋ชฉ ์ƒ์„ฑ** (์ด๊ด„PM ์ฑ„ํƒ ๊ถŒ๊ณ ). ์ž์ฒด ๊ฒฝ์œ„๋Š” `๊ณต์œ /์ผ์ผ๋ณด๊ณ /2026-04-15_๊ฐœ๋ฐœํŒ€.md` ์˜คํ›„ ์„น์…˜ ์ฐธ์กฐ. diff --git a/๊ณต์œ /๋Œ€ํ™”๋กœ๊ทธ/์กฐ์ง์šด์˜/2026-04-18.md b/๊ณต์œ /๋Œ€ํ™”๋กœ๊ทธ/์กฐ์ง์šด์˜/2026-04-18.md index 639ff2c..62d17e9 100644 --- a/๊ณต์œ /๋Œ€ํ™”๋กœ๊ทธ/์กฐ์ง์šด์˜/2026-04-18.md +++ b/๊ณต์œ /๋Œ€ํ™”๋กœ๊ทธ/์กฐ์ง์šด์˜/2026-04-18.md @@ -610,3 +610,99 @@ - **(์•ˆ ๋‚˜)** PM ์—ญํ•  ์žฌ๊ฒ€ํ†  ๊ตฌ์ฒด ์ ˆ์ฐจ ์ฆ‰์‹œ ์ฐฉ์ˆ˜ - **(์•ˆ ๋‹ค)** ํ˜„ํ–‰ ์œ ์ง€ + 6ํšŒ์ฐจ ๋ฐœ์ƒ ์‹œ ์ฒ˜๋ถ„ - **์ƒํƒœ**: ์™„๋ฃŒ. ์„ธ์…˜ ๊ณต์œ  ๋Œ€๊ธฐ + + +## [๊ฐœ๋ฐœํŒ€์žฅ] worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ์•ˆ ์‹ค๋ฌด ๊ฒ€ํ†  โ€” ์ค‘์•™ `.live/` Junction ์ฒด๊ณ„ + +- **์š”์ง€**: PD๋‹˜ ์กฐ์ง ์ƒ์กด๊ธ‰ ์„ ์–ธ "์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด" ยท "๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด" ์ˆ˜๋ น. Claude Code ์ž๋™ ์ƒ์„ฑ worktree๊ฐ€ `.live/`๋ฅผ ๋ฌผ๋ฆฌ ๊ฒฉ๋ฆฌํ•˜์—ฌ P25 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ ๋ฌด๋ ฅํ™”. PM 1์ฐจ ์„ค๊ณ„์•ˆ(Junction ๊ธฐ๋ฐ˜ ์ค‘์•™ `.live/`) ์‹ค๋ฌด ๊ฒ€ํ†  ์™„๊ฒฐ +- **๊ฒฐ์ •**: **PM 1์ฐจ ์„ค๊ณ„์•ˆ ์›์น™ ์Šน์ธ ๊ถŒ๊ณ  + 7๊ฐœ ์—ฃ์ง€ ์ผ€์ด์Šค ๋ณด์™„ ์ถ”๊ฐ€** + - ์‹ค ์ €์žฅ: `$HOME/.claude/nerdnavis-live/` (C16-1 memory junction ํŒจํ„ด ๋™ํ˜• ์žฌ์‚ฌ์šฉ) + - Hook ๋กœ์ง **๋ฌด๋ณ€๊ฒฝ** (`REPO_ROOT/.live` ๊ฒฝ๋กœ ๊ทธ๋Œ€๋กœ, junction ํˆฌ๋ช… ๊ฒฝ์œ ) + - Setup ์Šคํฌ๋ฆฝํŠธ ํ™•์žฅ: `setup_windows.ps1`ยท`setup_macos.sh`์— junction ์„ค์น˜ + ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋กœ์ง ์•ฝ 50~60์ค„ + - ์‹ ๊ทœ `scripts/live_junction_ensure.sh` โ€” SessionStart hook์ด Claude Code ์ž๋™ ์ƒ์„ฑ worktree์—์„œ๋„ ์ฒซ ํ”„๋กฌํ”„ํŠธ ์ „ junction ์„ค์น˜ ๋ณด์žฅ + - `verify_setup.ps1` 3์ถ• ๊ฒ€์ฆ ํ™•์žฅ โ€” reparse point ์‹ค์ฒด + Aโ†’B worktree ์‹ค์ œ ์“ฐ๊ธฐ/์ฝ๊ธฐ ํ…Œ์ŠคํŠธ + - Junction ์ƒ์„ฑ ์‹คํŒจ ์‹œ **degraded ์šด์˜ + ์กฐ์ง๊ณต์ง€ ์ž๋™ ๋ฐœํ–‰** (์ž‘์—… ์ฐจ๋‹จ ๋ฐ˜๋Œ€) +- **๊ทผ๊ฑฐ** (์‹ค์ธก tool_use): + 1. `git worktree list` = 3๊ฒฝ๋กœ(mainยทnifty-wingยทtender-liskov) ๋ชจ๋‘ ๋™์ผ HEAD + 2. nifty-wing `.live/ping.md` ์กด์žฌ, ๋ณธ worktree `.live/`์—๋Š” `README.md`๋งŒ ์กด์žฌ โ€” 100% ๊ฒฉ๋ฆฌ ํ™•์ธ + 3. `live_inject.sh` L6: `REPO_ROOT=$(git rev-parse --show-toplevel)` โ€” worktree ๋‚ด๋ถ€์—์„œ ๊ฐ worktree ๋ฃจํŠธ ๋ฐ˜ํ™˜์ด ์›์ธ + 4. `~/.claude/.nerdnavis_bus/`ยท`~/.claude/.nerdnavis_throttle/`ยท`memory/org/` junction์€ **์ด๋ฏธ HOME ๊ธฐ๋ฐ˜ ์ค‘์•™ํ™”** โ†’ `.live/`๋งŒ ๋น„๋Œ€์นญ ๋ฌธ์ œ + 5. Windows `mklink /J`๋Š” ๊ด€๋ฆฌ์žยท๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ๋ถˆ์š” โ€” setup_windows.ps1 99ยท104ํ–‰์ด ์ด๋ฏธ ๋™์ผ ๋ฐฉ์‹ memory junction ์ƒ์„ฑ ์ค‘ (์กฐ์ง ๊ฒ€์ฆ ์™„๋ฃŒ) +- **์˜ํ–ฅ**: + - **๊ธ์ •**: P25 ๐Ÿ† ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ ์™„์ „ ๋ณต์› + ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค ๋ณดํ˜ธ + C16-1 ํŒจํ„ด ์ผ๊ด€์„ฑ ํšŒ๋ณต + ์ฐจ๊ธฐ ํ”„๋กœ์ ํŠธ ์žฌํ™œ์šฉ ๊ฐ€๋Šฅ (P29 ๊ณ„์Šน) + - **์šด์˜ ๋ณ€๊ฒฝ**: ์กฐ์ง ์ „์› ์„ธ์…˜ ์žฌ์‹œ์ž‘ + setup ์žฌ์‹คํ–‰ 1ํšŒ ํ•„์š” (C1 ์‚ฌ์ „ ์•ˆ๋‚ด ๊ทœ์ • ์ค€์ˆ˜) + - **์—ญํ˜ธํ™˜**: junction ๋ฏธ์„ค์น˜ worktree๋Š” ๊ธฐ์กด๋Œ€๋กœ (๊ฒฉ๋ฆฌ) ๋™์ž‘ โ€” ์ ์ง„ ์ „ํ™˜ยท๋กค๋ฐฑ ๊ฐ€๋Šฅ +- **๊ธฐ๊ฐ์•ˆ**: + 1. **`.live/`๋ฅผ git-tracked๋กœ ์ „ํ™˜** โ€” ์„ธ์…˜๋ณ„ commit ํญ์ฆยทmerge conflict ์ƒ์‹œ ๋ฐœ์ƒ. P25์˜ "๋„คํŠธ์›Œํฌ ๋น„์šฉ 0" ๋ณธ์งˆ ํŒŒ๊ดด. ๊ธฐ๊ฐ + 2. **Hook์˜ `REPO_ROOT` ๋Œ€์‹  ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ** โ€” C16 PC ๋…๋ฆฝ์„ฑ ํ›ผ์†. paths.local.json ์›์น™ ์—ญํ–‰. ๊ธฐ๊ฐ + 3. **Worktree ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์ค‘๋‹จ ์ œ์•ˆ** โ€” Claude Code ๋‚ด๋ถ€ ๋™์ž‘์ด๋ผ ์กฐ์ง์ด ์ œ์–ด ๋ถˆ๊ฐ€. ๊ธฐ๊ฐ + 4. **SessionStart junction ๊ฒ€์ฆ ์‹คํŒจ ์‹œ ์ž‘์—… ์ฐจ๋‹จ** โ€” ์กฐ์ง ์ƒ์กด ํ•ด๊ฒฐ์ด ๋ชฉ์ ์ธ ๋ณ€๊ฒฝ์ด ๋˜ ๋‹ค๋ฅธ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜ ์œ ๋ฐœ ์—ญ์„ค. degraded + ์ž์ง„ ๋ณด๊ณ ๊ฐ€ ์šฐ์›”. ๊ธฐ๊ฐ + 5. **`.live/README.md`๋ฅผ gitignore๋กœ ์ „ํ™˜** โ€” ํ˜„์žฌ tracked ์ƒํƒœ๊ฐ€ ์กฐ์ง ์ž์‚ฐ ๋ฌธ์„œ ์—ญํ• . ๊ฒ€์ฆ ํ›„ ๋ฌธ์ œ ์—†์Œ ํ™•์ธ ์‹œ ์œ ์ง€ (ยง7.3 ์‹ค์ฆ). ๊ธฐ๊ฐ + 6. **์ค‘์•™ ์ €์žฅ์†Œ๋ฅผ `$NERDNAVIS_ROOT/.nerdnavis-live/`(๋ ˆํฌ ๋ฃจํŠธ ํ•˜์œ„)์— ๋ฐฐ์น˜** โ€” worktree ์™ธ๋ถ€๊ธด ํ•˜๋‚˜ ๋ ˆํฌ ๊ณต์œ  ์‹œ ๋‹ค๋ฅธ PC์— ๋…ธ์ถœ๋˜๋Š” ๊ฒฝ๋กœ โ†’ HOME ์›์น™ ํฌ๊ธฐ. ๊ธฐ๊ฐ + 7. **ํŒŒ์ผ ๋‹จ์œ„ hard link (`/H`) ๋Œ€์‹ ** โ€” `.live/`๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๋Œ€์ƒ์ด๋ฏ€๋กœ ๊ธฐ์ˆ  ๋ถˆ์ผ์น˜. ๊ธฐ๊ฐ +- **์‚ฐ์ถœ๋ฌผ**: + 1. `๊ณต์œ /์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/2026-04-18_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ_์‹ค๋ฌด๊ฒ€ํ† .md` โ€” ์ •๊ทœ ์‹ค๋ฌด ๊ฒ€ํ†  ๋ณด๊ณ ์„œ (11๊ฐœ ์„น์…˜, OS ์ƒ์„ธยท์—ฃ์ง€ ์ผ€์ด์Šค 7์ข…ยทํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค 10์ข… ํฌํ•จ) + 2. ๋ณธ ๋Œ€ํ™”๋กœ๊ทธ ์—”ํŠธ๋ฆฌ (append) + 3. `๊ณต์œ /PD_์ง€์‹œ_ํŠธ๋ž˜ํ‚น/๊ฐœ๋ฐœํŒ€_PD_์ง€์‹œ_๋กœ๊ทธ.md` #39 ์‹ ๊ทœ ๋“ฑ๋ก (์ง„ํ–‰์ค‘) +- **๊ฒ€์ฆ**: + - C23 ์ •์ง์„ฑ: ๋ชจ๋“  ์ฃผ์žฅ ์‹ค์ œ tool_use ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜. ๋ฏธํ™•์ธ ์‚ฌํ•ญ์€ ยง5.2ยทยง7.3์— ๋ช…์‹œ + - C31 ์ž๊ธฐ๊ฒ€์ฆ 10ํ•ญ ํ†ต๊ณผ (ยง10) + - C11 ๊ฐœ๋ฐœ ๊ด€์  ์›์น™ 3์ข…(์ž์› ํšจ์œจ์„ฑยท์ฝ”๋“œ ๊ตฌ์กฐ ์ง๊ด€์„ฑยท๋ฒ”์šฉ์„ฑ) ์ถฉ์กฑ ํ™•์ธ (ยง8) + - ํ—Œ๋ฒ• ์ œ1์›์น™ 5๊ฐœ ์ค‘ โ‘กยทโ‘ขยทโ‘ค ์ง์ ‘ ๊ธฐ์—ฌ (ยง9) +- **PM ์•ˆ๊ฑด**: + 1. PM ๊ฒ€ํ†  โ†’ **C20 ์žฌ๋Ÿ‰ ๋ฒ”์œ„ ๋‚ด ํŒ๋‹จ ์‹œ ์ฆ‰์‹œ ์ง‘ํ–‰** (์ฝ”์–ด๋ฃฐ ์‹ ์„ค ์•„๋‹˜, ์šด์˜ ์Šคํฌ๋ฆฝํŠธ + ์กฐ์ง๊ณต์ง€). ์ง‘ํ–‰ ์‹œ ์กฐ์ง ์ „์› ์„ธ์…˜ ์žฌ์‹œ์ž‘ ์•ˆ๋‚ด ํ•„์ˆ˜ + 2. PD๋‹˜ ์ตœ์ข… ์Šน์ธ ํ•„์š” ํŒ๋‹จ ์‹œ โ€” ๋ณธ ๊ฒ€ํ† ์„œ๋ฅผ ์ฒจ๋ถ€ํ•ด ๊ฐ„๊ฒฐ ์•ˆ๊ฑดํ™” + 3. ์ง‘ํ–‰ ์™„๋ฃŒ ํ›„ PD ์ง€์‹œ ๋กœ๊ทธ #39 โ†’ `์™„๋ฃŒ` ๊ฐฑ์‹  (C27) +- **์ƒํƒœ**: ์‹ค๋ฌด ๊ฒ€ํ†  ์™„๋ฃŒ. PM ์ˆ˜๋ น ๋Œ€๊ธฐ + + +## [PM ์ง‘ํ–‰ ์™„๋ฃŒ] C34 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ ์‹ ์„ค + worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ (10์ข… ์ผ๊ด„) + +- **์š”์ง€**: ๊ฐœ๋ฐœํŒ€์žฅ ์‹ค๋ฌด ๊ฒ€ํ†  ์ˆ˜๋ น ํ›„ PM์ด **10์ข… ์ผ๊ด„ ์ง‘ํ–‰ ์™„๋ฃŒ**. C34 ํ—Œ๋ฒ•๊ธ‰ ์‹ ์„ค(P25 ์Šน๊ฒฉ + ์ค‘์•™ Junction + Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ) + ์Šคํฌ๋ฆฝํŠธ 5์ข… + ์„ค์ • 2์ข… + ๊ทœ์น™ 3์ข… + ์•„์นด์ด๋ธŒยท๊ณต์ง€ยท๋ฉ”๋ชจ๋ฆฌ 6์ข…. +- **์ด์œ  (PD๋‹˜ ์กฐ์ง ์ƒ์กด๊ธ‰ ์„ ์–ธ)**: "์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด" ยท "์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•ด์„œ ๊ด€๋ จ ๋ฌธ์„œ์— ์ผ๊ด„ ๋ฐ˜์˜ํ•˜๊ณ  ์žฌ๋ฐœ๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด". ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค(์„ธ์…˜ยทPC ์—ฐ์†์„ฑ) ๊ทผ๋ณธ ์œ„ํ˜‘ ํŒ์ •. +- **์ง‘ํ–‰ 10์ข…**: + 1. **C34 ์‹ ์„ค** โ€” `SKILL.md` ๋ง๋ฏธ์— 14๊ฐœ ํ•˜์œ„ ์กฐํ•ญ (C34-1 ๊ฐœ์š” ยท C34-2 ๊ฒฝ๊ณ„ ยท C34-3 ์ค‘์•™ ์ €์žฅ์†Œ ยท C34-4 ๋Œ€์ƒ ยท C34-5 ์ ˆ์ฐจ ยท C34-6 ์ฆ๋ถ„ ยท C34-7 Agent ๊ฒฝ๋กœ ๊ทœ์•ฝ ยท C34-8 Write ๊ถŒํ•œ ยท C34-9 ์„ธ์…˜ ๊ณต์œ  ยท C34-10 C14 ยท C34-11 Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ ยท C34-12 Degraded ยท C34-13 ์—ฐ๊ด€ ยท C34-14 ๊ฒฉ์ƒ ๊ฒฝ์œ„) + 2. **P25 ๋ณธ๋ฌธ ์™„์ „ ์‚ญ์ œ** โ€” C14-5-ํ™•์žฅ ๊ทœ์ค€. ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ํ—ˆ์šฉ + 3. **C16-1 ๋ณด๊ฐ•** โ€” `.live/` junction ์ž๋™ ์—ฐ๊ฒฐ 1์ค„ ํŽธ์ž… + 4. **C31-1-E ๊ฐฑ์‹ ** โ€” "P25" โ†’ "C34" ํ‘œ๊ธฐ ๊ฐฑ์‹  + 5. **`scripts/live_junction_ensure.sh`** ์‹ ๊ทœ (SessionStart hook ์ตœ์šฐ์„  ์‚ฝ์ž…, 68์ค„, sentinel ํŒ์ • + 3ํšŒ ์žฌ์‹œ๋„ + Degraded fallback) + 6. **`setup_windows.ps1` 3.5 ์„น์…˜** ์ถ”๊ฐ€ (Junction + ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜) + 7. **`setup_macos.sh` 3.5 ์„น์…˜** ์ถ”๊ฐ€ (Symlink + ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜) + 8. **`verify_setup.ps1` 2.5 ์„น์…˜** ์ถ”๊ฐ€ (3์ถ• ๊ฒ€์ฆ) + 9. **`.claude/settings.json`** SessionStart hook ์ฒด์ธ์— `live_junction_ensure.sh` ์ตœ์šฐ์„  ์‚ฝ์ž… + **`.gitignore`** `.live/*` ์ œ์™ธ + README.mdยท๋ฐฑ์—… ์ฒ˜๋ฆฌ + 10. **CLAUDE.md** ํ•ต์‹ฌ ๊ทœ์น™ ์š”์•ฝ 28โ†’29 + C34 ์ถ”๊ฐ€, ํ”„๋กœ์ ํŠธ ๊ทœ์น™ ์š”์•ฝ 25โ†’24 + P25 ์ œ๊ฑฐ, ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ๋ชฉ๋ก ํ™•์žฅ. **SKILL.md ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ ์„น์…˜** "P25"โ†’"C34" ํ‘œ๊ธฐ ๊ฐฑ์‹  +- **์•„์นด์ด๋ธŒยท๊ณต์ง€ยท๋ฉ”๋ชจ๋ฆฌ 6์ข… ๋ณ‘ํ–‰**: + - `๊ณต์œ /์กฐ์ง๊ณต์ง€/2026-04-18_C34_์‹ ์„ค_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ.md` ์‹ ์„ค + - `๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md` ยง13 P25โ†’C34 ์Šน๊ฒฉ 6ํ•„๋“œ ๊ธฐ๋ก + - `memory/org/feedback_worktree_isolation.md` ์‹ ์„ค (1์ฐจ ์‚ฌ๊ฑด) + - `memory/org/feedback_agent_path_boundary.md` ์‹ ์„ค (2์ฐจ ์‚ฌ๊ฑด: Agent ๊ฒฝ๊ณ„ ๋„˜๊ธฐ) + - `memory/org/MEMORY.md` ์ธ๋ฑ์Šค 2๊ฑด ์ถ”๊ฐ€ + - ๋ณธ ๋Œ€ํ™”๋กœ๊ทธ ์—”ํŠธ๋ฆฌ +- **์ถ”๊ฐ€ ์‚ฌ๊ฑด ์ž์ง„ ๋ณด๊ณ  โ€” Agent ๊ฒฝ๊ณ„ ๋„˜๊ธฐ 2์ฐจ ์‹ค์ฆ (C3ยทC23)**: + - ๊ฐœ๋ฐœํŒ€์žฅ Agent๊ฐ€ ์‚ฐ์ถœ๋ฌผ ๊ฒฝ๋กœ์— **์ ˆ๋Œ€ ๊ฒฝ๋กœ `E:\NerdNavisAi\๊ณต์œ \...`**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Write โ†’ **๋ ˆํฌ ๋ฃจํŠธ(main ๋ธŒ๋žœ์น˜ ์ฒดํฌ์•„์›ƒ)์— uncommitted ๋ณ€๊ฒฝ 3๊ฑด ์œ ์ถœ** + - `git -C "E:/NerdNavisAi" status` ํ™•์ธ์œผ๋กœ ๋ฐœ๊ฒฌ. ๋ณธ worktree์™€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ + - **๋ณต๊ตฌ**: `git -C "E:/NerdNavisAi" stash push -u -- ๊ณต์œ /` โ†’ ๋ณธ worktree `git stash pop`์œผ๋กœ conflict ์—†์ด ์ด๊ด€ (๋‘ ๋ธŒ๋žœ์น˜ ๋ชจ๋‘ `5085c56` ๊ธฐ๋ฐ˜์ด๋ผ base ์ผ์น˜) + - **์žฌ๋ฐœ ๋ฐฉ์ง€**: C34-11 ์กฐํ•ญ ๋ช…๋ฌธํ™” + `feedback_agent_path_boundary.md` + Agent ํ˜ธ์ถœ ํ”„๋กฌํ”„ํŠธ์— ๊ฒฝ๋กœ ๊ทœ์•ฝ ๋ช…์‹œ ์˜๋ฌด +- **๊ทผ๊ฑฐ (์‹ค์ธก tool_use)**: + 1. `git worktree list`: main ยท nifty-wing ยท tender-liskov 3๊ฒฝ๋กœ ๋ถ„๋ฆฌ ํ™•์ธ + 2. ์„ธ์…˜ B `.live/ping.md` ์ž‘์„ฑ ํ›„ ๋ณธ worktree hook ๋ฏธ์ฃผ์ž… ์‹ค์ฆ (1์ฐจ ์‚ฌ๊ฑด) + 3. ๊ฐœ๋ฐœํŒ€์žฅ Agent ์‚ฐ์ถœ๋ฌผ์ด `๊ณต์œ /์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/`์— ์—†์Œ โ†’ ๋ ˆํฌ ๋ฃจํŠธ์— ๋ฐœ๊ฒฌ (2์ฐจ ์‚ฌ๊ฑด) + 4. `stash push + pop` ํ›„ ๋ณธ worktree clean + ๋ ˆํฌ ๋ฃจํŠธ clean ์–‘์ธก ๊ฒ€์ฆ + 5. SKILL.md Grep์œผ๋กœ P25 ์„น์…˜ ์œ„์น˜ยทC31-1-E ๋ณธ๋ฌธยทC16-1 ๋ณธ๋ฌธ ์‚ฌ์ „ ํ™•์ธ ํ›„ Edit +- **์˜ํ–ฅ**: + - **๊ธ์ •**: P25 ๐Ÿ† ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ ์™„์ „ ๋ณต์› + ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค ๋ณดํ˜ธ + C16-1 patterns ์ผ๊ด€์„ฑ ํšŒ๋ณต + ์ฐจ๊ธฐ ํ”„๋กœ์ ํŠธ ์žฌํ™œ์šฉ (P29 ๊ณ„์Šน) + Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ ์‹ ๊ทœ ์กฐํ•ญ์œผ๋กœ 2์ฐจ ์‚ฌ๊ฑด ์˜ˆ๋ฐฉ + - **์šด์˜ ๋ณ€๊ฒฝ**: **์กฐ์ง ์ „์› ์„ธ์…˜ 1ํšŒ ์žฌ์‹œ์ž‘ ํ•„์ˆ˜** (C1 ์‚ฌ์ „ ๊ณ ์ง€). SessionStart hook์ด `live_junction_ensure.sh` ์ž๋™ ์‹คํ–‰ โ†’ junction ์ž๋™ ์„ค์น˜ + - **์—ญํ˜ธํ™˜**: junction ๋ฏธ์„ค์น˜ worktree๋Š” ๊ธฐ์กด๋Œ€๋กœ degraded ๋™์ž‘ (์ž‘์—… ์ฐจ๋‹จ ์—†์Œ) +- **๊ธฐ๊ฐ์•ˆ**: + 1. **๊ฒฝ๋กœ ์ •๋ ฌ ๋‹จํŽธ ํ•ด๊ฒฐ (worktree ์ •๋ ฌยท๋ ˆํฌ ๋ฃจํŠธ ์ •๋ ฌยทgit push ๊ฒฝ์œ )** โ€” PD๋‹˜ ์žฌ์ œ์•ˆ ์ง€์‹œ ์ˆ˜์šฉ ์‹œ "๋‹จํŽธ์ "์œผ๋กœ ํŒ์ •, ๊ธฐ๊ฐ. ๊ทผ์› ํ•ด๊ฒฐ๋กœ ์ „ํ™˜. + 2. **Git-backed Live (commit ์ฆ‰์‹œ ์ „ํŒŒ)** โ€” "๋„คํŠธ์›Œํฌ ๋น„์šฉ 0" ํŒŒ๊ดด. ๊ธฐ๊ฐ. + 3. **ํŒŒ์ผ ๊ฐ์‹œ ๋ฐ๋ชฌยทIPC** โ€” ๋ณต์žก๋„ ๊ณผ์ž‰, hook ์ฒด๊ณ„ ํ†ตํ•ฉ ๋‚œ์ด๋„. ๊ธฐ๊ฐ. + 4. **worktree ๊ธฐ๋Šฅ ํฌ๊ธฐ** โ€” PD๋‹˜ ์ž‘์—… ์ž์œ ๋„ ์ œ์•ฝ, ์กฐ์ง ์—ญ๋Ÿ‰ ํ›„ํ‡ด. ๊ธฐ๊ฐ. + 5. **C34 ์‹ ์„ค ์‹œ P25 ๋ณธ๋ฌธ `~~์ทจ์†Œ์„ ~~` ์ž”์กด** โ€” C14-5-ํ™•์žฅ ์›์น™ ์œ„๋ฐ˜. ๋ณธ๋ฌธ ์™„์ „ ์‚ญ์ œ. + 6. **Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ๊ธฐ๋กํ•˜๊ณ  C34 ๋ณธ๋ฌธ ๋ฏธํฌํ•จ** โ€” ํ—Œ๋ฒ•๊ธ‰ ๊ทœ์น™์— ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ˜๋ณต ๊ฐ€๋Šฅ. C34-11๋กœ ๋ช…๋ฌธํ™” ์ฑ„ํƒ. +- **PM ์•ˆ๊ฑด 2๊ฑด (PD๋‹˜ ์Šน์ธ ํ•„์š” ์•„๋‹Œ ๋ณด๊ณ  ์•ˆ๊ฑด)**: + 1. **์กฐ์ง ์ „์› ์„ธ์…˜ 1ํšŒ ์žฌ์‹œ์ž‘ ์•ˆ๋‚ด** (C1 ์‚ฌ์ „ ๊ณ ์ง€ ์˜๋ฌด) โ€” junction ์ž๋™ ์„ค์น˜๋ฅผ ์œ„ํ•จ. commit ์™„๋ฃŒ ํ›„ PD๋‹˜๊ป˜ ๊ณต์ง€ ๋ฌธ์•ˆ ์ „๋‹ฌ + 2. **1์ฃผ์ผ ๊ด€์ฐฐ ํ›„ `.live.bak-*` ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐฑ์—… ์ •๋ฆฌ ๊ณต์ง€** โ€” ํ˜„ ์‹œ์ ๋ถ€ํ„ฐ 1์ฃผ ๊ด€์ฐฐ, ์ดํ›„ PM ์žฌ๋Ÿ‰ ์‚ญ์ œ +- **C27 PD ์ง€์‹œ ๋กœ๊ทธ ๊ฐฑ์‹ **: ๊ฐœ๋ฐœํŒ€ #39 "์ง„ํ–‰์ค‘" โ†’ ๋ณธ PM ์ง‘ํ–‰์œผ๋กœ ์‹ค๋ฌด ์™„๋ฃŒ๋ถ„ ๋ฐ˜์˜ํ•ด์•ผ ํ•จ โ†’ ๋‹ค์Œ ๋‹จ๊ณ„(commit) ํ›„ `์™„๋ฃŒ` ๊ฐฑ์‹  ์˜ˆ์ • +- **์ƒํƒœ**: PM ์ผ๊ด„ ์ง‘ํ–‰ ์™„๋ฃŒ. commit + verify_setup ์‹คํ–‰ ํ›„ PD๋‹˜ ๋ณด๊ณ  ์˜ˆ์ • (push๋Š” PD๋‹˜ ์žฌ๋Ÿ‰) + diff --git a/๊ณต์œ /์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/2026-04-18_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ_์‹ค๋ฌด๊ฒ€ํ† .md b/๊ณต์œ /์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/2026-04-18_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ_์‹ค๋ฌด๊ฒ€ํ† .md new file mode 100644 index 0000000..c4d973e --- /dev/null +++ b/๊ณต์œ /์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/2026-04-18_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ_์‹ค๋ฌด๊ฒ€ํ† .md @@ -0,0 +1,476 @@ +--- +from: ๊ฐœ๋ฐœํŒ€์žฅ +to: ์ด๊ด„PM +date: 2026-04-18 +type: ์‹ค๋ฌด ๊ฒ€ํ†  ๋ณด๊ณ ์„œ +subject: worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ์•ˆ (์ค‘์•™ `.live/` Junction ์ฒด๊ณ„) ์‹ค๋ฌด ๊ฒ€ํ†  +priority: ์กฐ์ง ์ƒ์กด๊ธ‰ +upstream: PD๋‹˜ ์ง์ ‘ ์ง€์‹œ "์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด" ยท "๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด" +related_rules: ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค, C2, C5, C6, C16, C19, C30, P25 +status: ์™„๋ฃŒ +--- + +# worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ์•ˆ ์‹ค๋ฌด ๊ฒ€ํ†  โ€” ์ค‘์•™ `.live/` Junction ์ฒด๊ณ„ + +## 0. ๊ฒ€ํ†  ๊ฒฐ๋ก  ์š”์ง€ (Executive Summary) + +1. **PM 1์ฐจ ์„ค๊ณ„์•ˆ(Junction ๊ธฐ๋ฐ˜ ์ค‘์•™ `.live/`)์„ ์›์น™์ ์œผ๋กœ ์Šน์ธ ๊ถŒ๊ณ **. C16-1 memory junction ํŒจํ„ด๊ณผ ๊ธฐ์ˆ ยท๊ทœ๋ฒ”์ ์œผ๋กœ ๋™ํ˜•์ด๋ฏ€๋กœ ์กฐ์ง ๊ฒ€์ฆ๋œ ๋ฐฉ์‹์˜ ์ง์ ‘ ์žฌ์‚ฌ์šฉ์ด๋‹ค. +2. ๋‹จ, ์›์•ˆ์— **7๊ฐœ ์—ฃ์ง€ ์ผ€์ด์Šค ๋ณด์™„ ํ•„์š”**. ํ•ต์‹ฌ์€ **Windows ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ์—†๋Š” ํ™˜๊ฒฝ์˜ junction ์ƒ์„ฑ ์‹คํŒจ ์‹œ ๋ฐฉ์นจ**๊ณผ **worktree ์ž๋™ ์ƒ์„ฑ ์‹œ์ ์˜ ์„ ์ฃผ์ž… ๋ณด์žฅ**์ด๋‹ค. +3. **worktree-local๋กœ ๊ฒฉ๋ฆฌ๋œ ๊ธฐํƒ€ ์ž์‚ฐ ์ „์ˆ˜ ์กฐ์‚ฌ ๊ฒฐ๊ณผ โ€” `.live/`๋งŒ์ด ๋ฌธ์ œ**. ๊ธฐ์กด ์ค‘์•™ํ™” ์ž์‚ฐ(`~/.claude/.nerdnavis_bus/`, `~/.claude/.nerdnavis_throttle/`, `memory/org/` junction)์€ ์ด๋ฏธ PC ์ค‘์•™ํ™”๋˜์–ด ์žˆ์Œ. `.live/`๊ฐ€ ์œ ์ผํ•œ "worktree-local ์˜๋ฏธ ์ž์‚ฐ"์ด๋ฉฐ, ๋”ฐ๋ผ์„œ ๋ณธ ๋‹จ์ผ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ „์ฒด ๋ฌธ์ œ๊ฐ€ ๊ทผ์› ํ•ด์†Œ๋œ๋‹ค. +4. **๊ตฌํ˜„ ๋ณต์žก๋„ ๋Œ€๋น„ ํšจ์šฉ โ€” ์ ˆ๋Œ€ ์šฐ์„ธ**. Setup ์Šคํฌ๋ฆฝํŠธ 50์ค„ ๋‚ด์™ธ, hook ๋กœ์ง ๋ฌด๋ณ€๊ฒฝ, `verify_setup.ps1` 3์ถ• ๊ฒ€์ฆ ํ™•์žฅ 30์ค„. ํ•œํŽธ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ๋Š” ์กฐ์ง ์ƒ์กด๊ธ‰. +5. **๋Œ€์•ˆ ๊ฒ€ํ†  โ€” ๋ชจ๋‘ ์—ด๋“ฑ**. (A) `.live/`๋ฅผ git-tracked๋กœ ์ „ํ™˜: ์„ธ์…˜๋ณ„ commit ํญ์ฆยทmerge conflict ์ƒ์‹œ. (B) Hook์„ `REPO_ROOT` ๋Œ€์‹  ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์ˆ˜์ •: C16 PC ๋…๋ฆฝ์„ฑ ํ›ผ์†. (C) Worktree ์‚ฌ์šฉ ์ค‘๋‹จ: Claude Code ๋‚ด๋ถ€ ๋™์ž‘์ด๋ผ ์ œ์–ด ๋ถˆ๊ฐ€. + +๋ณธ ๊ฒ€ํ† ์„œ๋Š” C2(๊ทผ์›์  ๋ฌธ์ œ ํ•ด๊ฒฐ)ยทํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค(์„ธ์…˜ยทPC ์—ฐ์†์„ฑ) ์ •ํ•ฉ ๊ธฐ์ค€์œผ๋กœ ์ตœ์ข…์•ˆ์„ ํ™•์ •ํ–ˆ๋‹ค. + +--- + +## 1. ํ˜„์ƒ ์žฌํ˜„ยท์‹ค์ธก ๊ทผ๊ฑฐ (C23 ์ •์ง์„ฑ โ€” ์‹ค์ œ tool_use ๊ฒฐ๊ณผ๋งŒ) + +### 1.1 worktree ๊ฒฉ๋ฆฌ ์‹ค์ฆ + +``` +$ git worktree list (cd E:/NerdNavisAi) +E:/NerdNavisAi 5085c56 [main] +E:/NerdNavisAi/.claude/worktrees/nifty-wing-4752bd 5085c56 [claude/nifty-wing-4752bd] +E:/NerdNavisAi/.claude/worktrees/tender-liskov-844a72 5085c56 [claude/tender-liskov-844a72] +``` + +### 1.2 `.live/` ๋ฌผ๋ฆฌ ๊ฒฉ๋ฆฌ ์‹ค์ฆ + +- ๋ณธ worktree (`tender-liskov-844a72`) `.live/`: `README.md` ๋งŒ ์กด์žฌ (์ด 2๊ฐœ ํŒŒ์ผ) +- ํƒ€ worktree (`nifty-wing-4752bd`) `.live/`: `README.md` + `ping.md` (19 bytes, 21:13 ์ƒ์„ฑ) โ€” ๋ณธ worktree์—์„œ **์ „ํ˜€ ๋ณด์ด์ง€ ์•Š์Œ** +- ๋ฉ”์ธ ๋ ˆํฌ (`E:/NerdNavisAi`) `.live/`: `README.md` ๋งŒ ์กด์žฌ (21:08 ์ˆ˜์ •) + +์ฆ‰ **๊ฐ™์€ PCยท๊ฐ™์€ ์‹œ๊ฐยท๊ฐ™์€ ๋ ˆํฌยท๊ฐ™์€ ๋ธŒ๋žœ์น˜**์ž„์—๋„ `.live/`๋Š” ๊ฐ worktree ์ž‘์—… ํŠธ๋ฆฌ ๋‚ด๋ถ€์— ๋…๋ฆฝ ์‹ค์ฒด๋กœ ์กด์žฌํ•œ๋‹ค. + +### 1.3 ๊ธฐ์ˆ ์  ์›์ธ + +- `scripts/live_inject.sh` 6ํ–‰: `REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)` +- worktree ๋‚ด๋ถ€์—์„œ `git rev-parse --show-toplevel`์€ **ํ•ด๋‹น worktree์˜ ๋ฃจํŠธ**๋ฅผ ๋ฐ˜ํ™˜ (`.git/worktrees/{id}/gitdir`๊ฐ€ worktree ๋‚ด๋ถ€ `.git` ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ด) +- ๋”ฐ๋ผ์„œ `LIVE_DIR="$REPO_ROOT/.live"`๊ฐ€ **๊ฐ worktree๋ณ„๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌผ๋ฆฌ ๊ฒฝ๋กœ**๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋จ +- ๊ฒฐ๊ณผ: ํ•œ worktree๊ฐ€ ๊ธฐ๋กํ•œ `.live/*.md`๋Š” ๋‹ค๋ฅธ worktree์˜ hook์ด ์ธ์ง€ ๋ถˆ๊ฐ€ โ†’ P25 "๊ฐ™์€ PC ๋‚ด ๋‹ค๋ฅธ ์„ธ์…˜ ์ฆ‰์‹œ ์ธ์ง€" ์ „์ œ ํŒŒ๊ดด + +### 1.4 ๊ธฐ์กด ์ค‘์•™ํ™” ์ž์‚ฐ๊ณผ์˜ ๋น„๋Œ€์นญ์„ฑ (์™œ `.live/`๋งŒ ๋ฌธ์ œ์ธ๊ฐ€) + +๋ณธ ์‹ค๋ฌด ๊ฒ€ํ†  ์ค‘ ์กฐ์ง ๋‚ด worktree-local ์ €์žฅ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ž์‚ฐ ์ „์ˆ˜ ์กฐ์‚ฌ ๊ฒฐ๊ณผ: + +| ์ž์‚ฐ | ์ €์žฅ ์œ„์น˜ | worktree ์˜ํ–ฅ | ์ƒํƒœ | +|------|----------|--------------|------| +| ์‚ฌ์šฉ์ž ๋ฉ”๋ชจ๋ฆฌ (`memory/org/`) | `~/.claude/projects/<ํ•ด์‹œ>/memory` junction | ๋ฌด์˜ํ–ฅ (HOME ๊ธฐ๋ฐ˜) | โœ… ์ค‘์•™ํ™” | +| ์‹œ๊ทธ๋„ ๋ฒ„์Šค (`sync_signal.sh` ํ”Œ๋ž˜๊ทธ) | `$HOME/.claude/.nerdnavis_bus/` | ๋ฌด์˜ํ–ฅ (HOME ๊ธฐ๋ฐ˜) | โœ… ์ค‘์•™ํ™” | +| ์ฆ๋ถ„ throttle ์นด์šดํ„ฐ (`live_inject.sh`) | `$HOME/.claude/.nerdnavis_throttle/` | ๋ฌด์˜ํ–ฅ (HOME ๊ธฐ๋ฐ˜) | โœ… ์ค‘์•™ํ™” | +| git-hooks (`core.hooksPath`) | `scripts/git-hooks/` (git ๊ณต์šฉ) | ๋ฌด์˜ํ–ฅ (worktree ๊ฐ„ ๊ณต์œ ) | โœ… ์ค‘์•™ํ™” | +| inbox ์Šค์บ” ํ•ด์‹œ | `$HOME/.claude/.nerdnavis_throttle/inbox_hash_*` | ๋ฌด์˜ํ–ฅ (HOME ๊ธฐ๋ฐ˜) | โœ… ์ค‘์•™ํ™” | +| **`.live/` ๋”๋ฏธ ํŒŒ์ผ** | **`$REPO_ROOT/.live/` (worktree-local)** | **๊ฒฉ๋ฆฌ ๋ฐœ์ƒ** | โŒ **๋ฌธ์ œ ์ง€์ ** | +| paths.local.json | ๋ ˆํฌ ๋ฃจํŠธ (worktree๋Š” ๊ฐ์ž copy) | ์‹ค์ธก ๋ฏธํ™•์ธ (์•„๋ž˜ ยง5.2์—์„œ ํ›„์† ์ ๊ฒ€) | โš ๏ธ ์ž ์žฌ | + +์ฆ‰ **P25 Live ์ฒด๊ณ„์˜ ์ €์žฅ ์œ„์น˜ ์„ค๊ณ„๊ฐ€ ๋‹ค๋ฅธ ์ž์‚ฐ๋“ค์˜ HOME ๊ธฐ๋ฐ˜ ์›์น™์—์„œ ์ดํƒˆ**๋˜์–ด ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค. ์ค‘์•™ํ™”๋กœ์˜ ์žฌํŽธ์€ ์กฐ์ง ์ž์‚ฐ ์„ค๊ณ„ ์ผ๊ด€์„ฑ ํšŒ๋ณต ์ฐจ์›์—์„œ๋„ ์ •๋‹นํ•˜๋‹ค. + +--- + +## 2. PM 1์ฐจ ์„ค๊ณ„์•ˆ ์‹ฌ์ธต ๋ถ„์„ + +### 2.1 ์›์•ˆ ์žฌ์ง„์ˆ  + +- **์‹ค ์ €์žฅ**: `$HOME/.claude/nerdnavis-live/` (PC ๋กœ์ปฌ ๋‹จ์ผ ๋””๋ ‰ํ† ๋ฆฌ) +- **๊ฐ worktree์˜ `.live/`**: ์œ„ ์‹ค ์ €์žฅ์œผ๋กœ์˜ **Junction** (Windows `mklink /J`) ๋˜๋Š” **Symbolic link** (macOS/Linux `ln -s`) +- **Setup ์Šคํฌ๋ฆฝํŠธ**: ์ž๋™ ์ƒ์„ฑ (์‹ ๊ทœ PC 1ํšŒยท๊ธฐ์กด PC 1ํšŒ) +- **Hook ๋กœ์ง**: ๋ถˆ๋ณ€ (`REPO_ROOT/.live` ๊ฒฝ๋กœ๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ, junction์ด ์ž๋™ ๊ฒฝ์œ ) + +### 2.2 ์›์น™์  ํƒ€๋‹น์„ฑ ํ‰๊ฐ€ โ€” ์šฐ์ˆ˜ + +1. **C16-1 memory junction ํŒจํ„ด๊ณผ ๋™ํ˜•** โ€” `~/.claude/projects/<ํ•ด์‹œ>/memory` โ†’ `memory/org/` junction๊ณผ ๊ธฐ์ˆ ยท๊ทœ๋ฒ” ๋™์ผ. ์กฐ์ง ๊ฒ€์ฆ๋œ ๋ฐฉ์‹์ด๋ฏ€๋กœ ๋ฆฌ์Šคํฌ๊ฐ€ ๋‚ฎ๋‹ค. +2. **Hook ๋ฌด๋ณ€๊ฒฝ** โ€” `live_inject.sh`ยท`live_session_load.sh`ยท`sync_push.sh` ๋“ฑ ๊ธฐ์กด ์Šคํฌ๋ฆฝํŠธ ์ผ์ฒด ์ˆ˜์ • ๋ถˆ์š”. ๋ณธ ํ•ด๊ฒฐ์ฑ…์€ **์šด์˜์ฒด์ œ ํŒŒ์ผ์‹œ์Šคํ…œ ๊ณ„์ธต์˜ ํˆฌ๋ช…ํ•œ ์šฐํšŒ**์ด๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค โ†’ C14(ํ† ํฐ ์ตœ์†Œํ™”)ยทC10-5(๊ธฐ์กด ์‚ฐ์ถœ๋ฌผ ์‹ ๋ขฐ) ์ •์‹ ์—๋„ ๋ถ€ํ•ฉ. +3. **์—ญํ˜ธํ™˜์„ฑ ํ™•๋ณด** โ€” ๊ธฐ์กด hook์ด `REPO_ROOT/.live`๋ฅผ ๊ทธ๋Œ€๋กœ ์ฐธ์กฐํ•˜๋ฏ€๋กœ junction ๋ฏธ์ƒ์„ฑ worktree์—์„œ๋„ (๊ฒฉ๋ฆฌ๋œ ์ƒํƒœ์ด์ง€๋งŒ) ์ •์ƒ ๋™์ž‘. ์ ์ง„ ์ „ํ™˜ยท๋กค๋ฐฑ ๊ฐ€๋Šฅ. +4. **์ž์‚ฐ ๊ฐ€์น˜ ์œ ์ง€** (P25 ๐Ÿ† ์กฐ์ง ํ•ต์‹ฌ ์ž์‚ฐ) โ€” P25๊ฐ€ ๋ณด์ฆํ•˜๋Š” "๊ฐ™์€ PC ๋‚ด ์„ธ์…˜ ๊ฐ„ ๋„คํŠธ์›Œํฌ ๋น„์šฉ 0 ์‹ค์‹œ๊ฐ„ ๊ณต์œ "๋ฅผ ์™„์ „ ๋ณต์›. +5. **PD๋‹˜ ์ง€์‹œ ์ •ํ•ฉ** โ€” ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค("์„ธ์…˜ยทPC ์—ฐ์†์„ฑ ๋ณด์žฅ") ์ง์ ‘ ๊ธฐ์—ฌ. C2(๊ทผ์›์  ๋ฌธ์ œ ํ•ด๊ฒฐ โ€” ์ž„์‹œ๋ฐฉํŽธ ์•„๋‹˜)ยทC31-E("๊ธฐ์กด ์กฐ์ง ์ž์‚ฐ ์šฐ์„  ํ™œ์šฉ") ์ฒดํฌ ํ†ต๊ณผ. + +### 2.3 ์ž ์žฌ ๋ฆฌ์Šคํฌ 7์ข… (๋ณด์™„ ํ•„์š” ํ•ญ๋ชฉ) + +๋ณธ ์›์•ˆ์„ ๊ทธ๋Œ€๋กœ ์ฑ„ํƒํ•ด๋„ ์•ˆ์ „ํ•˜๋‚˜, ์•„๋ž˜ ์—ฃ์ง€ ์ผ€์ด์Šค 7์ข…์— ๋Œ€ํ•œ ๋ช…์‹œ์  ๋Œ€์‘์„ ์›์•ˆ์— ์ถ”๊ฐ€ํ•ด์•ผ ์™„๊ฒฐ๋œ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์€ ยง3ยทยง4์—์„œ ์ƒ์„ธ ์„ค๊ณ„ํ•œ๋‹ค. + +1. **R1. Windows Junction ์ƒ์„ฑ ๊ถŒํ•œ ์ด์Šˆ** โ€” ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ๋ถˆํ•„์š”(์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋„ `mklink /J` ๊ฐ€๋Šฅ, ยง3.1) +2. **R2. macOS/Linux Symlink vs Junction ์ฐจ์ด** โ€” ๋™์ž‘ ๋™์ผํ•˜๋‚˜ ์‹ค์ฒด ๊ฒ€์ฆ ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋‹ค๋ฆ„ (ยง3.2) +3. **R3. ๊ธฐ์กด `.live/` ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ README.md ๋ณด์กด** (ยง4.3) +4. **R4. Worktree ์ž๋™ ์ƒ์„ฑ ์‹œ์ ์˜ ์ง€์—ฐ ์ฃผ์ž…** โ€” Claude Code๊ฐ€ ์‹ ๊ทœ worktree๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฒซ SessionStart hook์ด junction์„ ์ƒ์„ฑํ•ด์•ผ ๊ฒฉ๋ฆฌ ์„ธ์…˜์ด ๋˜์ง€ ์•Š์Œ (ยง4.5) +5. **R5. Junction ํƒ€๊นƒ ๋””๋ ‰ํ† ๋ฆฌ ๋ฏธ์กด์žฌ ์ƒํƒœ ์ฒ˜๋ฆฌ** โ€” ์‹ ๊ทœ PC ์ฒซ setup ์‹œ ์ˆœ์„œ (ยง4.2) +6. **R6. `paths.local.json` ๋“ฑ ๊ธฐํƒ€ worktree-local ํŒŒ์ผ ์ ๊ฒ€** (ยง5.2) +7. **R7. ๊ฒฉ๋ฆฌ ์‹œ๊ทธ๋„ ์ˆ˜์ง‘ โ€” verify 3์ถ• ๊ฒ€์ฆ์˜ ์ž๋™ ๋ณต๊ตฌ ๋ฒ”์œ„ ํ•œ์ •** (ยง5.3) + +--- + +## 3. OS๋ณ„ Junction/Symlink ๊ธฐ์ˆ  ์ƒ์„ธ + +### 3.1 Windows (PRIMARY โ€” ํ˜„ ์ฃผ ํ™˜๊ฒฝ) + +#### 3.1.1 ์‚ฌ์šฉ ๋ช…๋ น +```cmd +cmd /c mklink /J "\.live" "$HOME\.claude\nerdnavis-live" +``` + +#### 3.1.2 ๊ถŒํ•œยทํ™˜๊ฒฝ ์š”๊ตฌ +- **์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ์ถฉ๋ถ„** โ€” `/J` (junction)์€ **๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ๋ถˆ์š”ยท๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๋ถˆ์š”** +- ๊ตฌ๋ถ„: `/D` (directory symbolic link)๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๋˜๋Š” ๊ฐœ๋ฐœ์ž ๋ชจ๋“œ ํ•„์š”ํ•˜๋‚˜ `/J`๋Š” ์˜ˆ์™ธ +- ์กฐ์ง ๊ธฐ์กด ์ž์‚ฐ ์ฆ๋ช…: `setup/setup_windows.ps1` 99ยท104ํ–‰์ด ์ด๋ฏธ ๋™์ผ ๋ฐฉ์‹์œผ๋กœ memory junction์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์กฐ์ง ์ „ PC์—์„œ ๋ฌธ์ œ์—†์ด ๋™์ž‘ ์ค‘ +- ๋”ฐ๋ผ์„œ ๋ณธ ํ•ด๊ฒฐ์ฑ…์€ **์กฐ์ง ๋‚ด ์ด๋ฏธ ์ž…์ฆ๋œ ๊ธฐ์ˆ  ๊ธฐ๋ฐ˜** + +#### 3.1.3 ๊ธฐ์ˆ  ์ œ์•ฝ +- **Junction ํƒ€๊นƒ์€ ๋กœ์ปฌ ๋“œ๋ผ์ด๋ธŒ**๋งŒ ์ง€์› (๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ธŒ ๋ถˆ๊ฐ€). HOME์€ ํ•ญ์ƒ ๋กœ์ปฌ์ด๋ฏ€๋กœ ๋ฌด๊ด€. +- **Junction์€ ๋””๋ ‰ํ† ๋ฆฌ ์ „์šฉ** โ€” `.live/` ๋””๋ ‰ํ† ๋ฆฌ ๋Œ€์ƒ์ด๋ฏ€๋กœ ํ•ด๋‹น ์—†์Œ. +- ํŒŒ์ผ ๋‹จ์œ„ hard link๊ฐ€ ํ•„์š”ํ•˜๋ฉด `/H`์ด๋‚˜ ๋ณธ ์„ค๊ณ„๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๋‹จ์œ„์ด๋ฏ€๋กœ `/J`๊ฐ€ ์ •๋‹ต. + +#### 3.1.4 ๊ฒ€์ฆ ๊ฐ€๋Šฅ์„ฑ +- PowerShell: `(Get-Item -Force).Attributes -band [IO.FileAttributes]::ReparsePoint` โ€” reparse point ์—ฌ๋ถ€ ํ™•์ธ +- ์ด๋ฏธ `scripts/verify_setup.ps1` 87ยท100ํ–‰์ด ๋™์ผ ํŒจํ„ด์„ memory junction์— ์ ์šฉ ์ค‘์ด๋ฏ€๋กœ `.live/` junction์— ๊ทธ๋Œ€๋กœ ์žฌํ™œ์šฉ ๊ฐ€๋Šฅ + +#### 3.1.5 ๋ฌธ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค +| ์‹œ๋‚˜๋ฆฌ์˜ค | ์ฆ์ƒ | ๋Œ€์‘ | +|---------|------|------| +| ํƒ€๊นƒ ๊ฒฝ๋กœ ๋ฏธ์กด์žฌ | `mklink` ์‹คํŒจ (errorlevel 1) | setup ์ˆœ์„œ๋กœ ์˜ˆ๋ฐฉ โ€” **ํƒ€๊นƒ ๋จผ์ € ์ƒ์„ฑ ํ›„ junction** (ยง4.2) | +| ๋งํฌ ๊ฒฝ๋กœ์— ์ด๋ฏธ ์‹ค ๋””๋ ‰ํ† ๋ฆฌ ์กด์žฌ | `mklink` ์‹คํŒจ ("์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค") | ๋ฐฑ์—… ํ›„ ์ œ๊ฑฐ โ€” memory junction ํŒจํ„ด ๋™์ผ (setup_windows.ps1 94-97ํ–‰๊ณผ ๋™ํ˜•) | +| ๋งํฌ ๊ฒฝ๋กœ๊ฐ€ ์ด๋ฏธ junction | ๊ธฐ์กด ํƒ€๊นƒ ์ถ”์  ํ›„ ์˜ฌ๋ฐ”๋ฅด๋ฉด ์œ ์ง€ | ยง4.2 setup ๋กœ์ง์ด reparse ํ”Œ๋ž˜๊ทธ๋กœ ํŒ๋ณ„ | +| ํƒ€๊นƒ ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ | junction์€ ๋‚จ์ง€๋งŒ dangling | ์—ฐ๊ฒฐ ๋Œ€์ƒ ๋ณต๊ตฌ ์‹œ ์ž๋™ ๋ณต์› (๋ฐ์ดํ„ฐ๋งŒ ๋ณต๊ตฌํ•˜๋ฉด ์—ฐ๊ฒฐ์€ ํšŒ๋ณต) | +| Windows Update/Defender | ๊ฐ€๋” reparse point ๋ณต์‚ฌ๋ณธ์„ ์‹ค ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์˜คํ•ด | ์‹ค์ฆ์ƒ ์ˆ˜์ƒํ•œ์žกํ™”์  ์กฐ์ง PC๋“ค์—์„œ ๋ฐœ์ƒ ๋ณด๊ณ  ์—†์Œ. ๋ฐœ์ƒ ์‹œ setup ์žฌ์‹คํ–‰์œผ๋กœ ๋ณต์› | + +### 3.2 macOS / Linux (SECONDARY โ€” ํ˜„ ๋ฏธ์‚ฌ์šฉ but ์กฐ์ง ์ž์‚ฐ ํ˜ธํ™˜์„ฑ ์œ ์ง€) + +#### 3.2.1 ์‚ฌ์šฉ ๋ช…๋ น +```bash +ln -s "$HOME/.claude/nerdnavis-live" "/.live" +``` + +#### 3.2.2 ๊ถŒํ•œยทํ™˜๊ฒฝ ์š”๊ตฌ +- ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ์ถฉ๋ถ„ +- macOS: ๋””ํดํŠธ ์ง€์› +- ์กฐ์ง ๊ธฐ์กด ์ž์‚ฐ ์ฆ๋ช…: `setup/setup_macos.sh` 53ยท56ํ–‰์ด memory symlink ๋™์ผ ๋ฐฉ์‹ ์‚ฌ์šฉ ์ค‘ + +#### 3.2.3 Windows์™€์˜ ๋™์ž‘ ์ฐจ์ด 1์  +- Symlink๋Š” **ํŒŒ์ผ๋กœ๋„ ํ‘œ์‹œ**๋  ์ˆ˜ ์žˆ์–ด `test -L`๋กœ ํŒ๋ณ„ ํ•„์š” +- Junction์€ ๋””๋ ‰ํ† ๋ฆฌ ์†์„ฑ ์œ ์ง€์ด๋ฏ€๋กœ `test -d`๋กœ ํŒ๋ณ„๋˜์ง€๋งŒ `[IO.FileAttributes]::ReparsePoint` ํ”Œ๋ž˜๊ทธ๋กœ ๊ตฌ๋ถ„ +- ๊ฒฐ๊ณผ์ ์œผ๋กœ **Bash hook ๊ด€์ ์—์„œ๋Š” ์–‘์ชฝ ๋ชจ๋‘ `test -d "$LIVE_DIR"`์ด true**์ด๋ฏ€๋กœ hook ๋กœ์ง ๋ฌด๋ณ€๊ฒฝ ๊ฐ€๋Šฅ + +#### 3.2.4 ๋ฌธ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค (Windows ๋Œ€๋น„ ๊ฐ์†Œ) +- macOS: `~/Library/CloudStorage/` ๋“ฑ iCloud ๋™๊ธฐํ™” ํด๋” ํ•˜์œ„์— symlink ์ƒ์„ฑ ๊ธˆ์ง€ (iCloud๊ฐ€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํƒ€๊นƒ์„ ๋ณต์ œํ•ด๋ฒ„๋ฆผ). HOME์€ ์ผ๋ฐ˜์ ์œผ๋กœ iCloud ์™ธ๋ถ€์ด๋ฏ€๋กœ ๋ฌด๊ด€. +- Linux: ๊ฑฐ์˜ ๋ฌด์ œํ•œ ์ง€์›. + +### 3.3 ๊ณตํ†ต ์„ค๊ณ„ ์›์น™ +- ์‹ค ์ €์žฅ ๊ฒฝ๋กœ: `$HOME/.claude/nerdnavis-live/` (Win: `%USERPROFILE%\.claude\nerdnavis-live\`, Unix: `$HOME/.claude/nerdnavis-live/`) +- `~/.claude/` ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ด๋ฏธ Claude Code๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด๋ฏ€๋กœ ๋ณ„๋„ ๊ด€๋ฆฌ ๋ถ€๋‹ด ์—†์Œ +- `memory/org/` junction๊ณผ ๋™์ผ HOME ํ•˜์œ„ ์˜์—ญ โ†’ ์…‹์—…ยท์‚ญ์ œยท๋ณต๊ตฌ ์ •์ฑ… ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋กœ ํ†ตํ•ฉ ๊ฐ€๋Šฅ + +--- + +## 4. Setup ์Šคํฌ๋ฆฝํŠธ ํ™•์žฅ ์ƒ์„ธ ์„ค๊ณ„ + +### 4.1 ๋ชฉ์  + +์‹ ๊ทœ PC ์ตœ์ดˆ setup + ๊ธฐ์กด PC ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋‹จ์ผ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์œผ๋กœ ์™„๊ฒฐํ•œ๋‹ค. **Idempotent** โ€” ๋ช‡ ๋ฒˆ ์‹คํ–‰ํ•ด๋„ ๋™์ผํ•œ ์ตœ์ข… ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•œ๋‹ค. + +### 4.2 ๊ณตํ†ต ์ ˆ์ฐจ (OS ๋ฌด๊ด€ ๋™์ผ ํ๋ฆ„) + +| ์ˆœ์„œ | ์ž‘์—… | ์‹คํŒจ ์‹œ ๋ฐฉ์นจ | +|------|------|--------------| +| 1 | ์‹ค ์ €์žฅ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ โ€” `$HOME/.claude/nerdnavis-live/` | mkdir ์‹คํŒจ = ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ์ด์ƒ, ์น˜๋ช… โ†’ ๋ณด๊ณ  ํ›„ ์ค‘๋‹จ | +| 2 | ์‹ค ์ €์žฅ์— `README.md` ๋ณต์‚ฌ โ€” ์ตœ์†Œ 1ํšŒ, ์ด๋ฏธ ์žˆ์œผ๋ฉด skip | skip | +| 3 | ๋ ˆํฌ ๋ฃจํŠธ `.live/`์˜ ๊ธฐ์กด ํŒŒ์ผ ์ „์ˆ˜ ํ™•์ธ | N/A | +| 4 | ๊ธฐ์กด ํŒŒ์ผ ์ค‘ `README.md` ์ด์™ธ์˜ ํŒŒ์ผ๋“ค ์‹ค ์ €์žฅ์œผ๋กœ ์ด๊ด€ (copy, ๊ฐ™์€ ํŒŒ์ผ๋ช… ์žˆ์œผ๋ฉด skip โ€” ๊ธฐ์กด ์‹ค ์ €์žฅ์ด ์šฐ์„ ) | ์‹คํŒจ ์‹œ ํ•ด๋‹น ํŒŒ์ผ๋งŒ skip + ๊ฒฝ๊ณ  | +| 5 | ๋ ˆํฌ ๋ฃจํŠธ `.live/` ์‹ค ๋””๋ ‰ํ† ๋ฆฌ ๋ฐฑ์—… ํ›„ ์‚ญ์ œ | ๋ฐฑ์—…: `.live.bak-{timestamp}/`. ๋ฐฑ์—… ์‹คํŒจ ์‹œ junction ์ƒ์„ฑ ์ค‘๋‹จ | +| 6 | ๋ ˆํฌ ๋ฃจํŠธ `.live/` ์œ„์น˜์— junction/symlink ์ƒ์„ฑ โ†’ ํƒ€๊นƒ = ์‹ค ์ €์žฅ | ์‹คํŒจ ์‹œ fallback ์‹คํ–‰ (ยง4.4) | +| 7 | ๊ธฐ์กด worktree ์ „์ˆ˜(`git worktree list`) ์ˆœํšŒํ•˜์—ฌ ๊ฐ worktree์˜ `.live/`๋„ ๋™์ผ ์ ˆ์ฐจ ๋ฐ˜๋ณต | worktree๋ณ„ ๋…๋ฆฝ ์‹คํŒจ ํ—ˆ์šฉ, ์‹คํŒจ worktree๋Š” WARN | +| 8 | ๊ฒ€์ฆ โ€” ๊ฐ junction์ด reparse point์ธ์ง€ยทํƒ€๊นƒ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ์‹ค์ธก | ยง4.6 | + +### 4.3 ๊ธฐ์กด `.live/` ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์•ˆ์ „์„ฑ (R3) + +**๊ธฐ์กด ์šด์˜์ž PC์—์„œ ์•ˆ์ „ํ•œ๊ฐ€?** โ€” ์˜ˆ, ๋‹จ ์•„๋ž˜ ๋ณด๊ฐ• ํฌํ•จ ์‹œ. + +#### 4.3.1 ์•ˆ์ „ ์š”์†Œ +- `.live/README.md`๋Š” `git ls-files`๋กœ ์ถ”์  ์ค‘ (์‹ค์ธก ํ™•์ธ) โ†’ ์‚ญ์ œ๋˜์–ด๋„ git์—์„œ ๋ณต์› ๊ฐ€๋Šฅ +- ๊ธฐ์กด ๋‹ค๋ฅธ `.live/*.md`๋Š” ์ผ์‹œ์  ๋”๋ฏธ์ด๋ฉฐ SessionStart hook์ด ์ž๋™ ๋น„์šฐ๋Š” ๋Œ€์ƒ โ†’ ์˜๊ตฌ ์ž์‚ฐ ์•„๋‹˜ +- ๋ฐฑ์—… ๋””๋ ‰ํ† ๋ฆฌ ๋ณด์กด (`.live.bak-{timestamp}/`)๋กœ ๋กค๋ฐฑ ๊ฐ€๋Šฅ + +#### 4.3.2 ์ž ์žฌ ์œ„ํ—˜ + ๋ณด๊ฐ• +- **์„ธ์…˜ ์‹คํ–‰ ์ค‘ setup ์‹คํ–‰** โ†’ ์—ด๋ฆฐ ํŒŒ์ผ ํ•ธ๋“ค๊ณผ ์ถฉ๋Œ ๊ฐ€๋Šฅ. **๋ณด๊ฐ•**: setup ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ์— ๊ฒฝ๊ณ  ์ถœ๋ ฅ "๋ชจ๋“  Claude Code ์„ธ์…˜ ์ข…๋ฃŒ ํ›„ ์‹คํ–‰ ๊ถŒ์žฅ" +- **๊ธฐ์กด ๋”๋ฏธ์— ์•„์ง ์›๋ณธ ๋ฏธ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ์กด์žฌ** โ†’ ์ด๊ด€ ๋Œ€์ƒ์ด๋ฏ€๋กœ ์‹ค ์ €์žฅ์— ๋ณต์‚ฌํ•˜์—ฌ ๋ณด์กด (ยง4.2 ๋‹จ๊ณ„ 4) +- **๋™์ผ ํŒŒ์ผ๋ช…์ด ์‹ค ์ €์žฅ๊ณผ worktree `.live/` ์–‘์ชฝ์— ์กด์žฌ** โ†’ ์‹ค ์ €์žฅ์ด ์šฐ์„ (skip) ์ •์ฑ…์œผ๋กœ ์ผ๊ด€. ์‚ฌ์šฉ์ž๋Š” `.live.bak-*/`์—์„œ ์ˆ˜๋™ ํ™•์ธ ๊ฐ€๋Šฅ + +#### 4.3.3 C6-1 (์›๋ณธ ๋ณดํ˜ธ) ์ •ํ•ฉ์„ฑ +- ๊ธฐ์กด `.live/` ์‹ค ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ฆ‰์‹œ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  `.live.bak-{timestamp}/`๋กœ rename โ†’ C6-1 ๋ฐฑ์—… ํŒŒ์ผ๋ช… ๊ทœ์น™ (`{์›๋ณธ๋ช…}.bak_{YYYYMMDD_HHMM}`) ๋ณ€ํ˜• ์ค€์ˆ˜. **์ค‘์š”ยท๋Œ€๊ทœ๋ชจ ๋ณ€๊ฒฝ**์€ ์•„๋‹ˆ๋ฏ€๋กœ (์ผ์‹œ ๋”๋ฏธ์˜ ์žฌ๋ฐฐ์น˜์ด๋ฏ€๋กœ) PD๋‹˜ ๋ณ„๊ฑด ์ตœ์ข… ์Šน์ธ์€ ๋ถˆ์š” โ€” ๋ณธ ๊ฒ€ํ† ์„œ ์ž์ฒด๊ฐ€ PD ์Šน์ธ ํ•˜์˜ ์ง‘ํ–‰ ์‚ฌ์ „ ๋ณด๊ณ  ์—ญํ•  + +### 4.4 Junction ์ƒ์„ฑ ์‹คํŒจ ์‹œ Fallback (R1, R2, ์›๋ฌธ ์š”์ฒญ ์งˆ๋ฌธ 5) + +#### 4.4.1 ์‹คํŒจ ์›์ธ ๋ถ„๋ฅ˜ +| ์›์ธ | ๋ฐœ์ƒ ํ™•๋ฅ  | ๋Œ€์‘ ๋ฐฉ์นจ | +|------|----------|----------| +| Windows ์ •์ฑ…์œผ๋กœ `mklink` ๊ธˆ์ง€ | ๊ทนํžˆ ํฌ๋ฐ• (๋Œ€๊ธฐ์—… ๊ด€๋ฆฌ ํ™˜๊ฒฝ) | ยง4.4.2 | +| ํŒŒ์ผ์‹œ์Šคํ…œ ๋น„์ง€์› (์˜ˆ: ์ผ๋ถ€ ๋„คํŠธ์›Œํฌ FS) | HOME์ด ๋กœ์ปฌ์ด๋ฉด ํ•ด๋‹น ์—†์Œ | ํ•ด๋‹น ์‹œ WARN | +| ์ด๋ฏธ ์‹ค ๋””๋ ‰ํ† ๋ฆฌ ์กด์žฌ + ๋ฐฑ์—… ๋ถˆ๊ฐ€ | ํŒŒ์ผ ์ž ๊ธˆ ๋“ฑ | ยง4.4.3 | +| ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์ด์Šˆ (์ด๋ก ์ƒ `/J`๋Š” ๋ฌด๊ด€) | ๊ทนํžˆ ํฌ๋ฐ• | ยง4.4.2 | + +#### 4.4.2 1์ฐจ Fallback โ€” ์ •์ƒ ๋””๋ ‰ํ† ๋ฆฌ ์œ ์ง€ + ๊ฒฝ๊ณ  +- junction ์ƒ์„ฑ ์‹คํŒจ ์‹œ ํ•ด๋‹น worktree์˜ `.live/`๋Š” **์ผ๋ฐ˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์œ ์ง€** (์‚ญ์ œ ๊ธˆ์ง€) +- **๊ฒฝ๊ณ  ๋กœ๊ทธ** + ์กฐ์ง๊ณต์ง€ SOT์— ์ž์ง„ ๋ณด๊ณ  (`๊ณต์œ /์กฐ์ง๊ณต์ง€/YYYY-MM-DD_Live_junction_์ƒ์„ฑ์‹คํŒจ_.md`) +- ํ•ด๋‹น worktree๋Š” **P25 ํ˜œํƒ์„ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” degraded ์ƒํƒœ**๋กœ ๋™์ž‘ (๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์Œ). PM ๋ช…์‹œ pushยทpull ๊ฒฝ๋กœ๋กœ ์ˆ˜๋™ ๋™๊ธฐํ™” +- SessionStart hook์ด ์ƒํƒœ ๊ฐ์ง€ํ•˜์—ฌ ๋งค ์„ธ์…˜ ์‹œ์ž‘ ์‹œ ์žฌ์‹œ๋„ (ยง4.5 `session_start_junction_check.sh` ์‹ ์„ค) + +#### 4.4.3 2์ฐจ Fallback โ€” ์ž‘์—… ์ฐจ๋‹จ ์„ ํƒ์ง€ (๋ณธ ๊ฒ€ํ† ์„œ ๊ถŒ์žฅ) +- **๊ถŒ์žฅ ๋ฐฉ์นจ**: 1์ฐจ Fallback(๊ฒฝ๊ณ  + degraded ๋™์ž‘) +- **์ด์œ **: ์ž‘์—… ์ฐจ๋‹จ์€ ์กฐ์ง ์ƒ์กด๊ธ‰ ์‚ฌ์•ˆ ํ•ด๊ฒฐ์ด ๋ชฉ์ ์ธ ๋ณธ ๋ณ€๊ฒฝ์ด **๋˜ ๋‹ค๋ฅธ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์—ญ์„ค**์„ ๋งŒ๋“ฆ. degraded ์ƒํƒœ๋ผ๋„ **๊ธฐ์กด worktree ๋ฏธ์ ์šฉ ์ƒํƒœ์™€ ๋™๋“ฑํ•œ ์ˆ˜์ค€**์ด๋ฏ€๋กœ ํ›„ํ‡ด ์—†์Œ +- ์›๋ฌธ ์š”์ฒญ ์งˆ๋ฌธ 6์˜ "SessionStart hook์—์„œ ์ž๋™ ์„ค์น˜ vs ์ž‘์—… ์ฐจ๋‹จ" โ€” **์ž๋™ ์„ค์น˜ ์žฌ์‹œ๋„ + ์‹คํŒจ ์‹œ degraded + ์กฐ์ง๊ณต์ง€ ์ž๋™ ๋ฐœํ–‰**์ด ์ตœ์ . **์ฐจ๋‹จ ๋ฐฉ์นจ์€ ๋ฐ˜๋Œ€** + +### 4.5 Worktree ์ž๋™ ์ƒ์„ฑ ์‹œ์  ๋Œ€์‘ (R4) + +#### 4.5.1 ๋ฌธ์ œ +- Claude Code๊ฐ€ ์‹ ๊ทœ worktree๋ฅผ **์„ธ์…˜ ์‹œ์ž‘ ์งํ›„ ์ž๋™ ์ƒ์„ฑ** (๋ณธ ์„ธ์…˜์˜ `tender-liskov-844a72`๋„ ๋™์ผ ํŒจํ„ด) +- ์ด ์‹œ์ ์—๋Š” setup ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ โ†’ ์‹ ๊ทœ worktree์˜ `.live/`๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ผ๋ฐ˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ƒ์„ฑ๋จ (๊ฒฉ๋ฆฌ ์ƒํƒœ) + +#### 4.5.2 ํ•ด๊ฒฐ์ฑ… โ€” SessionStart hook์— junction ์„ค์น˜ ์ž๋™ํ™” ์ถ”๊ฐ€ +`scripts/live_session_load.sh` ์ƒ๋‹จ ๋˜๋Š” ๋ณ„๋„ ์‹ ๊ทœ ์Šคํฌ๋ฆฝํŠธ `scripts/live_junction_ensure.sh`๋กœ ๋‹ค์Œ ๋กœ์ง ์‚ฝ์ž…: + +```bash +#!/bin/bash +# SessionStart ์ „์šฉ โ€” ํ˜„ worktree์˜ .live/๊ฐ€ junction์ธ์ง€ ํ™•์ธ, ์•„๋‹ˆ๋ฉด ์ƒ์„ฑ +REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) +[ -z "$REPO_ROOT" ] && exit 0 + +LIVE_DIR="$REPO_ROOT/.live" +CENTRAL_DIR="$HOME/.claude/nerdnavis-live" + +# ์ค‘์•™ ์ €์žฅ์†Œ ๋ฏธ์กด์žฌ ์‹œ ์ƒ์„ฑ (idempotent) +mkdir -p "$CENTRAL_DIR" 2>/dev/null + +# .live/๊ฐ€ reparse point(junction)/symlink๋ฉด ํ†ต๊ณผ +if [ -L "$LIVE_DIR" ] || (cmd //c "dir /A:L \"$LIVE_DIR\" 2>&1" | grep -q '' 2>/dev/null); then + exit 0 +fi + +# ์‹ค ๋””๋ ‰ํ† ๋ฆฌ๋ฉด ๋ฐฑ์—… ํ›„ junction ์ƒ์„ฑ (R3 ์•ˆ์ „ ์ ˆ์ฐจ) +if [ -d "$LIVE_DIR" ]; then + BAK="$LIVE_DIR.bak-$(date +%Y%m%d_%H%M)" + # ์ค‘์•™ ์ €์žฅ์œผ๋กœ ํŒŒ์ผ ์ด๊ด€ (์—†๋Š” ํŒŒ์ผ๋งŒ) + for f in "$LIVE_DIR"/*; do + [ -f "$f" ] || continue + name=$(basename "$f") + [ -e "$CENTRAL_DIR/$name" ] || cp "$f" "$CENTRAL_DIR/$name" + done + mv "$LIVE_DIR" "$BAK" 2>/dev/null +fi + +# OS๋ณ„ ๋งํฌ ์ƒ์„ฑ +case "$(uname)" in + MINGW*|CYGWIN*|MSYS*) + cmd //c "mklink /J \"$(cygpath -w "$LIVE_DIR")\" \"$(cygpath -w "$CENTRAL_DIR")\"" >/dev/null 2>&1 + ;; + *) + ln -s "$CENTRAL_DIR" "$LIVE_DIR" 2>/dev/null + ;; +esac + +# ๊ฒ€์ฆ + ์‹คํŒจ ์‹œ ์กฐ์ง๊ณต์ง€ ๋ฐœํ–‰ +if [ ! -L "$LIVE_DIR" ] && ! (cmd //c "dir /A:L \"$LIVE_DIR\" 2>&1" | grep -q '' 2>/dev/null); then + NOTICE="$REPO_ROOT/๊ณต์œ /์กฐ์ง๊ณต์ง€/$(date +%Y-%m-%d)_Live_junction_์ƒ์„ฑ์‹คํŒจ_$(hostname).md" + if [ ! -f "$NOTICE" ]; then + cat > "$NOTICE" < "์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด." +> "์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•ด์„œ ๊ด€๋ จ ๋œ ๋ฌธ์„œ์— ์ผ๊ด„ ๋ฐ˜์˜ํ•˜๊ณ  ์žฌ๋ฐœ๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด." + +**ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค**(์„ธ์…˜ยทPC ์—ฐ์†์„ฑ ๋ณด์žฅ)์˜ ๊ทผ๋ณธ ์œ„ํ˜‘ ์ˆ˜์ค€์œผ๋กœ ๊ฒฉ์ƒ. ๊ฐœ๋ฐœํŒ€์žฅ ์‹ค๋ฌด ๊ฒ€ํ†  ํ›„ ๊ทผ์› ํ•ด๊ฒฐ ์ง‘ํ–‰. + +## ์ง‘ํ–‰ ์š”์•ฝ (10์ข… ์ผ๊ด„) + +| # | ์˜์—ญ | ๋ณ€๊ฒฝ | +|---|------|------| +| 1 | ๊ทœ์น™ ์‹ ์„ค | **C34 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„** ํ—Œ๋ฒ•๊ธ‰ ์‹ ์„ค (P25 ์Šน๊ฒฉ + worktree ๊ฒฝ๊ณ„ ํ•ด์†Œ + Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ ํฌํ•จ) | +| 2 | ๊ทœ์น™ ์‚ญ์ œ | P25 ๋ณธ๋ฌธ ์™„์ „ ์‚ญ์ œ (C14-5-ํ™•์žฅ ๊ทœ์ค€, ๋ฒˆํ˜ธ ๊ตฌ๋ฉ ํ—ˆ์šฉ) | +| 3 | C16-1 ๋ณด๊ฐ• | `.live/` junction ์ž๋™ ์—ฐ๊ฒฐ ๋ช…๋ฌธํ™” | +| 4 | C31-1-E ๊ฐฑ์‹  | "P25" ํ‘œ๊ธฐ๋ฅผ "C34"๋กœ ๊ฐฑ์‹  | +| 5 | ๊ทผ์› ๊ตฌํ˜„ | `scripts/live_junction_ensure.sh` ์‹ ๊ทœ (SessionStart hook ์ตœ์šฐ์„  ์‚ฝ์ž…) | +| 6 | Setup ๊ฐ•ํ™” | `setup_windows.ps1`ยท`setup_macos.sh`์— 3.5 Live junction ์„น์…˜ | +| 7 | Verify ๊ฐ•ํ™” | `verify_setup.ps1`์— 2.5 3์ถ• ๊ฒ€์ฆ (์ค‘์•™ ์‹ค์ฒดยทreparseยทmarker) | +| 8 | Hook ์ฒด์ธ ๊ฐฑ์‹  | `.claude/settings.json` SessionStart์— `live_junction_ensure.sh` ์ถ”๊ฐ€ | +| 9 | `.gitignore` | `.live/*` ์ œ์™ธ + README.md ์˜ˆ์™ธ + ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐฑ์—… ์ œ์™ธ | +| 10 | Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ | C34-11 + `memory/org/feedback_agent_path_boundary.md` | + +## ์ค‘์•™ ์ €์žฅ์†Œ ๊ตฌ์กฐ (๊ทผ์› ํ•ด๊ฒฐ ํ•ต์‹ฌ) + +``` +$HOME/.claude/nerdnavis-live/ # PC ๋กœ์ปฌ ๋‹จ์ผ ์‹ค ์ €์žฅ +โ”œโ”€โ”€ .junction-marker # ์—ฐ๊ฒฐ ์ƒํƒœ ํŒ์ •์šฉ sentinel +โ”œโ”€โ”€ README.md # ์กฐ์ง ๋ฌธ์„œ ์—ญํ•  +โ””โ”€โ”€ {ํŒŒ์ผ๋ณ„ ๋ณ€๊ฒฝ๋ถ„}.md # hook ์ฃผ์ž… ๋Œ€์ƒ + +{repo_or_worktree}/.live/ โ”€โ”€Junctionโ”€โ”€โ–ถ ์œ„ ์ค‘์•™ ์ €์žฅ์†Œ +``` + +## ์ž‘๋™ ๊ฒฝ๊ณ„ +- โœ… ๋™์ผ PC ๋‚ด ๋ชจ๋“  Claude ์„ธ์…˜ (**worktree ๊ฒฝ๊ณ„ ๋ฌด๊ด€**) +- โœ… ๋ ˆํฌ ๋ฃจํŠธยทworktreeยท๋‹ค๋ฅธ worktree ์–ด๋””์„œ๋“  ๋™์ผ ํŒŒ์ผ์‹œ์Šคํ…œ ์ฐธ์กฐ +- โŒ ๋‹ค๋ฅธ PC ๊ฐ„ ์‹ค์‹œ๊ฐ„ ๊ณต์œ  (์ด ๊ฒฝ์šฐ `git push` ๋ช…์‹œ ๊ณต์œ , P21-2) + +## ์กฐ์ง ์ „์› ํ•„์ˆ˜ ์กฐ์น˜ (C1 ์‚ฌ์ „ ๊ณ ์ง€) +1. **์„ธ์…˜ 1ํšŒ ์žฌ์‹œ์ž‘** โ€” SessionStart hook์ด `live_junction_ensure.sh`๋ฅผ ์ž๋™ ์‹คํ–‰ํ•˜์—ฌ junction ์„ค์น˜ +2. **`scripts/verify_setup.ps1`** ์‹คํ–‰ํ•˜์—ฌ 3์ถ• ๊ฒ€์ฆ ํ†ต๊ณผ ํ™•์ธ +3. ์‹คํŒจ ์‹œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ PowerShell๋กœ `setup/setup_windows.ps1` ๋˜๋Š” `setup/setup_macos.sh` ์žฌ์‹คํ–‰ + +## Agent ํ˜ธ์ถœ ์‹œ ๊ฒฝ๊ณ„ ๋ณดํ˜ธ (์‹ ๊ทœ ์˜๋ฌด) +- Agent ํ˜ธ์ถœ ํ”„๋กฌํ”„ํŠธ์— **"ํ˜„์žฌ cwd ๊ธฐ์ค€ ์ƒ๋Œ€ ๊ฒฝ๋กœ ์‚ฌ์šฉ ์˜๋ฌด"** ๋ช…์‹œ +- ์‚ฐ์ถœ๋ฌผ ๊ฒฝ๋กœ๋Š” `git rev-parse --show-toplevel` ๊ธฐ์ค€ +- PM์€ Agent ์‘๋‹ต ์ˆ˜๋ น ์งํ›„ `git -C <๋ ˆํฌ๋ฃจํŠธ> status` + ๋ณธ ์›ŒํฌํŠธ๋ฆฌ `git status` ๋ณ‘ํ–‰ ํ™•์ธ +- ๊ฒฝ๊ณ„ ์ดํƒˆ ์‹œ `git -C <๋ ˆํฌ๋ฃจํŠธ> stash push -u -- <๊ฒฝ๋กœ>` โ†’ ๋ณธ ์›ŒํฌํŠธ๋ฆฌ `git stash pop`์œผ๋กœ ๋ณต๊ตฌ + +## 1์ฃผ์ผ ๊ด€์ฐฐ ๊ธฐ๊ฐ„ +`.live.bak-*` ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐฑ์—…์€ 1์ฃผ์ผ ๊ด€์ฐฐ ํ›„ ์‚ญ์ œ ๊ณต์ง€ ์˜ˆ์ • (C6-1 ์›๋ณธ ๋ณดํ˜ธ). + +## ์ฐธ์กฐ +- [SKILL.md C34 ๋ณธ๋ฌธ](../../.claude/skills/๋„ˆ๋“œ๋‚˜๋น„์Šค-์ฝ”์–ด๋ฃฐ/SKILL.md) +- [ํ๊ธฐ ๊ทœ์น™ ์•„์นด์ด๋ธŒ P25 ์Šน๊ฒฉ ๊ธฐ๋ก](ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md) +- [๊ฐœ๋ฐœํŒ€์žฅ ์‹ค๋ฌด ๊ฒ€ํ†  ๋ณด๊ณ ์„œ](../์†Œํ†ต/๊ฐœ๋ฐœํŒ€โ†’PM/2026-04-18_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ_์‹ค๋ฌด๊ฒ€ํ† .md) +- [๋Œ€ํ™”๋กœ๊ทธ ์กฐ์ง์šด์˜ 2026-04-18](../๋Œ€ํ™”๋กœ๊ทธ/์กฐ์ง์šด์˜/2026-04-18.md) +- [์žฌ๋ฐœ ๋ฐฉ์ง€ ๋ฉ”๋ชจ๋ฆฌ: worktree ๊ฒฉ๋ฆฌ](../../memory/org/feedback_worktree_isolation.md) +- [์žฌ๋ฐœ ๋ฐฉ์ง€ ๋ฉ”๋ชจ๋ฆฌ: Agent ๊ฒฝ๊ณ„ ๋„˜๊ธฐ](../../memory/org/feedback_agent_path_boundary.md) diff --git a/๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md b/๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md index 684c37e..185e532 100644 --- a/๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md +++ b/๊ณต์œ /์กฐ์ง๊ณต์ง€/ํ๊ธฐ_๊ทœ์น™_์•„์นด์ด๋ธŒ.md @@ -292,6 +292,23 @@ rationale: C14(ํ† ํฐ ์ตœ์†Œํ™”) + ํ—Œ๋ฒ• ์ œ1์›์น™ ๋ชฉํ‘œ 2 ์›์น™ B(์ฐจ๊ธฐ --- +## 13. P25 โ†’ C34 ์Šน๊ฒฉ + worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ (2026-04-18) + +| ํ•ญ๋ชฉ | ๋‚ด์šฉ | +|------|------| +| **๊ทœ์น™ ๋ฒˆํ˜ธยท๋ช…** | P25 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„ โ†’ **C34 Live ์ฆ๋ถ„ ๋™๊ธฐํ™” ์ฒด๊ณ„** (ํ—Œ๋ฒ•๊ธ‰ ์Šน๊ฒฉ + ๋ณธ๋ฌธ ์ „๋ฉด ์žฌ์ž‘์„ฑ) | +| **์‹ ์„ค์ผ** | 2026-04-16 (P25๋กœ) | +| **์Šน๊ฒฉยท์žฌ์ž‘์„ฑ์ผ** | 2026-04-18 (C34๋กœ) | +| **์ƒํƒœ** | **๋ฒˆํ˜ธ ์Šน๊ฒฉ + ๋ณธ๋ฌธ ์ „๋ฉด ์žฌ์ž‘์„ฑ** (ํ”„๋กœ์ ํŠธ ๊ทœ์น™ โ†’ ํ•ต์‹ฌ ๊ทœ์น™ ํ—Œ๋ฒ•๊ธ‰) | +| **๋Œ€์ฒด ๊ด€๊ณ„** | ๊ตฌ P25 ๋ณธ๋ฌธ์€ C34๋กœ ํก์ˆ˜๋˜๋ฉฐ, worktree ๊ฒฝ๊ณ„ ํ•ด์†ŒยทAgent ๊ฒฝ๊ณ„ ๋ณดํ˜ธยท์ค‘์•™ Junction ๊ตฌ์กฐ๊ฐ€ ์‹ ๊ทœ ํŽธ์ž…๋จ | +| **๊ฒฝ์œ„ยท๊ทผ๊ฑฐ** | 2026-04-18 PD๋‹˜ ์ง์ ‘ ์„ ์–ธ โ€” **"์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ์šฐ๋ฆฌ ์กฐ์ง์€ ์œ ์ง€๋  ์ˆ˜ ์—†์–ด"** ยท **"์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•ด์„œ ๊ด€๋ จ ๋œ ๋ฌธ์„œ์— ์ผ๊ด„ ๋ฐ˜์˜ํ•˜๊ณ  ์žฌ๋ฐœ๋˜์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด"**. git worktree ๊ฒฉ๋ฆฌ๋กœ P25์˜ "๊ฐ™์€ PC ์„ธ์…˜ ๊ฐ„ ์‹ค์‹œ๊ฐ„ ๊ณต์œ "๊ฐ€ ์‹คํŒจํ•˜๋Š” ์‚ฌ์‹ค์ด ์‹ค์ฆ๋จ. ํ—Œ๋ฒ• ์ œ1์›์น™ โ‘ค(์„ธ์…˜ยทPC ์—ฐ์†์„ฑ ๋ณด์žฅ)์˜ ๊ทผ๋ณธ ์œ„ํ˜‘ ํŒ์ •. | +| **์˜ํ–ฅ ๋ฒ”์œ„** | (1) SKILL.md C34 ์‹ ์„ค + P25 ๋ณธ๋ฌธ ์™„์ „ ์‚ญ์ œ, C16-1 junction ์˜๋ฌด ํŽธ์ž…, C31-1-E ํ‘œ๊ธฐ ๊ฐฑ์‹  (2) CLAUDE.md ํ•ต์‹ฌ ๊ทœ์น™ ์š”์•ฝ 28โ†’29, ํ”„๋กœ์ ํŠธ ๊ทœ์น™ ์š”์•ฝ 25โ†’24 (3) ์Šคํฌ๋ฆฝํŠธ: `scripts/live_junction_ensure.sh` ์‹ ๊ทœ + `setup_*.ps1/sh` 3.5 ์„น์…˜ + `verify_setup.ps1` 2.5 ์„น์…˜ (4) `.claude/settings.json` SessionStart hook ์ฒด์ธ ๊ฐฑ์‹  (5) `.gitignore` `.live/*` ์ œ์™ธ ๊ทœ์น™ (6) ์กฐ์ง๊ณต์ง€ `2026-04-18_C34_์‹ ์„ค_worktree_๊ฒฉ๋ฆฌ_๊ทผ์›ํ•ด๊ฒฐ.md` ๋ฐœํ–‰ (7) memory/org/ 2์ข… ์‹ ์„ค | +| **๊ตฌ P25 ๋ณธ๋ฌธ ์š”์ง€** (๋ณด์กด) | Live ๋”๋ฏธ + `sync_signal.sh` ์‹œ๊ทธ๋„ ์ฒด๊ณ„๋กœ ๊ฐ™์€ PC ์„ธ์…˜ ๊ฐ„ ๋„คํŠธ์›Œํฌ ๋น„์šฉ 0 ์‹ค์‹œ๊ฐ„ ๊ณต์œ . ๋‹จ, "๊ฐ™์€ worktree" ์ „์ œ๊ฐ€ ์•”๋ฌต์ ์ด์—ˆ์œผ๋ฉฐ worktree ๊ฒฉ๋ฆฌ์—์„œ ์‹คํŒจํ•จ์ด ์‹ค์ฆ๋จ. | +| **๊ตํ›ˆ** | (1) **"๊ฐ™์€ PC = ๊ฐ™์€ ํŒŒ์ผ์‹œ์Šคํ…œ"์ด๋ผ๋Š” ์ง๊ด€์€ worktree ์•ž์—์„œ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ** โ€” ์กฐ์ง ๊ณต์œ  ์ฒด๊ณ„ ์„ค๊ณ„ ์‹œ worktree ๊ฒฝ๊ณ„ ์กฐ๊ฑด์„ ์ฒซ ๊ฒ€ํ†  ํ•ญ๋ชฉ์— ํฌํ•จ (2) Agent ํ˜ธ์ถœ ์‹œ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ•˜๋“œ์ฝ”๋”ฉ์€ worktree ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ์ด๋Š” 2์ฐจ ์œ„ํ—˜ โ€” C34-11ยท`feedback_agent_path_boundary.md` ์ฐธ์กฐ (3) ๊ธฐ์กด C16-1 memory junction ํŒจํ„ด์ด ๋ณธ ํ•ด๊ฒฐ์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€ (์ค‘์•™ ์ €์žฅ์†Œ + junction). ์ƒˆ ๊ณต์œ  ์ฒด๊ณ„ ์„ค๊ณ„ ์‹œ ๋™์ผ ํŒจํ„ด ์šฐ์„  ์ฑ„ํƒ | +| **๋ฒˆํ˜ธ ๊ตฌ๋ฉ** | P25๋Š” ๋ณธ๋ฌธ ์™„์ „ ์‚ญ์ œ (C14-5-ํ™•์žฅ ๊ทœ์ค€). CLAUDE.md ํ”„๋กœ์ ํŠธ ๊ทœ์น™ ์š”์•ฝ์—์„œ๋„ ์™„์ „ ์ œ๊ฑฐ. ๋ฒˆํ˜ธ ์—ฐ์†์„ฑ ์ž์‚ฐ ์•„๋‹˜. | + +--- + ## ๐Ÿ“˜ ์šด์˜ ๊ทœ์น™ (๋ณธ ํŒŒ์ผ ๊ด€๋ฆฌ) ### ์ถ”๊ฐ€ ์‹œ์  @@ -303,6 +320,7 @@ rationale: C14(ํ† ํฐ ์ตœ์†Œํ™”) + ํ—Œ๋ฒ• ์ œ1์›์น™ ๋ชฉํ‘œ 2 ์›์น™ B(์ฐจ๊ธฐ | ์ผ์‹œ | ๋ณ€๊ฒฝ์ž | ๋ณ€๊ฒฝ ์š”์ง€ | ๊ด€๋ จ PD ์ง€์‹œ | |------|--------|-----------|-------------| | 2026-04-18 | PM | ์‹ ์„ค + P20ยทC17ยท๊ตฌ C18ยท๊ตฌ C24ยท๊ตฌ C26 5์ข… ์ด๊ด€. ์ˆ˜์ • 3๋Œ€ ์›์น™ 3๋ฒˆ ๊ฐœ์ •(์ €์žฅ ์œ„์น˜ ์ตœ์ ํ™”) PD๋‹˜ ์ง์ ‘ ์ง€์‹œ ๋ฐ˜์˜ | 2026-04-18 ์›์น™ 3 ๊ฐœ์ • + A+B๊ธ‰ 6๊ฑด ์ง‘ํ–‰ ์ฐฉ์ˆ˜ ์ง€์‹œ | +| 2026-04-18 | PM | ยง13 P25 โ†’ C34 ์Šน๊ฒฉ ๊ธฐ๋ก ์ถ”๊ฐ€. worktree ๊ฒฉ๋ฆฌ ๊ทผ์› ํ•ด๊ฒฐ ์ง‘ํ–‰ (์ค‘์•™ Junction + Agent ๊ฒฝ๊ณ„ ๋ณดํ˜ธ) | 2026-04-18 PD๋‹˜ ์กฐ์ง ์ƒ์กด๊ธ‰ ์„ ์–ธ "๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋‹จ์„ ์จ์„œ ๊ฐœ์„ ํ•ด" | ### ์—ญ์ง„ํ™” ๋ฐฉ์ง€ (๋ณธ ํŒŒ์ผ ์ž์ฒด์˜ ๋ณดํ˜ธ) ๋ณธ ์•„์นด์ด๋ธŒ ํŒŒ์ผ ์ž์ฒด๊ฐ€ ์†Œ์‹คยท์‚ญ์ œ๋˜๋ฉด ์กฐ์ง ๊ธฐ์–ต์ด ์ผ๊ด„ ์†Œ์‹ค๋จ. ๋”ฐ๋ผ์„œ: