Skip to content

activation: keep only guest-applied settings in record v2 - #1311

Merged
Pedro Henrique Penna (ppenna) merged 3 commits into
feature/nvx-refactorfrom
esaurez/slim-2.3.1-sl2.5b-20261105
Nov 7, 2026
Merged

Pedro Henrique Penna (ppenna) merged 3 commits into
feature/nvx-refactorfrom
esaurez/slim-2.3.1-sl2.5b-20261105

Conversation

@esaurez

Copy link
Copy Markdown
Contributor

Part of #1101

Change the shared activation record to version 2, updating its host encoder,
guest decoder/application, record writers and fixtures together. A restore
contains only its transaction; the remaining fields describe the root, View,
export kind and mapping count, network and expected resources. Template/store
references, binding/plan/policy identities and execution credentials are no
longer encoded.

Keep expected EROFS UUIDs/GPT disk GUIDs and their guest validation. Carry the
tmpfs percentage cap (1-90) through the existing RAM-upper implementation from
#1278; legacy clone construction retains its existing 50% default. Keep
TemplateReference, StoreGeneration and activation::Identity for their
existing store callers. Version 1 is refused, without migration or negotiation.
Ready's wire format is unchanged.

This layer builds on #1278. Measured against its exact parent: 67 core lines,
5 counted files
. The generated Linux/Windows public API snapshots and directly
stale record documentation are aligned with the new schema.

Validation

  • All applicable Windows/Linux check-nvx-rs commands, including genuine
    bundling, public API, MSRV, feature configurations, guest binaries and runtime
    adapter configurations.
  • Complete validate-nvx command inventories: 1,811 Python tests on each
    platform, the complete 84-test adversarial command, host inventory and help
    checks. Windows retains its complete same-input unittest pass and the complete
    adversarial rerun; the earlier failed compound attempt remains failure history.
  • Complete Linux check-quality, including both type-check platforms, pinned
    shell linters, test layout, Markdown links, kernel inventory, Specula and
    normal culture-enabled PowerShell syntax checks.
  • OpenVMM protocol vectors (3) and CPU profiles (1) on each platform.
  • Fresh source-validated guest executables, Alpine/Ubuntu initramfses and Ubuntu
    layer; unchanged pinned OpenVMM/kernel/scratch inputs were hash-verified.
  • Independent read-only review of the exact clean head.
  • WHP and MSHV: all four public sandbox scenarios and all 156 canonical adapter
    scenarios across 11 targets passed on each backend, with no failed, ignored
    or filtered canonical cases. The WHP public command was rerun in full after
    restoring a missing host PowerShell PATH prerequisite; no test was changed.
  • KVM execution remains a CI-only gate; no local KVM result is claimed.

Existing tests

tests-modified is required. The inventory reports 102 changes to existing test
assets, no unchanged relocations and 3 additions. The changes below remove
assertions about fields that no record contains, not checks of real root,
export, networking, execution, retry, deadline or cleanup behavior.

Rewritten codec fixtures and assertions in activation::codec::tests:
the_fields_keep_their_tags_and_names,
a_clone_record_holds_its_restore_section_first,
every_part_of_a_configuration_encodes_to_the_bytes_of_its_definition,
a_maximal_record_holds_602_bytes_within_the_limit (renamed to
a_maximal_record_holds_424_bytes_within_the_limit),
every_prefix_of_an_encoding_is_refused, other_versions_are_refused,
fields_out_of_order_are_refused,
a_dns_server_or_a_proxy_without_a_network_is_refused,
values_of_another_length_are_refused, unknown_codes_are_refused,
values_that_a_configuration_refuses_are_refused, and
refusals_name_the_rule_that_they_break. They use v2 tags/lengths and retain
bounded parsing and refusal coverage. The vector tests records_match_their_vectors
and invalid_records_are_refused use independently authored v2 expected bytes;
the removed activation-v1.txt is replaced by activation-v2.txt, including
old-record refusal.

