Skip to content

guest: make activation process-free and fence-free - #1346

Merged
Pedro Henrique Penna (ppenna) merged 2 commits into
feature/nvx-refactorfrom
esaurez/slim-2.4.2-sl7.3-20261107
Nov 9, 2026
Merged

Pedro Henrique Penna (ppenna) merged 2 commits into
feature/nvx-refactorfrom
esaurez/slim-2.4.2-sl7.3-20261107

Conversation

@esaurez

@esaurez Enrique Saurez (esaurez) commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

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 as 3f81abfe044c5d823797660081cd73be411551cf and f0ac21319a624034745de2c47e28ab05e0213eff. The current diff contains only this activation change, with no prerequisite replay or merge commit.

Activation remains process-free and fence-free, guest::clone remains 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 d4bcd5d5fb64bcc1639d95a715a246aa81293641 on 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-20261107 at 62338794dfb48ea1ccc48db31335a694eaa67458, combines their exact heads in that order: 1ef1618e5c6608f3f35cdca15f2066b565823ccc and fc44f2bf63044662a1d9ea794aaaa15d8da47e32. 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::activation canonical while retaining the guest::clone compatibility 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) from into_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's announce/stop seam. 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.rs and guest/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::View variant. 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:

Old test Replacement or retained owner coverage
a_generated_machine_id_is_generated_once_after_the_gate_for_every_execution the_record_s_view_is_applied_once_with_its_own_dns_and_returned_machine_id; existing a_machine_id_is_generated_once_per_file and generated-ID mode coverage stay with view.
the_view_s_entry_takes_the_record_s_hostname_and_machine_id The record/view test above forwards the exact View; Root's hostname-refusal and bind tests retain real application coverage.
a_machine_id_or_a_view_that_fails_fails_the_activation_once_the_root_is_torn_down an_export_or_a_view_that_fails_closes_owned_resources_before_root_teardown, plus application_failures_follow_export_gateway_and_view_order.
the_runtime_s_binds_are_removed_before_the_root_is_torn_down teardown_closes_the_export_before_the_root_removes_its_own_binds and existing the_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_sees The record/view test, existing a_resolver_file_names_its_dns_server_once_and_every_execution_may_read_it, and actual_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_down The export/view failure test and real resolver/bind failure tests retain first-error and teardown ownership.
a_network_that_publishes_the_workload_s_listeners_starts_their_announcer_to_its_gateway publication_and_gateway_are_reported_without_starting_or_stopping_a_process; caller-owned startup/fatal coverage remains in guest_session, including a_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_removed an_applied_root_keeps_its_view_binds_when_transferred_into_parts and Root's retained partial-bind/teardown cases; application no longer owns those binds.
a_clone_bootstraps_takes_one_activate_and_opens_the_fence_once_ready a_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_fence an_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.rs

Change Item Before / after
added helper const RESOURCES in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:31
added helper impl ApplyError in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:852
added helper fn from_test_view_failure in guest::activation::state::apply::tests, impl ApplyError - -> nvx-rs/src/guest/activation/state/apply/tests.rs:854
added helper impl Applied in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:859
added helper fn from_test_root in guest::activation::state::apply::tests, impl Applied - -> nvx-rs/src/guest/activation/state/apply/tests.rs:861
added imports the imports of guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:4
added test fn the_record_s_view_is_applied_once_with_its_own_dns_and_returned_machine_id in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:599
added test fn an_export_or_a_view_that_fails_closes_owned_resources_before_root_teardown in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:663
added test fn teardown_closes_the_export_before_the_root_removes_its_own_binds in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:724
added test fn publication_and_gateway_are_reported_without_starting_or_stopping_a_process in guest::activation::state::apply::tests - -> nvx-rs/src/guest/activation/state/apply/tests.rs:739

nvx-rs/src/guest/activation/state/tests.rs

Change Item Before / after
added imports the imports of guest::activation::state::tests - -> nvx-rs/src/guest/activation/state/tests.rs:6
added test fn a_clone_bootstraps_takes_one_activate_and_becomes_ready_without_a_fence in guest::activation::state::tests - -> nvx-rs/src/guest/activation/state/tests.rs:161
added test fn an_activation_debugs_its_state_resources_and_deadline in guest::activation::state::tests - -> nvx-rs/src/guest/activation/state/tests.rs:929

nvx-rs/src/guest/clone/activation/apply.rs

