# mvirt 0.28.2

migrations: no
wire: unchanged
rev: 7f88f07e82f00d38508ae8b339a3660b058340d2

mvirt 0.28.2

mvdb refuses a write that would wedge the raft group, a stale host-failure
verdict no longer strands a VM, and a failed control-plane restart is
retried instead of forgotten.

- mvdb, cplane: a write whose encoded write-set exceeds 4 MiB is refused
  up front (WriteTooLarge → HTTP 413 payload_too_large); the group
  committer and AppendEntries are now bounded by bytes as well as count.
  Before, a single 48-64 MiB row wedged a 3-node group in release builds
  (no election, applied index frozen on all replicas — the #352 shape);
  prod's largest write today is ~1.1 MiB, its largest slice 29 KiB
  (closes #368).
- cplane: mark_vm_host_failed only writes if the VM is still on the host
  judged failed and not Archived/Terminated/already HostFailed, so a stale
  verdict can no longer strand an archived VM in HostFailed (closes #399).
- cplane: an edit that would leave the region with no control-plane
  endpoint (clear the flag, delete/ungroup the group, move or decommission
  the last registered host) is refused with 409 inside the transaction
  (closes #84).
- node: a control-plane restart that could not be issued rolls its env and
  enable files back, so the next pass retries it (closes #408); the
  integration test no longer calls the host's real systemctl.
- cplane, console: object-storage settings report gatewayReachable and name
  the missing mvirt-s3 gateway instead of reporting healthy (closes #86).
- docs: a forced anchor pre-switch is not held since 0.28.1 (#403,
  measured 120 s vs 131 s on prod); budget the provider's latency.


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