Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
14d25c7
docs(plans): add the Bazel-owned host integration lane plan
vicondoa Sep 26, 2026
72e31fb
feat(vm): build the host-integration guest image as a Bazel action
vicondoa Sep 26, 2026
3beb7a2
refactor(vm): re-home per-check guest configuration from the fixtures
vicondoa Sep 26, 2026
dbaca89
feat(vm): boot the host-integration guest from a Bazel-owned harness
vicondoa Sep 26, 2026
7aaff4d
feat(vm): give the guest a command channel and the legacy control sur…
vicondoa Sep 26, 2026
e94f7a4
feat(vm): build one guest image per check and add the lane pool
vicondoa Sep 26, 2026
5430c46
feat(vm): run the lane on restored guests; nine of eleven checks pass
vicondoa Sep 27, 2026
1c4c3cc
refactor(vm): rename d2b-vm-harness to d2b-test-vm-harness
vicondoa Sep 27, 2026
03684ed
fix(vm): re-attach a restored guest's devices in launch order
vicondoa Sep 27, 2026
ac31be7
refactor(vm): assert daemon-smoke in Rust and retire its fixture
vicondoa Sep 27, 2026
79132ce
fix(vm): declare the per-guest runtime dir a zone-native device worke…
vicondoa Sep 27, 2026
5daa2c0
docs(changelog): record the lane's restore-order, runtime-dir and ref…
vicondoa Sep 27, 2026
91fcac8
fix(vm): bound the host's wait for a guest's answer to a command
vicondoa Sep 27, 2026
d2c7ae6
refactor(vm): assert bridge-isolation in Rust
vicondoa Sep 27, 2026
ca8b421
refactor(vm): assert guest-agent-cap-confinement in Rust
vicondoa Sep 27, 2026
8f2607a
refactor(vm): assert guest-shell-service in Rust
vicondoa Sep 27, 2026
1802c0b
refactor(vm): assert privilege-oracle in Rust
vicondoa Sep 27, 2026
efcd999
refactor(vm): assert wayland-proxy in Rust
vicondoa Sep 27, 2026
f84d80d
refactor(vm): assert resource-operator-activation in Rust
vicondoa Sep 27, 2026
459dedc
refactor(vm): assert state-posture-contract in Rust
vicondoa Sep 27, 2026
85627a4
refactor(vm): assert device-worker-launch in Rust and retire its fixture
vicondoa Sep 27, 2026
812b842
refactor(vm): assert virtiofsd-volume-runtime in Rust and retire its …
vicondoa Sep 27, 2026
520903f
fix(vm): repair two assertions found by differential verification
vicondoa Sep 27, 2026
9a3ce03
refactor(vm): make the host lane a single Bazel test and honour --tes…
vicondoa Sep 27, 2026
0648cb2
refactor(vm): assert runtime-cloud-hypervisor-guest-preflight in Rust…
vicondoa Sep 27, 2026
b324801
refactor(vm): retire the vmChecks flake output and the last fixture
vicondoa Sep 27, 2026
e58794d
docs(changelog): record the Bazel-owned lane, the coverage it removed…
vicondoa Sep 27, 2026
40c2f8a
docs: sweep host-integration docs onto the Bazel-owned lane
vicondoa Sep 27, 2026
3c94073
fix(vm): collapse the doubled module function in the guest-shell-serv…
vicondoa Sep 27, 2026
b5da309
fix(vm): defer a pool group that does not fit instead of dropping it
vicondoa Sep 27, 2026
8c41462
perf(vm): name the guest kernel and initrd by store path instead of c…
vicondoa Sep 27, 2026
54d8310
fix(vm): call a silent guest stuck instead of waiting out the activat…
vicondoa Sep 27, 2026
6bdba98
fix(vm): bring the activation bound down to something a guest can exceed
vicondoa Sep 27, 2026
450edaa
fix(vm): stop the lane's results being replayed from Bazel's cache
vicondoa Sep 27, 2026
bf5771d
docs(changelog): record the lane's build, filter and timing work
vicondoa Sep 27, 2026
62c49f5
fix(vm): create the per-guest runtime tree the swtpm worker binds its…
vicondoa Sep 27, 2026
8d19bad
chore(policy): regenerate the package policy inputs on top of the aud…
vicondoa Sep 27, 2026
3622a6d
test(nix): point the host-tools case at the lane's declared inputs
vicondoa Sep 27, 2026
1d6c219
test(nix): assert the retired host-tool handoff is gone, not replaced
vicondoa Sep 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,18 @@ build:local --@rules_rust//rust/settings:extra_exec_rustc_flags=
build:local --action_env=PATH
build:local --test_env=PATH

