Repository navigation
Conversation
5b39e23 to
a4a5779
Compare
|
🌿 Preview your docs: https://nvidia-preview-pr-4624.docs.buildwithfern.com/openshell |
|
/ok to ok a4a5779 |
|
/ok to test a4a5779 |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. rust-sdk — No explicit risk acceptance found
2. rust-sdk — No explicit risk acceptance found
3. state — No explicit risk acceptance found
Review details
Advisory review; publication gates are unchanged. |
|
Addressed all three findings from the compatibility advisory in signed-off commit
Activation is deliberately default-off. Keep it disabled throughout rolling upgrades. Operators must retire/drain every incompatible process and outstanding driver operation and prevent old binaries from returning. PostgreSQL connection markers and fresh membership checks are fail-closed snapshots, not proof of uniformity or unrestricted mixed-version safety. SQLite remains single-gateway only. This does not risk-accept the advisory's original unrestricted mixed-version behavior. Verification:
The PR description now reflects this design and current evidence rather than the superseded pre-rebase validation. No merge, self-approval, or exact-head execution approval was performed. |
|
/ok to test eefa4da |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. rust-sdk — No explicit risk acceptance found
Review details
Advisory review; publication gates are unchanged. |
|
CI/review follow-up in
Verification after the fixes:
The two live controller retention runs documented above were executed at This new head needs fresh trusted-human exact-head CI authorization. I did not post |
|
/ok to test e2a4a6f |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. api-behavior — No explicit risk acceptance found
2. api-behavior — No explicit risk acceptance found
Review details
Advisory review; publication gates are unchanged. |
|
Addressed both findings from the latest compatibility advisory in signed-off commit
Verification:
Independent bounded read-only review reported no actionable issue in registration, remote setup, admission, tracing ownership, or unchanged intent fencing; that review did not independently rerun tests. The private durable image format and lifecycle interlock are unchanged. No compatibility risk acceptance, self-approval, |
8c83d22 to
e48057a
Compare
|
Rebased this PR onto current upstream The authorized history update used an exact-old-head lease against Rebase integration:
Fresh verification after rebasing:
The earlier two live Kubernetes retention passes were on pre-rebase New-head remote CI is separate from these local results and needs fresh trusted-human exact-head authorization. No self-approval or merge was performed. |
Add image-only UpdateSandbox with conditional versions, durable replay, fenced pending intent, and Kubernetes storage retention. Enable non-destructive image repair after completed timeout cleanup and exercise both Kubernetes controller API lanes. Closes #4623 Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
OpenClaw-Publication: b2036b09-b697-4d65-aba9-5c96a3198f9c Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
Move image updates to a separate authenticated service and retain the baseline public sandbox status. Persist image intent and revisions independently with atomic baseline-known lifecycle fencing and explicit post-upgrade activation. Preserve concurrent provisioning clocks, fence replaced attempts and delayed callbacks, and verify private-state transactions plus both Kubernetes controller API lanes. Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
Move image updates to a separate optional compute-driver service, preserving the baseline generated trait and streaming associated type. Add source and TCP/UDS transport regressions, capability negotiation coverage, and a default-unsupported in-process extension. Keep Go compatibility tests outside generated output and update production reflection expectations for the separate sandbox update service. Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
Restore the original in-process driver trait object and existing instance enum. Register optional image updates through a default factory hook without requiring changes to existing drivers or factories, and require registration plus capability before mutation. Accept OpenShell-only descriptors while retaining strict validation of present update services. Cover baseline registration, missing-updater no-write behavior, descriptor validation, and both live Kubernetes retention lanes. Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
Drop the task-level fallback superseded by main's runner defaults and explicit e2e-conformance-only selector. Preserve current upstream task definitions and recovery waiver unchanged. Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
Adapt non-launch image updates to the upstream remote admission API while retaining resource-policy verification before forwarding. Cover both negotiated extensions and preservation of backend pins and persisted launch identity. Signed-off-by: sjenning <493891+sjenning@users.noreply.github.com>
e48057a to
73b69ac
Compare
|
Rebased again onto current main Published with an exact-old-head lease against Integration details:
Fresh verification:
No live clusters were recreated for this rebase. Earlier live retention results belong to their explicitly documented pre-rebase source/runtime versions and are not fresh evidence for this backend-protocol update. New-head remote CI needs fresh trusted-human exact-head authorization. No self-approval or merge was performed. |
|
/ok to test 73b69ac |
Summary
Add an image-only
UpdateSandboxRPC for stopped Kubernetes sandboxes, preserving sandbox identity and persistent storage. The v0.1.5 redesign keeps the existingOpenShellservice and publicSandboxStatusshape unchanged and requires explicit activation after incompatible gateways and their outstanding work are retired.Related Issue
Closes #4623.
The author has verified MAINTAIN access to NVIDIA/OpenShell. The issue has no
state:acceptedlabel; the repository-writer exception applies. No acceptance or roadmap label was added.Changes
openshell.v1.SandboxUpdates/UpdateSandboxon the existing authenticated gateway listener, with workspace authorization, reflection, request interception, and a separate durable replay namespace. The generatedOpenShellserver trait does not gain a required method.ComputeDriverImageUpdatesservice on their existing endpoint, leaving the generated baselineComputeDrivertrait unchanged; existing linked in-process drivers keep the baseline trait object and factory implementation; supporting factories separately opt into image updates through a default factory hook.openshell.storage.image.v1format, independently of public sandbox payloads. Frozenopenshell.storage.v1remains unchanged.provisioning.driver_operation_pendingand operation ID as the lifecycle interlock. Failed application retains the fence; successful settlement preserves current diagnostics and clocks, retains the new operation ID against delayed callbacks, and rejects a replaced attempt.enable_sandbox_image_updatesto false, with TOML, environment, CLI, and Helm configuration guidance. Require retirement/draining of incompatible processes and their driver work and prevention of their return. PostgreSQL connection markers and fresh membership capability checks are additional fail-closed snapshot checks, not proof of uniformity or unrestricted mixed-version safety. SQLite supports a single gateway process only.Compatibility advisory disposition
This redesign addresses all three findings in the advisory, without accepting their original risks:
OpenShellimplementations compile without an added method. SDK transport tests cover coexistence and live authentication.SandboxStatusmatches the baseline exactly. An exhaustive Rust literal fixture compiles; generated-message/descriptor tests verify the old shape and absence of public image-state fields.Current rebase
Published head
73b69ac6bf691bb4a3132b74bd52521b4e41f0f4is based on freshly fetched main77929d9c1469068417825768c798dd81bd0e0d08, including the sandbox/isolation-backend protocol. This authorized update used an exact-old-head lease againste48057ad4; recovery refbackup/pr4624-pre-rebase-e48057ad4is retained.GitHub reports the rebased branch mergeable; fresh human CI authorization/review is separate. No self-approval or merge was performed. Prior rebase evidence: #4624 (comment). Earlier no-rewrite notes below describe their respective historical updates.
Compatibility corrections before the latest rebase
Signed-off commit
8c83d226e598f0a7b59d8d0f0f229e70834351baaddresses both remaining findings in the advisory, without accepting either risk:SharedComputeDrivergenerated trait object and preserveComputeDriverInstanceexactly. Existing factories implement onlybuild. The defaultbuild_with_image_updateshook delegates to that method once and registers no updater. Supporting factories opt in separately; both capability and registration are required before driver calls or durable mutation. Kubernetes registers its existing driver instance explicitly.OpenShelldescriptor service, but indexSandboxUpdatesonly when present. An absent extension adds no routes or message types. A present extension retains strict required-method/unary validation and its explicit interception allowlist.Verification for this correction:
ComputeDriver,OpenShell,SandboxStatusdefinitions compared against frozen base6546691d5e493343c7877573252e835d28bf9e23.The earlier records below remain historical evidence from their stated commits. Remote CI on the new head is not implied by these local results and may require fresh trusted-human exact-head authorization.
Testing
Earlier verification records (superseded where the current results above apply):
6546691d5e493343c7877573252e835d28bf9e23; protobuf lint, Rust/E2E formatting, and staged diff checks. The completeOpenShellservice andSandboxStatusmessage definitions also compare byte-for-byte equal to that base.image_update_retains_workspace_and_identityin the normal Kubernetes lane.eefa4dabf, live retention E2E passed with Agent Sandbox v1.0.3/v1beta1 and v0.4.6/v1alpha1: 1 test passed, 0 skipped in each fresh cluster. Both exact owned clusters were deleted and their containers were confirmed absent.The live fixtures use the locally built gateway and CLI with unchanged published trusted sandbox/supervisor runtime images pinned to
0.1.5-pre.3. They are isolated fresh clusters, not a mixed-version HA rollout experiment. Assertions cover workspace sentinel contents, sandbox/SSH identity, Sandbox UID, PVC UIDs, and replay retaining operation identity and revision.A repository-wide
buf format --diff --exit-codediagnostic reported existing noncanonical formatting across several baseline protobuf files; it was not used to rewrite unrelated files. The repository's protobuf lint and FILE-compatibility checks passed.CI and review follow-up
Signed-off commit
e2a4a6fb89649851ae9577f5fcf5c3f96e882403corrects the production-listener reflection assertion and moves hand-written Go tests outside generated output. It also addresses the additional compute-driver advisory through the separate optional driver service, with baseline trait/source fixtures and TCP/UDS transport and capability-negotiation coverage. No global default-stub generation changes the old streaming associated type.mise run go:cipassed, including generated-output freshness, lint, race tests, build, formatting, and docs.eefa4dabf; this follow-up is verified by the new transport and existing driver/runtime suites, not a repeated live cluster experiment.Fresh trusted-human exact-head execution authorization may be needed for remote CI. No self-approval,
/okposting, gate override, rebase, force push, or merge was performed.Checklist
No merge or review-gate override is requested. Remote CI status is reported separately after push.