Change Item Before / after
removed hook the test hooks of struct Activated in guest::clone::activation::apply nvx-rs/src/guest/clone/activation/apply.rs:730 -> -

nvx-rs/src/guest/clone/activation/apply/tests.rs

Change Item Before / after
modified helper const DNS in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:68 -> nvx-rs/src/guest/activation/state/apply/tests.rs:25
modified helper enum Effect in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:83 -> nvx-rs/src/guest/activation/state/apply/tests.rs:44
modified helper struct FakeSystem in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:117 -> nvx-rs/src/guest/activation/state/apply/tests.rs:60
modified helper fn new in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:169 -> nvx-rs/src/guest/activation/state/tests.rs:612
modified helper fn reread in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:265 -> nvx-rs/src/guest/activation/state/apply/tests.rs:101
modified helper fn assemble in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:284 -> nvx-rs/src/guest/activation/state/apply/tests.rs:120
modified helper struct Adapter in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:415 -> nvx-rs/src/guest/activation/state/tests.rs:599
modified helper fn new in guest::clone::activation::apply::tests, impl Adapter nvx-rs/src/guest/clone/activation/apply/tests.rs:433 -> nvx-rs/src/guest/activation/state/apply/tests.rs:79
modified helper fn restricted in guest::clone::activation::apply::tests, impl Adapter nvx-rs/src/guest/clone/activation/apply/tests.rs:457 -> nvx-rs/src/guest/activation/state/apply/tests.rs:277
modified helper fn template in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:510 -> nvx-rs/src/guest/activation/state/apply/tests.rs:190
modified helper fn configuration in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:561 -> nvx-rs/src/guest/activation/state/apply/tests.rs:208
modified helper fn clone_record in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:585 -> nvx-rs/src/guest/activation/state/apply/tests.rs:229
modified helper fn accepted in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:594 -> nvx-rs/src/guest/activation/state/apply/tests.rs:240
modified helper fn accepted_assembly in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:607 -> nvx-rs/src/guest/activation/state/apply/tests.rs:261
modified helper fn with_everything in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:657 -> nvx-rs/src/guest/activation/state/apply/tests.rs:245
modified helper fn view in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:683 -> nvx-rs/src/guest/activation/state/apply/tests.rs:161
modified test fn no_mount_spawn_or_id_generation_happens_before_the_gate in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:737 -> nvx-rs/src/guest/activation/state/apply/tests.rs:288
modified test fn a_valid_activate_activates_the_root_and_the_workload_once_before_ready in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:848 -> nvx-rs/src/guest/activation/state/apply/tests.rs:320
modified test fn assembly_inputs_are_taken_exactly_from_the_record in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:894 -> nvx-rs/src/guest/activation/state/apply/tests.rs:372
modified test fn a_gpt_disk_s_partition_table_is_reread_before_its_root_is_assembled in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1010 -> nvx-rs/src/guest/activation/state/apply/tests.rs:511
modified test fn the_application_leaves_the_images_accounts_to_each_execution in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1053 -> nvx-rs/src/guest/activation/state/apply/tests.rs:543
modified test fn a_failed_assembly_is_final_and_reads_and_tears_down_nothing in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1092 -> nvx-rs/src/guest/activation/state/apply/tests.rs:573
modified test fn an_export_is_mounted_through_the_template_s_device_and_handed_to_the_adapter in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1317 -> nvx-rs/src/guest/activation/state/apply/tests.rs:638
modified test fn the_application_refuses_without_privileges_what_it_cannot_assemble in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1744 -> nvx-rs/src/guest/activation/state/apply/tests.rs:792
modified test fn application_errors_name_their_cause in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1793 -> nvx-rs/src/guest/activation/state/apply/tests.rs:829
removed helper const DEVICE_TIMEOUT in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:45 -> -
removed helper const FIRST_PARTITION_BOUND in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:59 -> -
removed helper const PASSWD in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:61 -> -
removed helper const GROUP in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:64 -> -
removed helper type Failed in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:78 -> -
removed helper fn with in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:147 -> -
removed helper fn failing in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:175 -> -
removed helper fn refusing in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:185 -> -
removed helper fn generating in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:194 -> -
removed helper fn unmountable in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:203 -> -
removed helper fn unwritable in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:212 -> -
removed helper fn unannounced in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:221 -> -
removed helper fn unbindable in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:231 -> -
removed helper fn stuck in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:240 -> -
removed helper fn generated in guest::clone::activation::apply::tests, impl FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:253 -> -
removed helper type Binds in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:262 -> -
removed helper type Announcer in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:263 -> -
removed helper fn generate in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:303 -> -
removed helper fn write_resolver in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:336 -> -
removed helper fn announce in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:344 -> -
removed helper fn stop in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:352 -> -
removed helper fn bind in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:357 -> -
removed helper fn remove in guest::clone::activation::apply::tests, impl System for FakeSystem nvx-rs/src/guest/clone/activation/apply/tests.rs:368 -> -
removed helper struct FakeFence in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:389 -> -
removed helper fn is_open in guest::clone::activation::apply::tests, impl FakeFence nvx-rs/src/guest/clone/activation/apply/tests.rs:396 -> -
removed helper fn close in guest::clone::activation::apply::tests, impl AdmissionFence for FakeFence nvx-rs/src/guest/clone/activation/apply/tests.rs:402 -> -
removed helper fn open in guest::clone::activation::apply::tests, impl AdmissionFence for FakeFence nvx-rs/src/guest/clone/activation/apply/tests.rs:406 -> -
removed helper fn take in guest::clone::activation::apply::tests, impl Adapter nvx-rs/src/guest/clone/activation/apply/tests.rs:466 -> -
removed helper fn assert_untouched in guest::clone::activation::apply::tests, impl Adapter nvx-rs/src/guest/clone/activation/apply/tests.rs:497 -> -
removed helper fn erofs in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:528 -> -
removed helper fn gpt in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:534 -> -
removed helper fn gpt_image in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:542 -> -
removed helper fn scratch in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:554 -> -
removed helper fn with_generated_id in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:625 -> -
removed helper fn export in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:632 -> -
removed helper fn network in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:638 -> -
removed helper fn unpublished in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:647 -> -
removed helper fn machine_id_path in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:667 -> -
removed helper fn generated_id in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:672 -> -
removed helper fn resolver_path in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:677 -> -
removed helper fn full_view in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:693 -> -
removed helper fn activated in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:702 -> -
removed helper fn applied_everything in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:717 -> -
removed helper fn apply_error in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:729 -> -
removed helper struct LiveRoot in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1610 -> -
removed helper impl LiveRoot in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1619 -> -
removed helper fn new in guest::clone::activation::apply::tests, impl LiveRoot nvx-rs/src/guest/clone/activation/apply/tests.rs:1623 -> -
removed helper impl Drop for LiveRoot in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1659 -> -
removed helper fn drop in guest::clone::activation::apply::tests, impl Drop for LiveRoot nvx-rs/src/guest/clone/activation/apply/tests.rs:1661 -> -
removed helper const IMAGE_MACHINE_ID in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1668 -> -
removed helper const IMAGE_RESOLVER in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1671 -> -
removed helper fn report in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1675 -> -
removed imports the imports of guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:18 -> -
removed test fn a_generated_machine_id_is_generated_once_after_the_gate_for_every_execution in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1123 -> -
removed test fn the_view_s_entry_takes_the_record_s_hostname_and_machine_id in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1175 -> -
removed test fn a_machine_id_or_a_view_that_fails_fails_the_activation_once_the_root_is_torn_down in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1212 -> -
removed test fn the_runtime_s_binds_are_removed_before_the_root_is_torn_down in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1266 -> -
removed test fn a_network_s_dns_server_is_written_to_a_resolver_file_that_every_execution_sees in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1367 -> -
removed test fn an_export_or_a_network_that_fails_fails_the_activation_once_the_root_is_torn_down in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1423 -> -
removed test fn a_network_that_publishes_the_workload_s_listeners_starts_their_announcer_to_its_gateway in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1544 -> -
removed test fn a_generated_machine_id_and_a_resolver_file_keep_the_root_busy_until_their_binds_are_removed in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:1683 -> -

