feat(issue-21): worktree_prepare.sh / worktree_remove.sh (opt-in submodules; judge before any change, single verified --force for submodule worktrees); create starts its reconcile and watchdog from the control root
- worktree_prepare.sh (create skill): idempotent `git worktree add` next to the control root (a path inside it is refused), .venv linked to the control root's, /.venv and .pytest_cache/ in the shared info/exclude, submodules only with --submodules - a failed init removes its own traces (modules/, new submodule.* keys in the shared config) and exits 1, since git refuses a plain `worktree remove` once modules/ exists - and an optional creator registered in the control root's .mam with MAM_NO_SUBSCRIBER_DAEMON=1. Prints BASE= for `run_loop.sh --worktree ... --base ... --review-only`. - worktree_remove.sh (stop skill): every check first, nothing changed on a refusal (exit 3): linked and not locked, running sessions only with --stop, no open job of those sessions except the delegate jobs stop cancels, clean tree including submodules, and inside submodules no modification and no commit on no remote (HEAD included - submodules sit on a detached HEAD). Then stop, re-check jobs, and remove: plain, or a single --force when the worktree holds submodule state. - lib_py/worktree.py: the parsing behind both (stdlib only). - A8: create's immediate reconcile and watchdog use the control root's code and WORKSPACE_ROOT, not the worktree --workspace's copy. Tests W1-W6d (local submodules allowed through GIT_CONFIG_* env only). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017R3Eg7MEpSWnm1oB9ZPP6G
This commit is contained in:
1 parent
2679ddfffd
commit
657b4b70ed
5 files changed
+696
-2
No files matched your search
@@ -576,8 +576,10 @@ Task: $SUBMIT_JOB_PROMPT"
|
||||
|
||||
delegate_publish_event "$DELEGATE_JOB_ID" started "multi-agent-mux session created and instructions injected" "$DELEGATE_JOB_TOKEN" "$DELEGATE_JOB_ATTEMPT"
|
||||
# Trigger immediate priority reconcile cycle asynchronously
|
||||
(bash "$WORKSPACE/.agents/skills/multi-agent-mux-monitor/scripts/reconcile.sh" --once >/dev/null 2>&1 &) || true
|
||||
WD_PID=$(start_watchdog "$DELEGATE_JOB_ID" "$WORKSPACE")
|
||||
# Issue #21 phase 2 (A8): the control root's reconcile/watchdog, never the
|
||||
# (unreviewed) copy in a worktree --workspace; identical paths by default.
|
||||
(bash "$SKILL_DIR/multi-agent-mux-monitor/scripts/reconcile.sh" --once >/dev/null 2>&1 &) || true
|
||||
WD_PID=$(start_watchdog "$DELEGATE_JOB_ID" "$WORKSPACE_ROOT")
|
||||
echo "watchdog PID: $WD_PID"
|
||||
fi
|
||||
# Clear cleanup trap as registration was fully successful
|
||||
|
||||
Reference in new issue
Block a user