Files
multica/apps/docs
beast 31cd51ae2f feat(daemon): converge on out-of-band multica and agent CLI version changes (MUL-3269)
A daemon whose `multica` binary or agent CLI was replaced out of band kept
running the old version until someone restarted it by hand, and most people
never knew they had to.

Two separate behaviors, deliberately not one:

- The `multica` binary being replaced (brew upgrade, a manual download, a
  downgrade) is followed by a restart, once the daemon is idle. A running task
  is never interrupted; a busy daemon defers to the next check and reports the
  reason through `daemon status` / `reload_pending_reason`. This is independent
  of the GitHub auto-update poller and has its own switch
  (`--no-auto-reload` / `MULTICA_DAEMON_AUTO_RELOAD` / `disable_auto_reload`),
  because "don't pull new versions" and "follow the binary I replaced myself"
  are different intents. Desktop-managed daemons stay excluded.
- An agent CLI upgrading in place is a hot refresh: re-probe, refresh the
  cached version and the server-side registration, and let subsequent tasks run
  under the new version's policy. Multica's availability does not track a third
  party's release cadence.

Failure semantics are explicit. An unreadable, blank, or unparseable version is
"no evidence", not a version change: the runtime and last trusted version are
kept and the next round retries. A version confirmed below the minimum takes
that provider's runtimes offline once the daemon is idle, and recovers
automatically on upgrade. A late register response, a newly synced workspace,
or an older cleanup request can neither revive a runtime already judged too old
nor knock out one that has legitimately recovered.

No migrations, no server endpoints, no frontend changes.
2026-08-05 19:54:22 +08:00
..