nvx-rs/src/guest/clone/activation/tests.rs

Change Item Before / after
modified helper type Setup in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:32 -> nvx-rs/src/guest/activation/state/tests.rs:27
modified helper fn bootstrap in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:124 -> nvx-rs/src/guest/activation/state/tests.rs:94
modified helper fn restricted in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:135 -> nvx-rs/src/guest/activation/state/tests.rs:99
modified helper fn activating in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:144 -> nvx-rs/src/guest/activation/state/tests.rs:108
modified helper fn ready in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:156 -> nvx-rs/src/guest/activation/state/tests.rs:120
modified helper fn started in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:164 -> nvx-rs/src/guest/activation/state/tests.rs:128
modified helper fn assert_final in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:174 -> nvx-rs/src/guest/activation/state/tests.rs:137
modified helper type Failing in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:807 -> nvx-rs/src/guest/activation/state/tests.rs:740
modified test fn no_request_is_accepted_before_activate in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:256 -> nvx-rs/src/guest/activation/state/tests.rs:211
modified test fn a_reset_before_ready_is_final_and_one_after_it_starts_a_later_session in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:279 -> nvx-rs/src/guest/activation/state/tests.rs:233
modified test fn retries_join_the_running_activation_and_get_its_cached_result in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:316 -> nvx-rs/src/guest/activation/state/tests.rs:267
modified test fn a_changed_record_or_a_new_transaction_is_final in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:345 -> nvx-rs/src/guest/activation/state/tests.rs:295
modified test fn an_activate_too_long_to_read_fails_as_a_record_that_long in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:388 -> nvx-rs/src/guest/activation/state/tests.rs:337
modified test fn a_failed_application_is_final_and_no_retry_applies_the_record_again in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:436 -> nvx-rs/src/guest/activation/state/tests.rs:383
modified test fn an_activate_is_decoded_and_validated_before_any_side_effect in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:457 -> nvx-rs/src/guest/activation/state/tests.rs:404
modified test fn the_deadline_starts_at_the_acknowledgement_and_retries_never_extend_it in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:543 -> nvx-rs/src/guest/activation/state/tests.rs:488
modified test fn an_ungated_restore_s_deadline_starts_at_the_activation in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:585 -> nvx-rs/src/guest/activation/state/tests.rs:528
modified test fn out_of_order_completions_and_starts_are_final in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:609 -> nvx-rs/src/guest/activation/state/tests.rs:550
modified test fn the_deadline_stays_live_under_trickled_input_and_blocked_output in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:734 -> nvx-rs/src/guest/activation/state/tests.rs:667
modified test fn strict_failures_are_returned_and_never_power_off in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:810 -> nvx-rs/src/guest/activation/state/tests.rs:743
removed helper const CPUS in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:16 -> -
removed helper const MEMORY in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:18 -> -
removed helper const TIMEOUT in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:20 -> -
removed helper type Expected in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:35 -> -
removed helper struct FakeFence in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:40 -> -
removed helper impl FakeFence in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:45 -> -
removed helper fn opened in guest::clone::activation::tests, impl FakeFence nvx-rs/src/guest/clone/activation/tests.rs:47 -> -
removed helper impl AdmissionFence for FakeFence in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:52 -> -
removed helper fn close in guest::clone::activation::tests, impl AdmissionFence for FakeFence nvx-rs/src/guest/clone/activation/tests.rs:53 -> -
removed helper fn open in guest::clone::activation::tests, impl AdmissionFence for FakeFence nvx-rs/src/guest/clone/activation/tests.rs:57 -> -
removed helper struct Adapter in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:666 -> -
removed helper impl Adapter in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:677 -> -
removed helper fn new in guest::clone::activation::tests, impl Adapter nvx-rs/src/guest/clone/activation/tests.rs:679 -> -
removed imports the imports of guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:6 -> -
removed test fn a_clone_bootstraps_takes_one_activate_and_opens_the_fence_once_ready in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:205 -> -
removed test fn an_activation_debugs_its_state_resources_and_deadline_without_its_fence in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:997 -> -

