Repository navigation
doc: tell users of alpha.7 what the release breaks (SL6.10h) - #1559
Draft
Pedro Henrique Penna (ppenna) wants to merge 1 commit into
Draft
Pedro Henrique Penna (ppenna) wants to merge 1 commit into
Pedro Henrique Penna (ppenna) wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The migration guide omits the requirement to hold the Linux snapshot lock through restore-view cleanup, which can interfere with concurrent restores’ file checks.
1 open issue
What changed in this PR
Adds a migration guide for alpha.7 users moving to NVX’s breaking library refactor, explaining API replacements and responsibilities transferred to callers.
Changes:
- Provides an upgrade checklist, version-pinning examples, and runtime artifact guidance.
- Maps changed APIs and features to replacements or caller-owned behavior.
- Documents incompatible state, fresh-state requirements, and guest and CLI changes.
| File | Description |
|---|---|
doc/migrate-from-alpha.7.md |
Adds the alpha.7 migration guide, linking to detailed library, runtime, and distribution documentation. |
Review effort: Balanced
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10h-migration-guide
branch
from
November 12, 2026 23:50
541c3cd to
db5edc4
Compare
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10h-migration-guide
branch
from
November 13, 2026 00:03
db5edc4 to
e787da2
Compare
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The migration guide incorrectly describes moving the whole VM directory; it should specify moving only key.bin, snapshot.json, and openvmm/ into a separate private snapshot directory to avoid outputs that Snapshot::open rejects.
1 open issue
Review effort: Balanced
The release of the nvx-rs slimming workstream is not backward compatible with nvx 0.1.0-alpha.7, which crates.io published from e42b179, and nothing told its users how to cross it. doc/migrate-from-alpha.7.md is that one guide. It gives the upgrade's steps; the exact Cargo pin of the release and the guest tools' install from the crate, with the runtime that the crate no longer bundles; the feature changes, among them bundled's removal, and the hidden main of each of the twelve binaries; a crosswalk from each alpha.7 item that the release removes, hides, makes private or changes, to its replacement, the caller's responsibility, or its removal; what the caller now owns; the state that the release refuses, from the stores, templates and activation records to NVXC v1 and the CLI's sandbox configurations; the guests' boot tokens, nvx-init and kernel; and the CLI's breaks. It links the final library, CLI, build and design documents rather than repeat them. The crosswalk comes from the public API of alpha.7's published crate, listed with scripts/public_api.py's lister at every feature but bundled, against nvx-rs/public-api/ at f5cc2aa, from the signatures of the items that both keep, and from the group issues of #1076's phases. The release is 0.2.0-alpha.1, the first of a new series, as #1132 decided, and the guide pins it exactly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10h-migration-guide
branch
from
November 13, 2026 00:09
e787da2 to
0c38d1c
Compare
This branch has not been deployed
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 #1131 (SL6.10h, "Users know what the release breaks"). Parent #1090, umbrella #1076.
What and why
The release of #1076 is not backward compatible with
nvx0.1.0-alpha.7, which crates.io published frome42b1795, and nothing told its users how to cross it. This PR adds onlydoc/migrate-from-alpha.7.md, one bounded, task-oriented guide, in SL6.10h's Scope:guestprofile, asdistribution.md#the-guest-toolsdocuments it; and, sincebundledis gone, how a program pins the runtime that the crate no longer bundles: a release whoseSOURCE-MANIFEST.jsonpassescontract::manifest_mismatches, labelled from itsSHA256SUMS.bundledremoved with its build script,linksand variables;cliandtestingadd only a hiddenmain;serdeaddsnet::Ipv4Cidr;guestgainsnvx-init), and the hiddenmainof each of the 12 binaries, asnvx-rs/public-api/linux.txtlists them.library.md#what-the-caller-owns.export_pins) and runtime records are refused, never converted; fresh state, linkingrun.md#upgradesand design 1.5.2 and 1.5.4. It also says how to remove a restored sandbox of an earlier build, whichdeprovisionrefuses (host: keep the export's pins in the CLI and paths only in ExportPlan (SL6.5b) #1549)./init's tokens (nvx_identity=andnvx_mode=;nvx_lifecycle=ignored; OpenVMM's identity tokens fail closed withNVX-WORKLOAD-ERROR, status 125, unlessnvx_identity=agrees: SL6.3, host: delete the old config types and launch paths (SL6.3) #1530, and its design note on nvx-rs slimming 4.2.3: the old configs, the old launch code andbundledare gone #1122), nvx-init and the removednvx-init-agent, plain-process executions, and the guest kernel (CONFIG_MAGIC_SYSRQ, SL6.11b, guest: delete the process modules and cgroups (SL6.11b) #1542, and the feature inventory).It links the final library, CLI, build, distribution and design documents rather than repeat them.
Sources. The crosswalk comes from facts, not memory:
nvx-0.1.0-alpha.7, whose.cargo_vcs_info.jsonrecordse42b17959360c1738a99cb3036137dfbf3d5bf96, listed withscripts/public_api.py's lister from its rustdoc JSON (Rust 1.95.0,--features cli,guest,host,serde,testing;bundledleft out, since its build script downloads a release, and its one item,Artifacts::bundled, read from the source), diffed withnvx-rs/public-api/atf5cc2aacfbf: 485 top-level items removed on Linux, 28 members removed from kept containers, and 14 signatures changed among the items that both keep (Process::wait,Process::open,report::read,HostConnection's methods,Activation::new,RootLayout::tokens, and the activation record's variants), each of which a row names.Cargo.toml.origand the finalnvx-rs/Cargo.toml; the alpha.7 and final sources for every disposition (removed or private) and for the CLI's formats,/init's tokens, the kernel configuration and the error codes.nvxa library of mechanisms and value types #1076's phases 1 to 5 and their checkpoint and closing comments, among them nvx-rs slimming, phase 1.2: the guest tools and the managed agent leave the library #1078, nvx-rs slimming 1.1.2: one Cargo workspace, and the new crates' empty shells #1092–nvx-rs slimming 1.2.2: the managed agent lives in nvx-init #1096, nvx-rs slimming 3.1.1: the old CLI moves into nvx-cli unchanged #1106 and nvx-rs slimming 3.1.2: theclifeature is gone #1107, which the one-crate design superseded, so that the guide lists none of their crates.The release version is
0.2.0-alpha.1, the first of a new series, as #1132 decided (#1132 (comment)). The guide pins it exactly:nvx = "=0.2.0-alpha.1", anddefault-features = false, features = ["guest"]with the sameversionfor a guest init, since a caret requirement such asnvx = "0.2.0-alpha.1"also accepts every later pre-release of0.2.0, whichcargo updatetakes; andcargo install nvx --version 0.2.0-alpha.1, whichcargo installreads as exactly that version. It also says that no requirement of alpha.7's selects the new series. Checked with Cargo:nvx = "0.1.0-alpha.7"resolves to0.1.0-alpha.16andnvx = "=0.1.0-alpha.7"to0.1.0-alpha.7, andcargo install nvx --version 0.2.0-alpha.1looks for=0.2.0-alpha.1(which crates.io doesn't hold yet).Coordination. The guide links documents and anchors that the other docs slices add, on their branches as of this PR:
doc/library.md(SL6.10a, #1555), design 1.5.2 and 1.5.4 (SL6.10b, #1553),run.md#upgrades(SL6.10d, #1556), anddistribution.md#the-guest-toolsandbuild.md#release-packages(SL6.10e, #1546). So the link check fails on this branch alone until they merge, and passes with their documents (Validation). This PR merges after them, and rechecks every link then.Size
Only Markdown: one new file,
doc/migrate-from-alpha.7.md, 364 lines.Old tests of the area
None changes: the PR changes no test, CI step or doc test, and the case matrix keeps every row.
Test changes
python scripts\check_test_changes.py --base origin/feature/nvx-refactor:0 change(s) to existing tests, so notests-modified.Validation
local_gates.py --files doc/migrate-from-alpha.7.md(fromdev, since this branch has no copy) selectstest-changes,markdown-links,test-layoutandnvx-cli(validate-nvx). I ran them from this branch's definitions on Windows:test-changespython scripts\check_test_changes.py --base origin/feature/nvx-refactortest-layoutpython scripts\check_test_layout.pymarkdown-linkspython scripts\check_markdown_links.py, on this branch alonemarkdown-linkspython scripts\check_markdown_links.py --root <scratch worktree>: this commit with the documents of #1555, #1553, #1550, #1556, #1546 and #1540 at their current headsnvx-clivalidate-nvx(compileall, theunittestlist,test_adversarial.py,test_hosts.py, andnvx.py ... --help), without itspip install--helpA code-review subagent checked every crosswalk row against the alpha.7 and final API listings, the diffs and both sources, and every other claim against the code and the linked documents. It found no omission. Its findings, folded into the commit: items that the release keeps private were marked removed, and the reverse (now "No longer public", defined once);
/initstops a mismatched identity before it starts a workload or a guest agent, not before anything, since it has runnvx-time boot; NVX's executions model is nvx-init's, not every init's; and the programs are private but for their hidden entry points. Its remark thatdoc/usage.mdandnvx-rs/README.mdon the SL6.10a and SL6.10d branches still list the error codes that SL6.8c (#1552) deleted concerns those branches' rebases, not this guide, which follows the code.Copilot's review asked the Locking row of What the caller owns to keep the snapshot's lock around the removal of a restore's
openvmm/view, and through a verified restore-ready event or exit; fixed in db5edc4. Its review of e787da2 asked the capture row to say thatfinish_capturewriteskey.binandsnapshot.jsonbesideopenvmm/and returns only the checked key, and that the caller moves those three entries, not aCapturedSnapshot; fixed in 0c38d1c, and its review of that head has no open issue.No VM or hypervisor gate applies to a documentation-only change; CI runs the rest once this PR is Ready.