From d7e19feaf54fa5bcea2f3762b0f39e0a39336aac Mon Sep 17 00:00:00 2001 From: Godopu Date: Sat, 11 Jul 2026 00:41:12 +0900 Subject: [PATCH] refactor(installer): resolve architectural inconsistencies, pyyaml hard check, and migrate reports to tracked paths --- .agents/INSTALL.md | 2 +- .agents/MULTI_AGENT_RULES.ko.md | 2 +- .agents/MULTI_AGENT_RULES.md | 2 +- .../brief-isolation-review.md | 28 ++++++++++ .../report-isolation-review.md | 56 +++++++++++++++++++ .../brief-isolation-review.md | 28 ++++++++++ .../brief.md | 20 +++++++ .../report-mam-installer-rereview.md | 0 .../report-mam-installer-review.md | 0 .../report-session-isolation-review.md | 0 scripts/install_mam.sh | 55 +++++++++++------- 11 files changed, 169 insertions(+), 24 deletions(-) create mode 100644 .agents/reports/canary-projects-multi-agent-mux-creator-claude/brief-isolation-review.md create mode 100644 .agents/reports/canary-projects-multi-agent-mux-creator-claude/report-isolation-review.md create mode 100644 .agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief-isolation-review.md create mode 100644 .agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief.md rename {.mam => .agents}/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-rereview.md (100%) rename {.mam => .agents}/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-review.md (100%) rename {.mam => .agents}/reports/canary-projects-multi-agent-mux-reviewer-cline/report-session-isolation-review.md (100%) diff --git a/.agents/INSTALL.md b/.agents/INSTALL.md index 265b2b9..77f0d7b 100644 --- a/.agents/INSTALL.md +++ b/.agents/INSTALL.md @@ -92,4 +92,4 @@ $ bash .agents/skills/multi-agent-mux-stop/scripts/stop_session.sh \ ## ๐Ÿ›ก๏ธ ํ˜‘์—… ๋ฐ ๋ณด์•ˆ ๊ฐ€์ด๋“œ๋ผ์ธ * MAM์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ชจ๋“  ์—์ด์ „ํŠธ(๊ฐœ๋ฐœ์ž, ๋ฆฌ๋ทฐ์–ด)๋“ค์€ ๋ฃจํŠธ์˜ `AGENTS.md` ์ง€์นจ์„ ์šฐ์„  ์ˆ™์ง€ํ•˜๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ์˜คํƒ๊ณผ ๋ฌด๋ถ„๋ณ„ํ•œ ๋ฆฌํŒฉํ† ๋ง ๋ฒ”๋žŒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -* ๊ฐ ์—์ด์ „ํŠธ ์—ญํ• ๋ณ„๋กœ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ๋ฆด ์‹œ, ์Šน์ธ ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ(.md)๋Š” `.mam/reports//` ํ•˜์œ„์— ์ƒ์„ฑ ๋ฐ ํ˜•์ƒ ์ปค๋ฐ‹ํ•˜๋Š” ๊ทœ์•ฝ(`.agents/MULTI_AGENT_RULES.md`)์„ ์ค€์ˆ˜ํ•ด ์ฃผ์„ธ์š”. +* ๊ฐ ์—์ด์ „ํŠธ ์—ญํ• ๋ณ„๋กœ ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ๋ฆด ์‹œ, ์ตœ์ข… ์Šน์ธ ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ(.md)๋Š” ํ˜•์ƒ ๊ด€๋ฆฌ๊ฐ€ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฒ„์ „ ๊ด€๋ฆฌ ๋Œ€์ƒ ๊ฒฝ๋กœ(๊ตฌ์ฒด์ ์œผ๋กœ `.agents/reports//` ๋˜๋Š” `docs/reports/` ๋“ฑ) ํ•˜์œ„๋กœ ์ด๊ด€ ๋ณต์‚ฌํ•˜์—ฌ ์ปค๋ฐ‹ํ•˜๋Š” ๊ทœ์•ฝ(`.agents/MULTI_AGENT_RULES.md`)์„ ์ค€์ˆ˜ํ•ด ์ฃผ์„ธ์š”. diff --git a/.agents/MULTI_AGENT_RULES.ko.md b/.agents/MULTI_AGENT_RULES.ko.md index 5c18332..55349e7 100644 --- a/.agents/MULTI_AGENT_RULES.ko.md +++ b/.agents/MULTI_AGENT_RULES.ko.md @@ -127,7 +127,7 @@ TMUX ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ์—์ด์ „ํŠธ๊ฐ€ ํ™”๋ฉด ์Šคํฌ๋กค ํ•œ๊ณ„๋กœ ์ธํ•ด - **๋””์Šคํฌ ์ •๋ฆฌ ๋ฐ ๋ณด์กด ์ •์ฑ… ๊ณ„์•ฝ (Cleanup & Retention)**: - `.mam/reports/` ํด๋” ์•„๋ž˜์˜ ํŒŒ์ผ๋“ค์€ ๊ฐ์‚ฌ ์ด๋ ฅ(audit-trail) ์‚ฐ์ถœ๋ฌผ๋กœ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. - ํ•ด๋‹น ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋“ค์€ `stop_session.sh` ๋“ฑ์„ ํ†ตํ•ด ์„ธ์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ํŒŒ๊ธฐ(`--purge-conversation`)๋  ๋•Œ ์ž๋™์œผ๋กœ ํ•จ๊ป˜ ์ •๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - - ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์˜๊ตฌ ๋ณด์กด์šฉ ์ฃผ์š” ์‚ฐ์ถœ๋ฌผ(์ตœ์ข… ์„ค๊ณ„ ๊ณ„ํš, ๋ณด์•ˆ ๊ฐ์‚ฌ ๋ฆฌํฌํŠธ ๋“ฑ)์€ gitignore ๋Œ€์ƒ์ธ `.mam/` ํ•˜์œ„๊ฐ€ ์•„๋‹Œ, ๋ฒ„์ „ ๊ด€๋ฆฌ ๋Œ€์ƒ ๊ฒฝ๋กœ(์˜ˆ: `docs/` ๋˜๋Š” `artifacts/` ๋“ฑ)๋กœ ๋ช…์‹œ์ ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๊ธฐ๋ก์„ ์ด๊ด€ ๋ณด์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. + - ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์˜๊ตฌ ๋ณด์กด์šฉ ์ฃผ์š” ์‚ฐ์ถœ๋ฌผ(์ตœ์ข… ์„ค๊ณ„ ๊ณ„ํš, ์ตœ์ข… ๋ฆฌ๋ทฐ ๋ณด๊ณ ์„œ, ๋ณด์•ˆ ๊ฐ์‚ฌ ๋ฆฌํฌํŠธ ๋“ฑ)์€ gitignore ๋Œ€์ƒ์ธ `.mam/` ํ•˜์œ„๊ฐ€ ์•„๋‹Œ, ๋ฒ„์ „ ๊ด€๋ฆฌ ๋Œ€์ƒ ๊ฒฝ๋กœ(๊ตฌ์ฒด์ ์œผ๋กœ `.agents/reports//` ๋˜๋Š” `docs/reports/` ๋“ฑ)๋กœ ๋ช…์‹œ์ ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๊ธฐ๋ก์„ ์ด๊ด€ ๋ณด์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ### โฑ๏ธ ํƒ€์ž„์•„์›ƒ ๊ตฌ์„ฑ ๋ฐ ์ •๋ ฌ ๊ทœ์น™ - **์žก ์‹คํ–‰ ์ œํ•œ (`timeout_sec` & `idle_timeout_sec`)**: ๊ฐ ์žก์€ ์ „์ฒด ์‹คํ–‰ ๋งŒ๋ฃŒ ์‹œ๊ฐ„(`timeout_sec`, ๊ธฐ๋ณธ 3600s)๊ณผ ๋ฉ”์„ธ์ง€ ๋ฏธ์ˆ˜์‹  ์œ ํœด ์‹œ๊ฐ„(`idle_timeout_sec`, ๊ธฐ๋ณธ 120s)์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค. diff --git a/.agents/MULTI_AGENT_RULES.md b/.agents/MULTI_AGENT_RULES.md index 1408b4b..23b7af6 100644 --- a/.agents/MULTI_AGENT_RULES.md +++ b/.agents/MULTI_AGENT_RULES.md @@ -127,7 +127,7 @@ To ensure that agents running in TMUX environments do not lose debug logs or pre - **Cleanup & Retention Contract**: - Files under `.mam/reports/` are audit-trail artifacts. - These folders should be cleaned up automatically during `stop_session.sh` when a session is gracefully stopped or purged (`--purge-conversation`). - - Durable outcomes (such as final design plans or security audit reports) that require version control must be explicitly copied to tracked directory paths (e.g., `docs/` or `artifacts/`) instead of remaining in the gitignored `.mam/` runtime tree. + - Durable outcomes (such as final design plans, review verdicts, or security audit reports) that require version control must be explicitly copied to tracked directory paths (specifically under `.agents/reports//` or `docs/reports/`) to preserve collaborative audit trails in version history, instead of remaining in the gitignored `.mam/` runtime tree. ### โฑ๏ธ Timeout Configuration & Alignment Rules - **Job Execution Limits (`timeout_sec` & `idle_timeout_sec`)**: Each job independently manages its overall execution timeout (`timeout_sec`, default 3600s) and idle timeout without receiving messages (`idle_timeout_sec`, default 120s). diff --git a/.agents/reports/canary-projects-multi-agent-mux-creator-claude/brief-isolation-review.md b/.agents/reports/canary-projects-multi-agent-mux-creator-claude/brief-isolation-review.md new file mode 100644 index 0000000..9bd3d05 --- /dev/null +++ b/.agents/reports/canary-projects-multi-agent-mux-creator-claude/brief-isolation-review.md @@ -0,0 +1,28 @@ +# ๐Ÿ“‹ ์„ธ์…˜ ID ์ค‘๋ณต ์ถฉ๋Œ ํ•ด๊ฒฐ ์ข…ํ•ฉ ์„ค๊ณ„์•ˆ ๋ฆฌ๋ทฐ ์š”์ฒญ ์ง€์‹œ์„œ + +- **์š”์ฒญ์ž**: Planner Agent (Antigravity) +- **์ˆ˜์‹ ์ž**: Reviewer Agent (Claude) +- **๋Œ€์ƒ ์„ธ์…˜**: `canary-projects-multi-agent-mux-creator-claude` +- **๊ฒ€ํ†  ๋Œ€์ƒ ํŒŒ์ผ**: [session_isolation_discussion.md](file:///home/godopu16/PuKi/laa/canary_projects/multi-agent-mux/session_isolation_discussion.md) + +--- + +## 1. ๊ฐœ์š” ๋ฐ ๊ฒ€ํ†  ์š”์ฒญ ์‚ฌํ•ญ + +๊ธฐ์กด์— ์ง„ํ–‰๋˜์—ˆ๋˜ ์„ธ์…˜ ID ์ค‘๋ณต ์ถฉ๋Œ ํ•ด๊ฒฐ ์„ค๊ณ„ ํ† ๋ก  ๋ณด๊ณ ์„œ์— Planner Agent๊ฐ€ ์ƒˆ๋กœ ์ž‘์„ฑํ•œ ๊ตฌ์ฒด์  ๊ตฌํ˜„ ๊ณ„ํš(Rev.2)์„ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ตํ•ฉ ๋ฐ ๋‹จ์ผํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค. + +์ˆ˜์‹ ์ž(Claude) ์—์ด์ „ํŠธ๋‹˜์€ ํ†ตํ•ฉ๋œ [session_isolation_discussion.md](file:///home/godopu16/PuKi/laa/canary_projects/multi-agent-mux/session_isolation_discussion.md) ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜์‹œ์–ด ์•„๋ž˜ ๊ธฐ์ค€์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +### ์ฃผ์š” ๊ฒ€ํ†  ๊ธฐ์ค€ +1. **์˜๊ฒฌ ๋ฐ˜์˜์˜ ์ •ํ•ฉ์„ฑ**: Claude ์—์ด์ „ํŠธ ๋ณธ์ธ์ด 2์ฐจ ํ† ๋ก  ๋ฐ `implementation_plan.session_isolation.md`์—์„œ ๊ฐœ์ง„ํ–ˆ๋˜ ํ•ต์‹ฌ ๋…ผ์ง€(3๊ณ„์ธต ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒฉ๋ฆฌ ์ฒด๊ณ„, Phase 0 ๊ฒ€์ฆ ๊ฒŒ์ดํŠธ, claimed-set resolver ํ•„ํ„ฐ ๋“ฑ)๊ฐ€ ์œ ์‹ค ์—†์ด ์ถฉ์‹คํžˆ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ๊ณ„ํš์•ˆ์— ๋…น์•„ ๋“ค์–ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜์‹ญ์‹œ์˜ค. +2. **๋…ผ๋ฆฌ์  ์ •ํ•ฉ์„ฑ**: Phase 0 ~ Phase 4 ๋กœ๋“œ๋งต์ด ๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์œผ๋ฉฐ, Phase 0(์‹ค์ธก ๊ฒ€์ฆ)์˜ ๊ฒŒ์ดํŠธ๋กœ์„œ์˜ ๊ธฐ๋Šฅ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. +3. **๋ˆ„๋ฝ ํ™•์ธ**: ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ด์ „์— ๋…ผ์˜๋˜์—ˆ๋˜ ๋‚ด์šฉ(์˜ˆ: RC-2 ์ฒญ์†Œ ๊ณ„์•ฝ, R1/R2 ์ด์ค‘ ์•ˆ์ „์žฅ์น˜ ๋“ฑ)์ด ๋ˆ„๋ฝ ์—†์ด ์ ์ ˆํ•˜๊ฒŒ ๊ธฐ์ž…๋˜์—ˆ๋Š”์ง€ ์ ๊ฒ€ํ•˜์‹ญ์‹œ์˜ค. + +--- + +## 2. ์ž‘์—… ๊ฒฐ๊ณผ ๋ณด๊ณ  ์–‘์‹ + +๊ฒ€ํ† ๋ฅผ ๋งˆ์นœ ํ›„, ๋ณธ์ธ์˜ ์˜๊ฒฌ๊ณผ ์ตœ์ข… ์Šน์ธ ์—ฌ๋ถ€๋ฅผ ์•„๋ž˜์— ๋ช…์‹œ๋œ ๊ฒฝ๋กœ์— ๊ธฐ๋กํ•ด ์ฃผ์‹ญ์‹œ์˜ค. + +* **๋ฆฌํฌํŠธ ์ž‘์„ฑ ๊ฒฝ๋กœ**: `.mam/reports/canary-projects-multi-agent-mux-creator-claude/report-isolation-review.md` +* **์Šน์ธ ๋ถˆ๋ณ€์‹**: ๊ฒ€ํ†  ๊ฒฐ๊ณผ ์„ค๊ณ„๊ฐ€ ์™„๋ฒฝํ•˜๊ณ  ๊ตฌํ˜„ ๊ณ„ํš์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ์ด๊ฒฌ์ด ์—†๋‹ค๋ฉด ๋ฆฌํฌํŠธ ๋ฐ ์ตœ์ข… ์‘๋‹ต(Completed Event Detail)์˜ ๋งˆ์ง€๋ง‰์— ๋ฐ˜๋“œ์‹œ **`"PASS"`** ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜์—ฌ ์‘๋‹ตํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋งŒ์•ฝ ์ˆ˜์ •์ด๋‚˜ ๋ณด์™„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ตฌ์ฒด์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ „๋‹ฌํ•ด ์ฃผ์‹ญ์‹œ์˜ค. diff --git a/.agents/reports/canary-projects-multi-agent-mux-creator-claude/report-isolation-review.md b/.agents/reports/canary-projects-multi-agent-mux-creator-claude/report-isolation-review.md new file mode 100644 index 0000000..a2491b3 --- /dev/null +++ b/.agents/reports/canary-projects-multi-agent-mux-creator-claude/report-isolation-review.md @@ -0,0 +1,56 @@ +# ๐Ÿ” ๋ฆฌ๋ทฐ ๋ฆฌํฌํŠธ โ€” ์„ธ์…˜ ID ๊ฒฉ๋ฆฌ ์ข…ํ•ฉ ์„ค๊ณ„/๊ตฌํ˜„ ๊ณ„ํš์„œ ๊ฒ€ํ†  + +- **๋ฆฌ๋ทฐ์–ด**: Claude (Reviewer A โ€” ์ƒ์œ„ ๋…ผ๋ฆฌ/์„ค๊ณ„ ์ •ํ•ฉ์„ฑ) +- **๊ฒ€ํ†  ๋Œ€์ƒ**: `session_isolation_discussion.md` (Planner ํ†ตํ•ฉ๋ณธ, Rev.2 ๋ฐ˜์˜) +- **๋Œ€์กฐ ๊ธฐ์ค€**: ๋ณธ์ธ ์ž‘์„ฑ `implementation_plan.session_isolation.md` (Rev.2) + 2์ฐจ ํ† ๋ก  ํ•ฉ์˜ +- **job_id**: 655fb695 +- **๋‚ ์งœ**: 2026-07-10 +- **์ตœ์ข… ํŒ์ •**: **PASS** (๊ฒฝ๋ฏธํ•œ ๋น„์ฐจ๋‹จ ๊ถŒ๊ณ  3๊ฑด ๋™๋ฐ˜) + +--- + +## 1. ๊ฒ€ํ†  ๊ธฐ์ค€๋ณ„ ๊ฒฐ๊ณผ + +### ๊ธฐ์ค€ 1 โ€” ์˜๊ฒฌ ๋ฐ˜์˜์˜ ์ •ํ•ฉ์„ฑ โœ… +๋ณธ์ธ์ด ๊ฐœ์ง„ํ•œ ํ•ต์‹ฌ ๋…ผ์ง€๊ฐ€ **์œ ์‹ค ์—†์ด** ํ†ตํ•ฉ๋จ์„ ํ™•์ธ: +| ์›์•ˆ ๋…ผ์ง€ | ํ†ตํ•ฉ๋ณธ ์œ„์น˜ | ์ƒํƒœ | +|---|---|---| +| 3๊ณ„์ธต ํ•˜์ด๋ธŒ๋ฆฌ๋“œ (L1 ์ธ์ž์ฃผ์ž… / L2 ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ฒฉ๋ฆฌ / R1 ๋ถˆ๋ณ€์‹) | ยง2.1, mermaid ๋‹ค์ด์–ด๊ทธ๋žจ | โœ… ์ถฉ์‹ค | +| L1: `uuidgen` ์‚ฌ์ „๋ฐœ๊ธ‰ โ†’ `--session-id` ์ฃผ์ž… โ†’ `*_own` ์ฆ‰์‹œ ๊ธฐ๋ก | L1 (line 36-37) | โœ… | +| L2: env ๊ฒฉ๋ฆฌ + `env_overrides` ์˜์†ํ™” + resume ์žฌ์ ์šฉ | L2 (line 38-40), T6 | โœ… | +| R1 claimed-set ํ•„ํ„ฐ + R2 ์ƒ์„ฑ-์‹œ ์œ ์ผ์„ฑ assert | R1/R2 (line 41-43), T1/T2 | โœ… | +| Phase 0 ๊ฒ€์ฆ ๊ฒŒ์ดํŠธ, ๊ฒŒ์ดํŠธ ํ†ต๊ณผ ์ „ ๊ตฌํ˜„ ๊ธˆ์ง€ | line 51, ยงPhase 0 | โœ… | +| agent๋ณ„ ID ๋ฐœ๊ธ‰ ๋น„๋Œ€์นญ(claude UUID vs cline `epoch_rand`) | RK3 (line 104) | โœ… | + +### ๊ธฐ์ค€ 2 โ€” ๋…ผ๋ฆฌ์  ์ •ํ•ฉ์„ฑ โœ… +- **Phase 0โ†’(L1/L2 ๋ถ„๊ธฐ)โ†’Phase 1โ†’Phase 2/3โ†’Phase 4** ๋กœ๋“œ๋งต์ด ์ธ๊ณผ์ ์œผ๋กœ ํƒ€๋‹น. +- **Phase 0๊ฐ€ ๊ฒŒ์ดํŠธ๋กœ์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธฐ๋Šฅ**: line 51์—์„œ "Phase 0 ํ†ต๊ณผ ์ „ ์ฝ”๋“œ ๊ตฌํ˜„ ์ฐฉ์ˆ˜ ๊ธˆ์ง€"๋ฅผ ๋Œ€์ „์ œ๋กœ ๋ช…์‹œํ•˜๊ณ , G1/G2 ์‹ค์ธก ๋งคํŠธ๋ฆญ์Šค๊ฐ€ L1/L2 ๋ผ์šฐํŒ…์„ ๊ฒฐ์ •(line 55-56, 73) โ€” ๊ฒŒ์ดํŠธ ์˜๋ฏธ๋ก  ์ •ํ™•. cline ๋ฏธ์ง€์› ๋ฆฌ์Šคํฌ๊ฐ€ ์ฝ”๋“œ ์ฐฉ์ˆ˜ ์ „์— ํ•ด์†Œ๋˜๋Š” ๊ตฌ์กฐ๋ผ ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ ์˜ˆ๋ฐฉ ์„ค๊ณ„๊ฐ€ ์„ฑ๋ฆฝ. +- Phase 1(R1/R2)์ด ์ „๋žต ๋ฌด๊ด€ ์„ ํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์›์•ˆ ์ทจ์ง€๋„ ๋ฐ˜์˜(line 58, "์„ ํ–‰ ๊ฐ€๋Šฅ"). + +### ๊ธฐ์ค€ 3 โ€” ๋ˆ„๋ฝ ํ™•์ธ โœ… +- **RC-2 ์ฒญ์†Œ ๊ณ„์•ฝ**: ยง2.1 RC-2(line 44-45) + T7(line 88) + RK4(line 105)๋กœ 3์ค‘ ๊ธฐ์ž… โ€” ๋ˆ„๋ฝ ์—†์Œ. +- **R1/R2 ์ด์ค‘ ์•ˆ์ „์žฅ์น˜**: line 41-43์— defense-in-depth๋กœ ๋ช…ํ™•ํžˆ ๊ธฐ์ž…. +- Phase๋ณ„ DoD, Phase 4 ํšŒ๊ท€๊ฒ€์ฆ(V1~V3) ๋ชจ๋‘ ์กด์žฌ. + +--- + +## 2. ๐ŸŸก ๋น„์ฐจ๋‹จ ๊ถŒ๊ณ  (๊ตฌํ˜„ ๊ณ„ํš ์„ธ๋ จํ™”์šฉ, PASS ์กฐ๊ฑด ์•„๋‹˜) + +- **A-1. Non-Goal ๋ช…์‹œ ๋ถ€์žฌ**: ์›์•ˆ์˜ ๋ช…์‹œ์  Non-Goal("CLI(claude/cline/agy/hermes) ์ž์ฒด ๋ฏธ์ˆ˜์ • โ€” ์ธ์ž/ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉ")์ด ํ†ตํ•ฉ๋ณธ์—” ๋ฌธ์žฅ์œผ๋กœ ๋น ์ ธ ์žˆ์Œ(์ ‘๊ทผ๋ฒ•์ƒ ๋‚ด์žฌ๋˜์–ด ์žˆ์œผ๋‚˜ ์•”๋ฌต์ ). ์˜คํ•ด ๋ฐฉ์ง€ ์œ„ํ•ด 1์ค„ ๋ช…๋ฌธํ™” ๊ถŒ๊ณ . +- **A-2. RK5 `--isolate-strict` ์‹ ๊ทœ ์š”์†Œ**: ์›์•ˆ์—” ์—†๋˜ "๊ฒฉ๋ฆฌ ํ™œ์„ฑํ™”๋ฅผ ์„ธ์…˜ ๋‹ค์ค‘์„ฑ/๋ช…์‹œ ํ”Œ๋ž˜๊ทธ๋กœ ์ œ์–ด"(line 106)๊ฐ€ ์ถ”๊ฐ€๋จ โ€” ํ•ฉ๋ฆฌ์  ๊ฐœ์„ ์ด๋‚˜ **์ƒˆ ์„ค๊ณ„ ๊ฒฐ์ •**์ด๋ฏ€๋กœ Phase 0/1 ๊ณ„ํš ์‹œ ์Šค์ฝ”ํ”„๋กœ ํ™•์ • ํ•„์š”(ํ”Œ๋ž˜๊ทธ ๊ธฐ๋ณธ๊ฐ’ยท๋ฐœ๋™ ์กฐ๊ฑด). +- **A-3. Phase 1 ์ˆœ์„œ ํ‘œ๊ธฐ ๋ฏธ์„ธ ๋ชจํ˜ธ**: ๋‹ค์ด์–ด๊ทธ๋žจ(line 53-63)์€ Phase 1์„ Phase 0 ์•„๋ž˜์— ์„ ํ˜• ๋ฐฐ์น˜ํ•˜๋‚˜ ๋ณธ๋ฌธ์€ "์„ ํ–‰ ๊ฐ€๋Šฅ"์ด๋ผ ํ‘œ๊ธฐ โ€” Phase 1์ด Phase 0 ์‚ฐ์ถœ๋ฌผ์— ์˜์กดํ•˜์ง€ ์•Š์Œ์„ ํ•œ ์ค„๋กœ ๋ช…ํ™•ํ™”ํ•˜๋ฉด ์ข‹์Œ(๊ธฐ๋Šฅ์  ๋ฌธ์ œ ์•„๋‹˜). + +--- + +## 3. ํŒ์ • ์š”์•ฝ + +| ๊ด€์  | ๊ฒฐ๊ณผ | +|---|---| +| ์˜๊ฒฌ ๋ฐ˜์˜ ์ •ํ•ฉ์„ฑ | โœ… ํ•ต์‹ฌ ๋…ผ์ง€ ์œ ์‹ค ์—†์Œ | +| ๋…ผ๋ฆฌ์  ์ •ํ•ฉ์„ฑ / Phase 0 ๊ฒŒ์ดํŠธ | โœ… ์ธ๊ณผ ํƒ€๋‹น, ๊ฒŒ์ดํŠธ ์˜๋ฏธ๋ก  ์ •ํ™• | +| ๋ˆ„๋ฝ ํ™•์ธ (RC-2, R1/R2) | โœ… ๋ˆ„๋ฝ ์—†์Œ | +| ๋น„์ฐจ๋‹จ ๊ถŒ๊ณ  | ๐ŸŸก A-1/A-2/A-3 (๊ณ„ํš ์„ธ๋ จํ™”์šฉ) | + +ํ†ตํ•ฉ๋ณธ์€ 2์ฐจ ํ† ๋ก  ํ•ฉ์˜์™€ Rev.2 ๊ตฌํ˜„ ๊ณ„ํš์„ **์ถฉ์‹คยท์™„์ „ํ•˜๊ฒŒ** ๋ฐ˜์˜ํ–ˆ๊ณ , ๊ฒฐ์ •์ ์œผ๋กœ **Phase 0 ์‹ค์ธก ๊ฒŒ์ดํŠธ๊ฐ€ ๊ตฌํ˜„ ์ „์— ์œ„์น˜**ํ•˜์—ฌ ์ž”์—ฌ ๋ถˆํ™•์‹ค์„ฑ(ํŠนํžˆ cline)์ด ์ฝ”๋“œ ์ฐฉ์ˆ˜ ์ „์— ํ•ด์†Œ๋˜๋Š” ์•ˆ์ „ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ท„์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„ ๊ณ„ํš์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ์ด๊ฒฌ ์—†์Šต๋‹ˆ๋‹ค. A-1~A-3๋Š” Phase 0 ์ฐฉ์ˆ˜ ์‹œ ํ•จ๊ป˜ ๋ฐ˜์˜ ๊ถŒ๊ณ . + +**PASS** diff --git a/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief-isolation-review.md b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief-isolation-review.md new file mode 100644 index 0000000..cf1ed71 --- /dev/null +++ b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief-isolation-review.md @@ -0,0 +1,28 @@ +# ๐Ÿ“‹ ์„ธ์…˜ ID ์ค‘๋ณต ์ถฉ๋Œ ํ•ด๊ฒฐ ์ข…ํ•ฉ ์„ค๊ณ„์•ˆ ๋ฆฌ๋ทฐ ์š”์ฒญ ์ง€์‹œ์„œ + +- **์š”์ฒญ์ž**: Planner Agent (Antigravity) +- **์ˆ˜์‹ ์ž**: Reviewer Agent (Cline) +- **๋Œ€์ƒ ์„ธ์…˜**: `canary-projects-multi-agent-mux-reviewer-cline` +- **๊ฒ€ํ†  ๋Œ€์ƒ ํŒŒ์ผ**: [session_isolation_discussion.md](file:///home/godopu16/PuKi/laa/canary_projects/multi-agent-mux/session_isolation_discussion.md) + +--- + +## 1. ๊ฐœ์š” ๋ฐ ๊ฒ€ํ†  ์š”์ฒญ ์‚ฌํ•ญ + +๊ธฐ์กด์— ์ง„ํ–‰๋˜์—ˆ๋˜ ์„ธ์…˜ ID ์ค‘๋ณต ์ถฉ๋Œ ํ•ด๊ฒฐ ์„ค๊ณ„ ํ† ๋ก  ๋ณด๊ณ ์„œ์— Planner Agent๊ฐ€ ์ƒˆ๋กœ ์ž‘์„ฑํ•œ ๊ตฌ์ฒด์  ๊ตฌํ˜„ ๊ณ„ํš(Rev.2)์„ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ตํ•ฉ ๋ฐ ๋‹จ์ผํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ชจ๋“  ์—์ด์ „ํŠธ๋“ค์„ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ์ผ์›ํ™” ๊ด€๋ฆฌํ•˜์ž๋Š” ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค. + +์ˆ˜์‹ ์ž(Cline) ์—์ด์ „ํŠธ๋‹˜์€ ํ†ตํ•ฉ ๋ฐ ๋‹จ์ˆœํ™”๋œ [session_isolation_discussion.md](file:///home/godopu16/PuKi/laa/canary_projects/multi-agent-mux/session_isolation_discussion.md) ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜์‹œ์–ด ์•„๋ž˜ ๊ธฐ์ค€์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. + +### ์ฃผ์š” ๊ฒ€ํ†  ๊ธฐ์ค€ +1. **์˜๊ฒฌ ๋ฐ˜์˜์˜ ์ •ํ•ฉ์„ฑ**: ๋ชจ๋“  ์—์ด์ „ํŠธ๊ฐ€ ๊ฒฉ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์˜ค๋ฒ„๋ผ์ด๋“œ ๋ฐฉ์‹(L2)์œผ๋กœ ์ผ์›ํ™”๋œ ์„ค๊ณ„ ๊ตฌ์กฐ๊ฐ€ ๋…ผ๋ฆฌ์ /๊ตฌ์กฐ์ ์œผ๋กœ ํƒ€๋‹นํ•œ์ง€ ๊ฒ€์‚ฌํ•˜์‹ญ์‹œ์˜ค. +2. **๋ˆ„๋ฝ ํ™•์ธ**: ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ด์ „์— ๋…ผ์˜๋˜์—ˆ๋˜ ๋‚ด์šฉ(์˜ˆ: RC-2 ์ฒญ์†Œ ๊ณ„์•ฝ, R1/R2 ์ด์ค‘ ์•ˆ์ „์žฅ์น˜ ๋“ฑ)์ด ๋ˆ„๋ฝ ์—†์ด ์ ์ ˆํ•˜๊ฒŒ ๊ธฐ์ž…๋˜์—ˆ๋Š”์ง€ ์ ๊ฒ€ํ•˜์‹ญ์‹œ์˜ค. +3. **DoD ๊ฒ€์ฆ์„ฑ**: ๊ฐ ๋‹จ๊ณ„๋ณ„ ์ •์˜๋œ DoD(Definition of Done) ๋ฐ ์ตœ์ข… ๊ฒ€์ฆ(V1~V3) ๋‹จ๊ณ„๊ฐ€ ์‹ค์ œ Cline ์—์ด์ „ํŠธ์˜ ๊ด€์ ์—์„œ๋„ ๋ฌด๊ฒฐํ•˜๊ณ  ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ์ง€ ํ‰๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. + +--- + +## 2. ์ž‘์—… ๊ฒฐ๊ณผ ๋ณด๊ณ  ์–‘์‹ + +๊ฒ€ํ† ๋ฅผ ๋งˆ์นœ ํ›„, ๋ณธ์ธ์˜ ์˜๊ฒฌ๊ณผ ์ตœ์ข… ์Šน์ธ ์—ฌ๋ถ€๋ฅผ ์•„๋ž˜์— ๋ช…์‹œ๋œ ๊ฒฝ๋กœ์— ๊ธฐ๋กํ•ด ์ฃผ์‹ญ์‹œ์˜ค. + +* **๋ฆฌํฌํŠธ ์ž‘์„ฑ ๊ฒฝ๋กœ**: `.mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-isolation-review.md` +* **์Šน์ธ ๋ถˆ๋ณ€์‹**: ๊ฒ€ํ†  ๊ฒฐ๊ณผ ์„ค๊ณ„๊ฐ€ ์™„๋ฒฝํ•˜๊ณ  ๊ตฌํ˜„ ๊ณ„ํš์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ์ด๊ฒฌ์ด ์—†๋‹ค๋ฉด ๋ฆฌํฌํŠธ ๋ฐ ์ตœ์ข… ์‘๋‹ต(Completed Event Detail)์˜ ๋งˆ์ง€๋ง‰์— ๋ฐ˜๋“œ์‹œ **`"PASS"`** ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜์—ฌ ์‘๋‹ตํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ๋งŒ์•ฝ ์ˆ˜์ •์ด๋‚˜ ๋ณด์™„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ตฌ์ฒด์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ „๋‹ฌํ•ด ์ฃผ์‹ญ์‹œ์˜ค. diff --git a/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief.md b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief.md new file mode 100644 index 0000000..a480430 --- /dev/null +++ b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/brief.md @@ -0,0 +1,20 @@ +# Onboarding & Project Context Analysis Brief + +์•ˆ๋…•ํ•˜์„ธ์š” Reviewer Cline Agent. +๋‹น์‹ ์€ ๋ณธ ํ”„๋กœ์ ํŠธ์˜ **๋ฆฌ๋ทฐ์–ด(Reviewer)** ์—ญํ• ์„ ์œ„์ž„๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. +์‹ค๋ฌด ๋˜๋Š” ๊ฒ€์ˆ˜ ์ž‘์—…์„ ์œ„์ž„๋ฐ›๊ธฐ ์ „์—, ์„ค๊ณ„ ๊ทœ์•ฝ์— ๋”ฐ๋ผ ๋‹ค์Œ ๋งฅ๋ฝ ํŒŒ์•… ์ž‘์—…์„ ์™„๋ฃŒํ•ด ์ฃผ์„ธ์š”. + +## ๐Ÿ“‹ ์˜จ๋ณด๋”ฉ ์š”๊ตฌ์‚ฌํ•ญ (Onboarding Checklist) + +1. **์„ค๊ณ„ ๊ทœ์•ฝ ๋ฐ ์ œ์•ฝ์‚ฌํ•ญ ์ˆ™์ง€** + - [README.md](../../README.md) ๋ฐ [.agents/MULTI_AGENT_RULES.ko.md](../../.agents/MULTI_AGENT_RULES.ko.md)๋ฅผ ๊ผผ๊ผผํžˆ ์ฝ๊ณ  ๋ณธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ทœ์น™์„ ์ธ์ง€ํ•ด ์ฃผ์„ธ์š”. + - ํŠนํžˆ **TUI ๋ทฐํฌํŠธ ์ ˆ๋‹จ ๋ฐฉ์ง€(Pane Snapshotting 3๋Œ€ ๊ทœ์น™)** ๋ฐ **๋งˆํฌ๋‹ค์šด ๊ธฐ๋ฐ˜ ํ˜‘์—… ๊ทœ์•ฝ**์„ ์ง€์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. + +2. **๋ ˆํฌ์ง€ํ† ๋ฆฌ ํ™œ์„ฑ ์ˆ˜์ • ๋‚ด์—ญ ๋ถ„์„** + - `git status` ๋ฐ `git diff`๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ URL ํŒŒ๋ผ๋ฏธํ„ฐํ™” ์ž‘์—… ๊ด€๋ จ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ถ„์„ํ•˜์„ธ์š”. + +3. **์—ญํ•  ๋ฐ ํƒ€ ์—์ด์ „ํŠธ ์ •๋ณด ๊ฒ€์ฆ** + - [.mam/agent-sessions.yaml](../agent-sessions.yaml)์„ ์ฝ์–ด ์ž์‹ ์˜ ์ง€์ •๋œ ์—ญํ• (`role: reviewer`)๊ณผ ํ˜„์žฌ ๋Ÿฌ๋‹ ์ƒํƒœ์ธ ํƒ€ ์—์ด์ „ํŠธ ๋ชฉ๋ก์„ ํ™•์ธํ•˜์„ธ์š”. + +## ๐Ÿ ์™„๋ฃŒ ๋ณด๊ณ  (Handshake Complete) +์œ„ ํŒŒ์•…์ด ๋๋‚˜๋ฉด ๋ณธ ์„ธ์…˜์˜ ํ„ฐ๋ฏธ๋„ ์ƒ์—์„œ ๋ถ„์„ ๊ฒฐ๊ณผ ์š”์•ฝ๊ณผ ํ•จ๊ป˜ **"Onboarding complete; aligned with role reviewer"** ๋ผ๋Š” ๋‹จ๋ง ์™„๋ฃŒ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ด ์ฃผ์„ธ์š”. diff --git a/.mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-rereview.md b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-rereview.md similarity index 100% rename from .mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-rereview.md rename to .agents/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-rereview.md diff --git a/.mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-review.md b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-review.md similarity index 100% rename from .mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-review.md rename to .agents/reports/canary-projects-multi-agent-mux-reviewer-cline/report-mam-installer-review.md diff --git a/.mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-session-isolation-review.md b/.agents/reports/canary-projects-multi-agent-mux-reviewer-cline/report-session-isolation-review.md similarity index 100% rename from .mam/reports/canary-projects-multi-agent-mux-reviewer-cline/report-session-isolation-review.md rename to .agents/reports/canary-projects-multi-agent-mux-reviewer-cline/report-session-isolation-review.md diff --git a/scripts/install_mam.sh b/scripts/install_mam.sh index 857cef7..d6710f4 100755 --- a/scripts/install_mam.sh +++ b/scripts/install_mam.sh @@ -65,7 +65,13 @@ while [ -h "$SOURCE" ]; do done DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" SRC_DIR="$(cd "$DIR/.." && pwd)" -TARGET_DIR="$(mkdir -p "$TARGET_DIR" && cd "$TARGET_DIR" && pwd)" + +# Ensure target directory exists +if [ ! -d "$TARGET_DIR" ]; then + log_info "Creating target directory: $TARGET_DIR" + mkdir -p "$TARGET_DIR" +fi +TARGET_DIR="$(cd "$TARGET_DIR" && pwd)" log_info "Installing MAM skills to target project: $TARGET_DIR" log_info "Source directory resolved: $SRC_DIR" @@ -77,7 +83,7 @@ fi # 1. Dependency Checks log_info "Verifying host dependencies..." -DEPS=(tmux python3 sqlite3 rsync) +DEPS=(tmux python3 sqlite3 rsync uuidgen flock) MISSING_DEPS=() for dep in "${DEPS[@]}"; do if ! command -v "$dep" &>/dev/null; then @@ -91,10 +97,11 @@ if [ ${#MISSING_DEPS[@]} -ne 0 ]; then exit 1 fi -# Check Python PyYAML library +# Check Python PyYAML library (hard dependency for YAML registry parsing) if ! python3 -c "import yaml" &>/dev/null; then - log_warn "Python 'pyyaml' package is not installed. Python YAML parsing features may fail." - log_warn "Please run: pip install pyyaml" + log_error "Python 'pyyaml' package is not installed (hard dependency for session registry)." + log_error "Please run: pip install pyyaml" + exit 1 fi log_ok "Dependency checks completed." @@ -103,23 +110,32 @@ log_info "Deploying orchestration rules & skills (.agents/)..." mkdir -p "$TARGET_DIR/.agents" # Sync rules and skills, avoiding copying temporary or system files -# Exclude git histories or internal runtime cache if any -rsync -a --exclude='.git/' --exclude='reports/' --exclude='*.log' --exclude='__pycache__/' --exclude='*.pyc' "$SRC_DIR/.agents/" "$TARGET_DIR/.agents/" +# Exclude git histories, reports, logs or internal runtime cache if any +rsync -a --exclude='.git/' --exclude='/reports/' --exclude='*.log' --exclude='__pycache__/' --exclude='*.pyc' "$SRC_DIR/.agents/" "$TARGET_DIR/.agents/" log_ok "Deployed Rules and Skills under target's .agents/" -# 3. Copy AGENTS.md to root +# 3. Copy AGENTS.md to root or inject guidelines pointer log_info "Configuring developer guidelines (AGENTS.md)..." -if [ -f "$TARGET_DIR/AGENTS.md" ]; then +AGENTS_FILE="$TARGET_DIR/AGENTS.md" +MARKER_START="" +MARKER_END="" + +if [ -f "$AGENTS_FILE" ]; then if [ "$FORCE" -eq 1 ]; then - log_warn "AGENTS.md already exists in target project. Backing up and overwriting..." - cp "$TARGET_DIR/AGENTS.md" "$TARGET_DIR/AGENTS.md.bak.$(date +%s)" - cp "$SRC_DIR/AGENTS.md" "$TARGET_DIR/AGENTS.md" + log_warn "AGENTS.md already exists in target project. Backing up and overwriting (--force)..." + cp "$AGENTS_FILE" "$AGENTS_FILE.bak.$(date +%s)" + cp "$SRC_DIR/AGENTS.md" "$AGENTS_FILE" log_ok "Guidelines overwritten successfully." else - log_warn "AGENTS.md already exists in target. Skipping copy. Use -f/--force to overwrite." + if grep -Fq "$MARKER_START" "$AGENTS_FILE"; then + log_ok "MAM orchestration guidelines pointer already exists in AGENTS.md." + else + echo -e "\n$MARKER_START\n# ๐Ÿค– Multi-Agent Orchestration Guidelines\nPlease refer to [.agents/MULTI_AGENT_RULES.md](file://./.agents/MULTI_AGENT_RULES.md) for detailed collaborative rules and state flow constraints.\n$MARKER_END" >> "$AGENTS_FILE" + log_ok "Injected MAM guidelines pointer to existing AGENTS.md." + fi fi else - cp "$SRC_DIR/AGENTS.md" "$TARGET_DIR/AGENTS.md" + cp "$SRC_DIR/AGENTS.md" "$AGENTS_FILE" log_ok "Guidelines AGENTS.md copied to project root." fi @@ -129,8 +145,8 @@ GITIGNORE="$TARGET_DIR/.gitignore" MAM_PATTERN="/.mam/" if [ -f "$GITIGNORE" ]; then - if grep -Fqx "$MAM_PATTERN" "$GITIGNORE"; then - log_ok "/.mam/ already registered in target's .gitignore." + if grep -Eq '^/?\.mam/?$' "$GITIGNORE"; then + log_ok ".mam/ already registered in target's .gitignore." else echo -e "\n# Multi-Agent Mux (MAM) runtime databases and isolation cache\n$MAM_PATTERN" >> "$GITIGNORE" log_ok "Appended /.mam/ registration to .gitignore." @@ -140,10 +156,6 @@ else log_ok "Created .gitignore with /.mam/ exclusion." fi -# 5. Initialize runtime reports folder -mkdir -p "$TARGET_DIR/.mam/reports" -log_ok "Initialized runtime structures." - # Done log_ok "MAM Installation completed successfully!" cat <