Repository navigation
doc: describe the default guest as nvx-init runs it (SL6.10c) - #1550
Merged
Pedro Henrique Penna (ppenna) merged 1 commit intoNov 13, 2026
Merged
Pedro Henrique Penna (ppenna) merged 1 commit into
Pedro Henrique Penna (ppenna) merged 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The documentation overstates the RAM-upper cap’s scope because memory-backed files in the separate, world-writable /dev/shm tmpfs are not covered by it.
1 open issue
What changed in this PR
This documentation-only PR updates the guest runtime design to match nvx-init’s current behavior, supporting the broader effort to separate NVX’s internal programs from its public library.
Changes:
- Describes one VM-wide root, supported image formats, live shares, and mapping-table handling.
- Replaces removed namespace and cgroup machinery with workload credentials, process-group cleanup, and helper supervision.
- Updates control-protocol features, cancellation, and session-reset behavior.
| File | Description |
|---|---|
doc/design/4.4-host-guest-control-interface.md |
Updates operations, feature announcements, errors, and reset semantics. |
doc/design/4.3-isolation-and-resource-model.md |
Describes credentials, shared namespaces, priority, and resource boundaries. |
doc/design/4.2-guest-agents-and-workload-model.md |
Explains execution lifecycles, process groups, and helper supervision. |
doc/design/4.1-guest-filesystem-and-image-model.md |
Revises root assembly, restore, live shares, and mapping-table behavior. |
doc/design/4-guest-runtime-architecture.md |
Aligns the overview with nvx-init and the internal reference space. |
Review effort: Balanced
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10c-guest-design
branch
from
November 12, 2026 17:00
0bfa2c7 to
0d9e1f2
Compare
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The documentation incorrectly states that all overlapping guest targets are rejected, overlooking supported nested mappings such as a read-only directory with a writable subdirectory.
1 open issue
1 resolved since last review
Review effort: Balanced
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10c-guest-design
branch
from
November 12, 2026 17:11
0d9e1f2 to
c55780a
Compare
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-11b-process-modules
branch
from
November 12, 2026 17:19
308b255 to
9830b1e
Compare
Base automatically changed from
agents/slim-sl6-11b-process-modules
to
feature/nvx-refactor
November 12, 2026 17:43
Contributor
This pull request changes no existing testRelocated unchanged: 0; added: 0. Compared the merge base |
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10c-guest-design
branch
from
November 12, 2026 17:52
c55780a to
a529cf4
Compare
Design 4 still described the execution machinery that SL7.8b, SL7.8c, SL6.11a and SL6.11b deleted: the old layered init's per-execution mount, PID and UTS namespaces, its sibling guest-agent and workload cgroups with their memory protection, limits and charging of a RAM upper, its barrier and its containment-failed category, the one-shot sandbox's boot-time shares, and the managed agent's sandbox mode, which unmounted its mappings at stop. It also said that the layered root assembles only EROFS images for trusted lowers and creates no accounts, which nvx-init no longer limits it to. Revise the overview and 4.1 through 4.4 in place around nvx-init's final model: - one root, which nvx-init assembles from either image format over either upper and either overlay mode, and into which it switches once, with a VM-wide hostname, machine ID and resolver file; - credentials per execution: each child takes the VM's one workload identity, which the boot or a restore's activation fixes and the guest resolves, or creates, once; - one process group per execution, which its end, cancellation, timeout and a session reset kill; - the helpers, which the early boot or a restore starts before the switch, and which run with PID 1's priority, ahead of the executions, whose children reset it; - no cgroups and no per-execution resource limits: the RAM upper's cap is the one limit within the VM; - the space as NVX's internal reference code that nvx-init implements, and the public MappingTable, whose ordered mappings the reference space's mapper binds. The control interface keeps the version 2 text of SL4.4c and SL4.4d, now the protocol's only version, and adds to it: the operations point to the guidelines for nvx-init's capture request and activation; CANCEL names the process group that it kills, and the empty-source refusal the MappingTable that makes it; the busy rule names what a running execution takes and what the guest refuses with BUSY, which carries no status or category, so the error categories drop busy; a shutdown's acknowledgement follows the cancelled execution's exit report, and a reset kills the execution's process group and reports none of its output; and the negotiation section says that nvx-init and the managed agent serve the session through one dispatcher. The procedures stay in the guest-agent guidelines. Docs only: 0 core lines, no counted files. Part of #1130 (SL6.10c). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10c-guest-design
branch
from
November 13, 2026 00:39
a529cf4 to
c6dc019
Compare
Pedro Henrique Penna (ppenna)
marked this pull request as ready for review
November 13, 2026 00:39
Pedro Henrique Penna (ppenna)
merged commit Nov 13, 2026
83c6231
into
feature/nvx-refactor
83 checks passed
Pedro Henrique Penna (ppenna)
deleted the
agents/slim-sl6-10c-guest-design
branch
November 13, 2026 00:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Part of #1130 (SL6.10c, "The default guest's design matches what it does"). Parent #1090, umbrella #1076.
What and why
Design 4 still described execution machinery that earlier slices deleted: the old layered init's (
nvx-init-agent) per-execution mount, PID and UTS namespaces; its sibling guest-agent and workload cgroups, with their memory protection, limits, placement barrier and charging of a RAM upper; itscontainment-failedcategory; the one-shot sandbox's boot-time shares (SL7.8c's Alpine helpers); and the managed agent's sandbox mode (SL7.8b), which unmounted its mappings at stop. It also said that the layered root assembles only EROFS images for trusted lowers and creates no accounts, which no longer holds for nvx-init. This PR does SL6.10c's Scope and no more: it revises the existing overview and 4.1–4.4 in place around nvx-init's final behavior, as the code onfeature/nvx-refactorhas it./initbefore the managed agent or the one-shot workload), and taken by each execution's child, with no groups, no capabilities andno_new_privs.CANCELnames the group./dev/shm; an execution's timeout ends it rather than limit its resources.MappingTable(4, 4.1.1, 4.1.3, 4.2, 4.4.1): the space is NVX's internal reference code that nvx-init implements, crate-private since SL6.13b; the publicMappingTablekeeps the account of the host's table, refuses an empty source, and hands its ordered mappings to the reference space's mapper. The text names no item that SL6.11d deleted./init's boot binds and nvx-init's boot-named shares replace the one-shot sandbox's; the CLI'srunandsandboxcommands refuse overlapping and reserved targets, as the host chain left them.FEATURES, no output cap, the streamed standard input, the vectors paragraph, the Shutdown row) and adds to it: the operations point to the guidelines for nvx-init's capture and activation; the error paragraph addsBUSY, which carries no status or category, so Table 4.4 dropsbusyandcontainment-failed; 4.4.3 says what a running execution takes (its standard input, a cancellation, a shutdown) and what getsBUSY, that the cancelled execution's exit report precedes a shutdown's acknowledgement, and what a reset does; 4.4.2 says that nvx-init and the managed agent serve the session through one dispatcher.Procedures stay in
doc/guest-agent-guidelines.md, which these pages link. The headings whose anchors other documents use (4.1.1–4.1.3, 4.4.1, 4.4.2) are unchanged.Not in this PR, per #1130: new design pages; host, device or lifecycle chapters (SL6.10b); the library guide (SL6.10a), build (SL6.10e) and CI (SL6.10f) docs; making the space public; per-execution roots, cgroups, namespaces or limits; a second hostname or an alternate helper lifecycle; the init contract and its examples (SL7.9).
Rebase. At its merge turn, rebased with
git -c rerere.enabled=false rebase --onto origin/feature/nvx-refactor c1198c70356ontoe6c65b95f63, which holds SL4.4c and SL4.4d (NVXC v2 only), SL6.11d, SL6.13b, the host chain, SL6.10e and SL6.10f. 4.3 and 4.4 conflicted with SL4.4c's and SL4.4d's text; the resolution keeps their v2-only facts and this PR's structure.rebase_check verifypassed.Size. 0 core lines and 0 counted files (estimate 0): five design pages.
BOOT_CONTRACT_VERSION,CONTROL_CONTRACT_REVISIONand the public API are unchanged.Validation
scripts/local_gates.pyis not onfeature/nvx-refactor's tip, so these are the documentation steps of check-quality and the whole of validate-nvx, from the tip's action definitions, run on Windows atc6dc0192c99:python scripts/check_markdown_links.pypython scripts/check_test_layout.pypython scripts/check_test_changes.py --base origin/feature/nvx-refactor(e6c65b95f63)python -m compileall -q scripts, the unittest list (test_markdown_links.pyandtest_module_diagrams.pyincluded),test_adversarial.py,test_hosts.py, thenvx.py ... --helpcalls--helpcallguest::{root, view, mappings, activation},sys::spawn, the shell/init,nvx-hostmount, the v2 protocol and the CLI's share checks. The first review's three findings (the RAM upper's lifetime, the export's children, share tokens per bind) and Copilot's two (the RAM cap does not cover/dev/shm; the overlap refusal is the CLI commands') are folded, and so is the second review's (output that the send queue held goes out before a reset's acknowledgement, so none reaches the new session). The third review, atc6dc0192c99, found no issuesDocumentation only, so no build, host or microVM run.