# mvirt 0.29.7

migrations: no
wire: unchanged
rev: 974520b5061cd11619bfc655a366eca14408a5f2

mvirt 0.29.7

Logs become one surface across the hot ring and segments, the assistant asks
before it changes anything, and `mvirt logs` is a real command. Supersedes
0.29.6 for rolling (includes everything in it).

- assistant: per-call approval fencing for read-write mode — every call runs
  read-only first; a mutation becomes a proposal the user approves or denies
  (bound to the exact command's hash, 300 s, single use, audited); only then
  is a write token minted (ADR-0065 M4, refs #142).
- cli, console: `mvirt logs [stats|sql]` is the top-level command with the
  full filter set incl. attr=/notAttr=, --severity-min, --trace, --context
  --around; Copy-as-CLI is pinned to the CLI's parser; `mvirt app logs` kept
  with a deprecation note; the assistant's command filter can no longer be
  bypassed via --project/-a values (closes #28).
- logs: `logs sql` answers the hot window (ring ∪ segments, each row once);
  infra rows read field-for-field the same hot and cold; platform feed/stats
  apply component=/resource= below the read boundary (closes #33).
  During the roll an old leader compacting new segments drops their new
  fields (component/resource_kind) — metadata only.
- everything in 0.29.6: ingress fleets 2 replicas (refs #414), lifecycle and
  deploy events in the project feed + console needles (refs #30), replicated
  CSP findings (refs #193 #413), midnight-spanning log segments, #223.

Not included: #415 (held for a design decision).


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