# ๐Ÿ› ๏ธ ์„ธ์…˜ ID ์ค‘๋ณต ์ถฉ๋Œ ํ•ด๊ฒฐ ์ข…ํ•ฉ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ๊ณ„ํš์„œ (Rev.3 โ€” ๋‹จ์ผ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ†ตํ•ฉ๋ณธ) ๋™์ผ CLI ๊ณ„์—ด(Claude / Cline)์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์—ญํ•  ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ™์€ workspace์—์„œ ๋™์‹œ ๊ตฌ๋™๋  ๋•Œ ๋Œ€ํ™” ์„ธ์…˜ ID๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฒฐํ•จ([Problem_Definition.md](Problem_Definition.md))์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ข… ์ข…ํ•ฉ ์„ค๊ณ„์•ˆ ๋ฐ ๊ตฌํ˜„ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ถ„๊ธฐ(L1/L2 ๋ณ‘ํ–‰) ๊ตฌ์กฐ๋ฅผ ๊ฑท์–ด๋‚ด๊ณ , **"๋ชจ๋“  ์—์ด์ „ํŠธ์˜ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ด€๋ฆฌ ์ผ์›ํ™”"**๋ผ๋Š” ์‚ฌ์šฉ์ž(GM) ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ์„ค๊ณ„๋ฅผ ๋‹จ์ˆœํ™”ํ•œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. Rev.3์—์„œ๋Š” **์‹ค์ธก ํ”„๋กœ๋ธŒ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒ„ ์ •์ • ๋ฐ auth ์‹œ๋”ฉ ๊ณ„์•ฝ**(์‚ฌ์šฉ์ž ์Šน์ธ ์กฐ๊ฑด)์„ ๋ฐ˜์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ธ ๊ณ„ํš์˜ ๋‹จ์ผ ์›๋ณธ์€ [implementation_plan.session_isolation.md](implementation_plan.session_isolation.md) (Rev.3)์ž…๋‹ˆ๋‹ค. --- ## 1. ๋ฐฐ๊ฒฝ ๋ฐ ๋ฌธ์ œ ์ •์˜ ๋™์ผํ•œ ์›Œํฌ์ŠคํŽ˜์ด์Šค์—์„œ ๋‹ค์ค‘ ์—ญํ•  ์—์ด์ „ํŠธ(์˜ˆ: `planner`์™€ `reviewer-a`, `developer`์™€ `reviewer-b`)๊ฐ€ ๊ธฐ๋™๋  ๋•Œ, ๋™์ผํ•œ ๋Œ€ํ™” UUID ๋˜๋Š” Cline ๋Œ€ํ™” ID๋ฅผ ๊ณต์œ ํ•จ์œผ๋กœ์จ ์ปจํ…์ŠคํŠธ๊ฐ€ ์˜ค์—ผ๋˜๊ณ , ํžˆ์Šคํ† ๋ฆฌ ์“ฐ๊ธฐ ๊ฒฝํ•ฉ์œผ๋กœ ์ธํ•œ ๋ฝ ์ถฉ๋Œ ๋ฐ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ### 1.1 ๊ทผ๋ณธ ์›์ธ ๋ถ„์„ * **C1. ์ƒ์„ฑ ์‹œ ๊ณ ์œ  ID ๋ฏธ์ง€์ •**: ์„ธ์…˜ ์ƒ์„ฑ ์‹œ์ ์— ํŠน์ • ์„ธ์…˜ ID ์ธ์ž๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•„ CLI ๊ธฐ๋ณธ ๋™์ž‘์ธ "์ตœ๊ทผ ๋Œ€ํ™” ์ƒ์†"์ด ์‹คํ–‰๋จ. * **C2. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋‹จ์œ„ ํ‚ค์ž‰**: ๋Œ€ํ™” ์„ธ์…˜ ๋งคํ•‘์ด ์—ญํ• (role) ์ฐจ์› ์—†์ด ๋‹จ์ˆœํžˆ `workspace_root` ๊ฒฝ๋กœ๋งŒ์„ ํ‚ค๋กœ ์‚ผ์•„ ์ด๋ค„์ง. * **C3. mtime ๊ธฐ๋ฐ˜ ์ถ”์ธก ๋ฐ”์ธ๋”ฉ (Tier-2)**: resolver๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋‚ด์—์„œ ์ตœ์ข… ์ˆ˜์ • ์‹œ๊ฐ„(mtime)์ด ๊ฐ€์žฅ ์ตœ์‹ ์ธ ์„ธ์…˜์„ ๋ฐ”์ธ๋”ฉํ•˜์—ฌ, ๋‹ค๋ฅธ ์—ญํ• ์˜ ์—์ด์ „ํŠธ๊ฐ€ ๋™์ผํ•œ UUID๋ฅผ ์ƒ์†๋ฐ›๊ฒŒ ๋จ. --- ## 2. ๊ฐœ์ •๋œ ์„ค๊ณ„ ๋ฐฉํ–ฅ: "๋‹จ์ผ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ" ์ผ์›ํ™” (Rev.3 ์ •์ • ๋ฐ˜์˜) ๊ฐ ์—์ด์ „ํŠธ์˜ ID ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์› ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๊ตฌํ˜„์„ ๋ถ„๊ธฐํ•˜๋Š” ๋Œ€์‹ , **๋ชจ๋“  ์—์ด์ „ํŠธ์— ๋Œ€ํ•ด ๊ท ์ผํ•˜๊ฒŒ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ฃผ์ž… ๋ฐฉ์‹์œผ๋กœ ์ผ์›ํ™”**ํ•˜์—ฌ ์•„ํ‚คํ…์ฒ˜์˜ ๋ณต์žก๋„๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. > โš ๏ธ **Rev.3 ์ •์ • (์‹ค์ธก ๊ทผ๊ฑฐ)**: ์ด์ „ ํŒ์˜ "Claude = `CLAUDE_PROJECT_DIR` ๊ฒฉ๋ฆฌ"๋Š” **๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์„ค๊ณ„**์˜€์Šต๋‹ˆ๋‹ค. `CLAUDE_PROJECT_DIR`์€ MAM resolver์˜ **์ฝ๊ธฐ ์ „์šฉ** ๋ณ€์ˆ˜(`lib.sh:23,477`)๋กœ, claude CLI๊ฐ€ ๋Œ€ํ™”๋ฅผ **์“ฐ๋Š”** ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. claude์˜ ์“ฐ๊ธฐ ์œ„์น˜ ์ด๋™์€ `CLAUDE_CONFIG_DIR`(`~/.claude` ์ง€๋ถ• ์ „์ฒด ์ด๋™)๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด ๊ฒฝ์šฐ auth/์„ค์ • ์‹œ๋”ฉ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค(ยง2.3). ๋˜ํ•œ cline์€ ์‹ค์ธก ๊ฒฐ๊ณผ per-session `HOME`์ด ์•„๋‹Œ **์ „์šฉ `--data-dir`/`--config` ๋ถ„๋ฆฌ ํ”Œ๋ž˜๊ทธ**๋ฅผ ๋ณด์œ ํ•ด ์‹œ๋”ฉ ์—†์ด ๊ฒฉ๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ```mermaid graph TD A[์„ธ์…˜ ์ƒ์„ฑ] --> U[uuidgen: isolation-UUID ๋ฐœ๊ธ‰] U --> B[.mam/agent_homes/<uuid>/ ์ƒ์„ฑ] B -->|Claude| B1[CLAUDE_CONFIG_DIR ์ฃผ์ž… + auth/์„ค์ • ์‹ฌ๋งํฌ ์‹œ๋”ฉ] B -->|Cline| B2[--data-dir ๊ฒฉ๋ฆฌ + --config ๊ณต์œ  auth] B -->|Agy / Hermes| B3[Phase 0 ํ”„๋กœ๋ธŒ: ์ „์šฉ ๋ ˆ๋ฒ„ or HOME+์‹œ๋”ฉ ํด๋ฐฑ] A --> C[Defense-in-depth: R1/R2 resolver ๋ถˆ๋ณ€์‹] B1 & B2 & B3 --> E[isolation ๋ธ”๋ก ์„ธ์…˜ row ์˜์†ํ™” โ†’ resume/resolve/stop ์žฌ์ ์šฉ] ``` ### 2.1 ์ผ์›ํ™” ์„ค๊ณ„์˜ ํ•ต์‹ฌ * **๊ฒฉ๋ฆฌ ์‹๋ณ„์ž โ‰  ๋Œ€ํ™” ์‹๋ณ„์ž**: MAM์ด `uuidgen`์œผ๋กœ ๋ฐœ๊ธ‰ํ•˜๋Š” **isolation-UUID๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ์‹๋ณ„์ž**์ž…๋‹ˆ๋‹ค. CLI๋Š” ์ž๊ธฐ ๋ฐฉ์‹๋Œ€๋กœ ๋Œ€ํ™” ID๋ฅผ mintํ•˜๋˜(claude UUID, cline `epoch_rand` ๋“ฑ) **์ž๊ธฐ๋งŒ์˜ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ** ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค โ€” cline์˜ ๋น„-UUID ํฌ๋งท ๋ฌธ์ œ๊ฐ€ ์›์ฒœ ์†Œ๋ฉธํ•ฉ๋‹ˆ๋‹ค. * **์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ(Cwd) ๊ณต์œ **: ์—์ด์ „ํŠธ๋“ค์˜ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ๋ฅผ ๋ฐ”๋ผ๋ด…๋‹ˆ๋‹ค(`-c "$WORKSPACE"` ๋ถˆ๋ณ€). ํ˜‘์—… ์†Œ์Šค์ฝ”๋“œ ์ปจํ…์ŠคํŠธ๋Š” ์™„๋ฒฝํžˆ ์ผ์น˜ํ•˜๋ฉฐ, ๊ฒฉ๋ฆฌ๋Š” **๋Œ€ํ™” ์ƒํƒœ ์ €์žฅ์†Œ์˜ ์œ„์น˜๋งŒ** ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. * **๊ฒฉ๋ฆฌ ๋ฃจํŠธ**: `/.mam/agent_homes//` โ€” `.gitignore`(`.mam/`) ์ž๋™ ์ปค๋ฒ„, remove/stop ์ฒญ์†Œ ๊ณ„์•ฝ์— ์ž์—ฐ ํฌํ•จ. * **์Šคํ‚ค๋งˆ ์˜์†ํ™”**: ์„ธ์…˜ row์— `isolation: {uuid, root, lever, seeded[]}` ๋ธ”๋ก์„ `atomic_dump_yaml`๋กœ ์˜์†ํ™”(DB+YAML). resume/resolve/stop์€ ์ด ๋ธ”๋ก๋งŒ ์ฝ๋Š” **๋‹จ์ผ ๋””์ŠคํŒจ์น˜ ํ•จ์ˆ˜**๋ฅผ ๊ฒฝ์œ  โ€” agent๋ณ„ ๋ ˆ๋ฒ„ ์ฐจ์ด๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์บก์Аํ™”๋˜์–ด ๊ด€๋ฆฌ ๋ชจ๋ธ์€ ์™„์ „ ํ†ต์ผ๋ฉ๋‹ˆ๋‹ค. * **๊ทผ๋ณธ ์›์ธ ํ•ด์†Œ ๊ธฐ์ „**: ์‹ ๊ทœ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—” ์ƒ์†ํ•  ์ตœ๊ทผ ๋Œ€ํ™”๊ฐ€ ์—†์Œ(C1 ๋ฌดํ•ดํ™”) / UUID ๋„ค์ด๋ฐ์œผ๋กœ cwd-key ์ถฉ๋Œ ์†Œ๋ฉธ(C2) / ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹น ๋Œ€ํ™” 1๊ฐœ โ†’ resolver ํ•ญ์ƒ ์œ ์ผ ํ›„๋ณด(C3 ์†Œ๋ฉธ). ### 2.2 agent๋ณ„ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒ„ ๋งคํ•‘ โ€” โœ… Phase 0 ์‹ค์ธก ํ™•์ • (2026-07-10) | Agent | Spawn ๋ ˆ๋ฒ„ | ์‹œ๋”ฉ (์ „๋ถ€ **์‹ฌ๋งํฌ**) | ๊ฒฉ๋ฆฌ ๋‚ด ๋Œ€ํ™” ๊ฒฝ๋กœ | ์‹ค์ฆ | |---|---|---|---|---| | claude | `CLAUDE_CONFIG_DIR=` env | `.credentials.json`, `settings.json`, `plugins/` | `/projects//.jsonl` | โœ… ์‹คํ˜ธ์ถœ PASS | | cline | `--data-dir ` ํ”Œ๋ž˜๊ทธ | `settings/*` + `globalState.json` (โš ๏ธ `--config` ๊ณต์œ ๋งŒ์œผ๋ก  auth ๋ฏธ๊ณต์œ  โ€” ์‹ค์ธก ๋ฐ˜์ฆ, ์‹œ๋”ฉ ํ•„์ˆ˜) | `/sessions//.json` (โš ๏ธ ์‹คHOME `data/sessions/`์™€ ๋ ˆ์ด์•„์›ƒ ์ƒ์ด) | โœ… ์‹คํ˜ธ์ถœ PASS | | agy | `HOME=` env | `~/.gemini/` auth 3์ข…(`oauth_creds.json`, `google_accounts.json`, `antigravity-oauth-token`) + ๋ฉ”ํƒ€(`installation_id`/`settings.json`/`state.json`) | `/.gemini/antigravity-cli/conversations/.db` | โœ… auth ๊ฒ€์ฆ PASS (์‹œ๋”ฉ ์ „ ์‹คํŒจโ†’ํ›„ ์„ฑ๊ณต) | | hermes | `HOME=` env | `~/.hermes/{auth.json, config.yaml, .env}` | `/.hermes/state.db` | โœ… ์ฝ๊ธฐ ๊ฒฉ๋ฆฌ PASS ("No sessions found" + fresh state.db) | ### 2.3 ์‹œ๋”ฉ ๊ณ„์•ฝ (claude ๋ฐ HOME ํด๋ฐฑ agent) โ€” ์‚ฌ์šฉ์ž ์Šน์ธ ์กฐ๊ฑด * **์‹ฌ๋งํฌ ๊ฐ•์ œ, ๋ณต์‚ฌ ๊ธˆ์ง€**: ๋ณต์‚ฌ ์‹œ ํ† ํฐ ๊ฐฑ์‹ ์ด ๊ฒฉ๋ฆฌ ์‚ฌ๋ณธ์œผ๋กœ ๋ฐœ์‚ฐํ•ด ์›๋ณธ๊ณผ ์–ด๊ธ‹๋‚จ. ์‹ฌ๋งํฌ๋Š” ๊ฐฑ์‹ ์ด ์›๋ณธ ๋‹จ์ผ ํŒŒ์ผ์— ์ˆ˜๋ ด(ํ˜„ํ–‰ ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ๋™์ž‘๊ณผ ๋™์ผ ์˜๋ฏธ๋ก ). * claude ์‹œ๋”ฉ ๋ชฉ๋ก(์ดˆ์•ˆ): `.credentials.json`, `settings.json`, `plugins/` โ€” Phase 0์—์„œ ์ตœ์ข… ํ™•์ •, row์˜ `seeded[]`์— ๊ธฐ๋ก. * stop ํผ์ง€ ์‹œ **์‹ฌ๋งํฌ ์›๋ณธ ๋ฌด์†์ƒ** ๊ฒ€์ฆ ํฌํ•จ. ### 2.4 R1/R2 resolver ๋ถˆ๋ณ€์‹ (2์ค‘ ์•ˆ์ „ ์žฅ์น˜) * **R1**: resolver(`find_workspace_uuid` ๋“ฑ)๊ฐ€ ์ตœ์‹  ํŒŒ์ผ์„ ์Šค์บ”ํ•ด์˜ค๊ธฐ ์ „, ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ์„ธ์…˜๋“ค์ด ์†Œ์œ ํ•œ `*_own` ๋Œ€ํ™” ID ์ง‘ํ•ฉ์„ ํ›„๋ณด๊ตฐ์—์„œ ์ œ์™ธ(claimed-set filtering)ํ•ฉ๋‹ˆ๋‹ค. * **R2**: `atomic_dump` ์‹œ์ ์— ์ƒˆ๋กœ ๋“ฑ๋กํ•˜๋ ค๋Š” ์„ธ์…˜ ID๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ๋‹ค๋ฅธ ์„ธ์…˜์˜ ID์™€ ์ค‘๋ณต๋  ๊ฒฝ์šฐ `SystemExit` ์—๋Ÿฌ๋กœ ๊ฐ•์ œ ์ง„์ž… ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ### 2.5 ์ •๋ฆฌ(Cleanup) ๊ณ„์•ฝ (RC-2) * ์„ธ์…˜ ์ •์ง€(`stop_session.sh`) ์‹œ `isolation.root`๋ฅผ ์ผ๊ด„ ์ฒญ์†Œ(`rm -rf`)ํ•˜๋Š” ๋‹จ์ˆœยท๋ช…ํ™•ํ•œ ํด๋ฆฐ์—… ๊ทœ์น™. `.mam/` ํ•˜์œ„ ๋ฐฐ์น˜๋กœ `remove.sh` ์ „์ฒด ์ฒญ์†Œ๋„ ์ž๋™ ์ปค๋ฒ„. ### 2.6 Non-Goals * ์—์ด์ „ํŠธ CLI(`claude`, `cline`, `agy`, `hermes`) ์ž์ฒด ๋ฐ”์ด๋„ˆ๋ฆฌ/์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ตฌ๋™ ์‹œ ์™ธ๋ถ€ ํ™˜๊ฒฝ๋ณ€์ˆ˜ยทํ”Œ๋ž˜๊ทธ ์ฃผ์ž… ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. * ๊ธฐ์กด ๋‹จ์ผ ์—์ด์ „ํŠธ ๋™์ž‘ ๊ตฌ์กฐ์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. --- ## 3. ๋‹จ๊ณ„๋ณ„ ๊ตฌํ˜„ ๊ณ„ํš (Roadmap) **๋Œ€์ „์ œ: Phase 0 ๊ฒ€์ฆ ๊ฒŒ์ดํŠธ ํ†ต๊ณผ ์ „์—๋Š” ๊ฒฉ๋ฆฌ ์ฃผ์ž…(Phase 2 ์ดํ›„) ์ฝ”๋“œ ๊ตฌํ˜„์— ์ฐฉ์ˆ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.** ``` Phase 0 (๊ฒฉ๋ฆฌ ๋ ˆ๋ฒ„ ์‹ค์ธก ๋ฐ ๊ฒ€์ฆ โ€” G2 ์žฌ์กฐ์ค€) โ–ผ Phase 1 (R1/R2 ๊ณตํ†ต ๋ถˆ๋ณ€์‹ ํ•„ํ„ฐ โ€” Phase 0 ์‚ฐ์ถœ๋ฌผ ๋น„์˜์กด, ๋ณ‘๋ ฌ ์„ ํ–‰ ๊ฐ€๋Šฅ) โ–ผ Phase 2 (๊ฒฉ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹ยท์‹œ๋”ฉยท์ฃผ์ž… ๋ฐ isolation ์Šคํ‚ค๋งˆ ์˜์†ํ™” ๊ตฌํ˜„) โ–ผ Phase 3 (stop_session.sh ํด๋ฆฐ์—… ๊ณ„์•ฝ ์—ฐ๋™ ๊ตฌํ˜„) โ–ผ Phase 4 (ํ†ตํ•ฉ ๋ฐ ํšŒ๊ท€ ๊ฒ€์ฆ) ``` ### Phase 0 โ€” ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒ„ ์‹ค์ธก (๊ตฌํ˜„ ์ „ ํ•„์ˆ˜ ์‹ค์ธก) * **G2-claude**: `CLAUDE_CONFIG_DIR=<๊ฒฉ๋ฆฌ๊ฒฝ๋กœ>` ๊ธฐ๋™ ์‹œ (a) ๋Œ€ํ™” jsonl์ด `<๊ฒฉ๋ฆฌ๊ฒฝ๋กœ>/projects//`์— ์ƒ์„ฑ (b) `.credentials.json` **์‹ฌ๋งํฌ๋งŒ์œผ๋กœ ๋กœ๊ทธ์ธ ์œ ์ง€** (c) settings/plugins ์‹ฌ๋งํฌ๋กœ ํ–‰๋™ ๋“œ๋ฆฌํ”„ํŠธ ์—†์Œ. * **G2-cline**: `--data-dir <๊ฒฉ๋ฆฌ๊ฒฝ๋กœ> --config ~/.cline/data/settings` ๊ธฐ๋™ ์‹œ (a) ์„ธ์…˜์ด ๊ฒฉ๋ฆฌ๊ฒฝ๋กœ์— ์ƒ์„ฑ (b) ๊ณต์œ  auth ์ •์ƒ ๋™์ž‘. * **G2-agy / G2-hermes**: ์ „์šฉ ๋ ˆ๋ฒ„(project/home env) ์‹ค์ธก, ๋ถ€์žฌ ์‹œ `HOME` ์˜ค๋ฒ„๋ผ์ด๋“œ+auth ์‹œ๋”ฉ ์œ ํšจ์„ฑ. * **DoD**: `{agent ร— (๋ ˆ๋ฒ„, ์‹œ๋”ฉ ๋ชฉ๋ก, ๋Œ€ํ™” ์ €์žฅ ์‹ค๊ฒฝ๋กœ)}` ๋งคํŠธ๋ฆญ์Šค ํ™•์ • โ†’ ยง2.2 ๊ฐฑ์‹ . ### Phase 1 โ€” ๊ณตํ†ต ๋ถˆ๋ณ€์‹ ๊ตฌํ˜„ (์ „๋žต ๋ฌด๊ด€, ์„ ํ–‰ ๊ฐ€๋Šฅ) * *์˜์กด์„ฑ ์ฐธ๊ณ *: Phase 1์€ ๊ฒฉ๋ฆฌ ํ”„๋กœ๋ธŒ ๊ฒฐ๊ณผ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๊ณตํ†ต `lib.sh`์—๋งŒ ์ ์šฉ๋˜๋ฏ€๋กœ, **Phase 0 ์™„๋ฃŒ ์—ฌ๋ถ€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ณ‘๋ ฌ๋กœ ๋˜๋Š” ์„ ์ œ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.** * **T1. claimed-set ํ•„ํ„ฐ ๊ตฌํ˜„**: `lib.sh` (`find_workspace_uuid` ๊ณ„์—ด) ํƒ์ƒ‰ ๋กœ์ง ์ˆ˜์ •. ํ›„๋ณด๊ตฐ ์ค‘ ๋‹ค๋ฅธ ์‹คํ–‰ ์ค‘์ธ row์˜ `*_own`์„ ํ•„ํ„ฐ๋ง ์•„์›ƒ. * **T2. ์ƒ์„ฑ-์‹œ ์ค‘๋ณต assertion**: ์„ธ์…˜ ๋“ฑ๋ก/๋คํ”„ ๋กœ์ง ๋ถ€๊ทผ์—์„œ ์ค‘๋ณต assert โ€” ์ค‘๋ณต ID ์ถฉ๋Œ ์‹œ ์ฆ‰์‹œ ๊ฑฐ๋ถ€. * **DoD**: ๋™์ผ ๋Œ€ํ™” ID ๊ฐ•์ œ ์ฃผ์ž…์œผ๋กœ ์„ธ์…˜ 2๊ฐœ ์ƒ์„ฑ ์‹œ๋„ ์‹œ, ๋‘ ๋ฒˆ์งธ ์ƒ์„ฑ ์š”์ฒญ์ด ๊ฑฐ๋ถ€๋จ์„ ์ฆ๋ช…. ### Phase 2 โ€” ๊ฒฉ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹ ๋ฐ ์˜์†ํ™” ๊ตฌํ˜„ (์ „์ฒด ์—์ด์ „ํŠธ ์ ์šฉ) * **T3. ๊ฒฉ๋ฆฌ ํ”„๋กœ๋น„์ €๋‹**: create ์‹œ isolation-UUID ๋ฐœ๊ธ‰ โ†’ `.mam/agent_homes//` ์ƒ์„ฑ โ†’ agent๋ณ„ ์‹ฌ๋งํฌ ์‹œ๋”ฉ(ยง2.3). * **T4. spawn ์ฃผ์ž…**: ๋””์ŠคํŒจ์น˜ ํ•จ์ˆ˜๊ฐ€ agent๋ณ„ ๋ ˆ๋ฒ„(ยง2.2: `CLAUDE_CONFIG_DIR` / `--data-dir` / ํ”„๋กœ๋ธŒ ๊ฒฐ๊ณผ)๋กœ ๊ฒฉ๋ฆฌ ๋ฃจํŠธ ์ฃผ์ž…. * **T5. ์Šคํ‚ค๋งˆ ์˜์†ํ™”**: `isolation` ๋ธ”๋ก์„ row์— ์ €์žฅํ•˜๊ณ  resume/resolve ์‹œ ์žฌ์†Œ์‹ฑ ์ ์šฉ โ€” **์ €์žฅ+์žฌ์ ์šฉ์€ ์›์ž์  ์„ธํŠธ**. * **DoD**: Claude / Cline ์„ธ์…˜ ๊ฐ๊ฐ 2๊ฐœ ๋™์‹œ ์ƒ์„ฑ ์‹œ ๋Œ€ํ™” ํŒŒ์ผ ๋ฌผ๋ฆฌ ๋ถ„๋ฆฌยท์บ์‹œ ๋น„๊ณต์œ , resume ์‹œ ์˜ฌ๋ฐ”๋ฅธ ๋ณต์› ํ™•์ธ. ### Phase 3 โ€” stop ์ •๋ฆฌ ๊ณ„์•ฝ ํ™•์žฅ * **T6. stop ์ •๋ฆฌ ๊ณ„์•ฝ ํ™•์žฅ**: `stop_session.sh`๊ฐ€ `isolation.root`๋ฅผ ์ž๋™ ํผ์ง€(`rm -rf`), **์‹ฌ๋งํฌ ์›๋ณธ ๋ฌด์†์ƒ ๊ฒ€์ฆ** ํฌํ•จ. * **DoD**: stop ํ›„ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ž”์กด 0, ์‹คHOME auth/์„ค์ • ์›๋ณธ ๋ฌด์†์ƒ, ๋””์Šคํฌ ๋ˆ„์ˆ˜ ์—†์Œ. ### Phase 4 โ€” ํ†ตํ•ฉ ๋ฐ ํšŒ๊ท€ ๊ฒ€์ฆ * **V1. ๋‹ค์ค‘ ๊ธฐ๋™ ํ…Œ์ŠคํŠธ**: planner(claude), reviewer-a(claude), developer(cline), reviewer-b(cline) 4๊ฐœ ๋™์‹œ ๊ธฐ๋™ ์‹œ 4๊ฐœ ์„ธ์…˜ ID ๋ชจ๋‘ ์œ ์ผ์„ฑ ํ™•๋ณด ๊ฒ€์ฆ. * **V2. ๋™์‹œ ์“ฐ๊ธฐ ๊ฒฝํ•ฉ**: 4๊ฐœ ์—์ด์ „ํŠธ ๋™์‹œ ๋™์ž‘ ์‹œ ๋ฝ ๊ฒฝํ•ฉ/๋ฐ์ดํ„ฐ ์œ ์‹ค ํ˜„์ƒ ์žฌํ˜„ ๋ถˆ๊ฐ€ ํ™•์ธ. * **V3. ๋‹จ์ผ ์„ธ์…˜ ํšŒ๊ท€ ๊ฒ€์ฆ**: ๊ฒฉ๋ฆฌ ์ •์ฑ… ์ ์šฉ ํ›„ ๊ธฐ์กด ๋‹จ์ผ ์—์ด์ „ํŠธ ๊ตฌ๋™ ํ™˜๊ฒฝ์—์„œ ๋ฌธ์ œ์—†์ด ์ •์ƒ ๋™์ž‘ํ•จ์„ ๊ฒ€์ฆ. --- ## 4. ๋ฆฌ์Šคํฌ ๋ฐ ๊ฒ€์ˆ˜ ํฌ์ธํŠธ (Reviewer ๊ด€์ , Rev.3 ๊ฐฑ์‹ ) | ID | ๋ฆฌ์Šคํฌ | ์™„ํ™”์ฑ… | |----|--------|------| | **RK1** | ๊ฒฉ๋ฆฌ ๊ฒฝ๋กœ ์ฃผ์ž… ํ›„ resolve/resume ์‹œ ์ „์—ญ ๊ธฐ๋ณธ ๊ฒฝ๋กœ ์Šค์บ”์œผ๋กœ ํšŒ๊ท€ | `isolation` ๋ธ”๋ก ์ €์žฅ๊ณผ resume ์‹œ ์žฌ์ ์šฉ์„ ์›์ž์  ์„ธํŠธ๋กœ ๋ฌถ๊ณ  ๋‹จ์ผ ๋””์ŠคํŒจ์น˜ ํ•จ์ˆ˜ ๊ฐ•์ œ | | **RK2** | **์‹œ๋”ฉ ๋“œ๋ฆฌํ”„ํŠธ**: CLI ์—…๋ฐ์ดํŠธ๋กœ ์‹ ๊ทœ ํŒŒ์ผ ๋“ฑ์žฅ ์‹œ ์‹ฌ๋งํฌ ๋ชฉ๋ก ๋ˆ„๋ฝ โ†’ ๊ฒฉ๋ฆฌ ์ธ์Šคํ„ด์Šค ํ–‰๋™ ์ด์ƒ | `seeded[]`๋ฅผ row์— ๊ธฐ๋ก, Phase 0 ๋งคํŠธ๋ฆญ์Šค์— ์‹œ๋”ฉ ํŒŒ์ผ ๋ชฉ๋ก ๋ช…์„ธ | | **RK3** | **ํ† ํฐ ๊ฐฑ์‹  ๋ฐœ์‚ฐ**: auth ํŒŒ์ผ์„ ๋ณต์‚ฌ ์‹œ๋”ฉํ•˜๋ฉด ๊ฒฉ๋ฆฌ ์‚ฌ๋ณธ์˜ ํ† ํฐ ๊ฐฑ์‹ ์ด ์›๋ณธ๊ณผ ์–ด๊ธ‹๋‚จ | **์‹ฌ๋งํฌ ๊ฐ•์ œ** โ€” ๊ฐฑ์‹ ์ด ์›๋ณธ ๋‹จ์ผ ํŒŒ์ผ์— ์ˆ˜๋ ด | | **RK4** | ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฏธ์ •๋ฆฌ๋กœ ์ธํ•œ ๋””์Šคํฌ ๋ˆ„์ˆ˜ | `.mam/` ํ•˜์œ„ ๋ฐฐ์น˜(remove.sh ์ปค๋ฒ„) + stop ํผ์ง€ + ๊ณ ์•„ `agent_homes/*` GC(์„ ํƒ) | | **RK5** | ๋‹จ์ผ ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ ๊ธฐ์กด ์‚ฌ์šฉ์ž์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ํšŒ๊ท€ | ๊ฒฉ๋ฆฌ ํ™œ์„ฑํ™”๋ฅผ ์„ธ์…˜ ๋‹ค์ค‘์„ฑ ์กฐ๊ฑด ํ˜น์€ ๋ช…์‹œ์  ํ”Œ๋ž˜๊ทธ(`--isolate-strict`)๋กœ ์ œ์–ด, V3 ํšŒ๊ท€ ๊ฒŒ์ดํŠธ | --- ## 5. ์˜์‚ฌ๊ฒฐ์ • ๋ฐ ๋‹ค์Œ ๋‹จ๊ณ„ * โœ… ๋ชจ๋“  ์—์ด์ „ํŠธ๋ฅผ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์ผ์›ํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ ์ตœ์ข… ์Šน์ธ (ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ โ€” claude `--session-id` ์‹ค์ธก ํ™•์ • ๋ ˆ๋ฒ„์˜ ๋ฏธ์ฑ„ํƒ โ€” ์ธ์ง€ ํ›„ ๊ฒฐ์ •). * โœ… ์Šน์ธ ์กฐ๊ฑด ๋ฐ˜์˜: (1) Phase 0์— claude `CLAUDE_CONFIG_DIR`+์‹ฌ๋งํฌ ๋กœ๊ทธ์ธ ์œ ์ง€ ํ”„๋กœ๋ธŒ ํฌํ•จ, (2) ์‹œ๋”ฉ ๊ณ„์•ฝ(ยง2.3) ๋ช…๋ฌธํ™”. * โญ๏ธ ์Šน์ธ์— ๋”ฐ๋ผ **Phase 0 (๊ฒฉ๋ฆฌ ๋ ˆ๋ฒ„ ์‹ค์ธก)** ๋ฐ **Phase 1 (๊ณตํ†ต ๋ถˆ๋ณ€์‹ ํ•„ํ„ฐ)** ํƒœ์Šคํฌ์— ์ฐฉ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. Phase 2 ์ดํ›„ ๊ตฌํ˜„์€ Phase 0 ๋งคํŠธ๋ฆญ์Šค ํ™•์ • ํ›„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.