Skip to content

nvx-rs slimming 4.2.2: the old clone path, template store and sandbox store are gone #1121

Closed

Description

Parent: #1087, in #1076. Needs: #1112, #1119, #1120. Unblocks: #1122, #1127. No PR of this group merges before the API-ready commit.

Leaving code only. Every PR in this group changes only code that this workstream removes from NVX: the old clone path, the template store, and the sandbox store with its supervisor, with the edits that remove references to it. Nothing that stays changes, and no later PR uses what these PRs change, so the size limits for kept code don't apply. Each PR still records its core lines and counted files, and its description opens with this note.

Goal. The old clone path, template store, leases, capture transactions, host::instance, the store-coupled supervisor and host::store, with their last records and identity types, are gone.

Notes.

PRs, in order. Each PR has one goal, leaves dev green, and names in its description each old test of its area as kept, rewritten or retired, with each change that check_test_changes.py reports. Its tests follow the repository's test layout: a module's unit tests, and the code that only they use, sit in its tests.rs or tests/ and move with it. The estimates count core lines (code, not comments, docs or tests) and counted files; each PR records its measured values. Each PR does what its Scope says and no more: a case, input or layout that its Scope doesn't name, and whatever "Not in this PR" lists, is out of scope. Address every review comment within the scope, and ask before acting on one that asks for more.

  1. SL6.2b: The old clone path is gone.

    • Objective: The old clone path has no remaining caller after the new restore and activation paths take over. Its records, planning, launch and reattachment code are deleted together with references and tests that exist only for that path.
    • Contents: Leaving code. Delete the clone records, the failure records, store-based reattach, CloneControl, the old clone launch, ClonePlan and CloneRequest. The stores' identity types, and the host::template aliases that the template store still uses, stay. The backward scan for OpenVMM's fatal line goes with the failure records.
    • Scope:
      • Delete the clone and failure records under nvx-rs/src/host/template/clone/, including the backward scan for OpenVMM's fatal line.
      • Delete store-based reattach, CloneControl, the old clone launch, ClonePlan and CloneRequest.
      • Remove the module declarations, exports and documentation references of the deleted clone path, with template/clone/tests.rs, template/clone/tests/{launch,restore}.rs and template/clone/{failure,launch,records}/tests.rs; the description retires each test that the Test changes report removes.
      • Keep the stores' identity types and the host::template aliases still used by the template store.
    • Not in this PR:
      • Rewriting, refactoring or improving any clone-independent code that stays.
      • Re-homing clone records, planning or reattachment in another module.
      • Adding a replacement clone API, compatibility aliases or migration readers.
      • Deleting store identities or template aliases; SL6.2a and SL6.1 remove them after their last users.
    • Approach: Delete the old clone modules and make only the import, export, module-list and test removals required by that deletion. Do not extract reusable pieces or preserve dormant APIs; retain the identity types and aliases that the next deletion still compiles against.
    • Done when:
      • The clone-record, failure-record, old clone-launch and store-based reattach tests are retired.
      • CloneControl, ClonePlan, CloneRequest and the backward fatal-line scan are absent.
      • The template store still builds with its existing identity types and aliases.
    • Needs: SL5.2, in nvx-rs slimming 4.1.2: the test adapter is gone #1119.
    • Estimate: 0 core lines (deletions), 2 counted files.
  2. SL6.2a: The template store is gone.

    • Objective: Nothing uses the template store after the old clone path is removed. The store, leases, capture transactions and store-only planning surface are deleted, while the retained time eligibility API remains.
    • Contents: Leaving code. Delete the template store, its leases, the capture transactions and TemplatePlan, the eligibility method that host::snapshot implements on the store's Generation, and the host::template aliases that nothing uses now. TimeContract::eligibility stays.
    • Scope:
      • Delete nvx-rs/src/host/template/store.rs and its store/ modules, leases and capture transactions, with their tests.rs files and template/plan/tests.rs; the description retires each test that the Test changes report removes.
      • Delete TemplatePlan and the template-store planning tests that only exercise it.
      • Delete the store Generation::eligibility implementation and its tests.
      • Remove the now-unused host::template aliases, module declarations, exports and references.
      • Keep TimeContract::eligibility and its tests.
    • Not in this PR:
      • Rewriting, refactoring or improving retained snapshot or time code.
      • Moving template-store leases, transactions or plans to another owner.
      • Adding a replacement template store or compatibility layer.
      • Changing TimeContract::eligibility; it remains the retained eligibility API.
      • Deleting the sandbox store or supervisor; SL6.1 does that next.
    • Approach: Remove the template-store subtree and its store-only plan and eligibility adapter, then delete only references made dead by those removals. Do not fold store behavior into snapshots or preserve aliases for hypothetical callers.
    • Done when:
      • Template-store, lease, capture-transaction and TemplatePlan tests are retired.
      • Only the store-specific Generation::eligibility tests leave.
      • TimeContract::eligibility and its tests remain unchanged.
      • No host::template alias remains solely for the deleted store.
    • Needs: SL6.2b, above.
    • Estimate: 0 core lines (deletions), 3 counted files.
  3. SL6.1: The sandbox store and its supervisor are gone.

    • Objective: The sandbox store, instance layer and store-coupled supervisor have no remaining users. They and their final store identities are deleted, leaving the low-level VM spawn lock and later launch cleanup in place.
    • Contents: Leaving code. Delete host::instance, the store-coupled supervisor with its public SpawnLock and lock_spawns, host::store, and the last lease and identity types: TemplateReference, StoreGeneration and activation::Identity. spawn_command stays until SL6.3, and host::vm::spawn's private lock stays. The host-layer assertions follow. The store and the supervisor are now split files, all deleted; platform/{linux,windows}/log_claim.rs and host::vm::spawn's support stay.
    • Scope:
      • Delete nvx-rs/src/host/instance/, host/store/ and host/supervisor/, with their module declarations, exports and tests.rs files; the description retires each test that the Test changes report removes.
      • Delete the supervisor's public SpawnLock and lock_spawns and the last store types TemplateReference, StoreGeneration and activation::Identity.
      • Remove tests/store.rs, tests/supervisor.rs, the instance integration cases and the corresponding host-module assertions.
      • Keep spawn_command until SL6.3 and keep host::vm::spawn's private lock.
      • Keep platform/{linux,windows}/log_claim.rs and the support used by host::vm::spawn.
    • Not in this PR:
      • Rewriting, refactoring or improving retained VM, platform or process code.
      • Re-homing the store, instance or supervisor APIs under new module names.
      • Adding replacement leases, identities, supervision or persistent host state.
      • Deleting spawn_command; SL6.3 removes it after the remaining old launch code.
      • Changing the private VM spawn lock or platform log-claim behavior.
    • Approach: Delete the three obsolete module trees and remove only references, assertions and tests tied to them. Preserve the low-level spawn and log-claim pieces at their current owners; do not create a smaller supervisor or store facade.
    • Done when:
      • The instance, sandbox-store and supervisor unit and integration tests are retired.
      • host::{instance,store,supervisor} and the three last identity types are absent.
      • The host-module assertions no longer expect the deleted modules.
      • spawn_command, the private VM spawn lock and platform log claims remain.
    • Needs: SL3.10b, in nvx-rs slimming 3.1.7: the CLI uses only the new interface #1112; SL5.2, in nvx-rs slimming 4.1.2: the test adapter is gone #1119; SL6.2a, above; SL6.0a, in nvx-rs slimming 4.2.1: the code that stays stops using what leaves #1120; SL6.0b, in nvx-rs slimming 4.2.1: the code that stays stops using what leaves #1120; SL6.0c, in nvx-rs slimming 4.2.1: the code that stays stops using what leaves #1120.
    • Estimate: 0 core lines (deletions), 3 counted files.

