docs(issue-21): item 4 helpers, the submodule removal rule and the resume cwd rule in the design doc, compatibility matrix and skill docs
- design doc §3: the hand-assembled worktree/.venv/create recipe is replaced by worktree_prepare.sh --creator-agent (its BASE= line is the base to record); cleanup is worktree_remove.sh --stop; resume needs the original path. - §4: what the helpers do - no .mam.env copy, the shared info/exclude, opt-in submodules (any init leaves modules/, which blocks a plain remove), removal of submodule worktrees with one --force after the checks, and never by hand. - §5: item 4 is loop A on this branch; phase-1 items are done in v4.6.0. - §7: create (control-root reconcile/watchdog, loud binding failure), resume (original cwd only, binding persisted when already running), stop (the removal helper's checks), monitor (register via create/prepare only). - create / stop / resume SKILL.md: usage and exit codes of worktree_prepare.sh and worktree_remove.sh, the original-cwd rule and its exit code (1 -> 2). Frontmatter versions are unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017R3Eg7MEpSWnm1oB9ZPP6G
This commit is contained in:
1 parent
657b4b70ed
commit
7988db9adf
4 files changed
+74
-23
No files matched your search
@@ -109,6 +109,24 @@ The script:
|
||||
6. Updates the YAML entry and SQLite database atomically
|
||||
7. If `delegate_job_id` is set, publishes a `completed` event to the multi-agent-mux-delegate-job registry
|
||||
|
||||
## Removing an issue worktree: `worktree_remove.sh` (Issue #21 item 4)
|
||||
|
||||
```bash
|
||||
bash .agents/skills/multi-agent-mux-stop/scripts/worktree_remove.sh --path <WT> [--stop] [--dry-run]
|
||||
```
|
||||
|
||||
Every check runs first and changes nothing; a refusal exits 3:
|
||||
|
||||
1. a linked worktree of the control root, not locked (`git worktree unlock` first - git refuses even `--force` on a locked one);
|
||||
2. running sessions under it only with `--stop` (stopped normally, conversations kept);
|
||||
3. no open job of those sessions - never cancelled automatically, they may belong to a running loop (the delegate job of a session `--stop` stops is cancelled by stop itself);
|
||||
4. a clean tree, submodules included (`status --porcelain --ignore-submodules=none`);
|
||||
5. inside submodules: no modification and no commit that is on no remote (`HEAD` included - a submodule sits on a detached HEAD).
|
||||
|
||||
Then it stops the sessions, re-checks the jobs and removes the worktree (the branch is kept): plain, or - when the worktree holds submodule state, which git refuses to remove otherwise - a **single `--force` justified by checks 4 and 5**. Do not run `git worktree remove --force` by hand on such a worktree: it deletes the worktree's own submodule repositories, unpushed commits included.
|
||||
|
||||
Exit codes: 0 removed, 1 stop/git failure, 2 not a worktree of the control root, 3 refused (nothing changed). Sessions created in a removed worktree cannot be resumed until a worktree exists at that path again.
|
||||
|
||||
## Pitfalls
|
||||
|
||||
- **Don't delete on-disk artifacts by default** — the agent's `*.jsonl` / `conversations/*.db` is the data that `multi-agent-mux-resume` needs. `--purge-conversation` is for when the user is genuinely done with the conversation and wants zero recovery chance.
|
||||
|
||||
Reference in new issue
Block a user