Kept Ready behavior, with only the surrounding record fixture rewritten:
ready_reports_a_clone_s_transaction_and_nothing_more_for_a_cold_boot,
ready_activations_match_their_vectors, and
invalid_ready_activations_are_refused.

Rewritten schema fixtures in activation::tests:
the_limits_keep_their_values,
hostnames_are_admitted_up_to_the_limit_without_a_nul,
a_zero_first_partition_bound_is_refused,
the_first_broken_limit_is_reported_in_the_order_of_the_fields,
errors_name_the_limits_that_they_break, and
an_image_reports_its_format_binding_and_expected_identity (renamed to
an_image_reports_its_format_and_expected_identity). Expected image identity
and partition-bound validation remain.

Rewritten guest fixtures, keeping application/refusal behavior:
assembly_inputs_are_taken_exactly_from_the_record,
a_gpt_disk_s_partition_table_is_reread_before_its_root_is_assembled,
the_application_checks_no_account_of_the_record_s_workload_identity (renamed
to the_application_leaves_the_images_accounts_to_each_execution),
the_application_refuses_without_privileges_what_it_cannot_assemble, and
an_activate_is_decoded_and_validated_before_any_side_effect. Assembly now
asserts the explicit RAM cap, and accounts remain an execution concern.

Rewritten host clone fixtures, keeping actual store/launch behavior:
the_activation_record_of_a_clone_in_ram_names_its_restore_image_and_settings,
the_activation_record_of_a_clone_on_a_scratch_image_names_its_binding_and_journal
(renamed to the_activation_record_of_a_clone_on_a_scratch_image_names_only_its_journal),
the_activation_record_of_a_gpt_clone_names_its_disk_and_the_bound_of_its_first_partition,
the_activation_record_of_a_clone_of_a_template_with_a_nic_names_its_own_network,
settings_that_no_activation_record_holds_are_refused_before_anything_is_created,
a_clone_with_an_export_records_its_plan_and_maps_from_its_children, and
a_retry_never_sends_another_record_nor_takes_another_activation. Store plans
remain outside the wire record. Changed-record retry coverage mutates hostname
rather than a removed credential.

Rewritten adapter fixtures, retaining their failure, deadline, execution,
networking and mapping assertions:
each_class_of_failure_ends_the_clone_with_its_own_status,
a_clone_s_request_takes_the_staged_bindings_and_the_guest_s_defaults,
a_clone_answers_the_restore_s_reset_and_activates_with_the_record_of_its_activate,
a_clone_s_activation_fails_finally_with_the_status_of_the_failure_s_class,
a_clone_fails_on_an_activate_longer_than_a_record_before_it_takes_its_body,
a_clone_that_the_host_does_not_activate_in_time_ends_with_the_deadline_s_status,
a_clone_s_application_ends_by_the_activation_s_deadline,
a_clone_takes_what_came_during_its_application_before_it_is_ready,
a_clone_whose_broker_closes_the_stream_before_it_is_ready_is_abandoned,
a_ready_clone_fails_on_an_activate_that_is_not_a_retry,
a_clone_s_executions_name_their_own_identity_and_take_the_hostname_of_its_record,
a_clone_s_executions_enter_the_root_with_the_publication_of_its_record_s_network,
a_clone_whose_announcer_ends_ends_with_the_network_s_status,
a_clone_reports_when_its_events_happened_after_the_acknowledgement, and
a_clone_maps_its_record_s_table_from_its_export_and_leaves_the_proxy_to_the_host.

Rewritten VM record assertions, keeping real guest/VMM behavior:
clones_at_once_see_only_their_own_exports and
one_template_serves_the_clones_of_every_network_policy_at_its_guest_s_address.
Only encoded plan/policy-identity uniqueness assertions are retired; export
isolation/access and network/DNS/proxy/publication/reachability checks remain.

