4.9 KiB
4.9 KiB
Peer Review: multi-agent-mux-loop SKILL 문서 정비 + run_loop.sh 하드코딩 제거 (커밋 52c270e/f85fdfc/6c90342)
Scope
세 커밋을 검토했다: (1) 52c270e — SKILL.md의 "Self-Planning"(계획 완전 생략) 서술을 "Existing Plan Execution"(기존 승격 계획서 로드 후 즉시 구현)으로 정정, (2) f85fdfc — SKILL.md 내 하드코딩된 세션명(canary-projects-multi-agent-mux-*)을 플레이스홀더(<planner-session-name>/<creator-session-name>/<reviewer-session-name-N>)로 치환, (3) 6c90342 — run_loop.sh의 resolve_planner_session() 폴백과 기존 계획 파일 경로를 실제로 동적화. 문서 변경(1, 2)은 렌더링/의미 정합성 위주로, 셸 스크립트 변경(3)은 문법·동작 검증 위주로 리뷰했다.
1, 2. SKILL.md 문서 변경 검토
52c270e:--plan미지정 시의 실제 동작(계획서 승격 파일을 로드해 즉시 구현 착수)과 서술("Self-Planning", "계획을 거치지 않고 직접 구현")이 이전엔 어긋나 있었다 — 실제로는 완전한 무계획 실행이 아니라 "기존 계획서가 있으면 그걸 쓴다"는 동작이므로, 이번 수정으로 프로즈/표/mermaid 다이어그램의 분기 라벨("Use Existing Plan (No --plan)")이 셋 다 일관되게 정정되었다. 세 위치(설명 불릿, 표, 다이어그램) 모두 누락 없이 반영됨을 확인.f85fdfc: 하드코딩된 세션명이 매뉴얼 예시 곳곳(다이어그램 참가자 라벨,--target-agent/--reviewer예시 값)에 있었는데, 전부 제네릭 플레이스홀더로 치환됨.grep -n "canary-projects-multi-agent-mux" SKILL.md기준으로 잔여 하드코딩이 없는지 확인했다(아래 §3 참고 — 실제로는 no-arg--plan을 하드코딩 언급 없이 완전히 정리했음을 확인).
두 커밋 모두 마크다운/mermaid 문법 오류 없이 코드펜스와 표 구조를 그대로 유지했다.
3. run_loop.sh 변경 검토 (실행 검증 포함)
변경 내용
resolve_planner_session()의 폴백 값이'canary-projects-multi-agent-mux-planner-reviewer-claude'(하드코딩)에서''(빈 문자열)로 변경 — 이제role에'planner'를 포함하는 tmux 세션을 찾지 못하면 특정 프로젝트 이름으로 잘못 추측하지 않고 정직하게 "찾지 못함"을 반환한다.- 기존 계획서 로드 블록(
else분기, 314-322행)이EXISTING_PLAN_FILE=".agents/reports/canary-projects-multi-agent-mux-planner-reviewer-claude/report-final.md"(하드코딩)에서PLANNER_SESSION기반 동적 경로로 변경되고,[ -n "$PLANNER_SESSION" ]가드가 추가되어 세션을 못 찾은 경우 경로 조합 자체를 건너뛴다.
검증
bash -n run_loop.sh→ 문법 오류 없음.shellcheck run_loop.sh→ 경고/오류 0건(종료 코드 0).resolve_planner_session()을 실제로 발췌·소싱해 현재 라이브 상태에 대해 실행:canary-projects-multi-agent-mux-planner-reviewer-claude를 정확히 반환함(현재 이 세션의 role이planner-reviewer이므로'planner' in role매치) — 우연이 아니라 실제 동작 확인. 이어서 이 값으로 조합된 경로(.agents/reports/canary-projects-multi-agent-mux-planner-reviewer-claude/report-final.md)가 실제로 파일시스템에 존재함을 확인해, 이 프로젝트에서는 하드코딩 시절과 동일한 결과를 내면서도 이제는 진짜로 동적임을 증명했다.- 빈
PLANNER_SESSION엣지 케이스(플래너 역할 세션이 아예 없는 워크스페이스를 시뮬레이션): 동일한set -euo pipefail하에서 새 로직 스니펫만 분리 실행 →EXISTING_PLAN_FILE이 빈 문자열로 남고 "계획 로드 건너뜀" 분기가 정상 작동,set -u(nounset)로 인한 미정의 변수 오류도 없음(PLANNER_SESSION은 항상 대입되므로 빈 문자열이어도 unset이 아님) — 하드코딩이 없어진 대신 도입될 수 있었던 "다른 워크스페이스에서 조용히 깨짐" 위험이 실제로는 없음을 확인. --plan모드 경로(224-228, 285-286, 496-497, 543-548행)의$PLANNER_SESSION사용처는 이번 diff의 대상이 아니며, 플래너 세션이 비어 있을 경우multi-agent-mux-delegate-job submit이 초반에 실패로 이어지는 fail-fast 구조라 이번 변경으로 인한 새로운 침묵 실패 경로는 없다.git diff 7c94eef 6c90342 --stat→ 이 세 커밋이 건드린 파일은SKILL.md와run_loop.sh딱 둘뿐, 회귀 없음.
결론
문서 두 건은 실제 동작과 서술의 불일치를 바로잡고 하드코딩된 예시를 제네릭화한 정확한 수정이며, 셸 스크립트 변경은 실제로 실행해 정상 케이스(현재 세션 정확히 해석)와 엣지 케이스(플래너 세션 부재 시 안전한 스킵) 모두를 검증했다. 문법 오류, shellcheck 경고, 회귀 모두 없다.
[VERDICT: PASS]