Repository navigation
Description
Parent: #1076. Phase: 1, foundation. Needs: inside phase 1, groups of #1077 (see the table below). Unblocks: #1085, #1087, #1090.
Goal. The guest helper binaries ship from nvx-guest-tools, which is published after nvx, and the managed agent lives in nvx-init. nvx keeps the library parts that the tools call: TimeAbi, reseed::{Seed, reseed, ReseedError}, and, until nvx-ingress start gets a spawner of its own in #1087, ingress::{Announcer, PROGRAM, StartError}.
Today (dev e42b1795) and after:
| Area | Today | After |
|---|---|---|
| Guest binaries | nvx-time, nvx-time-probe, nvx-ingress, nvx-console-pending, nvx-mmio-write, nvx-exit, nvx-device-io, nvx-reseed and nvx-managed-agent are binaries of nvx. |
The guest tools are binaries of nvx-guest-tools, and nvx-managed-agent is nvx-init's. |
| Managed agent | guest::managed_agent uses crate-private mapping and process operations, and nvx's test-only fakes. |
It uses Mapper::{apply, teardown}, the public root operations, Spawned::id and Child::new, with a test seam of its own; no mapping or process internal becomes public. It then moves to nvx-init, which reaches NVXC and the guest's space through local alias modules. |
Groups, in order. Each group issue lists its PRs, with their goals, contents, Needs and estimates.
| Group issue | Delivers | PRs | Needs |
|---|---|---|---|
| #1095 | The guest helper binaries ship from nvx-guest-tools | SL1.1a, SL1.1b, SL1.2, SL1.3 | #1092, #1093, #1094 |
| #1096 | The managed agent lives in nvx-init | SL1.4a, SL1.4b | #1092, #1093, #1095 |
Notes.
- SL1.1a makes the guest build workspace-aware.
guest_binaries.pybuilds, checks and tests the guest binaries across the workspace, each in the crate that owns it, so later moves don't edit it; the initramfs takes each binary from its new crate. - The programs keep their behavior: their command lines, exit statuses and output.
- The managed agent's process dependencies end in two steps. nvx-rs slimming, phase 3.3: nvx-init boots, captures and restores layered roots #1085 moves its direct mode and shared loop onto nvx-init's exec core; its sandbox mode keeps using
guest::{exec, spawn, process, cgroup, entry}for the old layered init until nvx-rs slimming 4.2.4: the exec engine, the process modules and the old layered init are gone #1123 deletes that mode with the init.
Tests. Each PR keeps, rewrites or retires the tests of its area, by name. The programs' tests still check their command lines, exit statuses and output, and the initramfs build takes each binary from its new crate. The managed agent's mapping, launch and seam tests run on its own seam, with no private or test-only fake of nvx; the guest build, its checks and the staged binaries' tests find each program in the crate that owns it.
Done when: every group issue is closed, and nvx has no guest binary left.
Activity
nvxa library of mechanisms and value types #1076esaurez commentedon Nov 3, 2026
Closing as not planned: the plan in #1076 changed.
nvxstays the only crate, with no Cargo workspace and no new crates. NVX's own programs, its control protocol and the OS layers stay innvx, private to it, and CI checks the public API against committed snapshots (#1091). The guest tools and the managed agent stay innvx: #1091 hides their entry points from the public API instead of moving them to new crates.nvxa library of mechanisms and value types #1076