The update lifecycle is explicit and operator-controlled:
update entity-sources rebuildderives installed update sites from subject manifests, installed subjects, registries, and overrides.update candidates refreshfetches local/remote manifests, compares installed and available versions, writesruntime/update/candidates.json, and creates notifications.update changelog showprints the candidate changelog URL and local changelog content for file-based manifests.update stagecopies or downloads the artifact intoruntime/update/staged/<candidate-id>/and verifies sha256 when required.update verifychecks the staged artifact checksum and, for package zip artifacts, validates subject id/type/version from the package manifest.update apply --confirmcreates a backup, applies the local-file update for supported subject types, updates installed subjects, and writes an apply record.update rollbackrestores the backup and writes a rollback record.update doctorvalidates update runtime caches.
apply never runs automatically. Tool updates with custom_command_requires_confirmation are blocked by default; ProcessForge does not execute arbitrary remote postinstall scripts.
Runtime state is not public archive content:
runtime/update/candidates.json
runtime/update/notifications.json
runtime/update/staged/
runtime/update/backups/
runtime/update/rollbacks/
Director inbox integration is optional. When a workplace has director/inbox/, update notifications can be mirrored as type=update_available; the CLI and files remain the canonical simple-mode notification path.