| 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. |