nvx-rs/src/guest/clone/repair/tests.rs

Change Item Before / after
modified test fn a_repair_draws_no_randomness_before_its_reseed in guest::clone::repair::tests nvx-rs/src/guest/clone/repair/tests.rs:1214 -> nvx-rs/src/guest/activation/repair/tests.rs:1214

nvx-rs/src/guest/clone/tests.rs

Change Item Before / after
removed helper impl FakeFence in guest::clone::tests nvx-rs/src/guest/clone/tests.rs:97 -> -
removed helper impl AdmissionFence for FakeFence in guest::clone::tests nvx-rs/src/guest/clone/tests.rs:113 -> -

nvx-rs/src/guest/mappings/mapper/tests.rs

Change Item Before / after
removed helper impl TeardownError in guest::mappings::mapper::tests nvx-rs/src/guest/mappings/mapper/tests.rs:26 -> -
removed helper fn of in guest::mappings::mapper::tests, impl TeardownError nvx-rs/src/guest/mappings/mapper/tests.rs:29 -> -

nvx-rs/src/guest/root/tests/view.rs

Change Item Before / after
added test fn an_applied_root_keeps_its_view_binds_when_transferred_into_parts in guest::root::tests::view - -> nvx-rs/src/guest/root/tests/view.rs:100
added test fn actual_resolver_failures_keep_the_network_class_and_root_owned_bind in guest::root::tests::view - -> nvx-rs/src/guest/root/tests/view.rs:188
extended imports the imports of guest::root::tests::view nvx-rs/src/guest/root/tests/view.rs:1 -> nvx-rs/src/guest/root/tests/view.rs:1

