Repository navigation
guest: make activation process-free and fence-free - #1346
Merged
Pedro Henrique Penna (ppenna) merged 2 commits intoNov 9, 2026
Merged
Pedro Henrique Penna (ppenna) merged 2 commits into
Pedro Henrique Penna (ppenna) merged 2 commits into
Conversation
Contributor
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are recorded for the activation and ingress ownership refactor.
No open issues 🎉
What changed in this PR
Implements SL7.3 of #1105 by separating guest activation from workload admission and ingress process ownership, building on the VM-wide view and activation-record prerequisites.
Changes:
- Makes
guest::activationcanonical while retainingguest::cloneas a compatibility alias, and removes Activation’s admission fence. - Delegates view application and bind ownership to Root, preserves resolver error classification, and returns publication, gateway, and machine-ID information without managing processes.
- Moves announcer lifecycle management into the temporary runtime adapter and updates tests, documentation, and the Linux API snapshot.
| File | Description |
|---|---|
tests/runtime-adapter/tests/guest_session.rs |
Updates fixtures and failure-order tests for caller-owned ingress. |
tests/runtime-adapter/src/worker/capture.rs |
Retains the capture fence separately from Activation. |
tests/runtime-adapter/src/worker/activation/tests.rs |
Updates fence-free setup and failure classification tests. |
tests/runtime-adapter/src/worker/activation.rs |
Uses fence-free Activation and classifies caller startup errors. |
tests/runtime-adapter/src/worker.rs |
Owns announcer startup, supervision, and teardown. |
tests/runtime-adapter/README.md |
Documents the revised activation and ingress ownership. |
scripts/test-layout-allowlist.json |
Removes the obsolete application test-hook allowance. |
nvx-rs/src/guest/view.rs |
Distinguishes resolver write and bind failures during view application. |
nvx-rs/src/guest/root/tests/view.rs |
Tests bind ownership transfer and resolver failure causes. |
nvx-rs/src/guest/mod.rs |
Exports canonical activation and the clone compatibility alias. |
nvx-rs/src/guest/mappings/mapper/tests.rs |
Removes an obsolete teardown-error test helper. |
nvx-rs/src/guest/ingress/mod.rs |
Updates comments to describe caller-owned announcer startup. |
nvx-rs/src/guest/ingress/announcer.rs |
Updates the ownership comment; behavior is unchanged. |
nvx-rs/src/guest/clone/activation/apply.rs |
Removes the former process-owning application implementation. |
nvx-rs/src/guest/activation/state/tests.rs |
Retains state-machine coverage without fence assertions. |
nvx-rs/src/guest/activation/state/apply/tests.rs |
Tests process-free application, cleanup, and returned settings. |
nvx-rs/src/guest/activation/state/apply.rs |
Implements application with Root-owned view binds and no announcer. |
nvx-rs/src/guest/activation/state.rs |
Removes fence storage, parameters, and opening operations. |
nvx-rs/src/guest/activation/repair/tests.rs |
Updates the isolated test filter for the canonical module path. |
nvx-rs/src/guest/activation/mounts/tests.rs |
Relocates mount-table tests under activation. |
nvx-rs/src/guest/activation/mounts.rs |
Relocates existing capture mount checks under activation. |
nvx-rs/src/guest/activation.rs |
Reorganizes module exports and documents revised ownership. |
nvx-rs/README.md |
Documents canonical activation and process-free application. |
nvx-rs/public-api/linux.txt |
Records the canonical module and revised Applied surface. |
Review effort: Balanced
Enrique Saurez (esaurez)
force-pushed
the
esaurez/slim-2.4.2-sl7.3-20261107
branch
from
November 9, 2026 02:40
d4bcd5d to
f0ac213
Compare
Enrique Saurez (esaurez)
changed the base branch from
esaurez/slim-foundation-2.4.2-20261107
to
esaurez/slim-2.2.1-sl2.9-rebase-20261108
November 9, 2026 02:40
Enrique Saurez (esaurez)
marked this pull request as ready for review
November 9, 2026 03:24
Enrique Saurez (esaurez)
force-pushed
the
esaurez/slim-2.2.1-sl2.9-rebase-20261108
branch
from
November 9, 2026 04:43
0f0de71 to
0cf1316
Compare
Enrique Saurez (esaurez)
force-pushed
the
esaurez/slim-2.4.2-sl7.3-20261107
branch
from
November 9, 2026 04:43
f0ac213 to
7fe700f
Compare
Base automatically changed from
esaurez/slim-2.2.1-sl2.9-rebase-20261108
to
esaurez/slim-2.4.1-sl7.2-20261106
November 9, 2026 05:18
Base automatically changed from
esaurez/slim-2.4.1-sl7.2-20261106
to
feature/nvx-refactor
November 9, 2026 05:18
Move the canonical guest module to activation while retaining its clone alias. Apply the VM-wide view through Root, return publication and gateway settings, and leave ingress and workload admission to the caller. Preserve resolver failure classification and the temporary adapter's acknowledged ingress startup and teardown order. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e6a8a56f-e6cb-42f4-bb7d-de40d9c42e08
Check exact refusal effects before view application. Correct the remaining caller and capture-fence descriptions, distinguish the fake start error from real caller cleanup, and keep its operation trace scoped to the tested architecture. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: e6a8a56f-e6cb-42f4-bb7d-de40d9c42e08
Enrique Saurez (esaurez)
force-pushed
the
esaurez/slim-2.4.2-sl7.3-20261107
branch
from
November 9, 2026 06:20
7fe700f to
2b5b44f
Compare
Enrique Saurez (esaurez)
marked this pull request as draft
November 9, 2026 17:04
Enrique Saurez (esaurez)
marked this pull request as ready for review
November 9, 2026 17:04
Pedro Henrique Penna (ppenna)
merged commit Nov 9, 2026
2b5b44f
into
feature/nvx-refactor
110 of 114 checks passed
Pedro Henrique Penna (ppenna)
deleted the
esaurez/slim-2.4.2-sl7.3-20261107
branch
November 9, 2026 18:35
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 #1105.
Current rebase
This updates the existing SL7.3 pull request onto SL2.9, #1403, at
0f0de71cfb6be9de47e2e321550459700666a7d9. Its two original own commits are replayed in order as3f81abfe044c5d823797660081cd73be411551cfandf0ac21319a624034745de2c47e28ab05e0213eff. The current diff contains only this activation change, with no prerequisite replay or merge commit.Activation remains process-free and fence-free,
guest::cloneremains the temporary alias, Root owns the view binds, and the temporary test adapter retains acknowledged caller-owned ingress startup and stop-before-teardown ordering. Resolver failure classification is unchanged.The complete original and rebased diffs both measure 483 core lines in five counted files, with 27 rename-aware entries and 35 physical paths. The rewritten application still counts in full at 426 core lines; no rename override or ancestor discount is used. The retained limit is 500 core lines and five counted files.
The only manual resolution was a README adjacency conflict: retain the new parent's managed-agent wording while applying the original caller-owned ingress description. Every actual added/deleted line, path, rename and mode in the complete own patch and each of its two commits is unchanged after excluding only blob-index and hunk-position metadata. There are zero new core corrections and no new API, behavior or test corrections. Ordinary Git cleanup removed only a trailing CR/blank line from the first original commit message; its content, trailers and original archived object are preserved.
The current official inventory still reports 140 changed existing test assets, 190 unchanged relocated assets and 16 additions. All original test/API/rename disclosures below are retained; this rebase adds or weakens no test assertion. The OpenVMM pin remains
14dc4116ec7e57567633c4b7b07892aca3a58522.Current-head validation
Exact target ancestry, clean worktree/submodule, complete two-commit patch equivalence, whole-own measurement and the official current test-change inventory are verified. This mechanical rebase did not run a new local build or runtime qualification, and the original local results below are historical, not proof of the new tree.
CI run 42552338489 completed SUCCESS on exact
f0ac21319a624034745de2c47e28ab05e0213eff, attempt 1: 35 executed jobs passed; eight inapplicable jobs were skipped. The skips are merge-group cancellation, PR-only artifact-reuse rehearsal and performance-regression gating, and dev-only performance-history/development-release/crate-package/publication work. They remain skipped, not counted as execution or passes.Linux crate/guest checks passed. The current runtime-adapter scenarios actually ran and passed on KVM, MSHV, and WHP. The Linux guest-only commands and current-head checkout are retained in this run's raw logs.
Fresh Copilot review 5821111960 is COMMENTED, with No open issues, zero threads, and complete review/comment/thread pagination. Its overview remains Needs a closer look, requesting current Linux guest/runtime qualification; the exact current-head CI above now supplies that evidence. This is not relabelled an approval recommendation or formal approval. The official test-inventory comment matches the current 140-asset report exactly. No code finding required a change or thread resolution.
The existing Draft/Ready state is preserved. No parent, native pin, merge, additional CI dispatch or review round is changed by this qualification update.
Retained original source qualification and complete test disclosures (historical)
The following original description, dependency identities, local runs, limits, failures and test inventory are preserved for
d4bcd5d5fb64bcc1639d95a715a246aa81293641on its original base. They do not certify the rebased candidate above.Dependencies
This is SL7.3 only. It depends on SL7.2, #1339 and SL2.5b, #1311. Both prerequisite PRs are published Drafts; they need not merge before this Draft is opened.
The dependency-only base,
esaurez/slim-foundation-2.4.2-20261107at62338794dfb48ea1ccc48db31335a694eaa67458, combines their exact heads in that order:1ef1618e5c6608f3f35cdca15f2066b565823cccandfc44f2bf63044662a1d9ea794aaaa15d8da47e32. Its only conflict resolution removes obsolete test imports. The PR diff contains only SL7.3, not either prerequisite's implementation. Dependency updates and eventual retargeting remain separate.Changes
Make
guest::activationcanonical while retaining theguest::clonecompatibility alias. Remove only Activation's admission fence; the capture caller's fence remains unchanged. Application starts and stops no process: it applies the record's VM-wide view and DNS through Root, reports publication and gateway, and returns(Root, MachineId)frominto_parts. Root owns and tears down every view bind, including partial failures. Resolver write and bind failures retain their network classification and original causes.Remove
Applied::{announcer, announcer_mut},NetworkError::Announcer, and the application'sannounce/stopseam. Update the public-API snapshots for the canonical module, fence-free Activation and reduced Applied surface.The temporary test adapter, not library application, starts the existing startup-acknowledged announcer after successful application when listeners are published. It preserves fatal/pidfd polling and startup cleanup, and stops the helper before export/root teardown. An announcer-stop failure remains an error. This is temporary caller-owned compatibility, not a replacement library spawner, init loop or capture/repair redesign.
Scope
Official rename-aware measurement: 483 core lines in five counted files, within the 500/5 limit. The rewritten application is charged in full as delete-plus-add: 426 core lines. No similarity override or hidden foundation discount is used. There are 27 rename-aware entries and 35 physical paths.
The counted sites are
guest/mod.rs,guest/activation.rs,guest/activation/state.rs,guest/activation/state/apply.rsandguest/view.rs. Other production subtree moves preserve their bytes. The two ingress implementation paths change ownership comments only. Test modules, the temporary adapter, API snapshots, README changes and allowlist changes are disclosed separately. No kernel/VMM producer, protocol version or unrelated caller API changes.Tests
The official inventory reports 140 changed existing test assets, 190 unchanged relocated assets and 16 additions. Additions include renamed replacement tests, nine test items and seven helper/import items, not sixteen new scenarios. The full named inventory below includes helpers, imports and test seams rather than hiding them as pure moves.
Application fixtures now record assembly, optional export and delegated view effects without a process or fence operation. Existing exact-record coverage also shows that unrelated export shape, mapping count, resources and restore settings change no application input. Activation state tests retain their decode, retry, ordering, deadline, reset and strict-failure assertions without admission ownership. Caller fixtures follow export, gateway refusal, view reservation/hostname, machine-ID generation, resolver and ingress startup order; machine-ID generation uses the real
ApplyError::Viewvariant. Existing worker failure-class tests retain startup attribution; the fake's bare start error is distinguished from real wrapped caller cleanup.Removed or renamed old tests are paired explicitly:
a_generated_machine_id_is_generated_once_after_the_gate_for_every_executionthe_record_s_view_is_applied_once_with_its_own_dns_and_returned_machine_id; existinga_machine_id_is_generated_once_per_fileand generated-ID mode coverage stay with view.the_view_s_entry_takes_the_record_s_hostname_and_machine_ida_machine_id_or_a_view_that_fails_fails_the_activation_once_the_root_is_torn_downan_export_or_a_view_that_fails_closes_owned_resources_before_root_teardown, plusapplication_failures_follow_export_gateway_and_view_order.the_runtime_s_binds_are_removed_before_the_root_is_torn_downteardown_closes_the_export_before_the_root_removes_its_own_bindsand existingthe_root_removes_its_view_binds_in_reverse_order_before_the_overlay.a_network_s_dns_server_is_written_to_a_resolver_file_that_every_execution_seesa_resolver_file_names_its_dns_server_once_and_every_execution_may_read_it, andactual_resolver_failures_keep_the_network_class_and_root_owned_bind.an_export_or_a_network_that_fails_fails_the_activation_once_the_root_is_torn_downa_network_that_publishes_the_workload_s_listeners_starts_their_announcer_to_its_gatewaypublication_and_gateway_are_reported_without_starting_or_stopping_a_process; caller-owned startup/fatal coverage remains inguest_session, includinga_clone_whose_announcer_ends_ends_with_the_network_s_status, and real clone scenarios.a_generated_machine_id_and_a_resolver_file_keep_the_root_busy_until_their_binds_are_removedan_applied_root_keeps_its_view_binds_when_transferred_into_partsand Root's retained partial-bind/teardown cases; application no longer owns those binds.a_clone_bootstraps_takes_one_activate_and_opens_the_fence_once_readya_clone_bootstraps_takes_one_activate_and_becomes_ready_without_a_fence; the intentionally removed fence-opening assertion is not moved to another library owner.an_activation_debugs_its_state_resources_and_deadline_without_its_fencean_activation_debugs_its_state_resources_and_deadline, retaining state/resource/deadline diagnostics without a fence field.The removed
FakeFence, Announcer/Binds associated types and announce/stop/generate/write/bind/remove helpers belonged to the old application fixture. Assembly/export/view doubles replace its remaining effects; real file/bind tests remain at view/Root, and ingress remains a caller concern. Mapper and repair test changes only follow canonical ownership/import paths. No test deadline, skip or assertion is weakened to obtain a pass.Complete named test-asset inventory (including removed helpers and seams)
Each row below uses the fixture/ownership explanation above. Removed tests are paired with their replacement or retained owner coverage in the preceding table.
nvx-rs/src/guest/activation/state/apply/tests.rsconst RESOURCES in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:31impl ApplyError in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:852fn from_test_view_failure in guest::activation::state::apply::tests, impl ApplyErrornvx-rs/src/guest/activation/state/apply/tests.rs:854impl Applied in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:859fn from_test_root in guest::activation::state::apply::tests, impl Appliednvx-rs/src/guest/activation/state/apply/tests.rs:861the imports of guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:4fn the_record_s_view_is_applied_once_with_its_own_dns_and_returned_machine_id in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:599fn an_export_or_a_view_that_fails_closes_owned_resources_before_root_teardown in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:663fn teardown_closes_the_export_before_the_root_removes_its_own_binds in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:724fn publication_and_gateway_are_reported_without_starting_or_stopping_a_process in guest::activation::state::apply::testsnvx-rs/src/guest/activation/state/apply/tests.rs:739nvx-rs/src/guest/activation/state/tests.rsthe imports of guest::activation::state::testsnvx-rs/src/guest/activation/state/tests.rs:6fn a_clone_bootstraps_takes_one_activate_and_becomes_ready_without_a_fence in guest::activation::state::testsnvx-rs/src/guest/activation/state/tests.rs:161fn an_activation_debugs_its_state_resources_and_deadline in guest::activation::state::testsnvx-rs/src/guest/activation/state/tests.rs:929nvx-rs/src/guest/clone/activation/apply.rsthe test hooks of struct Activated in guest::clone::activation::applynvx-rs/src/guest/clone/activation/apply.rs:730-> -nvx-rs/src/guest/clone/activation/apply/tests.rsconst DNS in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:68->nvx-rs/src/guest/activation/state/apply/tests.rs:25enum Effect in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:83->nvx-rs/src/guest/activation/state/apply/tests.rs:44struct FakeSystem in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:117->nvx-rs/src/guest/activation/state/apply/tests.rs:60fn new in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:169->nvx-rs/src/guest/activation/state/tests.rs:612fn reread in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:265->nvx-rs/src/guest/activation/state/apply/tests.rs:101fn assemble in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:284->nvx-rs/src/guest/activation/state/apply/tests.rs:120struct Adapter in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:415->nvx-rs/src/guest/activation/state/tests.rs:599fn new in guest::clone::activation::apply::tests, impl Adapternvx-rs/src/guest/clone/activation/apply/tests.rs:433->nvx-rs/src/guest/activation/state/apply/tests.rs:79fn restricted in guest::clone::activation::apply::tests, impl Adapternvx-rs/src/guest/clone/activation/apply/tests.rs:457->nvx-rs/src/guest/activation/state/apply/tests.rs:277fn template in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:510->nvx-rs/src/guest/activation/state/apply/tests.rs:190fn configuration in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:561->nvx-rs/src/guest/activation/state/apply/tests.rs:208fn clone_record in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:585->nvx-rs/src/guest/activation/state/apply/tests.rs:229fn accepted in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:594->nvx-rs/src/guest/activation/state/apply/tests.rs:240fn accepted_assembly in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:607->nvx-rs/src/guest/activation/state/apply/tests.rs:261fn with_everything in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:657->nvx-rs/src/guest/activation/state/apply/tests.rs:245fn view in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:683->nvx-rs/src/guest/activation/state/apply/tests.rs:161fn no_mount_spawn_or_id_generation_happens_before_the_gate in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:737->nvx-rs/src/guest/activation/state/apply/tests.rs:288fn a_valid_activate_activates_the_root_and_the_workload_once_before_ready in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:848->nvx-rs/src/guest/activation/state/apply/tests.rs:320fn assembly_inputs_are_taken_exactly_from_the_record in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:894->nvx-rs/src/guest/activation/state/apply/tests.rs:372fn a_gpt_disk_s_partition_table_is_reread_before_its_root_is_assembled in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1010->nvx-rs/src/guest/activation/state/apply/tests.rs:511fn the_application_leaves_the_images_accounts_to_each_execution in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1053->nvx-rs/src/guest/activation/state/apply/tests.rs:543fn a_failed_assembly_is_final_and_reads_and_tears_down_nothing in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1092->nvx-rs/src/guest/activation/state/apply/tests.rs:573fn an_export_is_mounted_through_the_template_s_device_and_handed_to_the_adapter in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1317->nvx-rs/src/guest/activation/state/apply/tests.rs:638fn the_application_refuses_without_privileges_what_it_cannot_assemble in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1744->nvx-rs/src/guest/activation/state/apply/tests.rs:792fn application_errors_name_their_cause in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1793->nvx-rs/src/guest/activation/state/apply/tests.rs:829const DEVICE_TIMEOUT in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:45-> -const FIRST_PARTITION_BOUND in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:59-> -const PASSWD in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:61-> -const GROUP in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:64-> -type Failed in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:78-> -fn with in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:147-> -fn failing in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:175-> -fn refusing in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:185-> -fn generating in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:194-> -fn unmountable in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:203-> -fn unwritable in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:212-> -fn unannounced in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:221-> -fn unbindable in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:231-> -fn stuck in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:240-> -fn generated in guest::clone::activation::apply::tests, impl FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:253-> -type Binds in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:262-> -type Announcer in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:263-> -fn generate in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:303-> -fn write_resolver in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:336-> -fn announce in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:344-> -fn stop in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:352-> -fn bind in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:357-> -fn remove in guest::clone::activation::apply::tests, impl System for FakeSystemnvx-rs/src/guest/clone/activation/apply/tests.rs:368-> -struct FakeFence in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:389-> -fn is_open in guest::clone::activation::apply::tests, impl FakeFencenvx-rs/src/guest/clone/activation/apply/tests.rs:396-> -fn close in guest::clone::activation::apply::tests, impl AdmissionFence for FakeFencenvx-rs/src/guest/clone/activation/apply/tests.rs:402-> -fn open in guest::clone::activation::apply::tests, impl AdmissionFence for FakeFencenvx-rs/src/guest/clone/activation/apply/tests.rs:406-> -fn take in guest::clone::activation::apply::tests, impl Adapternvx-rs/src/guest/clone/activation/apply/tests.rs:466-> -fn assert_untouched in guest::clone::activation::apply::tests, impl Adapternvx-rs/src/guest/clone/activation/apply/tests.rs:497-> -fn erofs in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:528-> -fn gpt in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:534-> -fn gpt_image in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:542-> -fn scratch in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:554-> -fn with_generated_id in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:625-> -fn export in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:632-> -fn network in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:638-> -fn unpublished in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:647-> -fn machine_id_path in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:667-> -fn generated_id in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:672-> -fn resolver_path in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:677-> -fn full_view in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:693-> -fn activated in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:702-> -fn applied_everything in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:717-> -fn apply_error in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:729-> -struct LiveRoot in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1610-> -impl LiveRoot in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1619-> -fn new in guest::clone::activation::apply::tests, impl LiveRootnvx-rs/src/guest/clone/activation/apply/tests.rs:1623-> -impl Drop for LiveRoot in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1659-> -fn drop in guest::clone::activation::apply::tests, impl Drop for LiveRootnvx-rs/src/guest/clone/activation/apply/tests.rs:1661-> -const IMAGE_MACHINE_ID in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1668-> -const IMAGE_RESOLVER in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1671-> -fn report in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1675-> -the imports of guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:18-> -fn a_generated_machine_id_is_generated_once_after_the_gate_for_every_execution in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1123-> -fn the_view_s_entry_takes_the_record_s_hostname_and_machine_id in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1175-> -fn a_machine_id_or_a_view_that_fails_fails_the_activation_once_the_root_is_torn_down in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1212-> -fn the_runtime_s_binds_are_removed_before_the_root_is_torn_down in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1266-> -fn a_network_s_dns_server_is_written_to_a_resolver_file_that_every_execution_sees in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1367-> -fn an_export_or_a_network_that_fails_fails_the_activation_once_the_root_is_torn_down in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1423-> -fn a_network_that_publishes_the_workload_s_listeners_starts_their_announcer_to_its_gateway in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1544-> -fn a_generated_machine_id_and_a_resolver_file_keep_the_root_busy_until_their_binds_are_removed in guest::clone::activation::apply::testsnvx-rs/src/guest/clone/activation/apply/tests.rs:1683-> -nvx-rs/src/guest/clone/activation/tests.rstype Setup in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:32->nvx-rs/src/guest/activation/state/tests.rs:27fn bootstrap in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:124->nvx-rs/src/guest/activation/state/tests.rs:94fn restricted in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:135->nvx-rs/src/guest/activation/state/tests.rs:99fn activating in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:144->nvx-rs/src/guest/activation/state/tests.rs:108fn ready in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:156->nvx-rs/src/guest/activation/state/tests.rs:120fn started in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:164->nvx-rs/src/guest/activation/state/tests.rs:128fn assert_final in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:174->nvx-rs/src/guest/activation/state/tests.rs:137type Failing in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:807->nvx-rs/src/guest/activation/state/tests.rs:740fn no_request_is_accepted_before_activate in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:256->nvx-rs/src/guest/activation/state/tests.rs:211fn a_reset_before_ready_is_final_and_one_after_it_starts_a_later_session in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:279->nvx-rs/src/guest/activation/state/tests.rs:233fn retries_join_the_running_activation_and_get_its_cached_result in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:316->nvx-rs/src/guest/activation/state/tests.rs:267fn a_changed_record_or_a_new_transaction_is_final in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:345->nvx-rs/src/guest/activation/state/tests.rs:295fn an_activate_too_long_to_read_fails_as_a_record_that_long in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:388->nvx-rs/src/guest/activation/state/tests.rs:337fn a_failed_application_is_final_and_no_retry_applies_the_record_again in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:436->nvx-rs/src/guest/activation/state/tests.rs:383fn an_activate_is_decoded_and_validated_before_any_side_effect in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:457->nvx-rs/src/guest/activation/state/tests.rs:404fn the_deadline_starts_at_the_acknowledgement_and_retries_never_extend_it in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:543->nvx-rs/src/guest/activation/state/tests.rs:488fn an_ungated_restore_s_deadline_starts_at_the_activation in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:585->nvx-rs/src/guest/activation/state/tests.rs:528fn out_of_order_completions_and_starts_are_final in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:609->nvx-rs/src/guest/activation/state/tests.rs:550fn the_deadline_stays_live_under_trickled_input_and_blocked_output in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:734->nvx-rs/src/guest/activation/state/tests.rs:667fn strict_failures_are_returned_and_never_power_off in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:810->nvx-rs/src/guest/activation/state/tests.rs:743const CPUS in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:16-> -const MEMORY in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:18-> -const TIMEOUT in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:20-> -type Expected in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:35-> -struct FakeFence in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:40-> -impl FakeFence in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:45-> -fn opened in guest::clone::activation::tests, impl FakeFencenvx-rs/src/guest/clone/activation/tests.rs:47-> -impl AdmissionFence for FakeFence in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:52-> -fn close in guest::clone::activation::tests, impl AdmissionFence for FakeFencenvx-rs/src/guest/clone/activation/tests.rs:53-> -fn open in guest::clone::activation::tests, impl AdmissionFence for FakeFencenvx-rs/src/guest/clone/activation/tests.rs:57-> -struct Adapter in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:666-> -impl Adapter in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:677-> -fn new in guest::clone::activation::tests, impl Adapternvx-rs/src/guest/clone/activation/tests.rs:679-> -the imports of guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:6-> -fn a_clone_bootstraps_takes_one_activate_and_opens_the_fence_once_ready in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:205-> -fn an_activation_debugs_its_state_resources_and_deadline_without_its_fence in guest::clone::activation::testsnvx-rs/src/guest/clone/activation/tests.rs:997-> -nvx-rs/src/guest/clone/repair/tests.rsfn a_repair_draws_no_randomness_before_its_reseed in guest::clone::repair::testsnvx-rs/src/guest/clone/repair/tests.rs:1214->nvx-rs/src/guest/activation/repair/tests.rs:1214nvx-rs/src/guest/clone/tests.rsimpl FakeFence in guest::clone::testsnvx-rs/src/guest/clone/tests.rs:97-> -impl AdmissionFence for FakeFence in guest::clone::testsnvx-rs/src/guest/clone/tests.rs:113-> -nvx-rs/src/guest/mappings/mapper/tests.rsimpl TeardownError in guest::mappings::mapper::testsnvx-rs/src/guest/mappings/mapper/tests.rs:26-> -fn of in guest::mappings::mapper::tests, impl TeardownErrornvx-rs/src/guest/mappings/mapper/tests.rs:29-> -nvx-rs/src/guest/root/tests/view.rsfn an_applied_root_keeps_its_view_binds_when_transferred_into_parts in guest::root::tests::viewnvx-rs/src/guest/root/tests/view.rs:100fn actual_resolver_failures_keep_the_network_class_and_root_owned_bind in guest::root::tests::viewnvx-rs/src/guest/root/tests/view.rs:188the imports of guest::root::tests::viewnvx-rs/src/guest/root/tests/view.rs:1->nvx-rs/src/guest/root/tests/view.rs:1tests/runtime-adapter/src/worker/activation/tests.rsfn activation in worker::activation::teststests/runtime-adapter/src/worker/activation/tests.rs:49->tests/runtime-adapter/src/worker/activation/tests.rs:49fn restricted in worker::activation::teststests/runtime-adapter/src/worker/activation/tests.rs:57->tests/runtime-adapter/src/worker/activation/tests.rs:55fn activating in worker::activation::teststests/runtime-adapter/src/worker/activation/tests.rs:65->tests/runtime-adapter/src/worker/activation/tests.rs:63the imports of worker::activation::teststests/runtime-adapter/src/worker/activation/tests.rs:1->tests/runtime-adapter/src/worker/activation/tests.rs:1fn each_class_of_failure_ends_the_clone_with_its_own_status in worker::activation::teststests/runtime-adapter/src/worker/activation/tests.rs:82->tests/runtime-adapter/src/worker/activation/tests.rs:80tests/runtime-adapter/tests/guest_session.rsfn application_failures_follow_export_gateway_and_view_order in guest_session/clones (tests)tests/runtime-adapter/tests/guest_session.rs:4593struct FakeRoot in guest_session (tests)tests/runtime-adapter/tests/guest_session.rs:1186->tests/runtime-adapter/tests/guest_session.rs:1185fn reading in guest_session (tests), impl FakeRoottests/runtime-adapter/tests/guest_session.rs:1243->tests/runtime-adapter/tests/guest_session.rs:1245fn result in guest_session (tests), impl FakeRoottests/runtime-adapter/tests/guest_session.rs:1301->tests/runtime-adapter/tests/guest_session.rs:1305fn apply in guest_session (tests), impl RootOperations for FakeRoottests/runtime-adapter/tests/guest_session.rs:1409->tests/runtime-adapter/tests/guest_session.rs:1415fn repaired in guest_session/clones (tests)tests/runtime-adapter/tests/guest_session.rs:4236->tests/runtime-adapter/tests/guest_session.rs:4238the imports of guest_session/clones (tests)tests/runtime-adapter/tests/guest_session.rs:4127->tests/runtime-adapter/tests/guest_session.rs:4129fn a_clone_s_activation_fails_finally_with_the_status_of_the_failure_s_class in guest_session/clones (tests)tests/runtime-adapter/tests/guest_session.rs:4513->tests/runtime-adapter/tests/guest_session.rs:4513The extended Root-view test import is also shown: it adds error-trait access for original-cause assertions in this PR, not in the dependency foundation.
Validation
Exact final head:
d4bcd5d5fb64bcc1639d95a715a246aa81293641.2479e965dc5aexecution identities. Final executable, initramfs, CLI, VMM, kernel, scratch and managed-runner hashes are identical; this is exact-input reuse, not a claimed new-head run.The rebuilt Ubuntu EROFS image changed bytes and was exercised by both new complete adapter runs. The three initramfs archives and ten guest binaries remained byte-identical; their updated metadata comes from genuine final-source assembly, not rewritten provenance.
Earlier failures remain recorded separately: an original one-off proxy observation had an unproven controlling cause; a Windows rename failure did not recur in complete retests; a Linux fixture-permission failure was traced to owned root-run temporary files and recovered through ownership-only repair. Stale-artifact, storage and launcher refusals occurred before VM bodies and are not counted as runtime passes. No assertion, deadline or skip was relaxed.
The PR remains Draft. KVM, macOS and final integration CI are not claimed. No CI run was manually triggered, queried, rerun or watched.