# mvirt 0.27.5

migrations: no
wire: unchanged
rev: 63fae56c409fd697b5ae294cf325292025b6621d

mvirt 0.27.5

A leader that provably cannot serve hands leadership over, pod guests get
a route to the rest of their IPv6 network, and log SQL returns values.

- cplane, mvdb: a leader whose own REST path fails 6 self-probes in a row
  (every 5 s) or whose converger is busy without progress for 600 s
  abdicates: it stops heartbeating so another replica is elected, sits out
  a 10 min cooldown, and resumes if nobody takes over within 15 s. Soaked
  in the ADR-0087 lab: 0 abdications in 2x ~25 min under churn; a real
  REST wedge fails over in ~33 s (n=3), mixed versions included (#292).
- ebpf, one: the router advertisement carries a Route Information Option
  for the network prefix via fe80::1, and mvirt-one installs it, so a pod
  reaches its IPv6 peers without a manual route (#391).
- logquery: every SQL result type is rendered as its value (arrow's JSON
  writer); an unrenderable type is a 400 naming the column, never its
  type name in a 200 (#41).
- kaas: a changed virtualKubeletImage rolls the VK companion pod; the
  control-plane pod's images are tracked in #397 (refs #47).
- meta: revoking a never-granted capability is idempotently off (204),
  unknown tenant or capability stays 404 (#249).
- tests: the volume/blockdev suites share one cross-process lock (memlock
  exhaustion, #339); the etag test asserts the ETag invariant instead of
  the first phase (refs #337).


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