Skip to content

guest: compose fresh capture in one bounded call - #1394

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

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

Conversation

@esaurez

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

Copy link
Copy Markdown
Contributor

Part of #1105.

Changes

SL7.4a adds guest::snapshot::capture(&Devices, Disks::Fresh, deadline).
Mount checks, strict time checks, detector suppression, generation-ID reads,
and their nested locks share one absolute pre-request deadline. The capture
request and post-request release remain unbounded.

Failures preserve their stage, cause, and Resumed or MustEnd { status }
disposition. Strict time violations retain their original status, and a
port-release failure remains fatal even if detector rollback also fails.
Only this call's detector suppression is restored. Fresh restore network
settings are explicitly refused; restored repair belongs to SL7.4b.

Failure diagnostics also honor the pre-request deadline: reporting-lock
waits are bounded, and kernel-log, console and reopened stderr descriptors
use nonblocking writes. A blocked diagnostic sink cannot delay the original
strict failure or change its status. Reopening stderr avoids changing flags
shared with other writers; legacy calls keep their blocking output.

The call retains its first port-revocation error even when a later diagnostic
transaction successfully releases its permissions. Before a new grant can
clear the calling thread's error, the runtime keeps that original cause.
Bounded preparation and capture finalizers prioritize it over strict
violations, including failed request-permission release followed by
successful repair diagnostics. Capture uses the original deadline's presence
to select this behavior, not its cleared post-request deadline. Legacy
unbounded capture behavior is unchanged; no repair feature or post-request
timeout is added.

Snapshot owns the MMIO-valued devices and the single mount parser. The
existing activation caller retains its compatibility adapter. The caller's
transport rule is documented; this change adds no execution control,
process helper, transport loop, or additional disk mode.

All fourteen original owned commits are replayed once, in their original
order, onto PR1406, at
81f58751f77787bc3fc9e6abfe4a3cfe12696be1. That exact input is the first
owned commit's parent; the owned range contains no merges or inherited
predecessor history. Original commit messages, changed lines, file modes
and unsigned states are retained. One mechanical insertion conflict in
guest/sys/fd/tests.rs keeps both the parent's inherited-descriptor helper
and the original deadline-write regressions, without changing assertions.
Six redundant root-mapping documentation links are also corrected.

A follow-up correction addresses the current review: time-deadline diagnostics
describe the caller's deadline generally, and the mount parser streams byte
fields using a fixed-size header instead of allocating every field. Its
numeric checks, empty-source support, optional fields and escapes are unchanged.

A separately scoped Python correction retries only the atomic rename of
verified performance artifacts when Windows reports a transient access or
sharing denial. Retries remain inside the existing fetch deadline and a
one-second bound; persistent errors propagate and existing destinations are
not replaced. The implementation retries no downloads or tests.
The retry deadline is checked at the loop boundary before every retry,
including after an overslept delay; the initial rename and original failure
are preserved.

Tests

The existing mount-parser tests
a_line_tells_the_device_mount_point_type_and_source_of_its_mount,
escaped_fields_are_unescaped, and lines_of_another_form_are_refused
move unchanged with the parser.

the_live_system_finds_windows_and_block_devices_in_procfs_and_sysfs follows
the explicit deadline and canonical device values.
a_preparation_that_may_leave_port_permission_fails_with_its_suppression
forces expiry at the intended preparation step while retaining its
suppression and port-permission assertions. The obsolete imports of the old
parser-test module are removed; its test functions are not retired.

The activation fake's FakeSystem::capture helper retains legacy behavior.
a_capture_refuses_an_entropy_path_with_a_nul_byte_before_its_transaction
uses the mutable runtime without changing its assertions.
capture_in_each_mode additionally exercises a real contended final port-B
lock with the original caller deadline and no snapshot-port write; its
existing privileged isolation is retained.

