# mvirt 0.24.3

migrations: no
wire: unchanged
rev: 0e89312c2c2cd1a210d47f079ec05ef61b7fb55d

mvirt 0.24.3

A patch release that closes the failure mode behind the 2026-09-24 roll
outage, plus three smaller fixes.

What changed

- #358: a node's Report stream is owned by the controller's level pass. It
  used to be consumed by a task spawned once on the connect edge; when that
  consumer was missing or wedged, nothing noticed, and all of the node's
  observed state froze — on the 0.24.2 roll two containers that exited at
  boot stayed `Running` and were never restarted. The resync now re-spawns a
  consumer that is missing, finished or has applied nothing for 60 s.
- #322: the startup seeds (internal CA, built-in roles, administrator,
  default cluster, platform project, …) run on whichever replica leads, once
  per raft term — not only on the replica that happened to lead at boot.
- #326: the control plane's outbound HTTP errors name their cause (connect
  refused, DNS, TLS, timeout) instead of "error sending request for url",
  and every URL in them is redacted of path, query and userinfo.
- #336: a registry refusal reads as one sentence, reason first:
  `Image pull failed: Registry error: manifest unknown — https://…`.

Upgrade: ordinary host-by-host roll (release.md §C1, now with the §C3 check
that each node's metrics.observedAt advances). No store migration.


## Upgrading

Point your flake's `mvirt` input at this release and redeploy the control-plane
host first, then each node in turn:

```
nix run .#colmena -- apply boot --reboot --on <control-plane host>
nix run .#colmena -- apply boot --reboot --on <node>   # one at a time
```

This release adds no migrations, so the control-plane host rolls back the same way
a node does: boot the previous NixOS generation.