tests/runtime-adapter/src/worker/activation/tests.rs

Change Item Before / after
modified helper fn activation in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:49 -> tests/runtime-adapter/src/worker/activation/tests.rs:49
modified helper fn restricted in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:57 -> tests/runtime-adapter/src/worker/activation/tests.rs:55
modified helper fn activating in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:65 -> tests/runtime-adapter/src/worker/activation/tests.rs:63
modified imports the imports of worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:1 -> tests/runtime-adapter/src/worker/activation/tests.rs:1
modified test fn each_class_of_failure_ends_the_clone_with_its_own_status in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:82 -> tests/runtime-adapter/src/worker/activation/tests.rs:80

tests/runtime-adapter/tests/guest_session.rs

Change Item Before / after
added test fn application_failures_follow_export_gateway_and_view_order in guest_session/clones (tests) - -> tests/runtime-adapter/tests/guest_session.rs:4593
modified helper struct FakeRoot in guest_session (tests) tests/runtime-adapter/tests/guest_session.rs:1186 -> tests/runtime-adapter/tests/guest_session.rs:1185
modified helper fn reading in guest_session (tests), impl FakeRoot tests/runtime-adapter/tests/guest_session.rs:1243 -> tests/runtime-adapter/tests/guest_session.rs:1245
modified helper fn result in guest_session (tests), impl FakeRoot tests/runtime-adapter/tests/guest_session.rs:1301 -> tests/runtime-adapter/tests/guest_session.rs:1305
modified helper fn apply in guest_session (tests), impl RootOperations for FakeRoot tests/runtime-adapter/tests/guest_session.rs:1409 -> tests/runtime-adapter/tests/guest_session.rs:1415
modified helper fn repaired in guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4236 -> tests/runtime-adapter/tests/guest_session.rs:4238
modified imports the imports of guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4127 -> tests/runtime-adapter/tests/guest_session.rs:4129
modified test fn 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:4513

The 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.

Check Result
All-feature library tests Windows: 1,210 passed / 6 ignored; Linux: 1,965 passed / 34 ignored.
Rust and adapter quality rustfmt, warning-denied Clippy/rustdoc, minimum-supported Rust, protocol/host/guest configurations and public-API snapshots passed.
Canonical Python unit action Windows: 1,818 tests / 67 skipped; Linux: 1,818 tests / 32 skipped. Both complete executions are at the final head.
Layout, inventory, Markdown, CLI and guest checks Applicable checks passed; canonical static-CRT/static-musl CLI and guest artifacts authenticated.
Runtime adapter All 156 scenarios / 11 targets passed on each of WHP and MSHV with the changed final guest and regenerated image inputs.
Existing microVM proof The seven applicable scenario/distro bodies per backend retain their original 2479e965dc5a execution 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.
Independent read-only review No open findings at the final head.

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.

@esaurez Enrique Saurez (esaurez) added tests-modified Changes existing tests, test data, or test wiring feat-nvx-refactor labels Nov 7, 2026
@github-actions

github-actions Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

This pull request changes existing tests

It modifies or removes 140 existing test asset(s), listed below. Review each with care: a change to a test can hide a regression that the test caught. See doc/contribute.md#changes-to-existing-tests.

Test code

