Repository navigation
host: join CLI store and strict snapshot inputs - #1444
Enrique Saurez (esaurez) wants to merge 6 commits into
Conversation
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
Port the scoped SL3.2b donor cf485b7 onto verified feature c52c710 without its historical producer history. Persist prepared capability and outputs before spawn, the matching process before commit, and every SavedVm field in the private runtime record. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: eb3cc7e0-f51e-45ed-b911-c7b214740e05
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
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are reported for the launch-persistence changes.
No open issues 🎉
What changed in this PR
This PR joins the strict snapshot reader and CLI launch-store inputs needed for #1114. Relative to the reader branch, it adds launch persistence only; named-snapshot storage and capture/restore commands remain separate work.
Changes:
- Add locked launch transitions that persist prepared state before spawn, record the process, and commit the saved VM.
- Add fixed journal/runtime records and bounded private-file operations using existing atomic-write helpers.
- Add tests for persistence, interrupted launches, failed transitions, malformed records, and file privacy.
| File | Description |
|---|---|
nvx-rs/src/host/cli/store/tests/launch.rs |
Tests launch persistence, failure handling, and unsafe-file refusal. |
nvx-rs/src/host/cli/store/tests.rs |
Registers the launch test module. |
nvx-rs/src/host/cli/store/record.rs |
Defines journal/runtime records and their serialization. |
nvx-rs/src/host/cli/store/mod.rs |
Wires new modules and documents launch persistence. |
nvx-rs/src/host/cli/store/launch.rs |
Implements pre-spawn journaling, process recording, and commit. |
nvx-rs/src/host/cli/store/files.rs |
Adds bounded private-file reads, replacement, removal, and syncing. |
Review effort: Balanced
797d300 to
4b29646
Compare
This pull request changes existing testsIt modifies or removes 52 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
... and 1 more, which the job's summary lists. Test policy
Relocated unchanged: 0; added: 52. Compared the merge base |
|
Superseded by merged #1433, #1440 and #1445. As the latter records, this input-only join had no independent logic: both producers are merged, and the named-store consumer was retargeted to Closing only this redundant PR. Its branch and source at |
Purpose and inputs
This is the explicit input join for issue 1114 / SL3.7a, not the named-snapshot implementation.
The ordinary two-parent merge preserves:
797d300557e54644f0a8e66ba729de0dcf1884fbfrom PR host: open strict private snapshot directories #1440.99d004572b8ffad55c48bd7885278457297cbda6from PR host: journal CLI launches and persist saved VM records (SL3.2b) #1433.4662351ccc22198ffe16b6935d157bee14a163c0, tree104125451b0230dc6edc8a0cb047146371fea31a.14dc4116ec7e57567633c4b7b07892aca3a58522.The base is PR #1440's actual published branch,
esaurez/issue1102-sl212b-20261110-6789d491. PR #1433 is an explicit secondary dependency, not an invented linear ancestor. Native stack metadata remains coordinator-owned.Scope
The merge is conflict-free: there are no hand-written resolutions. Relative to the reader, it adds exactly the CLI producer's six paths / 681 inserted lines. It neither replays the historical SL3.7a composed tree nor implements capture, restore, compatibility, or blockless drivers.
The named-store consumer is the separate Draft PR #1445 above this join, so its diff contains only its own slice.
Qualification
This exact joint tuple is independently locally qualified, and the coordinator accepted its receipts. Its own Linux 44-command and Windows 32-command applicable software matrices passed, including API/documentation/MSRV, CLI/store/locking, strict-reader privacy, and an actual isolated Linux root ownership-negative case (one passed, zero failed or ignored).
The initial Linux attempt failed because the recipe's temporary-directory prefix left too little room for Unix socket paths. Its failed logs are preserved. An explicitly authorized physical short-temp rerun passed all 44 commands on the unchanged commit; no source, assertion, ignore, deadline, or production socket limit changed.
A fresh native Opus 5.5 / max / long-context review verified the exact preserved-parent composition and the separate consumer's full test/helper bodies without blocking findings. These are this join's own receipts, not inherited producer or consumer test results.
This PR stays Draft. No full public CI run is admitted for this join, and Draft-skipped checks are not full proof. The first consumer is a software-only store/record slice with no claimed VM coverage.
Test changes
The comparison to the reader includes the secondary producer's new CLI launch-record tests and module wiring. The exact test-change inventory reports zero changes to existing tests and 16 added items; the repository's bot therefore removed the initially added
tests-modifiedlabel. That automated result is preserved. No assertions, ignores, deadlines, or runtime prerequisites are weakened by the join. Independent joint validation and exact-source review passed; the consumer's separate receipts remain associated with its own head.Related issue: #1114. This input join does not complete or close it.