The time-runtime FakeOps and its constructor add a test-owned console path
and record explicitly supplied diagnostic deadlines. Its kernel-log and
console methods preserve previous output for legacy cases. The existing
set_permission helper also accepts per-range grant and revocation outcomes,
falling back to unchanged fixed errors when its queues are empty. A
test-only violation peek preserves the production finalizer's strict-status
input instead of consuming it before the regression runs.

New regressions cover full diagnostic pipes without changing shared
descriptor flags, retained strict status and detail, reporting-lock expiry,
expired writes, refusal of descriptors that cannot promise nonblocking
output, and unchanged legacy writes. Four cause-preservation cases exercise
the actual production finalizers: failed diagnostic release followed by a
different failure and success; failed partial-grant rollback; failed sample
release followed by successful diagnostics; and dropped request permissions
followed by repair diagnostics. The last also checks unchanged legacy
behavior and unbounded post-request cleanup.

The current test-change inventory reports eleven changes to existing items,
six unchanged relocated items, and 55 added items, not 55 tests. Focused
cases cover step order, pre-request expiry, suppression ownership and
rollback, strict status, port-release priority, pending capture,
request/release failures, final-preflight expiry and bounded rollback, and
refusal of restore network settings. No clock, deadline, ignore or skip
policy is weakened.

Four performance-history regressions cover Windows rename recovery without
redownloading, persistent denial stopping before a later run, fetch-deadline
preservation, and an existing destination remaining unchanged. The portable
Windows-error fixture is test-only. Existing Python assertions are unchanged.
Both denial fixtures now use signature-checked autospec mocks. A fifth
regression advances the clock past the retry deadline while sleeping and
verifies that no second rename or download occurs and the original error
is retained.

Size

The complete owned change against PR1406 is 822 core lines in eight
production files
, across 19 raw paths. Capture and bounded diagnostics
contribute 797 core lines in the same seven production files; the Python
correction contributes 25 core lines in
scripts/nvx_tools/performance_history.py. The mixed parser extraction is
charged in full: 393 core lines. The six root documentation-link corrections
contain no production-code change. Mechanical conflict resolution adds no
production lines.
The original fourteen commits remain intact, followed by one scoped review
correction: 15 owned commits and no merges. The review correction alone
measures 41 core lines in three production files across four raw paths; the
complete change grows by 16 core lines, with no additional production owner.

Validation

Current candidate: 3a7bd293fbc3f997c1999e5c29000e2c13eeacae, tree
c3acf2bb6edd759bec49e0f08f24d2f592e4a6da, on the exact PR1406 input above.
The OpenVMM gitlink and clean checkout both remain
14dc4116ec7e57567633c4b7b07892aca3a58522.

The five focused atomic-publication regressions pass, including overslept
retry delay. Changed Python lint/format and strict typing for both platforms,
pinned Rust formatting, source/native alignment, complete original-history
preservation, test layout, test-change disclosure, and diff checks pass.
Fresh Windows quality, strict Linux/Windows typing, layout and disclosure
checks pass. The complete applicable Windows Rust/action matrix, minimum
Rust version, static-CRT CLI, strict runtime prebuild, full CLI tests and
comparison checks also pass on this head.

The actual full Ready-event CI
run 42592419968, attempt 1
completed successfully: 34 successful jobs, nine conditional skipped jobs
and no failed jobs. Skipped jobs are not represented as executed passes.
Current-head Copilot review 5823828832 reports no open issues; all six
review threads and every comment page were read, with none unresolved.
Its privileged-semantics and maintainer-validation caveats remain.

The actual independent native Opus 5.5 whole-15-commit review returned
static CLEAR, with no high-confidence defect. Its max/long-context
profile, 79 read-only calls and all 1,992 unchanged source/base files were
audited. The CLI nevertheless exited 1, after a mesh mailbox-timeout
notification, followed by its completed review and routine shutdown; this
is not claimed as a clean zero-exit process or runtime qualification.