Retired obsolete record-only tests/helpers:
activation::codec::tests::a_store_generation_of_0_is_refused,
activation::tests::a_uid_or_gid_of_0_or_u32_max_is_refused,
activation::codec::tests::identities,
activation::codec::tests::vectors::identity,
guest::clone::activation::apply::tests::WORKLOAD, and
host::template::clone::tests::digest_of. Their values are no longer record
fields; store identities and per-execution credentials remain outside the
record.

Rewritten supporting helpers/imports, solely to construct the new fixtures:
codec encoding, cold_fields, with_export, with_network, fields_of,
configurations, records, and vectors' record_of; schema configuration,
maximal, restore, export, proxy; guest apply erofs, gpt, scratch,
configuration, clone_record, accepted, accepted_assembly,
with_generated_id, export, network; guest activation configuration,
clone_record; host clone tmpfs_request, workload (renamed view), and
Crashed::kept_its_files; shared ACTIVATION_V1 (renamed ACTIVATION_V2);
adapter worker record, activating; adapter guest-session
FakeRoot::apply; adapter clone-session record, exported, networked.
Corresponding imports in codec/vectors/Ready/guest application/guest activation/
host clone/adapter worker/clone-session tests follow the same type removals.

Added focused coverage includes tmpfs cap validation and cap encoding
round-trips. No scenario list, test selector, timeout, CI wiring or production
test hook is changed.

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

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

This pull request changes existing tests

