v0.4.0: registry (R1), tofu targets (R2), Rust contract + hardening

- Gateway OCI image published to GitLab registry (Nix dockerTools,
  Dockerfile.rust fallback); CI pushes :v0.4.0+:latest on this tag
- OpenTofu targets/libvirt/{single-node,mesh-3-nodes}, NixOS qcow2
  mode via image_path, provider pinned ~> 0.8.0
- api/rs: [hardware] capabilities section per contract; 1 MiB body
  cap; gateway/rs: 16 MiB POST cap
- Milestone C shipped earlier in the cycle (qcow2 boot validated)