Tests. Each PR retires the tests of what it deletes. TimeContract::eligibility's tests stay. The host-layer assertions follow the deleted modules. The fake OpenVMM's cases, split from the instance suite in #1120, stay. Every other test passes unchanged.

Done when: every PR above has merged, with dev green.

Activity

  1. esaurez commented on Nov 10, 2026

    @esaurez
    ContributorAuthor

    Workstream source/progress checkpoint - 2026-11-10 UTC

    Checked boxes below mean merged scope, not merely an implemented first iteration. Implementation branches are source checkpoints, not automatic qualification, Ready or merge approval. Some starting inputs are frozen/anonymous commits rather than standalone branches; their exact SHAs and known merged producer refs are recorded explicitly.

    • SL6.2b - no completed first-iteration handoff recorded. Inspect any preserved partial/prior work before implementing the issue's scope.

    • SL6.2a - no completed first-iteration handoff recorded. Inspect any preserved partial/prior work before implementing the issue's scope.

    • SL6.1 - no completed first-iteration handoff recorded. Inspect any preserved partial/prior work before implementing the issue's scope.

    The original technical scope remains authoritative, supplemented only by any portable technical clarification in this issue. No machine-specific execution policy is part of this checkpoint.

  2. ppenna commented on Nov 12, 2026

    @ppenna
    Contributor

    SL6.1 scope decision: host::supervisor keeps only re-exports, until SL6.3.

    host::spawn and host::platform::inherit are crate-private. So spawn, spawn_vm, VmmCommand, Launched, Inherited and spawn_command are public only through host::supervisor. Code that stays uses them:

    • examples/external-launch.rs calls supervisor::spawn_vm (b2a70a3, 2026-11-10, after this group was planned);
    • tests/checked_handoff.rs, which case-matrix rows name as coverage;
    • the PreparedLaunch doctest.

    Deleting host/supervisor/ whole would break them, and would add public API or retire them early.

    Decision: SL6.1 deletes all supervision and store coupling: SpawnLock, lock_spawns, and the store-coupled launch, wait and stop. host/supervisor/mod.rs stays only as a transitional public path that re-exports those six items, with no code of its own. This adds no public API and changes no code that stays. It differs from this group's wording ("delete host/supervisor/", "no smaller supervisor facade") only in the module path. SL6.3 (#1122) settles the rest.

    The code that stays now uses host::store's file helpers and the instance's and the supervisor's identities from elsewhere. SL6.0d and SL6.0e (#1120) move it first.

  3. 29 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions