# mvirt 0.18.0

migrations: no
wire: unchanged
rev: 2d5fbf8e3a6c001b63f4f8f45e315bc38e20f33d

0.18.0 — managed databases actually provision

0.16.0 made the Postgres and Valkey controllers something every install gets
without wiring them up. Running them on production found the reason nobody had
noticed they could not work: both providers named their anti-affinity placement
group `{prefix}-{handle}`, and `handle()` is the instance id's 16-hex tail, so the
name has exactly the ADR-0049/0063 shape the platform reserves for resource ids.
`POST /placement-groups` refused it, and every order stranded at `Accepted`,
retrying the same 400 forever.

The group is `{prefix}-{handle}-members` now, in mvirt-provider-pg:m3 and
mvirt-provider-valkey-native:m6, both pinned by digest. The reaper gained a
`group_handle()` inverse beside the constructor, because its old name parsing
would have skipped the new form and leaked every group it was meant to collect.

Proven on production rather than only in tests: order -> Ready, "primary +
streaming replica (0 bytes behind)", members on different hosts, credential
Secret deposited.


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