Fresh local WHP runtime and distribution evaluations pass: all 156 canonical
runtime-adapter cases across 11 targets, the complete 51-scenario Alpine
default including public sandboxes, six Ubuntu scenarios and seven Azure
Linux scenarios. Every actual case and scenario span was checked against
its selected inventory, all 59 frozen runtime inputs stayed unchanged, and
no owned runner, CLI, VMM or compiler remained. Guest inputs match the
complete current source and stock recipe; genuine current precompiled
runners were used without compiling during VM phases.

Fresh local Linux software qualification passes on the exact current source:
the full Rust/action and adapter matrix, public API checks for both targets,
minimum Rust version, macOS check, musl guest checks, static CLI, genuine
runtime prebuild, complete quality and CLI/adversarial tests, and comparison
checks. Conditional skips and ignored tests remain recorded, not executed
passes. All owned compiler-capable phases ended before VM evaluation.

Fresh local MSHV runtime and distribution evaluations also pass: all 156
canonical cases across 11 targets, with no failed or ignored cases; the
complete 51-scenario Alpine default including all public sandboxes; six
Ubuntu scenarios; and seven Azure Linux scenarios. Every actual selected
case, scenario span and teardown was audited. All 68 frozen inputs stayed
unchanged, host mounts were unchanged, and no owned runtime, CLI, VMM or
compiler remained.

The first current MSHV canonical attempt passed 96 cases and failed 60:
the owned DATA temporary prefix made Unix control-socket paths exceed
the 108-byte limit. That failure and its 67 unchanged inputs are retained.
The successful separate attempt changes only the approved invocation:
each fresh private mount namespace binds the same exclusive DATA directory
to /tmp inside that namespace, leaving host mounts and the driver's PID,
user and network namespaces unchanged. No source, native pin, assertions,
timeouts or skips changed.

The affected capture deadline witness was additionally executed, not
counted from its unprivileged capability-dependent early return. The
current pinned GNU test runner ran only
privileged_captures_hand_over_the_entropy_in_their_mode with actual root
and CAP_SYS_ADMIN in a fresh private mount namespace. Its real contended
port-B lock exercised the unchanged 250 ms deadline and emitted
FINAL_CAPTURE_PORTB_DEADLINE_REGRESSION_EXERCISED; the selected test passed.
This is the existing FakeOps capture/entropy test, not physical snapshot-port
I/O. Its isolation helpers were unchanged, all source/index/runner hashes
stayed unchanged, host /run, /tmp and mounts were unchanged, and owned
teardown was verified.

Fresh final feedback still has no unresolved review threads, and the same
exact full CI attempt remains successful. This PR remains Draft; maintainer
acceptance of privileged semantics, final Ready and merge are not implied
or requested.

The previous a84f797d local qualification and review remain historical,
not qualification of this rebased candidate. The preceding 96593855
Windows Rust matrix and independent static review also remain historical;
they do not qualify this changed head. Its CI run 42581280240 failed when
a GitHub zstd download returned HTTP 504 before native compilation; downstream
Windows runtime jobs were not executed, not passed. The unpublished b574eb3f
candidate was restacked before publication after the parent corrected its
unsupported control-peer diagnostic handling; no results from that superseded
input are claimed as current. Earlier MSHV runtime failures,
Windows persistence/resource refusals, executable-busy refusal and adapter
fixture-permission failures remain recorded; their original causes are not
declared fixed by rebasing. Historical platform skips, ignored guest tests
and macOS warnings are not promoted to passes. KVM is unavailable locally
and remains a CI gate. Maintainer acceptance of scope and privileged
semantics, final Ready and merge remain separate.

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

github-actions Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

This pull request changes existing tests

