Skip to content

nvx-rs slimming, phase 1.2: the guest tools and the managed agent leave the library #1078

Closed as not planned
2 of 2 issues completed
Closed as not planned

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.

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

  1. esaurez commented on Nov 3, 2026

    @esaurez
    ContributorAuthor

    Closing as not planned: the plan in #1076 changed. nvx stays the only crate, with no Cargo workspace and no new crates. NVX's own programs, its control protocol and the OS layers stay in nvx, private to it, and CI checks the public API against committed snapshots (#1091). The guest tools and the managed agent stay in nvx: #1091 hides their entry points from the public API instead of moving them to new crates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions