Uh oh!
There was an error while loading. Please reload this page.
fix(sandbox): order sidecar provider updates by generation - #2849
Conversation
E2E Test AttestationLocal E2E tests passed on the rebased PR commit. CI does not currently run this focused E2E test, so this comment serves as the verification record.
Test SummaryTests Executed
The strengthened live-update assertion verifies unbound → bound OpenShell placeholder → unbound state across fresh execs without printing credential or placeholder values. The ephemeral k3d cluster was deleted by the test wrapper. |
johntmyers
left a comment
There was a problem hiding this comment.
gator-agent
PR Review Status
Validation: Project-valid focused fix for accepted issue #2847; the author is a verified maintainer.
Head SHA: 9ccee5c8e87327268ea765aa9b8c0893c735dae3
Base SHA: b2ea81822bb5263679ed00ff0fbe8c08577abab5
Merge base SHA: b2ea81822bb5263679ed00ff0fbe8c08577abab5
Patch ID: a521e877e4a694966c9c656ea5eeefa48259db1e
Gator payload: 4
Review mode: initial
Previous reviewed SHA: none
Review budget exhausted: no
Maintainer decision required: no
Blocking findings:
- No blocking findings remain
Carried findings:
- None
Non-blocking suggestions:
- None
Docs: Fern docs are not needed because this is an internal sidecar delivery-ordering correction with no direct user-facing UX or published API change; the architecture invariant is documented in architecture/sandbox.md.
Next state: gator:in-review pending required E2E dispatch.
Label |
9ccee5c to
ac9b9a9Compare🌿 Preview your docs:https://nvidia-preview-pr-2849.docs.buildwithfern.com/openshell |
johntmyers
left a comment
There was a problem hiding this comment.
gator-agent
PR Review Status
Validation: Project-valid focused fix for accepted issue #2847; the author is a verified maintainer.
Head SHA: ac9b9a9151d90db06d5824451359ee58b2fecdb8
Base SHA: ef296806f52c03956a4bb7ce9a384105160f9c6a
Merge base SHA: ef296806f52c03956a4bb7ce9a384105160f9c6a
Patch ID: bbb00095b42ba24f8d736006e12335b88bf698d5
Gator payload: 4
Review mode: follow_up
Previous reviewed SHA: 9ccee5c8e87327268ea765aa9b8c0893c735dae3
Review budget exhausted: no
Maintainer decision required: no
Thanks @johntmyers. I checked your current-head E2E attestation for the unbound → bound → unbound fresh-exec path, and reviewed the author-only rebase delta against the new main-process session integration.
Blocking findings:
- No blocking findings remain
Carried findings:
- None
Docs: Fern docs are not needed because this is an internal sidecar delivery-ordering correction with no direct user-facing UX or published API change; the architecture invariant is documented in architecture/sandbox.md.
Tests: test:e2e is applied. Current-head Branch Checks completed successfully, and current-head E2E run 32425060215 is in progress.
Next state: gator:watch-pipeline
Closes#2847 Separate sidecar delivery ordering from opaque provider environment fingerprints and cover live bind/unbind convergence. Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
ac9b9a9 to
37b3ddaComparejohntmyers
commented
Aug 21, 2026
Monitoring CompleteHead SHA: Monitoring is complete because this PR has merged. Final status: The PR merged after gator review reached I removed the active |
Summary
Fix process/network sidecar provider-environment convergence by separating delivery ordering from the opaque digest-derived revision. The network supervisor now assigns a connection-local monotonic generation to each distinct snapshot, and the process supervisor applies only newer generations.
Related Issue
Closes#2847
Changes
crates/openshell-sandbox/src/sidecar_control.rs: carry a provider-environment generation through bootstrap and updates; serialize generation assignment, state mutation, and publication; suppress only the current fingerprint.crates/openshell-sandbox/src/lib.rs: order process-side installs by generation and retain the fingerprint as snapshot identity.e2e/rust/tests/credential_gating.rs: verify a fresh exec transitions safely through endpointless provider unbound → bound → unbound states without sandbox recreation.architecture/sandbox.md: document the fingerprint and delivery-generation invariants.Deviations from Plan
None — implemented as planned. The final review strengthened the E2E placeholder assertion and replaced timing-based replay checks with FIFO barriers.
Testing
mise run pre-commitpassesTests added:
cargo test -p openshell-sandbox— 122 passed across library, binary, and integration targets; includes descending fingerprints, duplicate suppression, A → B → A, and stale-generation replay.sidecar_control.rs.OPENSHELL_E2E_KUBE_TEST=credential_gating mise run e2e:kubernetes:sidecar— 1 passed; verifies unbound → bound placeholder → unbound convergence in the Kubernetes sidecar topology without exposing credential values.Checklist
Documentation updated:
architecture/sandbox.md: documented the sidecar provider environment ordering contract.