It modifies or removes 102 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 encoding in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:30 nvx-rs/src/activation/codec/tests.rs:29
modified helper fn cold_fields in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:36 nvx-rs/src/activation/codec/tests.rs:35
modified helper fn with_export in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:71 nvx-rs/src/activation/codec/tests.rs:68
modified helper fn with_network in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:78 nvx-rs/src/activation/codec/tests.rs:74
modified helper fn fields_of in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:89 nvx-rs/src/activation/codec/tests.rs:85
modified helper fn configurations in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:822 nvx-rs/src/activation/codec/tests.rs:718
modified helper fn records in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:907 nvx-rs/src/activation/codec/tests.rs:792
modified helper fn record_of in activation::codec::tests::vectors nvx-rs/src/activation/codec/tests/vectors.rs:53 nvx-rs/src/activation/codec/tests/vectors.rs:47
modified helper fn configuration in activation::tests nvx-rs/src/activation/tests.rs:13 nvx-rs/src/activation/tests.rs:13
modified helper fn maximal in activation::tests nvx-rs/src/activation/tests.rs:40 nvx-rs/src/activation/tests.rs:38
modified helper fn restore in activation::tests nvx-rs/src/activation/tests.rs:79 nvx-rs/src/activation/tests.rs:69
modified helper fn export in activation::tests nvx-rs/src/activation/tests.rs:97 nvx-rs/src/activation/tests.rs:83
modified helper fn proxy in activation::tests nvx-rs/src/activation/tests.rs:106 nvx-rs/src/activation/tests.rs:91
modified helper fn erofs in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:536 nvx-rs/src/guest/clone/activation/apply/tests.rs:529
modified helper fn gpt in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:545 nvx-rs/src/guest/clone/activation/apply/tests.rs:535
modified helper fn scratch in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:566 nvx-rs/src/guest/clone/activation/apply/tests.rs:555
modified helper fn configuration in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:576 nvx-rs/src/guest/clone/activation/apply/tests.rs:562
modified helper fn clone_record in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:602 nvx-rs/src/guest/clone/activation/apply/tests.rs:586
modified helper fn accepted in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:615 nvx-rs/src/guest/clone/activation/apply/tests.rs:595
modified helper fn accepted_assembly in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:627 nvx-rs/src/guest/clone/activation/apply/tests.rs:608
modified helper fn with_generated_id in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:645 nvx-rs/src/guest/clone/activation/apply/tests.rs:626
modified helper fn export in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:652 nvx-rs/src/guest/clone/activation/apply/tests.rs:633
modified helper fn network in guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:661 nvx-rs/src/guest/clone/activation/apply/tests.rs:639
modified helper fn configuration in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:79 nvx-rs/src/guest/clone/activation/tests.rs:77
modified helper fn clone_record in guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:101 nvx-rs/src/guest/clone/activation/tests.rs:97
modified helper fn tmpfs_request in host::template::clone::tests nvx-rs/src/host/template/clone/tests.rs:200 nvx-rs/src/host/template/clone/tests.rs:197
modified helper fn workload in host::template::clone::tests (renamed to view) nvx-rs/src/host/template/clone/tests.rs:220 nvx-rs/src/host/template/clone/tests.rs:217
modified helper fn kept_its_files in host::template::clone::tests::launch, impl Crashed`` nvx-rs/src/host/template/clone/tests/launch.rs:2076 nvx-rs/src/host/template/clone/tests/launch.rs:2076
modified helper const ACTIVATION_V1 in tests (renamed to ACTIVATION_V2) nvx-rs/src/tests.rs:10 nvx-rs/src/tests.rs:10
modified helper fn record in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:27 tests/runtime-adapter/src/worker/activation/tests.rs:25
modified helper fn activating in worker::activation::tests tests/runtime-adapter/src/worker/activation/tests.rs:73 tests/runtime-adapter/src/worker/activation/tests.rs:65
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:1409
modified helper fn record in guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4171 tests/runtime-adapter/tests/guest_session.rs:4169
modified helper fn exported in guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4214 tests/runtime-adapter/tests/guest_session.rs:4203
modified helper fn networked in guest_session/clones (tests) tests/runtime-adapter/tests/guest_session.rs:4226 tests/runtime-adapter/tests/guest_session.rs:4214
modified imports the imports of activation::codec::tests nvx-rs/src/activation/codec/tests.rs:4 nvx-rs/src/activation/codec/tests.rs:4
modified imports the imports of activation::codec::tests::vectors nvx-rs/src/activation/codec/tests/vectors.rs:4 nvx-rs/src/activation/codec/tests/vectors.rs:4
modified imports the imports of activation::ready::tests nvx-rs/src/activation/ready/tests.rs:4 nvx-rs/src/activation/ready/tests.rs:4
modified imports the imports of guest::clone::activation::apply::tests nvx-rs/src/guest/clone/activation/apply/tests.rs:18 nvx-rs/src/guest/clone/activation/apply/tests.rs:18
modified imports the imports of guest::clone::activation::tests nvx-rs/src/guest/clone/activation/tests.rs:6 nvx-rs/src/guest/clone/activation/tests.rs:6
modified imports the imports of host::template::clone::tests nvx-rs/src/host/template/clone/tests.rs:9 nvx-rs/src/host/template/clone/tests.rs:9
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:4127
modified test fn the_fields_keep_their_tags_and_names in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:107 nvx-rs/src/activation/codec/tests.rs:103
modified test fn a_clone_record_holds_its_restore_section_first in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:169 nvx-rs/src/activation/codec/tests.rs:164
modified test fn every_part_of_a_configuration_encodes_to_the_bytes_of_its_definition in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:179 nvx-rs/src/activation/codec/tests.rs:174
modified test fn a_maximal_record_holds_602_bytes_within_the_limit in activation::codec::tests (renamed to a_maximal_record_holds_424_bytes_within_the_limit) nvx-rs/src/activation/codec/tests.rs:251 nvx-rs/src/activation/codec/tests.rs:234
modified test fn every_prefix_of_an_encoding_is_refused in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:267 nvx-rs/src/activation/codec/tests.rs:250
modified test fn other_versions_are_refused in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:320 nvx-rs/src/activation/codec/tests.rs:303
modified test fn fields_out_of_order_are_refused in activation::codec::tests nvx-rs/src/activation/codec/tests.rs:367 nvx-rs/src/activation/codec/tests.rs:350

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

Test data

Change What Before After
removed file nvx-rs/tests/vectors/activation-v1.txt nvx-rs/tests/vectors/activation-v1.txt

Relocated unchanged: 0; added: 3. Compared the merge base eb20dbda4bc0 with 02d4219ff07e.

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.

🟡 Changes recommended

An unresolved review finding flags a grammatical error in the comment at nvx-rs/src/activation/tests.rs:12, which should read “without an export or a network.”

1 open issue
What changed in this PR

Implements activation record v2 for #1101, narrowing NVX’s shared host–guest contract to guest-applied settings and the restore transaction. It builds on #1278’s RAM-upper cap support while preserving image identity validation and Ready’s wire format.

Changes:

  • Removes store, binding, plan, policy, and execution identities from the record; replaces WorkloadView with View and rejects v1 records.
  • Encodes and applies a tmpfs cap of 1–90%, retaining the legacy clone default of 50%.
  • Updates host and guest consumers, conformance vectors, tests, documentation, and public API snapshots together.
File Description
tests/​runtime-adapter/​tests/​vm_clone.rs Updates VM assertions for identity-free records.
tests/​runtime-adapter/​tests/​guest_session.rs Migrates session fixtures and changed-record retry cases.
tests/​runtime-adapter/​tests/​clone_start.rs Checks the clone’s new View fields.
tests/​runtime-adapter/​src/​worker/​activation/​tests.rs Updates activation fixtures and retry mutations.
tests/​runtime-adapter/​src/​worker/​activation.rs Reads hostname from configuration.view.
tests/​runtime-adapter/​src/​worker.rs Clarifies per-execution identity in comments.
tests/​runtime-adapter/​src/​clone.rs Constructs View without execution credentials.
tests/​runtime-adapter/​src/​bin/​runtime-adapter-host.rs Updates comments describing activation contents.
tests/​runtime-adapter/​README.md Aligns adapter documentation with v2.
nvx-rs/​tests/​vectors/​README.md Links the v2 activation vectors.
nvx-rs/​tests/​vectors/​activation-v2.txt Adds v2 conformance and refusal vectors.
nvx-rs/​tests/​vectors/​activation-v1.txt Removes superseded v1 vectors.
nvx-rs/​src/​tests.rs Loads the shared v2 fixture.
nvx-rs/​src/​host/​template/​store.rs Corrects comments about stored template references.
nvx-rs/​src/​host/​template/​key/​tests.rs Updates the template-reference explanatory comment.
nvx-rs/​src/​host/​template/​key.rs Clarifies key identity usage in documentation.
nvx-rs/​src/​host/​template/​clone/​tests/​restore.rs Uses transaction-only restore fixtures.
nvx-rs/​src/​host/​template/​clone/​tests/​launch.rs Updates persisted activation-record assertions.
nvx-rs/​src/​host/​template/​clone/​tests.rs Migrates host record expectations to v2.
nvx-rs/​src/​host/​template/​clone/​record.rs Builds smaller records with the default RAM cap.
nvx-rs/​src/​host/​template/​clone.rs Adopts View and the revised record builder.
nvx-rs/​src/​host/​store/​lease.rs Corrects template-reference documentation.
nvx-rs/​src/​guest/​clone/​activation/​tests.rs Updates fixtures and checks v1 rejection.
nvx-rs/​src/​guest/​clone/​activation/​apply/​tests.rs Checks cap propagation and updates application fixtures.
nvx-rs/​src/​guest/​clone/​activation/​apply.rs Applies the recorded cap and reads View.
nvx-rs/​src/​guest/​clone.rs Documents records without execution identities.
nvx-rs/​src/​activation/​tests.rs Updates schema tests and validates tmpfs caps.
nvx-rs/​src/​activation/​ready/​tests.rs Checks unchanged Ready behavior against v2 fixtures.
nvx-rs/​src/​activation/​mod.rs Defines and validates the v2 schema.
nvx-rs/​src/​activation/​codec/​tests/​vectors.rs Reads and verifies v2 vector values.
nvx-rs/​src/​activation/​codec/​tests.rs Updates canonical encoding and refusal coverage.
nvx-rs/​src/​activation/​codec.rs Encodes and decodes the reduced record.
nvx-rs/​README.md Documents v2 fields, limits, and consumers.
nvx-rs/​public-api/​windows.txt Aligns the Windows API snapshot.
nvx-rs/​public-api/​linux.txt Aligns the Linux API snapshot.

Review effort: Balanced

Comment thread nvx-rs/src/activation/tests.rs Resolved
@esaurez

Copy link
Copy Markdown
Contributor Author

The PR body's Existing tests section accounts for all 102 existing test-asset changes: 93 named test/helper entries, 8 import groups and the replaced v1 vector file. It names each retained, rewritten or retired check, including the renamed tests; the local complete inventory also covers rows omitted by the bot's display limit.

The two retired record-only tests validate store generation and execution credentials, which v2 no longer encodes. The v2 vectors retain explicit v1 refusal, expected EROFS UUID/GPT GUID coverage and bounded-parser checks. Real export isolation, networking, per-execution identity, retry/deadline and cleanup assertions remain. Both WHP and MSHV passed all four public sandbox scenarios and all 156 canonical adapter scenarios across 11 targets at d625c68; no scenario list, selector or timeout was changed.

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 against the activation-record v2 change.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@esaurez

Copy link
Copy Markdown
Contributor Author

Rebased this PR's three owned commits onto the published #1278 head
a9add81a, producing
1fa94083.
All three patches are unchanged by range-diff; OpenVMM remains 14dc4116.

The existing description was preserved byte-for-byte; its Validation section
records the original publication. For this mechanical rebase:

  • The corrected-input complete adversarial suite passed on Windows
    (84 tests, 11 unchanged platform skips) and Linux (84 tests, no skips).
    Both changed fixture cases and direct Ruff, formatting, both-platform typing,
    test-layout and Python compilation checks passed.
  • Rust/API/MSRV/CLI/main-unit, unchanged quality, host/help and protocol/CPU
    comparison evidence is retained only for proven identical component inputs.
    CLI source and executable provenance was checked against the new consumer.
  • Earlier failures remain recorded; the independent unchanged-source pass
    does not establish a deterministic root cause. The Windows timeout report
    and reproduction commands are documented in tests: intermittent Windows timeout in contained guest runner adversarial oracle #1321.

No new native VM/distro matrix or guest-image assembly was run for this simple
rebase, and no new-head CI result is asserted. The PR remains Draft, so CI may
be skipped; no Ready flip was made.

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 were identified for the activation record v2 update.

No open issues 🎉

Review effort: Balanced

@esaurez

Copy link
Copy Markdown
Contributor Author

Published the qualified mechanical rebase at
fc44f2bf,
on #1278's 89d31a7e. All three existing patches are unchanged by
range-diff. The PR now shows only this layer's 35 files, with 67 core lines
across 5 core-bearing files; OpenVMM remains 14dc4116.

The description was preserved byte-for-byte, so its original Validation
section remains historical. Current-head local qualification includes:

  • Complete applicable Rust formatting, lint, tests, documentation, API,
    MSRV, guest and runtime-adapter checks on Windows and Linux.
  • The complete 1,818-test main unit inventory on both platforms:
    67 declared skips on Windows and 30 on Linux. The latter include 29
    Windows-specific cases and the unchanged reader whose pinned kernel source
    tree was not prepared; skipped cases are not claimed passed.
  • Complete 84-test adversarial suites: Windows passed with 11 unchanged
    platform skips; Linux passed without skips. Host-profile/help checks,
    quality checks and OpenVMM protocol/CPU-profile comparisons passed.
  • Fresh current-source CLI provenance and all 10 guest executables were
    checked. The scoped independent read-only carry review found no introduced
    incompatibility.