It modifies or removes 11 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 capture in guest::activation::tests, impl System for FakeSystem`` nvx-rs/src/guest/activation/tests.rs:299 nvx-rs/src/guest/activation/tests.rs:307
modified helper fn capture_in_each_mode in guest::time::api::tests nvx-rs/src/guest/time/api/tests.rs:564 nvx-rs/src/guest/time/api/tests.rs:764
modified helper struct FakeOps in guest::time::system::tests nvx-rs/src/guest/time/system/tests.rs:19 nvx-rs/src/guest/time/system/tests.rs:46
modified helper fn new in guest::time::system::tests, impl FakeOps`` nvx-rs/src/guest/time/system/tests.rs:57 nvx-rs/src/guest/time/system/tests.rs:92
modified helper fn set_permission in guest::time::system::tests, impl PortBackend for FakeOps`` nvx-rs/src/guest/time/system/tests.rs:127 nvx-rs/src/guest/time/system/tests.rs:166
modified helper fn write_kernel_log in guest::time::system::tests, impl PrivilegedOps for FakeOps`` nvx-rs/src/guest/time/system/tests.rs:191 nvx-rs/src/guest/time/system/tests.rs:238
modified helper fn write_console in guest::time::system::tests, impl PrivilegedOps for FakeOps`` nvx-rs/src/guest/time/system/tests.rs:195 nvx-rs/src/guest/time/system/tests.rs:246
modified test fn the_live_system_finds_windows_and_block_devices_in_procfs_and_sysfs in guest::activation::tests nvx-rs/src/guest/activation/tests.rs:970 nvx-rs/src/guest/activation/tests.rs:978
modified test fn a_preparation_that_may_leave_port_permission_fails_with_its_suppression in guest::time::api::tests nvx-rs/src/guest/time/api/tests.rs:272 nvx-rs/src/guest/time/api/tests.rs:293
modified test fn a_capture_refuses_an_entropy_path_with_a_nul_byte_before_its_transaction in guest::time::api::tests nvx-rs/src/guest/time/api/tests.rs:361 nvx-rs/src/guest/time/api/tests.rs:561
removed imports the imports of guest::activation::mounts::tests nvx-rs/src/guest/activation/mounts/tests.rs:1

Relocated unchanged: 6; added: 55. Compared the merge base 81f58751f777 with 3a7bd293fbc3.

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

Blocking diagnostic writes in checks.record can stall a failed pre-request check indefinitely, preventing capture from returning its strict failure disposition despite deadline expiry.

1 open issue
What changed in this PR

Adds the Fresh snapshot capture API for #1105, composing guest preparation under one pre-request deadline while preserving the existing activation interface.

Changes:

  • Adds staged capture failures and continuation dispositions, with shared deadlines for preparation, nested locks, and rollback.
  • Moves mount parsing and MMIO device identities into guest::snapshot, with regression coverage and API documentation.
  • Adds bounded retries for transient Windows artifact-publication rename failures without redownloading.
File Description
scripts/​test_performance.py Tests Windows rename recovery, deadlines, and destination preservation.
scripts/​nvx_tools/​performance_history.py Retries transient Windows rename denials within bounded limits.
nvx-rs/​src/​guest/​time/​system/​tests.rs Tests suppression locking and rollback deadlines.
nvx-rs/​src/​guest/​time/​system.rs Propagates deadlines through time-state and detector operations.
nvx-rs/​src/​guest/​time/​checks.rs Adds deadline-aware capture checks and boot-check waits.
nvx-rs/​src/​guest/​time/​api/​tests.rs Tests strict preparation and final capture-lock expiry.
nvx-rs/​src/​guest/​time/​api.rs Adds bounded preparation and capture preflight handling.
nvx-rs/​src/​guest/​sys/​fd/​tests.rs Tests lock timeout and expired-deadline behavior.
nvx-rs/​src/​guest/​sys/​fd.rs Adds deadline-aware file-lock acquisition.
nvx-rs/​src/​guest/​snapshot/​tests.rs Tests capture sequencing and failures; receives parser tests.
nvx-rs/​src/​guest/​snapshot.rs Implements Fresh capture and owns mount classification.
nvx-rs/​src/​guest/​root.rs Corrects documentation links only.
nvx-rs/​src/​guest/​mod.rs Exposes and documents the snapshot module.
nvx-rs/​src/​guest/​activation/​tests.rs Adapts fixtures to shared capture operations.
nvx-rs/​src/​guest/​activation/​mounts/​tests.rs Removes parser tests relocated to snapshot.
nvx-rs/​src/​guest/​activation/​mounts.rs Removes the parser relocated to snapshot.
nvx-rs/​src/​guest/​activation.rs Retains compatibility through shared snapshot operations.
nvx-rs/​README.md Documents capture deadlines, failures, and transport responsibilities.
nvx-rs/​public-api/​linux.txt Records the snapshot API and deadline error variant.