Change What Before After
modified helper const DNS in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:68 nvx-rs/src/guest/activation/state/apply/tests.rs:25
modified helper enum Effect in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:83 nvx-rs/src/guest/activation/state/apply/tests.rs:44
modified helper struct FakeSystem in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:117 nvx-rs/src/guest/activation/state/apply/tests.rs:60
modified helper fn new in guest::clone::activation::apply::tests, impl FakeSystem`` (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:169 nvx-rs/src/guest/activation/state/tests.rs:612
modified helper fn reread in guest::clone::activation::apply::tests, impl System for FakeSystem`` (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:265 nvx-rs/src/guest/activation/state/apply/tests.rs:101
modified helper fn assemble in guest::clone::activation::apply::tests, impl System for FakeSystem`` (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:284 nvx-rs/src/guest/activation/state/apply/tests.rs:120
modified helper struct Adapter in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:415 nvx-rs/src/guest/activation/state/tests.rs:599
modified helper fn new in guest::clone::activation::apply::tests, impl Adapter`` (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:433 nvx-rs/src/guest/activation/state/apply/tests.rs:79
modified helper fn restricted in guest::clone::activation::apply::tests, impl Adapter`` (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:457 nvx-rs/src/guest/activation/state/apply/tests.rs:277
modified helper fn template in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:510 nvx-rs/src/guest/activation/state/apply/tests.rs:190
modified helper fn configuration in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:561 nvx-rs/src/guest/activation/state/apply/tests.rs:208
modified helper fn clone_record in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:585 nvx-rs/src/guest/activation/state/apply/tests.rs:229
modified helper fn accepted in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:594 nvx-rs/src/guest/activation/state/apply/tests.rs:240
modified helper fn accepted_assembly in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:607 nvx-rs/src/guest/activation/state/apply/tests.rs:261
modified helper fn with_everything in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:657 nvx-rs/src/guest/activation/state/apply/tests.rs:245
modified helper fn view in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:683 nvx-rs/src/guest/activation/state/apply/tests.rs:161
modified helper type Setup in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:32 nvx-rs/src/guest/activation/state/tests.rs:27
modified helper fn bootstrap in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:124 nvx-rs/src/guest/activation/state/tests.rs:94
modified helper fn restricted in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:135 nvx-rs/src/guest/activation/state/tests.rs:99
modified helper fn activating in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:144 nvx-rs/src/guest/activation/state/tests.rs:108
modified helper fn ready in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:156 nvx-rs/src/guest/activation/state/tests.rs:120
modified helper fn started in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:164 nvx-rs/src/guest/activation/state/tests.rs:128
modified helper fn assert_final in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:174 nvx-rs/src/guest/activation/state/tests.rs:137
modified helper type Failing in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:807 nvx-rs/src/guest/activation/state/tests.rs:740
modified helper fn activation in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:49 tests/runtime-adapter/src/worker/activation/tests.rs:49
modified helper fn restricted in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:57 tests/runtime-adapter/src/worker/activation/tests.rs:55
modified helper fn activating in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:65 tests/runtime-adapter/src/worker/activation/tests.rs:63
modified helper struct FakeRoot in guest_session (tests) tests/runtime-adapter/tests/guest_session.rs:1186 tests/runtime-adapter/tests/guest_session.rs:1185
modified helper fn reading in guest_session (tests), impl FakeRoot`` tests/runtime-adapter/tests/guest_session.rs:1243 tests/runtime-adapter/tests/guest_session.rs:1245
modified helper fn result in guest_session (tests), impl FakeRoot`` tests/runtime-adapter/tests/guest_session.rs:1301 tests/runtime-adapter/tests/guest_session.rs:1305
modified helper fn apply in guest_session (tests), impl RootOperations for FakeRoot`` tests/runtime-adapter/tests/guest_session.rs:1409 tests/runtime-adapter/tests/guest_session.rs:1415
modified helper fn repaired in guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4236 tests/runtime-adapter/tests/guest_session.rs:4238
modified imports the imports of worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:1 tests/runtime-adapter/src/worker/activation/tests.rs:1
modified imports the imports of guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4127 tests/runtime-adapter/tests/guest_session.rs:4129
modified test fn no_mount_spawn_or_id_generation_happens_before_the_gate in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:737 nvx-rs/src/guest/activation/state/apply/tests.rs:288
modified test fn a_valid_activate_activates_the_root_and_the_workload_once_before_ready in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:848 nvx-rs/src/guest/activation/state/apply/tests.rs:320
modified test fn assembly_inputs_are_taken_exactly_from_the_record in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:894 nvx-rs/src/guest/activation/state/apply/tests.rs:372
modified test fn a_gpt_disk_s_partition_table_is_reread_before_its_root_is_assembled in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:1010 nvx-rs/src/guest/activation/state/apply/tests.rs:511
modified test fn the_application_leaves_the_images_accounts_to_each_execution in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:1053 nvx-rs/src/guest/activation/state/apply/tests.rs:543
modified test fn a_failed_assembly_is_final_and_reads_and_tears_down_nothing in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:1092 nvx-rs/src/guest/activation/state/apply/tests.rs:573
modified test fn an_export_is_mounted_through_the_template_s_device_and_handed_to_the_adapter in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:1317 nvx-rs/src/guest/activation/state/apply/tests.rs:638
modified test fn the_application_refuses_without_privileges_what_it_cannot_assemble in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:1744 nvx-rs/src/guest/activation/state/apply/tests.rs:792
modified test fn application_errors_name_their_cause in guest::clone::activation::apply::tests (moved) nvx-rs/src/guest/clone/activation/apply/tests.rs:1793 nvx-rs/src/guest/activation/state/apply/tests.rs:829
modified test fn no_request_is_accepted_before_activate in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:256 nvx-rs/src/guest/activation/state/tests.rs:211
modified test fn a_reset_before_ready_is_final_and_one_after_it_starts_a_later_session in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:279 nvx-rs/src/guest/activation/state/tests.rs:233
modified test fn retries_join_the_running_activation_and_get_its_cached_result in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:316 nvx-rs/src/guest/activation/state/tests.rs:267
modified test fn a_changed_record_or_a_new_transaction_is_final in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:345 nvx-rs/src/guest/activation/state/tests.rs:295
modified test fn an_activate_too_long_to_read_fails_as_a_record_that_long in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:388 nvx-rs/src/guest/activation/state/tests.rs:337
modified test fn a_failed_application_is_final_and_no_retry_applies_the_record_again in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:436 nvx-rs/src/guest/activation/state/tests.rs:383
modified test fn an_activate_is_decoded_and_validated_before_any_side_effect in guest::clone::activation::tests (moved) nvx-rs/src/guest/clone/activation/tests.rs:457 nvx-rs/src/guest/activation/state/tests.rs:404

... and 90 more, which the job's summary lists.

Relocated unchanged: 190; added: 16. Compared the merge base ea2e02412b3c with 2b5b44fc38e3.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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::activation canonical while retaining guest::clone as 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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the activation and ownership refactor.

No open issues 🎉

Review effort: Balanced

@esaurez
Enrique Saurez (esaurez) force-pushed the esaurez/slim-2.4.2-sl7.3-20261107 branch from d4bcd5d to f0ac213 Compare November 9, 2026 02:40
@esaurez
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
@esaurez
Enrique Saurez (esaurez) requested a balanced review from Copilot November 9, 2026 02:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The rebased head still needs Linux guest/runtime qualification for view-bind ownership and ingress startup/teardown changes, which static review and historical runs cannot validate.

No open issues 🎉

Review effort: Balanced

@esaurez
Enrique Saurez (esaurez) marked this pull request as ready for review November 9, 2026 03:24
@esaurez
Enrique Saurez (esaurez) force-pushed the esaurez/slim-2.2.1-sl2.9-rebase-20261108 branch from 0f0de71 to 0cf1316 Compare November 9, 2026 04:43
@esaurez
Enrique Saurez (esaurez) force-pushed the esaurez/slim-2.4.2-sl7.3-20261107 branch from f0ac213 to 7fe700f Compare November 9, 2026 04:43
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
Enrique Saurez and others added 2 commits November 8, 2026 22:16
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
@esaurez
Enrique Saurez (esaurez) force-pushed the esaurez/slim-2.4.2-sl7.3-20261107 branch from 7fe700f to 2b5b44f Compare November 9, 2026 06:20
@esaurez
Enrique Saurez (esaurez) marked this pull request as draft November 9, 2026 17:04
@esaurez
Enrique Saurez (esaurez) marked this pull request as ready for review November 9, 2026 17:04
@ppenna
Pedro Henrique Penna (ppenna) merged commit 2b5b44f into feature/nvx-refactor Nov 9, 2026
110 of 114 checks passed
@ppenna
Pedro Henrique Penna (ppenna) deleted the esaurez/slim-2.4.2-sl7.3-20261107 branch November 9, 2026 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat-nvx-refactor tests-modified Changes existing tests, test data, or test wiring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants