Repository navigation
doc: describe the final gates, test owners, packaging and publishing (SL6.10f) - #1540
Merged
Pedro Henrique Penna (ppenna) merged 3 commits intoNov 12, 2026
Conversation
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues remain for this documentation-only update to contributor guidance and CI documentation.
No open issues 🎉
What changed in this PR
This documentation-only PR aligns contributor guidance and CI documentation with NVX’s one-package design and the test ownership established after removing the runtime adapter. It changes no automation or tests.
Changes:
- Documents missing quality gates, public-API check commands, and current test ownership.
- Explains reusable release packaging, publication rules, and performance-history persistence.
- Updates repository instructions and CI troubleshooting guidance for merge-group cancellations and OpenVMM CI results.
| File | Description |
|---|---|
doc/contribute.md |
Updates quality gates, test ownership, and OpenVMM pin-validation guidance. |
doc/ci.md |
Documents release packaging and clarifies publishing, performance history, and Rust test coverage. |
.github/skills/nvx-ci-investigation/SKILL.md |
Clarifies cancellation triage and reproduction of Rust and OpenVMM CI failures. |
.github/copilot-instructions.md |
Updates API snapshot, test-layout, VM scenario, and single-crate publishing guidance. |
Review effort: Balanced
The CI and contribution docs and the repository instructions left gates and tests of the final package without an owner or a command, and kept a few of the tests that SL5.1c, SL4.4c and #1121 changed or deleted. The quality gates of doc/contribute.md now list every check of check-quality: the kernel configuration check, which had no row, and the Azure Windows setup scripts, whose PowerShell syntax it checks beside setup-windows-whp.ps1. The NVX CLI row names the tests of the skills' scripts that validate-nvx runs, and the public API's snapshots come with the command that checks them as well as the one that rewrites them. Test ownership names the openvmm-ci job and check-openvmm-ci for OpenVMM's tests, the acceptance on real VMs that the guest and sandbox jobs run, its smoke tests and the CLI's twelve cold cells, with the case matrix, and the security checklist among the crate's integration tests, which the nvx-rs job runs as check-nvx-rs defines. doc/ci.md's Rust crates section lists the tests that the nvx-rs job runs, the process tests of nvx::host::process, now unit tests, and the NVXS session's integration test among them, and the local command of the public API check. The copies of OpenVMM's vectors are read by the tests of nvx::protocol::nvxs and nvx::host::config rather than template tests, which left with the template store; the public sandbox scenarios check that exec streams output past the 1 MiB that NVXC version 1 forwarded, which they no longer bound since SL4.4c; and the extended Ubuntu set on KVM no longer names the blockless snapshot that SL5.1c moved to the public sandbox scenarios. The repository instructions name the public API check and its snapshot command, the vm-lifecycle scenario among those that run an nvx-rs test with Cargo, and every directory of Python unit tests, as Test layout does. Part of #1131 (SL6.10f). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
doc/ci.md named the package jobs but not the reusable workflow that they call, said that successful dev pushes append their p50 values under data/, which only a full run of dev does, that a full run publishes the crate once every job passed, though Persist performance baselines runs apart from the check that it waits for, and called OpenVMM a private submodule. doc/contribute.md said that a pin promotion runs both OpenVMM suites, which CI no longer runs, and both documents that OpenVMM's gates run on each pull request into the pinned branch and each push to it, though its PR workflow skips drafts and its CI workflow ignores pushes that change only Guide/ and petri/logview/. A Release packages section now describes package-platform.yml: the runner, platform and artifacts that each package job passes it, what it checks out, verifies and downloads, how its package-release action packages and archives the release with package --binary-only and archive-release, and that only a dev push uploads the archives that Publish development release publishes. A dev push records its p50 values for a full run of dev to append, crates.io releases says that a dev push publishes its development release instead of the crate, and that nvx is the only crate that NVX publishes, its programs being binaries of that package, as the repository instructions now say too. A pin promotion's pull request runs the OpenVMM CI check of the new pin, which waits up to 300 minutes for OpenVMM's CI, and OpenVMM's gates run on the pull requests that are ready for review and on the pushes that their workflows take. Part of #1131 (SL6.10f). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
nvx-ci-investigation classified the cancellations of pull-request and dev push runs but not those of merge groups, whose runs the queue's Cancel superseded merge group runs job cancels once their groups are replaced. Its reproduction steps named check-quality and validate-nvx but not check-nvx-rs, whose public API check fails a change that its snapshots don't list, and said nothing of the openvmm-ci job, which fails when OpenVMM's own CI has not passed a job that NVX requires for the pin. The skill now checks a cancelled merge group's queue outcome before it treats the run as a failure, reproduces nvx-rs failures with check-nvx-rs and names the command that updates the public API's snapshots, and classifies a failed openvmm-ci job as OpenVMM's CI result, which check-openvmm-ci checks again, linking doc/ci.md for each. Part of #1131 (SL6.10f). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Pedro Henrique Penna (ppenna)
force-pushed
the
agents/slim-sl6-10f-ci-docs
branch
from
November 12, 2026 23:08
bbb86bb to
b73e5d9
Compare
Pedro Henrique Penna (ppenna)
marked this pull request as ready for review
November 12, 2026 23:09
Pedro Henrique Penna (ppenna)
merged commit Nov 12, 2026
12a90c4
into
feature/nvx-refactor
80 of 83 checks passed
Pedro Henrique Penna (ppenna)
deleted the
agents/slim-sl6-10f-ci-docs
branch
November 12, 2026 23:39
This was referenced Nov 12, 2026
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.10f, "CI and the repository's automation give the right workflow"). Parent #1090, umbrella #1076.
What and why
The CI and contribution docs, the repository instructions and the one affected operational skill now give the final package's gates and test owners with their commands, the reusable packaging workflow, and what each kind of run publishes, as the workflows, actions and scripts of
feature/nvx-refactoratf5cc2aacfbfdefine them, after every code slice of #1076. SL5.2 (#1499) had already taken the runtime adapter out of them; this PR fills the gaps that remained and fixes the claims that later changes left stale. It changes no automation.Gates and their commands (
doc/contribute.md's Quality gates,doc/ci.md's Rust crates, the instructions):nvx.py check-kernel-config, whichcheck-qualityruns and the table didn't list;scripts/setup/azure/windows/, besidesetup-windows-whp.ps1;validate-nvxruns;python3 scripts/public_api.py, beside the snapshot update,--update, in both docs, the repository instructions andnvx-ci-investigation.Test ownership (
doc/contribute.md's Test ownership,doc/ci.md, the instructions):openvmm-cijob andcheck-openvmm-ci, with OpenVMM's gates running on the pull requests that are ready for review and on the pushes that its CI workflow takes, not "each pull request and each push";vm-lifecycle,snapshot-coreandsnapshot-tiers, and the CLI's twelve cold cells, which the case matrix details;nvx-rsjob runs, in place of "fake-OpenVMM instance tests": the unit tests, the process tests ofnvx::host::processamong them since they lefttests/process.rs, and the integration tests, the CLI's scenario tests, the fake OpenVMM's behavior, the guest binaries, the NVXS session, the security checklist, which now checks a VM's directory and outputs and a snapshot's directory, and the host modules' layering;nvx::protocol::nvxsandnvx::host::config, not by "template tests", which left with the template store (nvx-rs slimming 4.2.2: the old clone path, template store and sandbox store are gone #1121); the public sandbox scenarios check thatexecstreams output past the 1 MiB that NVXC version 1 forwarded, not "bounded output" (SL4.4c); the extended Ubuntu set on KVM no longer names the blockless snapshot (snapshot-core) that SL5.1c moved to the public sandbox scenarios; the instructions namevm-lifecycleamong the scenarios that run annvx-rstest with Cargo, and every directory of Python unit tests (scripts/,.github/specula/tests/and.github/skills/*/scripts/), as Test layout does.OpenVMM CI, the merge queue, packaging and publishing:
doc/ci.mddescribespackage-platform.yml, the reusable workflow that the package jobs call, and itspackage-releaseaction: the runner labels and inputs that each job passes, the checkouts, the pin check and the downloads,package --binary-onlyandarchive-release, and that only adevpush uploads therelease-<platform>archives thatPublish development releasepublishes, while pull requests, merge groups, full runs and pushes tofeature/nvx-refactoronly prove that the packages build. The job graph links it;devpushes record their p50 values, which a full run ofdevthen appends underdata/;doc/ci.mdstill said that the pushes append them;Persist performance baselines, which runs apart, has passed; that adevpush publishes its development release instead of the crate; and thatnvxis the only crate that NVX publishes, its programs being binaries of that package. The instructions say so too;nvx-ci-investigationchecks a cancelled merge group's queue outcome before it treats the run as a failure, reproducesnvx-rsfailures withcheck-nvx-rs, and classifies a failedopenvmm-cijob as OpenVMM's CI result, whichcheck-openvmm-cichecks again.Checked and left as they were: the Superseded merge groups, Queue settings, Feature branch pushes, Change classification and Development release publication sections match
ci.yml,merge_queue.py,ci.pyandpublish_development_release.py. Runners appear only as the workflows name them (ubuntu-latest,windows-latest, andubuntu-24.04for the module diagrams' drawing), with no Ubuntu release forubuntu-latest. No instruction, skill or custom agent names the runtime adapter,test-runtime-adapter,nvx-microvm-adapter-whpor the adapter's configurations incheck-nvx-rs. The other skills' gate and publishing instructions (nvx-openvmm-promote, which SL5.2 updated,nvx-openvmm-rebase,create-pr,rebase-and-validate,review-changes,address-pr-comments,nvx-run,nvx-debug,nvx-benchmark,nvx-host-connectandcommit-message) still hold, so they don't change. No edit touchesdoc/setup.md,doc/project-structure.mdorcheck-quality, which SL7.8c changed.Size
Only Markdown changes:
doc/ci.md,doc/contribute.md,.github/copilot-instructions.mdand.github/skills/nvx-ci-investigation/SKILL.md.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 --fileswith the four files (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, on this head (b73e5d9f, onfeature/nvx-refactorf5cc2aacfbf):python scripts\nvx.py verifypython scripts\check_markdown_links.pypython scripts\check_test_layout.pypython scripts\check_test_changes.py --base origin/feature/nvx-refactorcheck_matrix.py <worktree> 99d2022085fpython -m unittest scripts/test_markdown_links.py scripts/test_tool_versions.py scripts/test_nightly_ci.pyvalidate-nvx's Windows commands:compileall, its unittest list,test_adversarial.py,test_hosts.pyandnvx.py's--helpcheckspython scripts\public_api.py, the check that the docs now namepublic_api.py --help(--update),nvx.py check-kernel-config,check-openvmm-ci(--revision,--wait-minutes),cancel-superseded-merge-groups,package(--binary-only),archive-release,materialize-kernel-provenance-inputs,verifyandtest-microvm(--scenario vm-lifecycle,snapshot-core,snapshot-tiers,managed-lifecycle)--helpCode-review subagents checked every changed claim against the workflows, actions and scripts, first at #1534's head and again at
f5cc2aacfbf. Their findings are fixed: the instructions namedscripts/alone for Python unit tests, the crate's publication doesn't wait forPersist performance baselines, and OpenVMM's gates skip draft pull requests and pushes that change onlyGuide/andpetri/logview/.Not run: no Linux, host or microVM check, since only documentation changes; CI runs only its GitHub-hosted jobs for it.