fix: normalise the OpenShell version pin to a release tag - #48
Merged
Conversation
--openshell-version has never worked. OpenShell tags every release vX.Y.Z and its installer uses OPENSHELL_VERSION verbatim as the tag in the asset URL, so the value we documented -- `--openshell-version 0.0.97` -- asked for a release that does not exist: https://github.com/NVIDIA/OpenShell/releases/download/0.0.97/openshell.rb 404 https://github.com/NVIDIA/OpenShell/releases/download/v0.0.97/openshell.rb 200 and the install died with "the selected release may not include a Homebrew formula". Broken since the flag shipped in v0.2.7; found while testing against newer upstreams. Normalise a bare X.Y.Z to vX.Y.Z in both the Go path and install.sh. An explicit vX.Y.Z passes through, as does OpenShell's documented `dev` literal for the rolling build. Also record what the compatibility testing found. Verified live on OpenShell 0.0.111 and apple/container 1.2.2: create -> Ready -> exec -> delete, egress still blocked by policy, restart adoption intact. The contract gained four RPCs after v0.0.96 -- GetGatewayListenerRequirements, StartSandbox, EnsureWorkspace, DeleteWorkspace -- none of which this driver implements. Three are optional by construction: the gateway maps their Unimplemented back to Ok. StopSandbox/StartSandbox are not, but are reached only by the new `openshell sandbox stop`/`start` commands, or by lifecycle sweeps gated on the gateway_manages_lifecycle capability this driver does not advertise. README, STATUS.md and docs/CONTRACT.md now say so instead of implying the v0.0.96 contract is still current. Signed-off-by: Vyncint Ng <vyncint@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two things, both found by actually running against newer upstreams as asked.
--openshell-versionhas never workedOpenShell tags every release
vX.Y.Z, and its installer usesOPENSHELL_VERSIONverbatim as the tag in the asset URL. So the value our own README documented asked for a release that does not exist:…/releases/download/0.0.97/openshell.rb…/releases/download/v0.0.97/openshell.rb…/releases/download/0.0.111/openshell.rb…/releases/download/v0.0.111/openshell.rbReproduced exactly:
OPENSHELL_VERSION=0.0.111died withfailed to download …/0.0.111/openshell.rb; the selected release may not include a Homebrew formula, andv0.0.111installed cleanly. Broken since the flag shipped in v0.2.7 — the documented example never worked.Both the Go path (
update --all --openshell-version) andinstall.sh --openshell-versionnow normalise a bareX.Y.ZtovX.Y.Z. An explicitvX.Y.Zpasses through, as does OpenShell's documenteddevliteral.apple/container needs no such handling — its tags carry no
v(1.2.2), and-v 1.2.2worked as-is.Compatibility now verified against 0.0.111 / 1.2.2
Live on the reference machine, upgraded from 0.0.97 / 1.2.0:
setupclean; derivedsupervisor:0.0.111and pulled itReady→exec→Linux 6.18.15 aarch64, workload as uid 998000/blocked)reconciled sandbox record … reason=BackendReady, exec still worksNewer gateways are compatible by design, not luck. The contract gained four RPCs after v0.0.96 —
GetGatewayListenerRequirements,StartSandbox,EnsureWorkspace,DeleteWorkspace— and this driver implements none. Three are optional by construction; fromcrates/openshell-server/src/compute/mod.rs:StopSandbox/StartSandboxhave no such branch, but are reached only by the newopenshell sandbox stop/startcommands, or by lifecycle sweeps guarded ongateway_manages_lifecycle— a capability this driver does not advertise, so those sweeps early-return. Confirmed what a user actually sees:Clean failure of an unsupported command, nothing damaged.
DriverSandboxSpec.commandand.ttywere also added and are silently ignored.README, STATUS.md and
docs/CONTRACT.mdnow state this rather than implying the v0.0.96 contract is current, and the release footer advertises the tested range.Verification
go build,go test -race,golangci-lint(0 issues),shellcheck install.sh,goreleaser check,govulncheck/gosec/gitleaks— all clean. Unit test covers the normaliser including thedevand empty cases.