Skip to content

feat(compute)!: bind admitted policy to launch generations - #5121

Open
shiju-nv wants to merge 2 commits into
NVIDIA:feat/frozen-sandbox-policy/shiju-nvfrom
shiju-nv:feat/5109-generation-launch-policy/shiju-nv
Open

shiju-nv wants to merge 2 commits into
NVIDIA:feat/frozen-sandbox-policy/shiju-nvfrom
shiju-nv:feat/5109-generation-launch-policy/shiju-nv

Conversation

@shiju-nv

@shiju-nv shiju-nv commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

A launch retry or gateway recovery must use the policy admitted for that generation, even if policy changes later. This captures and retains that policy when the generation is claimed. Ordinary sandboxes can take a new static policy after stopping when the driver supports the contract; frozen sandboxes keep their original accepted snapshot.

Related Issue

Closes #5109. Part of #5114.

Depends on corrected frozen-policy PR #4735. Review this layer against feat/frozen-sandbox-policy/shiju-nv. For the fork-based series, land the parent first, then replay only this layer onto the resulting main.

Changes

  • Add StartSandbox.launch_policy at field 10, preserving resume fields 7/8 and the durable sandbox snapshot at field 9.
  • Hold the existing global, workspace and sandbox mutation scope through effective-policy capture and generation claim, then release it before driver operations.
  • Validate the retained generation, policy size and digest. Reject a launch whose required retained input is missing.
  • Retain frozen policy and provider authorization across restart, including rejection of policy edits while stopped.

Release Notes

Source-breaking API addition for the next minor release only. Complete raw Rust status literals need launch_policy: None or defaults. Upgrade gateway writers together. If a negotiated launch loses its retained input, stop and explicitly start the sandbox to claim a new generation; retries do not invent replacement input. Maintainers must seed and qualify the minor train before landing; do not merge or backport this into the active patch train.

Testing

  • Checks appropriate to the affected code and behavior pass
  • Unit tests added/updated (if applicable)
  • E2E tests added/updated (if applicable)

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (if applicable)

Capture live policy with the generation claim under shared policy/provider mutation fences. Retain the admitted input for retries and recovery, preserving frozen snapshot precedence.

Closes NVIDIA#5109

Depends on corrected PR NVIDIA#4735.

BREAKING CHANGE: Complete raw SandboxStatus literals must initialize launch_policy or use generated defaults. Upgrade gateway writers together and qualify the next minor release.

Signed-off-by: Shiju <shiju@nvidia.com>
@shiju-nv shiju-nv added the test:e2e Requires end-to-end coverage label Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown

Label test:e2e applied for e0723be. Open the existing run and click Re-run all jobs to execute with the label set. The run will execute the standard E2E suite after building the required gateway, sandbox, and supervisor images once. The matching required CI gate status on this PR will flip green automatically once the run finishes.

@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown

Compatibility review (advisory)

New or updated breaking changes; see the full report for all findings.

1. rust-sdk — No explicit risk acceptance found

SDK-exposed SandboxStatus and compute::v1::StartSandboxRequest gain launch_policy, which was absent from their baseline exhaustive struct shapes.

  • Impact: Existing Rust SDK consumers constructing either type exhaustively fail to compile with missing-field errors, even without using frozen policies or negotiating launch-policy support.
  • Action: Preserve both public struct shapes in v0.1.7, or defer the additions to a qualified minor train with launch_policy: None/defaults migration guidance for both types.
  • PR: feat(compute)!: bind admitted policy to launch generations #5121
Review details
  • Execution: complete
  • Candidate: PR #5121 (c6e9e6a457a335a19972119982c60d9d5014c2a9)
  • Baseline: c92c2c7983b1307715f6a922366dd3759e41b35b (c92c2c7983b1307715f6a922366dd3759e41b35b)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

Check an explicit resource version against the locked sandbox snapshot before policy deduplication. Preserve zero-version compatibility and lifecycle fencing. The existing concurrent-backfill regression now rejects both stale requests.

Refs NVIDIA#5109

Signed-off-by: Shiju <shiju@nvidia.com>
@shiju-nv
shiju-nv force-pushed the feat/5109-generation-launch-policy/shiju-nv branch from e0723be to 23c1149 Compare November 2, 2026 14:46
@shiju-nv
shiju-nv changed the base branch from main to feat/frozen-sandbox-policy/shiju-nv November 2, 2026 14:46

This branch has not been deployed

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

Labels

test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(compute): bind the admitted policy to each launch generation

1 participant