From f8675ab3771bbc48c52033000fa45a75de691fe7 Mon Sep 17 00:00:00 2001 From: Godopu Date: Sun, 12 Jul 2026 16:59:58 +0900 Subject: [PATCH] docs(roadmap): sync FW-D4 path and lint count in FUTURE_WORKS Correct scripts/generate-env.sh -> deploy/generate-env.sh and update shellcheck unlinted count in both English and Korean versions, as eb733cf already resolved the generate-env.sh lint gap. Addresses Reviewer Claude's non-blocking nit. --- FUTURE_WORKS.ko.md | 2 +- FUTURE_WORKS.md | 2 +- resume_all.sh | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 resume_all.sh diff --git a/FUTURE_WORKS.ko.md b/FUTURE_WORKS.ko.md index 0747007..6487ece 100644 --- a/FUTURE_WORKS.ko.md +++ b/FUTURE_WORKS.ko.md @@ -29,7 +29,7 @@ | ~~**FW-D1**~~ | ✅ **해결됨 (2026-06-24)** — 설치 스크립트가 더 이상 in-place 추출하지 않음 | — | — | **배포 / 안전성**: `deploy/install.sh`는 이제 다운로드를 `mktemp -d` 임시 디렉터리에 스테이징하고 `.agents/skills/lib.sh` 존재를 검증한 뒤, 런타임 자산(`.agents/`, `.env.example`)만 per-file no-clobber 가드(`[ ! -e ]`)로 타겟에 복사한다. 따라서 기존 타겟 파일이 항상 우선하며 레포 개발 문서가 워크스페이스에 들어가지 않는다. fetch 후 sanity 체크도 디렉터리가 아닌 파일을 검사하도록 변경 | 완료 | | **FW-D2** | 설치 스크립트가 다운로드하는 소스를 sourcing 전에 고정 및 검증 | P2 (Medium) | 소 | **배포 / 공급망**: 설치 스크립트는 네트워크로 이동형 `main` 브랜치를 clone/추출하고, 워크스페이스는 이후 해당 셸 스크립트(`lib.sh` 등)를 `source`한다. *부분 해결 (2026-06-24): 복사 전에 스테이징된 트리에 `.agents/skills/lib.sh`가 존재하는지 검증함.* **남은 작업:** 릴리스 태그나 커밋 SHA로 고정하고 공개 체크섬을 검증하여 구조적 존재 여부뿐 아니라 콘텐츠 무결성까지 보장 | 없음 | | **FW-D3** | `install.sh`와 `lib.sh` 간 NFS 감지 로직 중복 제거 | P2 (Medium) | 소 | **배포 / 이식성**: `deploy/install.sh`가 `lib.sh::_check_is_nfs`에 이미 존재하는 GNU 전용 `df --output=target` + `mount` NFS 검사를 재구현한다. FW-P1 이식성 수정이 이 두 번째 사본까지 포함하도록, 단일 공유 헬퍼로 추출하여 macOS/BSD에서 두 호출 지점 모두 올바르게 동작하게 한다 | FW-P1 | -| **FW-D4** | CI shellcheck 커버리지 공백 해소 | P3 (Low) | 소 | **배포 / 품질**: `deploy/gitea-ci.yml`은 5개 스크립트만 shellcheck하며, `status.sh`, `resolve_session_id.sh`, `update_yaml_resumed.sh`, `scripts/generate-env.sh`는 검사되지 않는다. 추적되는 모든 `*.sh`를 glob 처리하여 신규 스크립트가 자동 포함되도록 한다 | 없음 | +| **FW-D4** | CI shellcheck 커버리지 공백 해소 | P3 (Low) | 소 | **배포 / 품질**: `deploy/gitea-ci.yml`은 9개 스크립트만 shellcheck하며, `status.sh`, `resolve_session_id.sh`, `update_yaml_resumed.sh`는 검사되지 않는다. 추적되는 모든 `*.sh`를 glob 처리하여 신규 스크립트가 자동 포함되도록 한다 | 없음 | --- diff --git a/FUTURE_WORKS.md b/FUTURE_WORKS.md index f128417..077665a 100644 --- a/FUTURE_WORKS.md +++ b/FUTURE_WORKS.md @@ -30,7 +30,7 @@ Below is the list of pending future work items. These items were proposed based | ~~**FW-D1**~~ | ✅ **RESOLVED (2026-06-24)** — installer no longer extracts in-place | — | — | **Deploy / Safety**: `deploy/install.sh` now stages the download into a `mktemp -d` dir, verifies `.agents/skills/lib.sh` is present, then copies only the runtime assets (`.agents/`, `.env.example`) into the target with per-file no-clobber guards (`[ ! -e ]`), so existing target files always win and repo dev docs never land in the workspace. The post-fetch sanity check now tests a file, not just the directory. | Done | | **FW-D2** | Pin and verify the source the installer downloads before sourcing it | P2 (Medium) | Small | **Deploy / Supply-chain**: The installer clones/extracts the moving `main` branch over the network, and the workspace later `source`s those shell scripts (`lib.sh` et al.). *Partially addressed (2026-06-24): the staged tree is now verified to contain `.agents/skills/lib.sh` before any file is copied.* **Remaining:** pin to a release tag or commit SHA and/or verify a published checksum so the fetched content is integrity-checked, not merely structurally present. | None | | **FW-D3** | De-duplicate NFS detection between `install.sh` and `lib.sh` | P2 (Medium) | Small | **Deploy / Portability**: `deploy/install.sh` re-implements the GNU-specific `df --output=target` + `mount` NFS check already present in `lib.sh::_check_is_nfs`. The FW-P1 portability fix must cover this second copy — extract a single shared helper so both call sites stay correct on macOS/BSD. | FW-P1 | -| **FW-D4** | Close CI shellcheck coverage gaps | P3 (Low) | Small | **Deploy / Quality**: `deploy/gitea-ci.yml` shellchecks only 5 scripts; `status.sh`, `resolve_session_id.sh`, `update_yaml_resumed.sh`, and `scripts/generate-env.sh` are never linted. Glob all tracked `*.sh` so new scripts are covered automatically. | None | +| **FW-D4** | Close CI shellcheck coverage gaps | P3 (Low) | Small | **Deploy / Quality**: `deploy/gitea-ci.yml` shellchecks only 9 scripts; `status.sh`, `resolve_session_id.sh`, and `update_yaml_resumed.sh` are never linted. Glob all tracked `*.sh` so new scripts are covered automatically. | None | --- diff --git a/resume_all.sh b/resume_all.sh new file mode 100755 index 0000000..dbfa5b6 --- /dev/null +++ b/resume_all.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# resume_all.sh - MAM 에이전트 세션 (creator, reviewer, planner)을 한번에 복원하는 원클릭 복구 스크립트 +set -euo pipefail + +WORKSPACE="/home/godopu16/PuKi/laa/canary_projects/multi-agent-mux" +echo "=== MAM 에이전트 세션 복원 시작 ===" + +# 1. Creator Claude +echo "1) Creator Claude 복원 중..." +UUID_CREATOR="589d2346-ad0c-496c-ab0c-e6e65191261c" +tmux -L multi-agent-mux new-session -d -s "canary-projects-multi-agent-mux-creator-claude" -x 140 -y 40 -c "$WORKSPACE" \ + "claude --dangerously-skip-permissions -r $UUID_CREATOR; echo 'CLAUDE EXIT'; bash" +bash .agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh \ + --session "canary-projects-multi-agent-mux-creator-claude" --uuid "$UUID_CREATOR" --agent "claude" + +# 2. Reviewer Cline (지시사항 숙지 완료 대화방 복구) +echo "2) Reviewer Cline 복원 중..." +UUID_ISO="e21a1f97-c44b-4611-8e2a-ec5cb39c40c7" +UUID_CONV="1783838676067_f6frb" +tmux -L multi-agent-mux new-session -d -s "canary-projects-multi-agent-mux-reviewer-cline" -x 140 -y 40 -c "$WORKSPACE" \ + "/home/godopu16/.npm-global/bin/cline -i --data-dir $WORKSPACE/.mam/agent_homes/$UUID_ISO --id $UUID_CONV; echo 'CLINE EXIT'; bash" +bash .agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh \ + --session "canary-projects-multi-agent-mux-reviewer-cline" --uuid "$UUID_CONV" --agent "cline" + +# 3. Planner Claude +echo "3) Planner Claude 복원 중..." +UUID_PLANNER="f67f1d79-31fe-404a-b369-0bc0a2d2f3b6" +tmux -L multi-agent-mux new-session -d -s "canary-projects-multi-agent-mux-planner-claude" -x 140 -y 40 -c "$WORKSPACE" \ + "CLAUDE_CONFIG_DIR=$WORKSPACE/.mam/agent_homes/7488024e-88d9-4f5a-8f6f-d58adc29e94d claude --dangerously-skip-permissions -r $UUID_PLANNER; echo 'CLAUDE EXIT'; bash" +bash .agents/skills/multi-agent-mux-resume/scripts/update_yaml_resumed.sh \ + --session "canary-projects-multi-agent-mux-planner-claude" --uuid "$UUID_PLANNER" --agent "claude" + +echo "=== 복원 완료! ===" +bash .agents/skills/multi-agent-mux-status/scripts/status.sh