# mvirt 0.25.2

migrations: no
wire: unchanged
rev: c5ea45f2bcb3f054355c7a325cfe1c8ad381cdb7

mvirt 0.25.2

A node's capacity and storage registration heal on the next resync
instead of only on a reconnect, a voter's raft log can no longer be
classified as a learner's and discarded at boot, the remaining
platform-scoped mutations are audited, and an operator can read the
dataplane FIB with network names again.

- cplane: node capacity and the StorageNode row are re-derived on the
  level pass from the facts the node reported at Identify; the accept
  pipeline no longer writes them warn-and-continue (#279).
- mvdb: the boot reconcile classifies a node as a voter if either the
  view's or the log's latest membership names it one (#379). The
  snapshot-boundary test flake was a test race, now seeded
  deterministically (#213).
- cplane: node revoke/decommission/patch, kubernetes versions and
  settings, and object-storage settings are audited (refs #229).
- ebpf: `mvirt-ebpf fib-status` dumps FORWARDING/ROUTES/NAT_EGRESS with
  each scope handle resolved to its network, per-scope counts and map
  fill, and install failures with their errno. Additive NetService RPC
  GetFibStatus (node-local daemon proto; node and daemon ship together)
  (#316).


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