# mvirt 0.17.0

migrations: no
wire: unchanged
rev: 0ebedf121918f2d36ce9fc6528aef13ee5a222a1

0.17.0 — remote object storage actually stores the platform's own objects

ADR-0076 M3, which the ADR specified and nobody had built. A platform in remote
mode registered its provider backend, put tenant buckets on it, and quietly kept
its own — the ADR-0058 repository, workload logs, the registry's blobs — on a
native blob store that remote mode never provisions. Nothing failed;
`repositoryConfigured` reported true throughout. It took reading a bucket row's
`backend: null` to see it.

`ensure_managed_bucket` now pins the platform's own buckets to the global backend
when the mode says remote, taking the provider's defaults from the backend row,
and keeps ADR-0074 D8's native default in platform mode, where the native store
is real. `reconcile_object_pgs` returns early in remote mode rather than
advertising placement groups for a store nothing will write to.

Found on a production rebuild, not in a test — which is why the ADR's M3 gate is
a live one.


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