# mvirt 0.18.1

migrations: no
wire: unchanged
rev: 8afcc157e2575f67817f07d8cb62d7672267fdc6

Release 0.18.1 — level-triggered convergence fixes across the dataplane and the control plane.

Five reconcile latches found on the 2026-08-28 production rebuild are gone: the border gateway
(#267), vxlan0 bring-up (#271) and the per-vNIC datapath (#272) in mvirt-ebpf are now level-set —
converged on every pass from observed state, with a daemon restart no longer the only repair; the
cplane re-derives a connected node's Online status, underlay IP and identity on every resync tick
instead of only at tunnel connect (#273); and a platform-manifest pass that only HELD (NAT gateway
without supply, unassignable prefix) no longer stamps the applied hash, so bootstrap keeps retrying
instead of freezing with the work undone, and PUT/initialize report the holds (#274).

Also ships (from main since 0.18.0): the pod container phase runs off the StartPod RPC, and
registry interactions in mvirt-one are bounded by a stall guard.


Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01577XCdTfo1u5tUo9gM6aKP

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