Repository navigation
install: read releases via get-release signed URLs - #52
Merged
Merged
Conversation
The releases bucket is going private. Manifests and artifacts now resolve the object path from the /public/ URL (host-checked), trade the stored PAT for a signed URL at get-release, and download that. 401/403/404 and a missing token give explicit errors. $SIMANTIC_RELEASES_URL still reads directly for staging mirrors. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Contributor
Author
|
Linked release-gate PRs (merge in this order; bucket flip LAST, after all clients are released):
|
…mpat Artifacts are read from `path` and passed straight to get-release. Old public-URL manifests and clients are intentionally unsupported. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
PRODUCTS["sim"] is now "pyrite". Remove install_engine, ENGINE_KEY and the engine_dir fetch fallback (they read the cli/ manifest). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
ShahriarAhnaf
marked this pull request as ready for review
October 18, 2026 21:44
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.
Depends on simantic-dev/supabase#80 (get-release). Do not merge until that is deployed; the bucket flip to private happens last.
Manifest contract (shared by pyrite, pippy, homepage): every artifact entry in
latest.json/latest.signed.json/versions.jsoncarriespath(bare object path in the releases bucket, e.g.cli/0.4.0/osx-arm64/sim.zip) instead ofurl.Old clients break by design (user decision 2026-10-15): the
/storage/v1/object/public/releases/URL compatibility is dropped. A manifest entry with onlyurlis rejected ("no build"), and nothing strips prefixes or pins the manifest host any more.What this does:
pathis passed straight toget-release?path=with the PAT from~/.sim_id; manifests are fetched the same way (<product>/<channel>.signed.json).pathis refused if missing/empty, absolute, containing.., a backslash, or a scheme. The signed URL returned by get-release must be https. 401 says to re-runsimantic auth, 403 shows the server message. Manifest signature and sha256 checks are unchanged.object_path()andRELEASES_URLare removed; only the Supabase origin remains for the get-release call.SIMANTIC_RELEASES_URLis kept: it is a staging / local-directory rehearsal override, not a public-URL mirror, and now reads<base>/<path>directly with no token.Tests: full suite 201 passed, 7 skipped (uv throwaway venv). Not run: against a live get-release.
C#
cli/product retired (user decision 2026-10-15): the SDK no longer reads thecli/prefix.PRODUCTS["sim"]is nowpyrite(manifestspyrite/<channel>.signed.json;$SIMANTIC_CHANNEL, signature, sha256 andchecked_pathunchanged). Removed public names:install.install_engine,install.ENGINE_KEY;simantic install engineis gone (default install issim+engine-rust);engine_dir()no longer fetches, it only finds a local/managed engine. The in-process Renode backend (backend="renode", default) is left in place and now only works with a locally supplied engine; removing it is a separate decision. Tests: 197 passed, 7 skipped (throwaway uv venv, deleted). Not run: live get-release, real pyrite manifest.Manifest keys:
simresolvessim-<rid>and the rust engineengine-rust-<rid>, matching pyrite's release-engine-rust.yml output; a test uses a manifest shaped like it. Tests now 198 passed, 7 skipped.🤖 Generated with Claude Code