Earlier failed attempts and their corrections remain recorded; no assertion,
deadline or skip definition was weakened. No new native VM/distro matrix or
VM-image assembly was run for this simple rebase, and no CI result is asserted.
The PR's Draft state, title, base, body and labels were preserved.

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 reported for the activation record v2 changes.

No open issues 🎉

Review effort: Balanced

Base automatically changed from esaurez/slim-2.1.2-sl2.4a1-20261103 to feature/nvx-refactor November 7, 2026 18:12
Enrique Saurez and others added 3 commits November 7, 2026 11:11
Remove store references and host planning identities from the shared record while retaining expected image UUIDs and disk GUIDs. Use View without execution credentials and carry the tmpfs memory cap as a bounded percentage. Keep store identity types for their existing callers. Update producers, application and canonical fixtures together, and reject record version 1.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3532e012-2beb-4ff7-81ab-3795de501985
List the transaction-only restore section, View and bounded tmpfs cap, and remove the fields and types that no activation record carries. Regenerate both platform snapshots from the shared crate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3532e012-2beb-4ff7-81ab-3795de501985
Describe the fixture as having neither an export nor a network. This only repairs the test helper documentation; executable code and assertions are unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3532e012-2beb-4ff7-81ab-3795de501985
@esaurez

Copy link
Copy Markdown
Contributor Author

Rebased onto #1278's landed commit eb20dbda4bc0d6ce576419b01400f214ec07c9fd, preserving all three owned commits and the current feature/nvx-refactor base. The published head is 02d4219ff07e74622fe3178ad9e7f5b7d1ea3975; all three patches are unchanged. The diff is 35 files, with 67 core lines in five counted files. The existing explanations of the 102 changed test assets and three additions remain applicable.

Current validation

Check Windows Linux
Complete applicable check-nvx-rs action Passed, eight steps Passed, thirteen steps
Complete main Python suite 1,818 tests; 809.992 seconds; 67 declared skips 1,818 tests; 131.768 seconds; 30 declared skips
Complete adversarial suite 84 tests; 8.212 seconds; 11 declared platform skips 84 tests; 12.093 seconds; no skips
Host-profile tests and CLI help commands Passed Passed
Protocol-vector and CPU-profile comparisons Passed Passed
Markdown links and test layout Passed Passed

The Linux checks include both public-API snapshots, the minimum supported Rust version, the macOS build, ten freshly built and checked guest executables, and the runtime-adapter configurations. Both hosts used newly built, source-verified CLI executables. The optional pinned-kernel-source reader remained skipped because its source tree was not prepared; this is not a passing check.

AdversarialOracleTests.test_process_timeout_bounds_blocked_stdin_writer passed in both complete current adversarial suites with its original timeout and 1,500 ms bound. The earlier 1,682 ms failure and separate diagnostic runs are retained as historical evidence; no test, clock, assertion or production fix was introduced, and the old failure's precise cause is not claimed.

Other quality checks retain explicitly source-equivalent evidence: their 217 inputs are byte-identical to the previously qualified head, while the affected Markdown/layout checks ran again. This conflict-free carry claims no fresh VM matrix, image-regeneration result, or transfer of old runtime results to the new head. Draft state, title, body bytes, base and labels were preserved.

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

The review has no active issues requiring resolution.

No open issues 🎉

Review effort: Balanced

@esaurez
Enrique Saurez (esaurez) marked this pull request as ready for review November 7, 2026 20:01
@ppenna
Pedro Henrique Penna (ppenna) merged commit bc9ceca into feature/nvx-refactor Nov 7, 2026
106 of 107 checks passed
@ppenna
Pedro Henrique Penna (ppenna) deleted the esaurez/slim-2.3.1-sl2.5b-20261105 branch November 7, 2026 20:45
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