Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
e73862b
contracts: define controller placement
vicondoa Aug 21, 2026
cf740d1
broker: unify host and guest profiles
vicondoa Aug 21, 2026
d87c757
merge: integrate broker profiles
vicondoa Aug 21, 2026
bcdc854
resources: fence controller assignments
vicondoa Aug 21, 2026
9212fb5
policy: refresh generated lock digests
vicondoa Aug 21, 2026
6ff7869
merge: integrate assignment routing
vicondoa Aug 21, 2026
d79aadc
merge: synchronize v3 build cleanup
vicondoa Aug 21, 2026
00633af
nix: include provider schemas in fixture sources
vicondoa Aug 21, 2026
bfb31cc
d2bd: add fixed Host and Guest modes
vicondoa Aug 22, 2026
5a1f106
d2bd: integrate U3 Host and Guest modes
vicondoa Aug 22, 2026
cc33f91
Merge remote-tracking branch 'origin/v3' into feat/v3-guest-control-p…
vicondoa Aug 22, 2026
ed4d9db
feat(process): deploy target-local controllers
vicondoa Aug 22, 2026
6144833
fix(runtime): revoke target controller sessions
vicondoa Aug 22, 2026
5613f2d
fix(provider): refresh acceptance controller manifest
vicondoa Aug 22, 2026
0544726
Merge remote-tracking branch 'origin/v3' into feat/v3-guest-control-p…
vicondoa Aug 22, 2026
6e357f1
merge: synchronize current v3
vicondoa Aug 22, 2026
a094f0b
exec: migrate guest sessions to resources
vicondoa Aug 22, 2026
7cb5553
merge: synchronize current v3
vicondoa Aug 22, 2026
845e703
fix(controller): scope test-only imports
vicondoa Aug 22, 2026
f38e5c4
policy: refresh U5 production closure
vicondoa Aug 22, 2026
bfcf092
bazel: preserve local test action PATH
vicondoa Aug 22, 2026
d741375
bazel: keep host xtask tests local
vicondoa Aug 22, 2026
2542261
test(bazel): guard remote action PATH
vicondoa Aug 22, 2026
928fdaf
bazel: drop invalid xtask routing experiment
vicondoa Aug 22, 2026
5fd4c55
runtime: gate retired detached create path
vicondoa Aug 22, 2026
e89653d
d2bd: gate retired exec bridge helpers
vicondoa Aug 22, 2026
184d33a
bazel: preserve local action PATH
vicondoa Aug 22, 2026
b6c8fb4
guest: migrate activation config and health
vicondoa Aug 24, 2026
80dac63
bazel: remove heavy-gate orchestration
vicondoa Aug 24, 2026
7f47009
merge: integrate U6 guest activation substrate
vicondoa Aug 24, 2026
700f725
bazel: fix integrated warning gate
vicondoa Aug 24, 2026
4852f9b
bazel: scope diagnostic helper to tests
vicondoa Aug 24, 2026
48d7e77
bazel: refresh trusted security digest
vicondoa Aug 24, 2026
ce5bdd4
bazel: align xtask bootstrap profile
vicondoa Aug 24, 2026
30569ba
bazel: stabilize remote facade bootstrap
vicondoa Aug 24, 2026
08c4e32
bazel: materialize remote xtask bootstrap
vicondoa Aug 24, 2026
d76da53
bazel: make warning evidence complete
vicondoa Aug 24, 2026
2ba8cbd
guest: migrate semantic binding families
vicondoa Aug 24, 2026
2520152
resource: admit Binding Endpoint children
vicondoa Aug 24, 2026
09559f0
guest: migrate display and interaction processes
vicondoa Aug 24, 2026
4a22548
audio: run Guest worker in system domain
vicondoa Aug 24, 2026
a2f2377
guest: cut packaging to ComponentSession
vicondoa Aug 24, 2026
4de93d3
merge: integrate U7 semantic bindings
vicondoa Aug 24, 2026
4f71967
binding: preserve live child relist
vicondoa Aug 24, 2026
95421be
display: reconcile proxy before GPU readiness
vicondoa Aug 24, 2026
9c282c8
merge: integrate U8 display interaction
vicondoa Aug 24, 2026
138e7f3
display: preserve QEMU-media proxy startup
vicondoa Aug 24, 2026
d5085a0
merge: integrate U9 ComponentSession packaging
vicondoa Aug 24, 2026
fb57912
guest: refresh combined static closure
vicondoa Aug 24, 2026
c1f76fe
ci: bridge root Rust toolchain path
vicondoa Aug 24, 2026
a2a0574
ci: align Layer-1 runner contracts
vicondoa Aug 24, 2026
5849ff4
ci: stabilize hosted Layer-1 budgets
vicondoa Aug 24, 2026
9e4d55e
guest: remove legacy guest control plane
vicondoa Aug 24, 2026
83a86f1
merge: synchronize U10 with integration head
vicondoa Aug 24, 2026
01c20fa
guest: refresh clean-break policy artifacts
vicondoa Aug 24, 2026
3a895af
guest: close clean-break validation gaps
vicondoa Aug 25, 2026
8ca00df
shell: require explicit Guest workload user
vicondoa Aug 25, 2026
dc47f7e
usbip: fail closed without Guest import owner
vicondoa Aug 25, 2026
8d3ede0
merge: integrate U10 guest clean break
vicondoa Aug 25, 2026
be2be52
config: align Guest working-copy path
vicondoa Aug 25, 2026
ee83cb4
config: isolate Guest working copy access
vicondoa Aug 25, 2026
0ab0209
Merge remote-tracking branch 'origin/v3' into feat/v3-guest-control-p…
vicondoa Aug 25, 2026
04644ba
test: pass host tool overrides to broker eval
vicondoa Aug 25, 2026
72bb603
test: stage renamed broker for host integration
vicondoa Aug 25, 2026
5440a54
fix: tolerate artifacts without provider catalogs
vicondoa Aug 25, 2026
bcd6202
test: cover null provider catalog metadata
vicondoa Aug 25, 2026
d2f67ea
test: reuse Bazel daemon tools in Guest VMs
vicondoa Aug 25, 2026
ca664eb
test: declare Guest evaluator fixture input
vicondoa Aug 25, 2026
903dad0
cutover: remove unreleased cutover tooling
vicondoa Aug 25, 2026
a082990
test: keep Guest lifecycle in its dedicated VM check
vicondoa Aug 25, 2026
e106c75
test: upload cached VM dependency closures
vicondoa Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ build:remote --@rules_rust//rust/settings:extra_rustc_flag=-Clink-arg=-fuse-ld=b
build:remote --@rules_rust//rust/settings:extra_exec_rustc_flag=-Clink-arg=-fuse-ld=bfd
build:remote --action_env=PATH=/run/current-system/sw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
build:remote --test_env=PATH=/run/current-system/sw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
build:remote --strategy=TestRunner=local
build:remote --remote_download_minimal
build:remote --jobs=50
build:remote --remote_cache_compression
Expand All @@ -63,6 +64,7 @@ build:trusted-seed --@rules_rust//rust/settings:extra_rustc_flag=-Clink-arg=-fus
build:trusted-seed --@rules_rust//rust/settings:extra_exec_rustc_flag=-Clink-arg=-fuse-ld=bfd
build:trusted-seed --action_env=PATH=/run/current-system/sw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
build:trusted-seed --test_env=PATH=/run/current-system/sw/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
build:trusted-seed --strategy=TestRunner=local
build:trusted-seed --remote_upload_local_results=true
build:trusted-seed --remote_cache_async=false
build:trusted-seed --remote_download_minimal
Expand Down
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/Cargo.toml @vicondoa
/Cargo.lock @vicondoa
/packages/Cargo.guest.lock @vicondoa
/packages/d2b-priv-broker/Cargo.toml @vicondoa
/packages/d2b-broker/Cargo.toml @vicondoa
/packages/d2b-guest-shell-runner/Cargo.toml @vicondoa
/packages/policy-inputs/** @vicondoa
/packages/policy-inputs/advisory-policy.json @vicondoa
Expand All @@ -13,7 +13,7 @@
/packages/xtask/tests/policy_production_closure.rs @vicondoa
/Makefile @vicondoa
/flake.nix @vicondoa
/nixos-modules/guest-control.nix @vicondoa
/nixos-modules/component-session.nix @vicondoa
/nixos-modules/host-activation.nix @vicondoa
/nixos-modules/host-broker.nix @vicondoa
/nixos-modules/host-daemon.nix @vicondoa
Expand Down
24 changes: 3 additions & 21 deletions .github/workflows/pr-l1-static-fast.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,24 +107,6 @@ jobs:
- name: Guest shell runner suite
run: make test-rust-guest-shell-runner

rust-local:
runs-on: ubuntu-latest
timeout-minutes: 90
env:
D2B_BAZEL_PROFILE: local
D2B_BAZEL_UNTRUSTED: "1"
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false
- uses: cachix/install-nix-action@23cf0fec1d55e0b1f2631aedd2a610c21ef8b077
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = nix-command flakes
- name: Local Rust suite
run: make test-rust-local

nix-eval:
runs-on: ubuntu-latest
timeout-minutes: 45
Expand Down Expand Up @@ -163,7 +145,7 @@ jobs:

nix-realized:
runs-on: ubuntu-latest
timeout-minutes: 60
timeout-minutes: 120
env:
D2B_BAZEL_PROFILE: local
D2B_BAZEL_UNTRUSTED: "1"
Expand Down Expand Up @@ -218,7 +200,7 @@ jobs:
test-performance-budgets:
runs-on: ubuntu-latest
continue-on-error: true
timeout-minutes: 10
timeout-minutes: 30
env:
D2B_BAZEL_PROFILE: local
D2B_BAZEL_UNTRUSTED: "1"
Expand All @@ -236,7 +218,7 @@ jobs:

check:
if: ${{ always() }}
needs: [tier0, policy-tooling, rust-main, rust-broker, rust-guest, rust-local, nix-eval, nix-unit, nix-realized, nix-aarch64, fixtures-proofs]
needs: [tier0, policy-tooling, rust-main, rust-broker, rust-guest, nix-eval, nix-unit, nix-realized, nix-aarch64, fixtures-proofs]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/release-host-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ jobs:
packages/d2b-wayland-proxy/Cargo.toml \
packages/d2b-unsafe-local-helper/Cargo.toml \
packages/d2b-host/Cargo.toml \
packages/d2b-priv-broker/Cargo.toml
packages/d2b-broker/Cargo.toml
do
package_version=$(sed -n 's/^[[:space:]]*version[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' "$manifest" | head -1)
[ "$package_version" = "$VERSION" ] || {
Expand All @@ -126,7 +126,7 @@ jobs:
}

manifest_version=$(jq -r 'if .version == null then "null" else (.version | strings) end' nix/prebuilt.json)
expected_keys='["d2b","d2b-activation-helper","d2b-priv-broker","d2b-unsafe-local-helper","d2b-wayland-proxy","d2bd"]'
expected_keys='["d2b","d2b-activation-helper","d2b-broker","d2b-unsafe-local-helper","d2b-wayland-proxy","d2bd"]'
if [ "$manifest_version" = "null" ]; then
jq -e '.version == null and .system == "x86_64-linux" and .binaries == {}' \
nix/prebuilt.json >/dev/null || {
Expand All @@ -145,7 +145,7 @@ jobs:
for binary in \
d2b \
d2b-activation-helper \
d2b-priv-broker \
d2b-broker \
d2b-unsafe-local-helper \
d2b-wayland-proxy \
d2bd
Expand Down Expand Up @@ -246,7 +246,7 @@ jobs:
packages/d2b-wayland-proxy/Cargo.toml \
packages/d2b-unsafe-local-helper/Cargo.toml \
packages/d2b-host/Cargo.toml \
packages/d2b-priv-broker/Cargo.toml
packages/d2b-broker/Cargo.toml
do
package_version=$(sed -n 's/^[[:space:]]*version[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' "$manifest" | head -1)
[ "$package_version" = "$VERSION" ] || {
Expand Down Expand Up @@ -341,7 +341,7 @@ jobs:
--package d2b-host --bin d2b-activation-helper
rustup run "$PINNED" cargo build --release --locked \
--manifest-path Cargo.toml \
--package d2b-priv-broker --bin d2b-priv-broker --no-default-features
--package d2b-broker --bin d2b-broker --no-default-features

rm -rf dist
mkdir -p dist/bin
Expand All @@ -350,12 +350,12 @@ jobs:
cp target/release/d2b-wayland-proxy dist/bin/
cp target/release/d2b-unsafe-local-helper dist/bin/
cp target/release/d2b-activation-helper dist/bin/
cp target/release/d2b-priv-broker dist/bin/
cp target/release/d2b-broker dist/bin/

for binary in \
d2b \
d2b-activation-helper \
d2b-priv-broker \
d2b-broker \
d2b-unsafe-local-helper \
d2b-wayland-proxy \
d2bd
Expand Down Expand Up @@ -461,7 +461,7 @@ jobs:
packages/d2b-wayland-proxy/Cargo.toml \
packages/d2b-unsafe-local-helper/Cargo.toml \
packages/d2b-host/Cargo.toml \
packages/d2b-priv-broker/Cargo.toml
packages/d2b-broker/Cargo.toml
do
package_version=$(sed -n 's/^[[:space:]]*version[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' "$manifest" | head -1)
[ "$package_version" = "$VERSION" ] || {
Expand All @@ -473,7 +473,7 @@ jobs:
flake_versions=$(sed -n 's/^[[:space:]]*version[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' flake.nix | sort -u)
[ "$(printf '%s\n' "$flake_versions" | awk -v expected="$VERSION" '$0 != expected && NF { count++ } END { print count + 0 }')" -eq 0 ]

expected_keys='["d2b","d2b-activation-helper","d2b-priv-broker","d2b-unsafe-local-helper","d2b-wayland-proxy","d2bd"]'
expected_keys='["d2b","d2b-activation-helper","d2b-broker","d2b-unsafe-local-helper","d2b-wayland-proxy","d2bd"]'
manifest_version=$(jq -r 'if .version == null then "null" else (.version | strings) end' nix/prebuilt.json)
if [ "$manifest_version" = "null" ]; then
jq -e '.version == null and .system == "x86_64-linux" and .binaries == {}' nix/prebuilt.json >/dev/null
Expand All @@ -492,7 +492,7 @@ jobs:
for binary in \
d2b \
d2b-activation-helper \
d2b-priv-broker \
d2b-broker \
d2b-unsafe-local-helper \
d2b-wayland-proxy \
d2bd
Expand Down Expand Up @@ -612,7 +612,7 @@ jobs:
asset_names=(
"d2b-${VERSION}-x86_64-linux.tar.gz"
"d2b-activation-helper-${VERSION}-x86_64-linux.tar.gz"
"d2b-priv-broker-${VERSION}-x86_64-linux.tar.gz"
"d2b-broker-${VERSION}-x86_64-linux.tar.gz"
"d2b-unsafe-local-helper-${VERSION}-x86_64-linux.tar.gz"
"d2b-wayland-proxy-${VERSION}-x86_64-linux.tar.gz"
"d2bd-${VERSION}-x86_64-linux.tar.gz"
Expand Down Expand Up @@ -703,7 +703,7 @@ jobs:
case "$1" in
"d2b-${VERSION}-x86_64-linux.tar.gz" \
| "d2b-activation-helper-${VERSION}-x86_64-linux.tar.gz" \
| "d2b-priv-broker-${VERSION}-x86_64-linux.tar.gz" \
| "d2b-broker-${VERSION}-x86_64-linux.tar.gz" \
| "d2b-unsafe-local-helper-${VERSION}-x86_64-linux.tar.gz" \
| "d2b-wayland-proxy-${VERSION}-x86_64-linux.tar.gz" \
| "d2bd-${VERSION}-x86_64-linux.tar.gz" \
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ configuration, start with [`README.md`](README.md).

d2b is an opinionated NixOS desktop microVM framework for a single trusted
Wayland host and untrusted, isolated workloads. Its daemon-only control plane
is `d2bd` plus `d2b-priv-broker`; its declarative modules own networking,
is `d2bd` plus `d2b-broker`; its declarative modules own networking,
per-VM store views, mediated devices, and versioned bundle contracts.
Product direction is in [`STRATEGY.md`](./STRATEGY.md); the threat model is
in [`docs/explanation/design.md`](./docs/explanation/design.md). Binding
Expand Down Expand Up @@ -205,7 +205,7 @@ Read the relevant section before changing any of these:
## Daemon-only end-state (P6 onward)

d2b declares exactly three root-visible units: `d2bd.service`,
`d2b-priv-broker.socket`, and `d2b-priv-broker.service`. The binding decision
`d2b-broker.socket`, and `d2b-broker.service`. The binding decision
is [ADR 0015](./docs/adr/0015-daemon-only-clean-break.md).

- `d2bd` supervises every per-VM DAG. The broker dispatches audited host
Expand Down
10 changes: 3 additions & 7 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,6 @@ exports_files([
"docs/explanation/design.md",
"docs/how-to/migrate-d2b-v1-0-to-v1-1.md",
"docs/reference/cli-contract.md",
"nixos-modules/guest-control-token-materialize.py",
"docs/reference/cli-output/list.schema.json",
"docs/reference/cli-output/status.schema.json",
"docs/reference/components-usbip.md",
Expand Down Expand Up @@ -145,8 +144,7 @@ exports_files([
"nixos-modules/generated/options-zones-Zone.nix",
"nixos-modules/generated/options-zones-ZoneLink.nix",
"nixos-modules/gateway-vm.nix",
"nixos-modules/guest-control.nix",
"nixos-modules/guest-control-host.nix",
"nixos-modules/component-session.nix",
"nixos-modules/host-activation.d/state-dir-acl.sh",
"nixos-modules/host-activation.nix",
"nixos-modules/host-daemon.nix",
Expand Down Expand Up @@ -296,21 +294,19 @@ filegroup(
"//packages/d2b-core:cargo_workspace_sources",
"//packages/d2b-core-controller:cargo_workspace_sources",
"//packages/d2b-core/fuzz:BUILD.bazel",
"//packages/d2b-cutover:cargo_workspace_sources",
"//packages/d2b-exec-runner:cargo_workspace_sources",
"//packages/d2b-gateway:cargo_workspace_sources",
"//packages/d2b-gateway-runtime:cargo_workspace_sources",
"//packages/d2b-guest-shell-runner:cargo_workspace_sources",
"//packages/d2b-guestd:cargo_workspace_sources",
"//packages/d2b-host:cargo_workspace_sources",
"//packages/d2b-host-activation-helper:cargo_workspace_sources",
"//packages/d2b-priv-broker:cargo_workspace_sources",
"//packages/d2b-broker:cargo_workspace_sources",
"//packages/d2b-process:cargo_workspace_sources",
"//packages/d2b-process-conformance:cargo_workspace_sources",
"//packages/d2b-provider:cargo_workspace_sources",
"//packages/d2b-provider-activation-nixos:cargo_workspace_sources",
"//packages/d2b-provider-audio-pipewire:cargo_workspace_sources",
"//packages/d2b-provider-clipboard-wayland:cargo_workspace_sources",
"//packages/d2b-provider-config-nixos:cargo_workspace_sources",
"//packages/d2b-provider-credential-entra:cargo_workspace_sources",
"//packages/d2b-provider-credential-managed-identity:cargo_workspace_sources",
"//packages/d2b-provider-credential-secret-service:cargo_workspace_sources",
Expand Down
8 changes: 3 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,7 @@ deprecations ship one minor release before removal.
with CLI projections, Guest-resident Entrablau identity custody, fast hermetic
tests with integration-only slow coverage, and Noise-protected
ComponentSession/d2b-bus channels on the `d2bus.org` public namespace,
together with the security/threat-model, reset/cutover, feasibility,
reset, cutover, and feasibility contracts. No crates, services,
together with the security/threat-model and feasibility contracts. No crates, services,
controllers, or Providers are created.


Expand Down Expand Up @@ -481,8 +480,7 @@ deprecations ship one minor release before removal.
- Added macvtap-backed external network attachment for env net VMs, including
independent egress NAT, port forwards, and mDNS/`.local` reflection.
- Added generated storage and synchronization contracts, read-only startup
validation, `d2b host doctor --read-only`, and
`d2b host migrate-storage --dry-run`.
validation, and `d2b host doctor --read-only`.
- Added provider-aware graceful VM shutdown with configurable global and per-VM
timeouts, plus explicit `--force` lifecycle overrides.
- Added experimental remote full-host and provider-managed Azure Container Apps
Expand Down Expand Up @@ -796,7 +794,7 @@ deprecations ship one minor release before removal.
no-orphan; a `setsid`/double-fork escapee is a documented trusted-root
limitation). Interactive detached exec remains unsupported; use
non-TTY `d2b vm exec -d` for detached commands. See
[`docs/reference/guest-control-exec-interactive-tty.md`](docs/reference/guest-control-exec-interactive-tty.md)
[`docs/reference/cli-contract.md`](docs/reference/cli-contract.md#exec)
and the interactive-exec section of
[ADR 0028](docs/adr/0028-guest-control-plane-over-vsock.md). The
guest-control wire contract is unchanged (the TTY surface was already
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ When docs disagree with committed, passing code, the code wins. Update the docs
## Host-prepare gates

Contributors touching anything in `packages/d2b-host/`,
`packages/d2b-priv-broker/src/ops/`, or the host-prepare
`packages/d2b-broker/src/ops/`, or the host-prepare
docs (`docs/how-to/host-prepare.md`,
`docs/how-to/host-prepare.d/*.md`,
`docs/reference/{cgroup-delegation,inet-d2b-chains,privileges,support-matrix}.md`)
Expand Down
Loading
Loading