Review effort: Balanced

Comment thread nvx-rs/src/guest/time/checks.rs Resolved

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

Strict preparation can lose an earlier diagnostic port-revocation failure after a later successful release, returning a strict violation instead of the original PortRelease and breaking cause preservation.

1 open issue
1 resolved since last review

Review effort: Balanced

Comment thread nvx-rs/src/guest/time/api.rs Resolved

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 PR exceeds the explicit 600-line scope limit and changes privileged capture semantics, leaving maintainer scope confirmation, exact-head KVM CI, and end-to-end qualification outstanding.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@esaurez

Copy link
Copy Markdown
Contributor Author

Response to the current-head review of a84f797d:

The original 600-core-line task limit was explicitly amended to 790 capture core lines in the same seven Rust production files, plus the separately approved 20-core-line Windows performance-artifact correction. The complete current delta is 786 + 20 = 806 core lines, below the amended 810 total. The mixed parser extraction is fully charged, and no additional Rust production owner or restored-repair feature was added. This confirms the approved task scope, not maintainer approval.

The PR body's Validation section records exact-source local Rust/API/CLI/quality checks, independently clear code review, rebuilt guest-image provenance, both WHP and MSHV complete 156-case runtime suites, and Alpine, Ubuntu and Azure Linux end-to-end scenarios on both backends. The earlier failures and platform skips remain disclosed; none is promoted to a current pass.

The review confirms no open code issues and resolution of the port-revocation finding. Its remaining maintainer-acceptance and exact-head KVM CI caveats are retained: KVM was unavailable locally, and no CI pass or merge clearance is claimed. The PR remains Draft; this clarification requests no state change, CI rerun or further review.

@esaurez
Enrique Saurez (esaurez) force-pushed the esaurez/slim-2.4.2-sl7.3-20261107 branch 3 times, most recently from 7fe700f to 2b5b44f Compare November 9, 2026 06:20
Enrique Saurez and others added 12 commits November 8, 2026 23:27
Keep one canonical mount parser and MMIO-value device identity under guest::snapshot while retaining the legacy activation caller shape.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Compose mount and strict time preparation with one explicit pre-request deadline, including runtime locks and suppression rollback. Clear the deadline before the capture request and report whether the caller may resume or must end the guest. Keep the existing activation capture interface and reject unexpected Fresh restore network settings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Keep caller timeouts distinct from conformance failures, retain the boot-check stage, and accept successful detector restoration without a post-completion timeout. Correct the deadline error conversion and make focused expiry tests force the relevant step deterministically.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Route the unbounded branch through the existing Sys facade, keeping its legacy blocking primitive in use without changing bounded acquisition or widening the seven-owner scope.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Record the repository-generated Linux API inventory for the new canonical capture types and TimeError::Deadline. The Windows inventory is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Apply only the six compiler-suggested redundant-link removals under scoped producer request bd218a74/84c50b3a. Production logic, imports, attributes, signatures and public API are unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Carry the caller deadline through the final port-B lock and clear it only at the snapshot-port write. Preserve bounded rollback and truthful pre-request failures, while keeping issued requests and their release unbounded and legacy callers unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
…diagnostic style

