Skip to content

install: read releases via get-release signed URLs - #52

Merged
ShahriarAhnaf merged 4 commits into
mainfrom
agent/regate-7c2e
Oct 18, 2026
Merged

ShahriarAhnaf merged 4 commits into
mainfrom
agent/regate-7c2e

Conversation

@ShahriarAhnaf

@ShahriarAhnaf ShahriarAhnaf commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

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.json carries path (bare object path in the releases bucket, e.g. cli/0.4.0/osx-arm64/sim.zip) instead of url.

Old clients break by design (user decision 2026-10-15): the /storage/v1/object/public/releases/ URL compatibility is dropped. A manifest entry with only url is rejected ("no build"), and nothing strips prefixes or pins the manifest host any more.

What this does: path is passed straight to get-release?path= with the PAT from ~/.sim_id; manifests are fetched the same way (<product>/<channel>.signed.json). path is 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-run simantic auth, 403 shows the server message. Manifest signature and sha256 checks are unchanged. object_path() and RELEASES_URL are removed; only the Supabase origin remains for the get-release call.

SIMANTIC_RELEASES_URL is 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 the cli/ prefix. PRODUCTS["sim"] is now pyrite (manifests pyrite/<channel>.signed.json; $SIMANTIC_CHANNEL, signature, sha256 and checked_path unchanged). Removed public names: install.install_engine, install.ENGINE_KEY; simantic install engine is gone (default install is sim + 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: sim resolves sim-<rid> and the rust engine engine-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

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>
@ShahriarAhnaf

Copy link
Copy Markdown
Contributor Author

Linked release-gate PRs (merge in this order; bucket flip LAST, after all clients are released):

  1. simantic-dev/supabase#80 (get-release + release_downloads)
  2. simantic-dev/pyrite#1169 (sim update)
  3. install: read releases via get-release signed URLs #52 (pip install)
  4. simantic-dev/homepage#195 (install.sh + dashboard)

ShahriarAhnaf and others added 3 commits October 15, 2026 22:32
…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
ShahriarAhnaf marked this pull request as ready for review October 18, 2026 21:44
@ShahriarAhnaf
ShahriarAhnaf merged commit ec1aa70 into main Oct 18, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant