diff --git a/CODEBASE_REVIEW_REPORT.md b/CODEBASE_REVIEW_REPORT.md deleted file mode 100644 index a02c8f9..0000000 --- a/CODEBASE_REVIEW_REPORT.md +++ /dev/null @@ -1,84 +0,0 @@ -# πŸ“Š Multi-Agent Mux μ½”λ“œλ² μ΄μŠ€ λ―Έν•΄κ²° 결함 λ³΄κ³ μ„œ - -- **μž‘μ„±μΌ**: 2026-08-05 (μ΅œμ’… κ°±μ‹ : μˆ˜μ • μ™„λ£Œ ν•­λͺ© μ‚­μ œ 반영) -- **검증 방식**: `multi-agent-mux-loop --all-reviewer` μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 및 Planner(`claude`), Creator(`agy`), Reviewer(`cline`) 만μž₯일치 ꡐ차 리뷰 -- **λŒ€μƒ**: `.agents/skills/**` 전체 (HERDR_SERVER_NAME 바인딩 및 tmux μ‹œν”„νŠΈ 계측 μ œμ™Έ λ²”μœ„) -- **남은 λ―Έν•΄κ²° 결함 건수**: **16건** (μ•„ν‚€ν…μ²˜ 3건, μ—£μ§€μΌ€μ΄μŠ€ 8건, λ ˆκ±°μ‹œ μž”μž¬ 5건) - -> [!NOTE] -> λ³Έ λ³΄κ³ μ„œμ—μ„œ **A-4 (stop μ‹œ completed μ˜€λ°œν–‰ βž” cancelled ꡐ정)**, **B-2 (resolve_herdr_server 뢈일치 ꡐ정)**, **C-5 (TMUX_SERVER_NAME λ…ΈλΈŒ μ‚­μ œ)** λ“± 졜근 μˆ˜μ • μ™„λ£Œλœ ν•­λͺ©λ“€μ€ μ œμ™Έ/μ‚­μ œ μ²˜λ¦¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€. - ---- - -## 1. κ°œμš” 및 검증 μˆ˜λ‹¨ - -λ³Έ λ³΄κ³ μ„œλŠ” `HERDR_SERVER_NAME` ν™˜κ²½λ³€μˆ˜ 바인딩 λˆ„λ½ 및 `tmux` ν˜Έν™˜ 래퍼 shim μ˜μ‘΄μ„±μ„ λ„˜μ–΄, `multi-agent-mux` μ½”λ“œλ² μ΄μŠ€ μ „λ°˜μ˜ **μ•„ν‚€ν…μ²˜ ꡬ쑰적 μ•ˆμ •μ„±, MQTT λ°±ν”Œλ ˆμΈ λ³΄μ•ˆ, λŸ°νƒ€μž„ μ—£μ§€μΌ€μ΄μŠ€ 및 λ ˆκ±°μ‹œ μž”μž¬** 쀑 아직 μˆ˜μ •λ˜μ§€ μ•Šκ³  λ‚¨μ•„μžˆλŠ” λ¬Έμ œμ λ“€μ„ μ •λ¦¬ν•œ μž”μ—¬ 결함 λͺ©λ‘μž…λ‹ˆλ‹€. - ---- - -## 2. πŸ”΄ μ•„ν‚€ν…μ²˜ 결함 (Architecture Flaws β€” 3건) - -### **A-1 (herdr μ„œλ²„λͺ… μ „μ—­ κ³ μ • 및 타 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ„Έμ…˜ μ˜€λ“±λ‘)** -- **ν˜„μƒ**: `HERDR_SERVER_NAME`이 μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ³„ νŒŒμƒκ°’μ΄ μ•„λ‹Œ `multi-agent-mux`λΌλŠ” λ¨Έμ‹  μ „μ—­ μƒμˆ˜λ‘œ ν•˜λ“œμ½”λ”©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. -- **νŒŒκΈ‰ 효과**: ν•œ λ¨Έμ‹ μ—μ„œ λ‹€μˆ˜μ˜ MAM μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ‚¬μš© μ‹œ, λ°±κ·ΈλΌμš΄λ“œ λͺ¨λ‹ˆν„°(`reconcile.sh` drift-B)κ°€ λ‹€λ₯Έ μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ˜ μ„Έμ…˜μ„ λ‚΄ `.mam/agent-sessions.yaml` λ ˆμ§€μŠ€νŠΈλ¦¬μ— 무단 λ“±λ‘ν•˜μ—¬ μ„Έμ…˜ μ˜€μ—Όμ„ λ°œμƒμ‹œν‚΅λ‹ˆλ‹€. - -### **A-2 (곡개 브둜컀 + HMAC 인증 Off + μ™€μΌλ“œμΉ΄λ“œ μ „νŒŒ)** -- **ν˜„μƒ**: `mqtt_common.py`의 κΈ°λ³Έ λΈŒλ‘œμ»€κ°€ 곡개 μ„œλ²„(`broker.hivemq.com`), HMAC 무쑰건 True λ°˜ν™˜μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. -- **νŒŒκΈ‰ 효과**: μ™ΈλΆ€μ—μ„œ μœ μž…λ˜λŠ” malicious `error` 이벀트 μˆ˜μ‹  μ‹œ `reconcile.sh`κ°€ 라이브 μ—μ΄μ „νŠΈ pane을 `kill-session`으둜 κ°•μ œ νŒŒκ΄΄ν•˜λŠ” 치λͺ…적 λ³΄μ•ˆ/μ•ˆμ •μ„± μœ„ν—˜μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. - -### **A-3 (μ‹œν”„νŠΈ 버퍼 단일 파일 곡유 및 λ™μ‹œ μ£Όμž… μ˜€μ—Ό)** -- **ν˜„μƒ**: `send_keys_safe` μ‹œν”„νŠΈμ˜ `set/paste/delete-buffer`κ°€ `-b` μ„Έμ…˜ 버퍼 이름을 λ¬΄μ‹œν•˜κ³  단일 `.mam/shim/tmp_buffer` 파일 ν•˜λ‚˜λ§Œμ„ κ³΅μœ ν•©λ‹ˆλ‹€. -- **νŒŒκΈ‰ 효과**: 닀쀑 μ—μ΄μ „νŠΈ λ™μ‹œ μ£Όμž… μ‹œ λŒ€ν™” ν…μŠ€νŠΈ ꡐ차 μ˜€μ—Ό 및 무음 μœ μ‹€(t5 silent loss)이 λ°œμƒν•©λ‹ˆλ‹€. - ---- - -## 3. 🟠 μ—£μ§€ μΌ€μ΄μŠ€ 및 λŸ°νƒ€μž„ 버그 (Edge-case Bugs β€” 8건) - -### **B-1 (`find_workspace_uuid` tier-3 `NameError`둜 영ꡬ 사망)** -- `lib.sh` λ‚΄ agy λŒ€ν™” λ³΅μ›μš© tier-3 κ²½λ‘œκ°€ λ―Έμ •μ˜ λ³€μˆ˜(`db_path`, `yaml_path`) 및 `yaml` import λˆ„λ½μœΌλ‘œ 항상 `NameError` μ˜ˆμ™Έλ₯Ό λ‚΄κ³  μ‚ΌμΌœμ Έ agy λŒ€ν™” 볡원이 κ±°λΆ€λ©λ‹ˆλ‹€. - -### **B-3 (`command -v herdr` ν”„λ¦¬ν”ŒλΌμ΄νŠΈ 무λ ₯ν™”)** -- `create_session.sh`의 ν”„λ¦¬ν”ŒλΌμ΄νŠΈ 검사 μ‹œ `command -v herdr`κ°€ `lib.sh`에 μ •μ˜λœ bash ν•¨μˆ˜(`herdr()`)λ₯Ό 호λͺ…ν•˜μ—¬ μ‹€μ œ μ‹œμŠ€ν…œ `herdr` λ°”μ΄λ„ˆλ¦¬κ°€ 없어도 ν”„λ¦¬ν”ŒλΌμ΄νŠΈλ₯Ό 무쑰건 ν†΅κ³Όν•΄λ²„λ¦½λ‹ˆλ‹€. - -### **B-4 (μ‹œν”„νŠΈ `ls`의 `created=0` ν•˜λ“œμ½”λ”©μœΌλ‘œ 재개 κ°€λ“œ 무λ ₯ν™”)** -- `herdr ls` μ„œλΈŒμ»€λ§¨λ“œ λž˜νΌκ°€ μ„Έμ…˜ μƒμ„±μ‹œκ°μ„ μƒμˆ˜ `0`으둜 λ¦¬ν„΄ν•˜μ—¬ `reconcile.sh` drift-B 등둝 μ‹œ epoch 0이 λ˜μ–΄ 였래된 λŒ€ν™” jsonl 배제 κ°€λ“œκ°€ λΆ•κ΄΄λ©λ‹ˆλ‹€. - -### **B-5 (`df --output` GNU μ „μš© ν”Œλž˜κ·Έ μ‚¬μš©μœΌλ‘œ macOS NFS 감지 μ‹€νŒ¨)** -- macOS/BSD ν™˜κ²½μ—μ„œ `df --output` ꡬ문 였λ₯˜λ‘œ NFS 감지가 μ‹€νŒ¨ν•˜κ³  "NFS μ•„λ‹˜"으둜 μ˜€νŒλ˜μ–΄ SQLite WAL 포맷을 κ°•ν–‰ν•©λ‹ˆλ‹€. - -### **B-6 (μŠ€ν‚¬ νŠΈλ¦¬μ— μž„μ‹œ 파일 볡사 및 유좜)** -- `run_loop.sh::delegate_job_safe`κ°€ 래퍼 슀크립트λ₯Ό `.agents/skills/...` 트리 내뢀에 `.tmp`둜 λ³΅μ‚¬ν•˜μ—¬ 버전 관리 트리λ₯Ό μ˜€μ—Όμ‹œν‚€κ³  rsync 배포 μ‹œ μ™ΈλΆ€λ‘œ μœ μΆœλ©λ‹ˆλ‹€. - -### **B-7 (`run_loop.sh` μƒλŒ€κ²½λ‘œ cwd 의쑴 및 미좔적 파일 λˆ„λ½)** -- μ €μž₯μ†Œ 루트 λ°–μ—μ„œ `run_loop.sh` ꡬ동 μ‹œ `wait_for_job`이 3900초 무음 νƒ€μž„μ•„μ›ƒμ„ λ°œμƒμ‹œν‚€λ©°, `git diff`κ°€ Creatorκ°€ μƒˆλ‘œ μΆ”κ°€ν•œ 미좔적 μ‹ κ·œ νŒŒμΌμ„ λ¦¬λ·°μ–΄μ—κ²Œ λˆ„λ½ν•©λ‹ˆλ‹€. - -### **B-8 (`send_keys_safe` agy 경둜 검증 μ΄νƒˆ)** -- agy μ„Έμ…˜ μ£Όμž… μ‹œ μ£Όμž… μ‹€νŒ¨ μ—¬λΆ€λ₯Ό κ²€μ¦ν•˜μ§€ μ•Šκ³  무쑰건 `return 0`을 남겨 μ‹€νŒ¨ μ‹œμ—λ„ μ„±κ³΅μœΌλ‘œ λ³΄κ³ λ©λ‹ˆλ‹€. - -### **B-9 (`LOGS_DIR` import μ‹œμ  cwd κ³ μ •)** -- `mqtt_common.py` λͺ¨λ“ˆ λ‘œλ“œ μ‹œμ μ˜ cwd둜 감사 둜그 κ²½λ‘œκ°€ 1회 κ³ μ •λ©λ‹ˆλ‹€. - ---- - -## 4. 🟑 λ ˆκ±°μ‹œ μž”μž¬ 및 죽은 μ½”λ“œ (Legacy Remnants β€” 5건) - -### **C-1 (Kanban λ¬Έμ„œ 29회 μ–ΈκΈ‰ vs μ‹€μ œ κ΅¬ν˜„ 0건)** -- SKILL.md νŒŒμΌλ“€μ— Kanban 지원 및 μƒνƒœ 파일 μ„œμˆ μ΄ 29회 μ–ΈκΈ‰λ˜μ–΄ μžˆμœΌλ‚˜ 슀크립트 κ΅¬ν˜„μ€ 0κ±΄μž…λ‹ˆλ‹€. - -### **C-2 (λ―Έμ‚¬μš© `.cache/` μƒνƒœ 디렉터리 생성)** -- `reconcile.sh`κ°€ `.cache/multi-agent-mux-monitor` 디렉터리λ₯Ό `mkdir`만 ν•˜κ³  아무것도 μ½κ±°λ‚˜ μ“°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. - -### **C-3 (격리 μŠ€ν… 4μ’… 및 `stop_session.sh` λ―Έμ‚¬μš© isolation μ½”λ“œ μž”μ‘΄)** -- `provision_isolation` λ“± 4개 μŠ€ν… ν•¨μˆ˜μ™€ `stop_session.sh` λ‚΄ `.mam/agent_homes` κ°€λ“œ μ½”λ“œκ°€ 호좜자 0건인 채 μž”μ‘΄ν•©λ‹ˆλ‹€. - -### **C-4 (μ°Έμ‘° 0회 λ―Έμ‚¬μš© 심볼 7μ’…)** -- `_HERDR_SHIM_DIR_PATTERN`, `_REAL_HERDR_PATH`, `TERMINAL_STATUSES`, `ISOLATE`, `local_herdr` λ“± 7개 λ―Έμ‚¬μš© 심볼이 μž”μ‘΄ν•©λ‹ˆλ‹€. - -### **C-6 (`stop_session.sh` 도움말 λ¬Έμ„œ ꡬ버전 ν‘œκΈ°)** -- 슀크립트 λ„μ›€λ§μ—λŠ” `--mode soft|hard` 등이 μ„œμˆ λ˜μ–΄ μžˆμœΌλ‚˜ μ‹€μ œ μ˜΅μ…˜ νŒŒμ„œλŠ” `exit 2`둜 κ±°λΆ€ν•©λ‹ˆλ‹€. - ---- - -## 5. κ²°λ‘  및 ν–₯ν›„ 보완 λ°©ν–₯ - -ν–₯ν›„ μ½”λ“œλ² μ΄μŠ€ 개편 μ‹œ λ³Έ λ¬Έμ„œμ— μ„œμˆ λœ μž”μ—¬ 16κ°€μ§€ 결함 ν•­λͺ©μ„ 순차적으둜 μ‘°μΉ˜ν•˜μ—¬ Multi-Agent Mux ν”„λ ˆμž„μ›Œν¬μ˜ μ™„μ „ν•œ μ•ˆμ •μ„±κ³Ό 격리성을 보μž₯ν•΄μ•Ό ν•©λ‹ˆλ‹€. diff --git a/OPTIMIZATION.md b/OPTIMIZATION.md index 8a5c1c9..b49ec6b 100644 --- a/OPTIMIZATION.md +++ b/OPTIMIZATION.md @@ -1,21 +1,69 @@ -# πŸ› οΈ Multi-Agent Mux Loop (`/multi-agent-mux-loop`) λ―Έν•΄κ²° μ΅œμ ν™” λΆ„μ„μ„œ (`OPTIMIZATION.md`) +# πŸ› οΈ Multi-Agent Mux μ’…ν•© κ°œμ„  및 λ―Έν•΄κ²° 과제 백둜그 (`OPTIMIZATION.md`) -λ³Έ λ¬Έμ„œλŠ” `/multi-agent-mux-loop` μŠ€ν‚¬ 및 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 슀크립트(`run_loop.sh`)의 ν–₯ν›„ κ°œμ„  및 κ°•μ œλ₯Ό μœ„ν•΄ 아직 λ°˜μ˜λ˜μ§€ μ•Šκ³  λ‚¨μ•„μžˆλŠ” λ―Έν•΄κ²° μ΅œμ ν™” ν•­λͺ©λ“€μ„ μ •λ¦¬ν•œ λ¬Έμ„œμž…λ‹ˆλ‹€. (ν•΄κ²° μ™„λ£Œλœ 이슈 1~5 및 8은 μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.) +- **μ΅œμ’… 갱신일**: 2026-08-05 +- **톡합 관리 λŒ€μƒ**: κΈ°μ‘΄ `CODEBASE_REVIEW_REPORT.md` (μ½”λ“œλ² μ΄μŠ€ μž”μ—¬ 결함 16건) + `OPTIMIZATION.md` (μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ΅œμ ν™” 과제 3건) +- **총 좔적 λ―Έν•΄κ²° 과제**: **19건** --- -## 1. ⚠️ λ―Έκ΅¬ν˜„ 절차 및 ν”„λ‘œν† μ½œ (Remaining Discrepancies) +## πŸ“Œ κ°œμš” -### ISSUE-6: νƒ€λ‹Ήν•˜μ§€ μ•Šμ€ 리뷰 ν”Όλ“œλ°± κ±°λΆ€/반둠 ν”„λ‘œν† μ½œμ˜ 슀크립트 미지원 +λ³Έ λ¬Έμ„œλŠ” Multi-Agent Mux (MAM) ν”„λ ˆμž„μ›Œν¬μ˜ **μ½”λ“œλ² μ΄μŠ€ μ•„ν‚€ν…μ²˜ 결함, λŸ°νƒ€μž„ μ—£μ§€μΌ€μ΄μŠ€, λ ˆκ±°μ‹œ μž”μž¬** 및 **`/multi-agent-mux-loop` μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ΅œμ ν™” 과제**λ₯Ό 단일 백둜그둜 톡합 μΆ”μ ν•˜κΈ° μœ„ν•œ μ’…ν•© 관리 λ¬Έμ„œμž…λ‹ˆλ‹€. + +--- + +## 1. πŸ”΄ μ•„ν‚€ν…μ²˜ 결함 (Architecture Flaws β€” 3건) + +### **A-1: herdr μ„œλ²„λͺ… μ „μ—­ κ³ μ • 및 타 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ„Έμ…˜ μ˜€λ“±λ‘** +- **ν˜„μƒ**: `HERDR_SERVER_NAME`이 μ›Œν¬μŠ€νŽ˜μ΄μŠ€λ³„ νŒŒμƒκ°’μ΄ μ•„λ‹Œ `multi-agent-mux`λΌλŠ” λ¨Έμ‹  μ „μ—­ μƒμˆ˜λ‘œ ν•˜λ“œμ½”λ”©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. +- **νŒŒκΈ‰ 효과**: ν•œ λ¨Έμ‹ μ—μ„œ λ‹€μˆ˜μ˜ MAM μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ‚¬μš© μ‹œ, λ°±κ·ΈλΌμš΄λ“œ λͺ¨λ‹ˆν„°(`reconcile.sh` drift-B)κ°€ λ‹€λ₯Έ μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ˜ μ„Έμ…˜μ„ λ‚΄ `.mam/agent-sessions.yaml` λ ˆμ§€μŠ€νŠΈλ¦¬μ— 무단 λ“±λ‘ν•˜μ—¬ μ„Έμ…˜ μ˜€μ—Όμ„ λ°œμƒμ‹œν‚΅λ‹ˆλ‹€. + +### **A-2: 곡개 브둜컀 + HMAC 인증 Off + μ™€μΌλ“œμΉ΄λ“œ μ „νŒŒ** +- **ν˜„μƒ**: `mqtt_common.py`의 κΈ°λ³Έ λΈŒλ‘œμ»€κ°€ 곡개 μ„œλ²„(`broker.hivemq.com`), HMAC 무쑰건 True λ°˜ν™˜μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. +- **νŒŒκΈ‰ 효과**: μ™ΈλΆ€μ—μ„œ μœ μž…λ˜λŠ” malicious `error` 이벀트 μˆ˜μ‹  μ‹œ `reconcile.sh`κ°€ 라이브 μ—μ΄μ „νŠΈ pane을 `kill-session`으둜 κ°•μ œ νŒŒκ΄΄ν•˜λŠ” 치λͺ…적 λ³΄μ•ˆ/μ•ˆμ •μ„± μœ„ν—˜μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. + +### **A-3: μ‹œν”„νŠΈ 버퍼 단일 파일 곡유 및 λ™μ‹œ μ£Όμž… μ˜€μ—Ό** +- **ν˜„μƒ**: `send_keys_safe` μ‹œν”„νŠΈμ˜ `set/paste/delete-buffer`κ°€ `-b` μ„Έμ…˜ 버퍼 이름을 λ¬΄μ‹œν•˜κ³  단일 `.mam/shim/tmp_buffer` 파일 ν•˜λ‚˜λ§Œμ„ κ³΅μœ ν•©λ‹ˆλ‹€. +- **νŒŒκΈ‰ 효과**: 닀쀑 μ—μ΄μ „νŠΈ λ™μ‹œ μ£Όμž… μ‹œ λŒ€ν™” ν…μŠ€νŠΈ ꡐ차 μ˜€μ—Ό 및 무음 μœ μ‹€(t5 silent loss)이 λ°œμƒν•©λ‹ˆλ‹€. + +--- + +## 2. 🟠 μ—£μ§€ μΌ€μ΄μŠ€ 및 λŸ°νƒ€μž„ 버그 (Edge-case Bugs β€” 8건) + +### **B-1: `find_workspace_uuid` tier-3 `NameError`둜 영ꡬ 사망** +- `lib.sh` λ‚΄ agy λŒ€ν™” λ³΅μ›μš© tier-3 κ²½λ‘œκ°€ λ―Έμ •μ˜ λ³€μˆ˜(`db_path`, `yaml_path`) 및 `yaml` import λˆ„λ½μœΌλ‘œ 항상 `NameError` μ˜ˆμ™Έλ₯Ό λ‚΄κ³  μ‚ΌμΌœμ Έ agy λŒ€ν™” 볡원이 κ±°λΆ€λ©λ‹ˆλ‹€. + +### **B-3: `command -v herdr` ν”„λ¦¬ν”ŒλΌμ΄νŠΈ 무λ ₯ν™”** +- `create_session.sh`의 ν”„λ¦¬ν”ŒλΌμ΄νŠΈ 검사 μ‹œ `command -v herdr`κ°€ `lib.sh`에 μ •μ˜λœ bash ν•¨μˆ˜(`herdr()`)λ₯Ό 호λͺ…ν•˜μ—¬ μ‹€μ œ μ‹œμŠ€ν…œ `herdr` λ°”μ΄λ„ˆλ¦¬κ°€ 없어도 ν”„λ¦¬ν”ŒλΌμ΄νŠΈλ₯Ό 무쑰건 ν†΅κ³Όν•΄λ²„λ¦½λ‹ˆλ‹€. + +### **B-4: μ‹œν”„νŠΈ `ls`의 `created=0` ν•˜λ“œμ½”λ”©μœΌλ‘œ 재개 κ°€λ“œ 무λ ₯ν™”** +- `herdr ls` μ„œλΈŒμ»€λ§¨λ“œ λž˜νΌκ°€ μ„Έμ…˜ μƒμ„±μ‹œκ°μ„ μƒμˆ˜ `0`으둜 λ¦¬ν„΄ν•˜μ—¬ `reconcile.sh` drift-B 등둝 μ‹œ epoch 0이 λ˜μ–΄ 였래된 λŒ€ν™” jsonl 배제 κ°€λ“œκ°€ λΆ•κ΄΄λ©λ‹ˆλ‹€. + +### **B-5: `df --output` GNU μ „μš© ν”Œλž˜κ·Έ μ‚¬μš©μœΌλ‘œ macOS NFS 감지 μ‹€νŒ¨** +- macOS/BSD ν™˜κ²½μ—μ„œ `df --output` ꡬ문 였λ₯˜λ‘œ NFS 감지가 μ‹€νŒ¨ν•˜κ³  "NFS μ•„λ‹˜"으둜 μ˜€νŒλ˜μ–΄ SQLite WAL 포맷을 κ°•ν–‰ν•©λ‹ˆλ‹€. + +### **B-6: μŠ€ν‚¬ νŠΈλ¦¬μ— μž„μ‹œ 파일 볡사 및 유좜** +- `run_loop.sh::delegate_job_safe`κ°€ 래퍼 슀크립트λ₯Ό `.agents/skills/...` 트리 내뢀에 `.tmp`둜 λ³΅μ‚¬ν•˜μ—¬ 버전 관리 트리λ₯Ό μ˜€μ—Όμ‹œν‚€κ³  rsync 배포 μ‹œ μ™ΈλΆ€λ‘œ μœ μΆœλ©λ‹ˆλ‹€. + +### **B-7: `run_loop.sh` μƒλŒ€κ²½λ‘œ cwd 의쑴 및 미좔적 파일 λˆ„λ½** +- μ €μž₯μ†Œ 루트 λ°–μ—μ„œ `run_loop.sh` ꡬ동 μ‹œ `wait_for_job`이 3900초 무음 νƒ€μž„μ•„μ›ƒμ„ λ°œμƒμ‹œν‚€λ©°, `git diff`κ°€ Creatorκ°€ μƒˆλ‘œ μΆ”κ°€ν•œ 미좔적 μ‹ κ·œ νŒŒμΌμ„ λ¦¬λ·°μ–΄μ—κ²Œ λˆ„λ½ν•©λ‹ˆλ‹€. + +### **B-8: `send_keys_safe` agy 경둜 검증 μ΄νƒˆ** +- agy μ„Έμ…˜ μ£Όμž… μ‹œ μ£Όμž… μ‹€νŒ¨ μ—¬λΆ€λ₯Ό κ²€μ¦ν•˜μ§€ μ•Šκ³  무쑰건 `return 0`을 남겨 μ‹€νŒ¨ μ‹œμ—λ„ μ„±κ³΅μœΌλ‘œ λ³΄κ³ λ©λ‹ˆλ‹€. + +### **B-9: `LOGS_DIR` import μ‹œμ  cwd κ³ μ •** +- `mqtt_common.py` λͺ¨λ“ˆ λ‘œλ“œ μ‹œμ μ˜ cwd둜 감사 둜그 κ²½λ‘œκ°€ 1회 κ³ μ •λ©λ‹ˆλ‹€. + +--- + +## 3. 🟑 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ΅œμ ν™” 과제 (Orchestration Optimizations β€” 3건) + +### **O-1 (ꡬ ISSUE-6): νƒ€λ‹Ήν•˜μ§€ μ•Šμ€ 리뷰 ν”Όλ“œλ°± κ±°λΆ€/반둠 ν”„λ‘œν† μ½œ 미지원** - **ν˜„μƒ**: `MULTI_AGENT_RULES.md` 1μž₯ κ·œμ•½μ—λŠ” "개발 νŒ€μž₯이 λ¦¬λ·°μ–΄μ˜ νƒ€λ‹Ήν•˜μ§€ μ•Šμ€ ν”Όλ“œλ°±μ„ κ±°λΆ€ν•˜κ³  λͺ…ν™•ν•œ 이유λ₯Ό νšŒμ‹ ν•  수 μžˆλ‹€"κ³  λͺ…μ‹œλ˜μ–΄ 있음. - **문제점**: `run_loop.sh`λŠ” λ¦¬λ·°μ–΄μ˜ `NOT PASS` ν”Όλ“œλ°± 전체λ₯Ό Creatorμ—κ²Œ 일방적으둜 μ£Όμž…ν•  뿐, Creatorκ°€ νŠΉμ • ν”Όλ“œλ°±μ„ κ±°λΆ€ν•˜κ±°λ‚˜ λ°˜λ‘ μ„ μ œκΈ°ν•˜μ—¬ μƒν˜Έ μ‘°μœ¨ν•˜λŠ” 이의제기 채널이 μ½”λ”©μ μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆμ§€ μ•ŠμŒ. - **ν•΄κ²° λ°©μ•ˆ**: Creator ꡐ정 단계 ν”„λ‘¬ν”„νŠΈμ— 반둠 μž‘μ„± ν…œν”Œλ¦Ώμ„ ν—ˆμš©ν•˜κ³ , 반둠 λ°œμƒ μ‹œ Planner/Reviewerμ—κ²Œ μž¬κ²€ν† λ₯Ό μš”μ²­ν•˜λŠ” 이의제기 브랜칭 둜직 섀계. ---- - -## 2. πŸ›‘οΈ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μœ„μž„ 및 μ•ˆμ „μ„±/λ™μ‹œμ„± κ°•μ œμ•ˆ (Remaining Reliability & Guards) - -### ISSUE-7: 동일 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λ‚΄ 쀑볡 루프 기동 λ°©μ§€ 락 (Race-Free Lock) 섀계 정ꡐ화 +### **O-2 (ꡬ ISSUE-7): 동일 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λ‚΄ 쀑볡 루프 기동 λ°©μ§€ 락 (Race-Free Lock)** - **ν˜„μƒ**: 동일 μž‘μ—… νŠΈλ¦¬μ—μ„œ λ‹€μˆ˜μ˜ `run_loop.sh` μŠ€ν¬λ¦½νŠΈκ°€ 병렬 기동될 경우 SQLite DB κ°±μ‹  κ²½ν•© 및 YAML 데이터 μ˜€μ—Όμ΄ 일어날 수 있음. - **문제점**: λ‹¨μˆœ PID 파일 쑴재 μ—¬λΆ€λ§Œ 체크할 경우, PID Rollover(ν”„λ‘œμ„ΈμŠ€ ID μž¬μ‚¬μš©) λ˜λŠ” `mkdir`κ³Ό PID 기둝 μ‚¬μ΄μ˜ 생성 μ°½(Grace Window)μ—μ„œ μ‚΄μ•„μžˆλŠ” 락을 타 ν”„λ‘œμ„ΈμŠ€κ°€ ν›”μ³κ°€λŠ” "락 λ„λ‚œ(Live-lock theft)" ν˜„μƒ λ°œμƒ. - **ν•΄κ²° λ°©μ•ˆ**: @@ -23,9 +71,33 @@ 2. `mkdir` 직후 생성 μ°½ 유예 λŒ€κΈ°(Sleep Grace Period)λ₯Ό λΆ€μ—¬ν•˜μ—¬ 락 λ„λ‚œ λ°©μ§€. 3. `ps` CLI λΆ€μž¬ μ‹œ Fails-Open(락 λ¬΄μ‹œ) λŒ€μ‹  **Fails-Safe(락 쑴쀑 + κ²½κ³ )** 둜 μ „ν™˜ν•˜μ—¬ DB/YAML μ˜€μ—Ό μ›μ²œ λ°©μ§€. -### ISSUE-9: 쑰건뢀 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μœ„μž„ κ°€λ“œ (Invocation-Aware Scoped Guard) +### **O-3 (ꡬ ISSUE-9): 쑰건뢀 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μœ„μž„ κ°€λ“œ (Invocation-Aware Scoped Guard)** - **ν˜„μƒ**: μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°(Antigravity)κ°€ ν‰μƒμ‹œμ—λŠ” Main Creatorλ‘œμ„œ μ½”λ“œ 및 λ¬Έμ„œλ₯Ό 직접 μ§‘ν•„ν•΄μ•Ό ν•˜μ§€λ§Œ, `/multi-agent-mux-loop` μŠ¬λž˜μ‹œ μ»€λ§¨λ“œ/μŠ€ν‚¬μ΄ 인보크된 μƒν™©μ—μ„œλ„ 이λ₯Ό μΈμ§€ν•˜μ§€ λͺ»ν•˜κ³  μ—μ΄μ „νŠΈλ“€μ—κ²Œ μœ„μž„ν•˜λŠ” λŒ€μ‹  직접 μˆ˜μ •μ„ μ‹œλ„ν•˜λŠ” μ§€μΉ¨ μ΄νƒˆ λ°œμƒ. -- **문제점**: μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°μ˜ 파일 직접 μˆ˜μ • κΆŒν•œμ„ 무쑰건 뺏으면(1번 λ°©μ•ˆ λΆ€μž‘μš©) 일반 μž‘μ—…μ΄ λΆˆκ°€λŠ₯ν•΄μ§€κ³ , μžμ—°μ–΄ μ§€μΉ¨μ—λ§Œ μ˜μ‘΄ν•˜λ©΄ μŠ¬λž˜μ‹œ μ»€λ§¨λ“œ 호좜 μ‹œ μœ„μž„μ„ κ±΄λ„ˆλ›°λŠ” λͺ¨μˆœ λ°œμƒ. -- **ν•΄κ²° λ°©μ•ˆ**: +- **ν•΄κ²° λ°©μ•ˆ**: - **ν‰μƒμ‹œ (일반 μš”μ²­)**: μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°κ°€ **Main Creator**λ‘œμ„œ μ†ŒμŠ€ 및 λ§ˆν¬λ‹€μš΄ 파일 직접 μž‘μ„±/μˆ˜μ • 도ꡬ(`write_to_file`, `replace_file_content`)λ₯Ό 자유둭게 μ‚¬μš©ν•˜μ—¬ 단독 κ΅¬ν˜„ μˆ˜ν–‰. - **`/multi-agent-mux-loop` 호좜 μ‹œ (μŠ€ν‚¬ ν™œμ„±ν™” μƒνƒœ)**: μŠ€ν‚¬ 인터셉터 κ°€λ“œ(Guardrail)κ°€ μž‘λ™ν•˜μ—¬ 직접 μˆ˜μ • 도ꡬ ν˜ΈμΆœμ„ κ±°λΆ€(Interception)ν•˜κ³ , **"μŠ¬λž˜μ‹œ μ»€λ§¨λ“œκ°€ μΈλ³΄ν¬λ˜μ—ˆμœΌλ―€λ‘œ 직접 μˆ˜μ •μ„ μ€‘λ‹¨ν•˜κ³  `run_loop.sh`λ₯Ό μ‹€ν–‰ν•˜μ—¬ μœ„μž„ν•˜μ‹­μ‹œμ˜€"**λΌλŠ” μ—λŸ¬λ₯Ό λ°˜ν™˜ν•΄ `run_loop.sh` 자율 μœ„μž„ 싀행을 μ½”λ”©μ μœΌλ‘œ κ°•μ œ. + +--- + +## 4. βšͺ λ ˆκ±°μ‹œ μž”μž¬ 및 죽은 μ½”λ“œ (Legacy Remnants β€” 5건) + +### **C-1: Kanban λ¬Έμ„œ 29회 μ–ΈκΈ‰ vs μ‹€μ œ κ΅¬ν˜„ 0건** +- SKILL.md νŒŒμΌλ“€μ— Kanban 지원 및 μƒνƒœ 파일 μ„œμˆ μ΄ 29회 μ–ΈκΈ‰λ˜μ–΄ μžˆμœΌλ‚˜ 슀크립트 κ΅¬ν˜„μ€ 0κ±΄μž…λ‹ˆλ‹€. + +### **C-2: λ―Έμ‚¬μš© `.cache/` μƒνƒœ 디렉터리 생성** +- `reconcile.sh`κ°€ `.cache/multi-agent-mux-monitor` 디렉터리λ₯Ό `mkdir`만 ν•˜κ³  아무것도 μ½κ±°λ‚˜ μ“°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. + +### **C-3: 격리 μŠ€ν… 4μ’… 및 `stop_session.sh` λ―Έμ‚¬μš© isolation μ½”λ“œ μž”μ‘΄** +- `provision_isolation` λ“± 4개 μŠ€ν… ν•¨μˆ˜μ™€ `stop_session.sh` λ‚΄ `.mam/agent_homes` κ°€λ“œ μ½”λ“œκ°€ 호좜자 0건인 채 μž”μ‘΄ν•©λ‹ˆλ‹€. + +### **C-4: μ°Έμ‘° 0회 λ―Έμ‚¬μš© 심볼 7μ’…** +- `_HERDR_SHIM_DIR_PATTERN`, `_REAL_HERDR_PATH`, `TERMINAL_STATUSES`, `ISOLATE`, `local_herdr` λ“± 7개 λ―Έμ‚¬μš© 심볼이 μž”μ‘΄ν•©λ‹ˆλ‹€. + +### **C-6: `stop_session.sh` 도움말 λ¬Έμ„œ ꡬ버전 ν‘œκΈ°** +- 슀크립트 λ„μ›€λ§μ—λŠ” `--mode soft|hard` 등이 μ„œμˆ λ˜μ–΄ μžˆμœΌλ‚˜ μ‹€μ œ μ˜΅μ…˜ νŒŒμ„œλŠ” `exit 2`둜 κ±°λΆ€ν•©λ‹ˆλ‹€. + +--- + +## 5. κ²°λ‘  및 ν–₯ν›„ 보완 λ‘œλ“œλ§΅ + +두 λ¬Έμ„œκ°€ `OPTIMIZATION.md` ν•˜λ‚˜λ‘œ 톡합됨에 따라, ν–₯ν›„ μ½”λ“œλ² μ΄μŠ€ 개편 μ‹œ λ³Έ λ¬Έμ„œμ˜ 19κ°€μ§€ 백둜그 ν•­λͺ©(μ•„ν‚€ν…μ²˜ 3건, μ—£μ§€μΌ€μ΄μŠ€ 8건, μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 3건, λ ˆκ±°μ‹œ μž”μž¬ 5건)을 μΌμ›ν™”λœ 보완 λ‘œλ“œλ§΅μœΌλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€.