Keep the actual privileged final-lock witness without print_stderr, matching the existing out-of-line guest-test writers. The bounded-lock assertions and production source remain unchanged.

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

Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Keep verified artifact publication atomic and retry only Windows access/sharing denials, within the existing fetch deadline and a one-second bound. Preserve permanent failures and destination guards; add focused regressions without weakening existing tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Keep bounded capture failure diagnostics nonblocking, including the kernel log, console and reopened stderr, without changing shared stream flags. Preserve blocking legacy diagnostics and the original strict failure status when output or its reporting lock cannot proceed. Cover full owned pipes, unchanged stream flags, expiry, legacy writes and reporting-lock contention.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Satisfy the existing private-item documentation lint without changing the deadline, output or strict-failure logic.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Keep the first revocation errno in each Runtime before later diagnostic transactions can clear the current thread marker. Strict preparation prioritizes that original failure over a strict violation, including failed grant rollback and sample-release paths. Preserve the existing deadline, suppression and legacy call behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Enrique Saurez and others added 2 commits November 8, 2026 23:27
The first focused musl test build failed before executing because the new test referred to C13 and C14, while the ABI defines C1 through C12. Use C11 and C10 for the later diagnostic events; retain all original error, status, suppression and successful-revocation assertions. No production behavior changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
Retain a pending thread revocation before a later grant can clear it. For bounded Fresh capture, prefer that original cause at the actual preparation and capture finalizers, even after the request cleared its deadline. Preserve legacy capture behavior and unbounded post-request cleanup. Exercise dropped permission followed by repair diagnostics and the real preparation finalizer; replace unnecessary sample-specific instrumentation with the common pre-grant guard.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2610ed93-496e-4bc8-b990-ea9b49ab3462
@esaurez
Enrique Saurez (esaurez) force-pushed the esaurez/slim-2.4.2-sl7.4a-20261107 branch from a84f797 to 9659385 Compare November 9, 2026 07:31
@esaurez
Enrique Saurez (esaurez) changed the base branch from esaurez/slim-2.4.2-sl7.3-20261107 to esaurez/slim-2.2.2-sl2.11a-rebase-20261109 November 9, 2026 07:40
@esaurez
Enrique Saurez (esaurez) requested a balanced review from Copilot November 9, 2026 07:40
@esaurez
Enrique Saurez (esaurez) marked this pull request as ready for review November 9, 2026 07:45
@esaurez
Enrique Saurez (esaurez) marked this pull request as draft November 9, 2026 07:45

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.

Comment thread nvx-rs/src/guest/time/api.rs Resolved
Comment thread nvx-rs/src/guest/snapshot.rs Resolved
Comment thread scripts/test_performance.py Resolved
Stream the mount table's fixed and optional fields without collecting them
while retaining its byte-level grammar and owned values. Describe time
deadline expiry without restricting it to capture preparation.

Put artifact publication retries behind one deadline condition without
retrying downloads, preserving the initial rename and original failure.
Use signature-checked rename fixtures and cover an overslept retry delay.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 9c65af75-7c5d-43dc-ab6d-1e9356ed0982

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

Changes to privileged I/O permissions, detector rollback, and fatal-failure handling require maintainer validation and pending current-head runtime qualification beyond static review.

No open issues 🎉

4 resolved since last review

Review effort: Balanced

@esaurez
Enrique Saurez (esaurez) marked this pull request as ready for review November 9, 2026 18:41
Base automatically changed from esaurez/slim-2.2.2-sl2.11a-rebase-20261109 to feature/nvx-refactor November 9, 2026 18:53
@ppenna
Pedro Henrique Penna (ppenna) merged commit 3a7bd29 into feature/nvx-refactor Nov 9, 2026
168 of 170 checks passed
@ppenna
Pedro Henrique Penna (ppenna) deleted the esaurez/slim-2.4.2-sl7.4a-20261107 branch November 9, 2026 20:36
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