install_phase.sh exited when it could not mark the backup `installing`, before the installer ran, without starting the monitor phase 1 had stopped (decision 2) and leaving the backup behind. Nothing was changed at that point, so it now removes the backup, restarts the monitor if it ran, releases the marker and exits 1. SKILL.md's exit row said 1 for every failure; a failed registry conversion after a good install passes the converter's nonzero code through, and a cancelled prompt exits 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
2.2 KiB
Markdown
31 lines
2.2 KiB
Markdown
---
|
|
name: multi-agent-mux-update
|
|
description: "Update an installed MAM workspace in place to the latest version. Refuses while a session, an open job, a review loop or an unknown monitor is live; stops the monitor daemon and starts it again afterwards; rolls everything back if the install fails; converts the registry with the newly installed code. Use instead of the removed .mam_deploy/update.sh."
|
|
version: 4.11.0
|
|
author: godopu
|
|
license: MIT
|
|
platforms: [linux, macos]
|
|
environments: [terminal, herdr]
|
|
metadata:
|
|
hermes:
|
|
tags: [update, install, registry, migration]
|
|
related_skills: [multi-agent-mux-stop, multi-agent-mux-resume, multi-agent-mux-monitor]
|
|
---
|
|
|
|
# Multi-Agent Update
|
|
|
|
```bash
|
|
bash .agents/skills/multi-agent-mux-update/scripts/update.sh --yes
|
|
```
|
|
|
|
| Item | Behaviour |
|
|
|---|---|
|
|
| Where | An installed workspace only (`.mam_deploy/remove.sh` present). A git checkout updates with `git pull`. |
|
|
| Confirmation | `[y/N]` prompt; without a terminal `-y`/`--yes` is required. There is no force option. |
|
|
| Refused when | a running registry row, a live herdr agent whose cwd is in the workspace (any running server), an open job (an unreadable job JSON or jobs directory included, `dry_run` excluded), a live loop marker, `.mam/monitor.lock` held by a monitor the skills did not start, or another update. The calling agent (its herdr server + pane, row and one running job) is not counted. Each refusal lists the cleanup; nothing is changed. |
|
|
| During the update | create, resume, `run_loop.sh`, delegate submit, stop and orc-onboard refuse (`.mam/update-in-progress`, `.mam/update-admission.lock`). |
|
|
| Monitor | stopped first, started again afterwards only if it ran (`MAM_NO_SUBSCRIBER_DAEMON=1`: not started). |
|
|
| Install | the installer at `MAM_INSTALLER_URL` (default: Gitea `main`) runs in place; `.mam` is kept. On failure `.agents/`, `.mam_deploy/`, root files, `.venv`, the installer's `.mam` files and the registry are restored from `.mam/update-backup/`. |
|
|
| Registry | converted by the new code (`lib_py.registry_format`); a failed conversion keeps the install and exits nonzero. |
|
|
| Exit | `0` updated (or cancelled at the prompt), `1` refused or failed, `2` bad arguments; a failed registry conversion after a good install exits with the converter's nonzero code. |
|