Skip to content

host: integrate qualified snapshot and owned-command inputs - #1449

Closed
Enrique Saurez (esaurez) wants to merge 8 commits into
feature/nvx-refactorfrom
esaurez/issue1102-input-join-20261110-6789d491
Closed

Enrique Saurez (esaurez) wants to merge 8 commits into
feature/nvx-refactorfrom
esaurez/issue1102-input-join-20261110-6789d491

Conversation

@esaurez

Copy link
Copy Markdown
Contributor

Part of #1102. This is the explicit preserved-parent input integration before
the separately scoped SL2.13 capture implementation.

The first parent is qualified SL2.12c
df8ddc4899adceadf42a53f5b3677e1f084a7e75 from #1443.
The second parent is qualified owned-command SL2.8b
123e93ed1c3fd696156b92448cf2efd547cc7f99 from #1434.
The qualified SL2.10 typed exit-proof input
adeb1d4778229fd23b64c2be6cd762df352de382 remains an ancestor.

This normal two-parent merge preserves both sources, their histories and
their public heads. The only manual conflict resolution combines the
current VM documentation row with the owned-command description and keeps
the current snapshot compatibility description. No old producer history
is replayed, no public branch is rebased or force-pushed, and no native pin
is changed.

Joint qualification is pending. Parent review and test results do not
qualify this new aggregate head. It needs its own exact-head independent
review and applicable consumer software qualification under fresh grants.
No capture implementation, guest-producer integration, or capture runtime
proof is claimed. SL2.13 and SL2.14 remain separate uncompleted scopes.

This Draft targets the actual published #1443 branch. It is not Ready,
formally approved, CI-qualified, or merged.

Enrique Saurez and others added 8 commits November 10, 2026 01:05
Port the preserved SL2.10 implementation and coupled callers, API snapshots, docs and real-process tests onto feature c52c710 without changing legacy lifecycle policy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 0c8e42ad-4102-451f-96f0-0a4ae0483d1a
Move checked launch values and owned resources into VmmCommand without reopening them. Add standard owned-handle conversions and the compiled external cold-launch consumer, retaining the current merged preparation and spawn behavior.

Expose the existing status-bearing launch wait for host-only callers and retain timeout, actual status and repeated-wait coverage. Public API snapshots will be generated during remote qualification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 6789d491-7d13-4929-bc64-4edfec93ba60
Initialize the merged cold-boot capture option explicitly for the external launcher. Record the platform public API snapshots generated from the private source checkpoint.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6789d491-7d13-4929-bc64-4edfec93ba60
Use the existing PID and atomic create-directory retry to retain unique fixture directories without a long diagnostic prefix. Keep the scenario name in creation errors. Capture and restore control sockets now fit approved data-volume temp roots without changing production limits, assertions, timeouts or skipped tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 0c8e42ad-4102-451f-96f0-0a4ae0483d1a
Apply the pinned rustfmt wrapping requested by the final-head review; fixture semantics and production source remain unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 0c8e42ad-4102-451f-96f0-0a4ae0483d1a
Validate the fixed snapshot layout, private regular files, bounded metadata and key/manifest agreement without reading snapshot.json. Retain the caller immutability contract and cover Linux/Windows refusal cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6789d491-7d13-4929-bc64-4edfec93ba60
Check requested VM geometry, captured attachments, runtime identity and restore-time eligibility against retained snapshot metadata. Expose the checked NIC address without freezing the restore network policy or reopening snapshot entries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6789d491-7d13-4929-bc64-4edfec93ba60
Preserve the qualified snapshot compatibility input as first parent and the qualified owned-command input as second parent, retaining typed exit-proof ancestry. Resolve only the documentation row; aggregate qualification remains pending before capture consumers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6789d491-7d13-4929-bc64-4edfec93ba60
@esaurez Enrique Saurez (esaurez) added the tests-modified Changes existing tests, test data, or test wiring label Nov 10, 2026
@github-actions