# The host-integration lane's guest build profile. The lane builds the d2b
# host binaries that reach the guest through this config, named here
# rather than at a call site so a contributor's exported Bazel profile
# cannot change the guest closure: the guest image action realizes the
# binaries this config produces, whatever the caller set.
build:guest --config=local
# The guest binaries are content-addressed inputs of the guest image, so a
# caller-inherited action environment would change the guest closure. The
# profile pins the environment those builds see, the same way the remote
# profile pins it.
build:guest --action_env=PATH=/run/current-system/sw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Remote profiles use the d2b BuildBuddy workspace. Authentication is
# the credential helper only. Direct API-key headers leak into BEP.
build:remote --remote_executor=grpcs://d2b.buildbuddy.io
Expand Down
12 changes: 7 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Use this index, then open the focused document instead of expanding this file.
| Worktrees, review, PRs, merge, and disk hygiene | [`docs/contributing/workflow.md`](./docs/contributing/workflow.md), especially the [reviewed-head lifecycle](./docs/contributing/workflow.md#reviewed-head-pr-lifecycle) |
| Changelog or commit grammar | [`docs/contributing/changelog-and-commits.md`](./docs/contributing/changelog-and-commits.md) |
| Codegraph MCP server and agent usage | [`.omp/mcp.json`](./.omp/mcp.json) wires the server; see [Codegraph (MCP code intelligence)](#codegraph-mcp-code-intelligence) below for per-checkout init and tool guidance |
| Gates, heavy lanes, and build profiles | [`docs/contributing/gates-and-lints.md`](./docs/contributing/gates-and-lints.md) |
| Gates, validation lanes, and build profiles | [`docs/contributing/gates-and-lints.md`](./docs/contributing/gates-and-lints.md) |
| Architecture and per-Guest/provider features | [`docs/contributing/architecture.md`](./docs/contributing/architecture.md) and [ADR 0015](./docs/adr/0015-daemon-only-clean-break.md) |
| Critical subsystem invariants | [`docs/contributing/critical-subsystems.md`](./docs/contributing/critical-subsystems.md) |
| Contributor orchestration and host distribution | [`d2b-gascity`](https://github.com/vicondoa/d2b-gascity) for orchestration and [`gascity.nix`](https://github.com/vicondoa/gascity.nix) for NixOS distribution and installation |
Expand Down Expand Up @@ -224,10 +224,12 @@ settings or claim atomic base binding.
`make test-host-integration`. They may run alongside the `/etc/nixos`
real-host switch, d2b startup, and Cloud Hypervisor Guest boot. U19
converges their declarations and current inputs but does not run host
acceptance. The host-integration lane must inject its Bazel-built
`d2b`, `d2bd`, `d2b-broker`, activation/helper, resource-compiler, and
Wayland-proxy binaries through `D2B_HOST_TOOL_BUNDLE`; it must not rebuild
those binaries through Nix.
acceptance. The host-integration lane passes its Bazel-built `d2b`,
`d2bd`, `d2b-broker`, activation/helper, resource-compiler, and
Wayland-proxy binaries to the guest-image action as declared Bazel label
inputs; Nix must realize the guest closure around those binaries rather
than rebuild them. The lane is `//bazel/checks/vm:host_integration_lane_run`,
invoked by `make test-host-integration`.
- Every code change ships a valid changelog entry or a fragment under
[`changelog.d/`](./changelog.d/).
- The retired repository-local contributor runtime has no ordinary-work
Expand Down
11 changes: 11 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,16 @@ filegroup(
visibility = ["//visibility:public"],
)

# keep
filegroup(
name = "completions_workspace_sources",
srcs = glob(
["completions/**/*"],
allow_empty = True,
),
visibility = ["//visibility:public"],
)

# keep
filegroup(
name = "examples_workspace_sources",
Expand Down Expand Up @@ -343,6 +353,7 @@ filegroup(
"//packages/d2b-provider-host:cargo_workspace_sources",
"//packages/d2b-provider-user:cargo_workspace_sources",
"//packages/d2b-provider-test-controller:cargo_workspace_sources",
"//packages/d2b-test-vm-harness:cargo_workspace_sources",
"//packages/d2b-resource-runtime:cargo_workspace_sources",
"//packages/d2b-audit:BUILD.bazel",
"//packages/d2b-broker-composition:BUILD.bazel",
Expand Down
8 changes: 8 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ members = [
"packages/d2b-provider-command",
"packages/d2b-provider-operation",
"packages/d2b-provider-seccomp-profile",
"packages/d2b-test-vm-harness",
]

[workspace.package]
Expand Down
10 changes: 9 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,15 @@ nix_packages.attr(
attr = "python3",
repo = "@nixpkgs",
)
use_repo(nix_packages, "nix", "nix_eval_jobs", "nix_unit", "python3")
# The host-integration lane's emulator, taken from the same pinned nix
# package set the guest image is realized from, so the emulator and the
# guest stay at one nixpkgs revision.
nix_packages.attr(
name = "qemu_kvm",
attr = "qemu_kvm",
repo = "@nixpkgs",
)
use_repo(nix_packages, "nix", "nix_eval_jobs", "nix_unit", "python3", "qemu_kvm")

buildbuddy = use_extension("@toolchains_buildbuddy//:extensions.bzl", "buildbuddy")

Expand Down
20 changes: 18 additions & 2 deletions MODULE.bazel.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading