# mvirt 0.29.3

migrations: no
wire: unchanged
rev: 8699ec0ff117c7a953ddf3f1712a52005c0c404e

mvirt 0.29.3

0.29.2 plus a stateless border, the object-storage pass off the converger, and
Report streams that cannot wedge silently. Supersedes 0.29.2 for rolling.

ROLL PREREQUISITE (#131, from 0.29.2): off-host KEK copy exists (dev host,
~/.local/share/mvirt/prod-kek/). After every voter runs this release the leader
seals the CA key; roll forward only. Restores need `--kek-file`.

- host firewall: forwarded pool traffic at the border stays out of conntrack
  (raw prerouting notrack, host-local destinations stay tracked)
  (ADR-0083 D6, refs #203).
- cplane: the object-storage backend pass is its own leader task; a slow S3
  provider no longer holds every node's slice (5-17 s per slow pass measured
  on the leader, n=19) (closes #389).
- node: a Report stream the leader stops applying is detected (report seq +
  acked seq on the health check), torn down and redialed; unacked log
  records go back to the spool (closes #292).
- everything in 0.29.2 (#131, #410, #87, #288, #277, #26, #252, ADR-0067 D13,
  #248, #50, #195, #161).


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