github-actions Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

This pull request changes existing tests

It modifies or removes 53 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 fn end_and_wait in host::template::clone::tests::launch, impl VmmDir`` nvx-rs/src/host/template/clone/tests/launch.rs:362 nvx-rs/src/host/template/clone/tests/launch.rs:362
modified helper fn wait_exit in host::template::clone::tests::launch, impl VmmDir`` nvx-rs/src/host/template/clone/tests/launch.rs:372 nvx-rs/src/host/template/clone/tests/launch.rs:372
modified helper fn drop in host::template::clone::tests::launch, impl Drop for VmmDir`` nvx-rs/src/host/template/clone/tests/launch.rs:412 nvx-rs/src/host/template/clone/tests/launch.rs:412
modified helper fn assert_vmm_ended in host::template::clone::tests::restore nvx-rs/src/host/template/clone/tests/restore.rs:422 nvx-rs/src/host/template/clone/tests/restore.rs:422
modified helper fn drop in host::template::store::leases::tests, impl Drop for VmmDir`` nvx-rs/src/host/template/store/leases/tests.rs:2459 nvx-rs/src/host/template/store/leases/tests.rs:2459
modified helper fn check_lifecycle in cli/lifecycle (tests) nvx-rs/tests/cli/lifecycle.rs:550 nvx-rs/tests/cli/lifecycle.rs:550
modified helper fn recycled_process_id in cli/lifecycle (tests) nvx-rs/tests/cli/lifecycle.rs:1425 nvx-rs/tests/cli/lifecycle.rs:1428
modified helper fn kill in store (tests) nvx-rs/tests/store.rs:176 nvx-rs/tests/store.rs:176
modified helper fn drop in supervisor (tests), impl Drop for VmmDirectory`` nvx-rs/tests/supervisor.rs:449 nvx-rs/tests/supervisor.rs:449
modified helper fn check_vmm in supervisor (tests) nvx-rs/tests/supervisor.rs:1226 nvx-rs/tests/supervisor.rs:1234
modified helper fn new in common/mod (tests), impl Sandbox`` tests/runtime-adapter/tests/common/mod.rs:154 tests/runtime-adapter/tests/common/mod.rs:154
modified helper fn activate in vm_clone (tests), impl CloneControl for Early`` tests/runtime-adapter/tests/vm_clone.rs:2314 tests/runtime-adapter/tests/vm_clone.rs:2314
modified test fn every_kind_has_a_code_of_its_own_spelling in error::tests nvx-rs/src/error/tests.rs:50 nvx-rs/src/error/tests.rs:50
modified test fn a_launch_whose_vmm_exited_ends_while_a_process_spawned_in_its_window_holds_its_log in host::platform::windows::tests nvx-rs/src/host/platform/windows/tests.rs:1049 nvx-rs/src/host/platform/windows/tests.rs:1060
modified test fn hosts_without_pidfds_poll_and_never_signal in host::process::tests nvx-rs/src/host/process/tests.rs:259 nvx-rs/src/host/process/tests.rs:259
modified test fn a_process_runs_until_its_last_thread_exits in host::process::tests::linux nvx-rs/src/host/process/tests/linux.rs:112 nvx-rs/src/host/process/tests/linux.rs:112
modified test fn reports_are_summarized_without_free_form_fields in host::report::tests nvx-rs/src/host/report/tests.rs:4 nvx-rs/src/host/report/tests.rs:4
modified test fn a_clone_whose_launch_failed_before_it_began_launches_no_more_until_its_release in host::template::clone::tests::launch nvx-rs/src/host/template/clone/tests/launch.rs:1547 nvx-rs/src/host/template/clone/tests/launch.rs:1549
modified test fn a_launch_whose_caller_crashes_once_its_vmm_started_ends_the_vmm_as_reattach_recovers_it in host::template::clone::tests::launch nvx-rs/src/host/template/clone/tests/launch.rs:2299 nvx-rs/src/host/template/clone/tests/launch.rs:2301
modified test fn a_restore_whose_caller_crashes_before_its_commit_ends_its_vmm_as_reattach_recovers_it in host::template::clone::tests::launch nvx-rs/src/host/template/clone/tests/launch.rs:2332 nvx-rs/src/host/template/clone/tests/launch.rs:2334
modified test fn a_clone_that_crashes_after_its_spawn_keeps_its_lease_until_its_unrecorded_vmm_exits in host::template::store::leases::tests nvx-rs/src/host/template/store/leases/tests.rs:2623 nvx-rs/src/host/template/store/leases/tests.rs:2625
modified test fn a_clone_that_crashes_after_recording_its_vmm_keeps_its_lease_until_reattach_ends_it in host::template::store::leases::tests nvx-rs/src/host/template/store/leases/tests.rs:2654 nvx-rs/src/host/template/store/leases/tests.rs:2656
modified test fn a_missing_boot_and_a_snapshot_are_refused_before_any_output_is_created in host::vm::tests nvx-rs/src/host/vm/tests.rs:492 nvx-rs/src/host/vm/tests.rs:492
modified test fn the_log_and_inherited_resources_stay_open_without_reopening_their_paths in host::vm::tests nvx-rs/src/host/vm/tests.rs:704 nvx-rs/src/host/vm/tests.rs:705
modified test fn spawn_caller_helper in host::vm::tests nvx-rs/src/host/vm/tests.rs:1088 nvx-rs/src/host/vm/tests.rs:1186
modified test fn an_unrelated_process_started_in_the_library_spawn_window_gets_no_vm_claim in host::vm::tests nvx-rs/src/host/vm/tests.rs:1139 nvx-rs/src/host/vm/tests.rs:1238
modified test fn current_cold_spawn_boots_a_guest_accepts_shell_input_and_exits_cleanly in host::vm::tests nvx-rs/src/host/vm/tests.rs:1195 nvx-rs/src/host/vm/tests.rs:1295
modified test fn reattaching_returns_the_held_owned_child_and_authenticated_connection in host::vm::tests::reattach nvx-rs/src/host/vm/tests/reattach.rs:229 nvx-rs/src/host/vm/tests/reattach.rs:229
modified test fn a_prepared_launch_hands_the_vmm_its_checked_images_alone in checked_handoff (tests) nvx-rs/tests/checked_handoff.rs:487 nvx-rs/tests/checked_handoff.rs:536
modified test fn a_vmm_keeps_the_scratch_images_claim_once_its_launcher_is_gone in checked_handoff (tests) nvx-rs/tests/checked_handoff.rs:717 nvx-rs/tests/checked_handoff.rs:767
modified test fn a_stop_under_another_identity_never_ends_a_process_that_its_record_does_not_name in cli (tests) nvx-rs/tests/cli.rs:978 nvx-rs/tests/cli.rs:978
modified test fn stop_reports_its_timeout_and_leaves_the_vm_running in cli (tests) nvx-rs/tests/cli.rs:1139 nvx-rs/tests/cli.rs:1141
modified test fn a_sandbox_whose_openvmm_exited_reports_it_once_and_starts_again in cli (tests) nvx-rs/tests/cli.rs:1186 nvx-rs/tests/cli.rs:1190
modified test fn provision_and_deprovision_need_no_artifact_root in cli/download (tests) nvx-rs/tests/cli/download.rs:165 nvx-rs/tests/cli/download.rs:165
modified test fn lifecycle_of_a_sandbox_whose_upper_is_in_ram in cli/lifecycle (tests) nvx-rs/tests/cli/lifecycle.rs:636 nvx-rs/tests/cli/lifecycle.rs:637
modified test fn stops_keep_an_outcome_report_that_the_caller_reads_whatever_its_umask in cli/lifecycle (tests) nvx-rs/tests/cli/lifecycle.rs:718 nvx-rs/tests/cli/lifecycle.rs:720
modified test fn outcome_reports_of_another_runtime_are_never_read in fake_openvmm (tests) nvx-rs/tests/fake_openvmm.rs:458 nvx-rs/tests/fake_openvmm.rs:458
modified test fn records_that_name_another_process_never_end_it in fake_openvmm (tests) nvx-rs/tests/fake_openvmm.rs:498 nvx-rs/tests/fake_openvmm.rs:498
modified test fn a_committed_launch_names_its_vm_for_another_build in store (tests) nvx-rs/tests/store.rs:497 nvx-rs/tests/store.rs:499
modified test fn long_stores_launch_with_a_short_working_directory in supervisor (tests) nvx-rs/tests/supervisor.rs:596 nvx-rs/tests/supervisor.rs:598
modified test fn a_child_that_exits_wakes_its_waiter in supervisor (tests) nvx-rs/tests/supervisor.rs:664 nvx-rs/tests/supervisor.rs:672
modified test fn a_process_that_is_not_a_child_wakes_its_waiters in supervisor (tests) nvx-rs/tests/supervisor.rs:691 nvx-rs/tests/supervisor.rs:699
modified test fn a_restarted_launcher_finds_its_vmm_again_and_ends_it in supervisor (tests) nvx-rs/tests/supervisor.rs:720 nvx-rs/tests/supervisor.rs:728
modified test fn a_reused_process_id_is_never_signaled in supervisor (tests) nvx-rs/tests/supervisor.rs:751 nvx-rs/tests/supervisor.rs:759
modified test fn references_that_name_no_process_are_never_opened in supervisor (tests) nvx-rs/tests/supervisor.rs:791 nvx-rs/tests/supervisor.rs:799
modified test fn an_unrecorded_vmm_that_serves_no_endpoint_is_never_signaled in supervisor (tests) nvx-rs/tests/supervisor.rs:851 nvx-rs/tests/supervisor.rs:859
modified test fn a_vmm_in_its_orchestrators_job_ends_with_it in supervisor (tests) nvx-rs/tests/supervisor.rs:1483 nvx-rs/tests/supervisor.rs:1491
modified test fn a_job_that_ends_its_vmm_wakes_the_waiters in supervisor (tests) nvx-rs/tests/supervisor.rs:1510 nvx-rs/tests/supervisor.rs:1518
modified test fn a_process_that_this_user_may_not_terminate_is_waited_for_but_never_signaled in supervisor (tests) nvx-rs/tests/supervisor.rs:1566 nvx-rs/tests/supervisor.rs:1574
modified test fn a_host_program_of_another_runtime_ends_the_clone_through_its_verified_identity in vm_clone (tests) tests/runtime-adapter/tests/vm_clone.rs:3882 tests/runtime-adapter/tests/vm_clone.rs:3882

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

Test policy

Change What Before After
loosened allowlist entry nvx-rs/src/host/snapshot.rs (the seams allow 1 test hooks) scripts/test-layout-allowlist.json

Relocated unchanged: 0; added: 68. Compared the merge base c52c7101d4f6 with dfaca512c5cb.

@esaurez

Copy link
Copy Markdown
Contributor Author

Closing this historical multi-input aggregate unmerged under the sequential-PR workflow. Its owning issue records the scope and retained source: #1102 (comment)

Branch esaurez/issue1102-input-join-20261110-6789d491 and source dfaca512c5cbcf1646938b195ad61eded25d06ea are retained. The related supporting input #1465 remains separate active work; this closure asserts neither complete unique-source supersession, production SL2.16 completion, qualification nor completion of issue 1102.

@esaurez
Enrique Saurez (esaurez) deleted the esaurez/issue1102-input-join-20261110-6789d491 branch November 13, 2026 18:18
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.

2 participants