# mvirt 0.14.1

migrations: no
wire: unchanged
rev: 8f86345456f0e51d531b402add9cf131f40da356

v0.14.1 — a fresh-wiped control plane can bootstrap on a non-loopback raft bind

v0.14.0's boot guard refused a non-loopback raft bind without mTLS material on
disk — but the CA that signs that material lives in the store, which cannot open
until the raft listener does. A fully reinstalled bootstrap voter could never
boot: the flakes had to document the non-loopback bind as a second, later step.

The bootstrap voter now generates the deployment's root locally, mints its own
raft leaf from it, and seeds the store's internal CA from the same PEMs — one
trust anchor from boot zero, no two-anchor divergence. refresh() also realigns a
disk/store root mismatch (interrupted seeding) instead of running on a dead anchor.


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