Dashboard › cli › Distillation
029a755f-bdb8-4866-a7d9-b82cf047e06d["lore_tm_v1_x85tuocYPOXDfKqnvaQx8lYHkYdSWeb4VUJmppwCUkY","lore_tm_v1_VVbhZ_0ldmX5HO0tnojUZlynC5TfHSnhZdEKyzW_Uso"]
π‘ (21:01) Repository investigation found no implemented UPGRADE_SOURCES list and no Toolkit fallback; stable downloads, nightly downloads, delta metadata, and release publishing all use only getsentry/cli.
π‘ (21:01) Canonical shell installer is /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/install; nightly GHCR logic is at lines 213β274, with token scope repository:getsentry/cli:pull at line 224, manifest path /v2/getsentry/cli/manifests/nightly at line 234, and blob path /v2/getsentry/cli/blobs/${digest} at line 268.
π‘ (21:01) Stable GitHub logic in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/install is at lines 276β303: latest release API /repos/getsentry/cli/releases/latest at line 280, release asset base github.com/getsentry/cli/releases/download/... at line 292, and lines 296β303 try gzip then raw from the same repository. Setup delegation is at lines 308β333. No repository array, source abstraction, or HTTP-404-based repository fallback exists.
π‘ (21:01) Published website installer /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/apps/cli-docs/public/install is a Git symlink with mode 120000 targeting ../../../packages/cli/install; canonical /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/install is a regular executable with mode 100755. The installer is hand-written, the website copy follows it and cannot independently drift, and no generator writes either path.
π‘ (21:01) Docs build packages /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/apps/cli-docs/dist in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/ci.yml lines 883β960.
π‘ (21:01) Stable TypeScript source boundaries are in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/src/lib/binary.ts: getBinaryDownloadUrl() lines 145β153 and GITHUB_RELEASES_URL lines 155β157. No implementation symbol named UPGRADE_SOURCES exists.
π‘ (21:01) Nightly TypeScript source boundaries are in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/src/lib/ghcr.ts: GHCR_REPO = "getsentry/cli" lines 133β140, getAnonymousToken() lines 182β217, fetchManifest() lines 219β254, downloadNightlyBlob() lines 318β413, and tag listing lines 420β498.
π‘ (21:01) Future ordered-source consumers were identified in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/src/lib/upgrade.ts: fetchLatestFromGitHub() lines 367β400, fetchLatestNightlyVersion() lines 432β460, versionExists() lines 486β551, nightly/stable full downloads lines 656β755, and channel dispatch lines 952β970.
π‘ (21:01) Future ordered-source consumers were identified in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/src/lib/delta-upgrade.ts: stableSource() lines 122β130, nightlySource() lines 132β143, and stable release metadata fetch lines 155β178.
π‘ (21:01) Intended bridge contract appears only in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.lore.md lines 146β147: try Toolkit first, then getsentry/cli only after HTTP 404.
π‘ (21:01) Stable release configuration in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.craft.yml has GitHub artifact provider and targets at lines 8β35, registry download template pointing at getsentry/cli at line 26, and all Homebrew binary URLs pointing at getsentry/cli at lines 43β59. The github target has no alternate repository or dual-publish configuration.
π‘ (21:01) /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/release.yml lines 44β50 delegate release preparation to getsentry/craft@v2; there is no local publish.yml, so publication comes from Craft and .craft.yml.
π‘ (21:01) Stable delta generation in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/ci.yml lines 506β530 uses the current repository dynamically. After a repository rename this follows the new repository while .craft.yml still emits old getsentry/cli URLs; that split requires explicit dual-publication of stable assets, including patches.
π‘ (21:01) Nightly release encoding in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/ci.yml uses ghcr.io/getsentry/cli for previous-nightly download at lines 469β504, nightly push at lines 636β700, and delta patches at lines 701β751; line 690 annotates the OCI image source as GitHub getsentry/cli. Only one GHCR destination is published.
π‘ (21:01) Nightly cleanup in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/cleanup-nightlies.yml lines 30β62 knows only the old package.
π‘ (21:01) Two nightly publication risks were identified: generate-patches has continue-on-error in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/ci.yml lines 430β437, and publish-nightly is excluded from aggregate CI status at lines 962β975. Ordinary CI success therefore does not prove publication of nightly binaries or delta metadata.
π‘ (21:01) Installer is absent from generation commands in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/package.json lines 65β83; generate:docs runs only banner, parser, command-doc, skill, and docs-section generation.
π‘ (21:01) /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/script/generate-skill.ts lines 197β266 copies install commands from the getting-started page but neither inspects nor generates the shell installer.
π‘ (21:01) User-facing install commands retain the stable front door https://cli.sentry.dev/install in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/README.md lines 17β23, /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/apps/cli-docs/src/content/docs/getting-started.mdx lines 8β35, /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/apps/cli-docs/src/content/docs/index.mdx lines 23β31, and /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/apps/cli-docs/astro.config.mjs lines 106β120. These docs do not encode GitHub or GHCR binary sources and should remain unchanged during repository migration.
π΄ (21:01) Tool output showed /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/apps/cli-docs/src/content/docs/index.mdx lines 23β31 configure InstallSelector options in this exact order: 1. curl β curl https://cli.sentry.dev/install -fsS | bash; 2. brew β brew install getsentry/tools/sentry; 3. npx β npx sentry@latest; 4. npm β npm install -g sentry; 5. pnpm β pnpm add -g sentry; 6. bun β bun add -g sentry.
π‘ (21:01) Shell installer test /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/test/lib/install-script.test.ts lines 33β53 creates fake curl and gunzip executables in a temporary PATH; fake curl always emits a fake shell executable and ignores URL, options, and HTTP status, while fake gunzip is only cat.
π‘ (21:01) /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/test/lib/install-script.test.ts lines 59β108 run one fixed-version stable install and verify arguments passed to sentry cli setup; no installer test exercises latest-version lookup, nightly GHCR, request URL order, HTTP 404, non-404 failures, or repository fallback.
π‘ (21:01) Global test preload /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/test/preload.ts lines 113β141 blocks every unmocked external request.
π‘ (21:01) Upgrade tests in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/test/lib/upgrade.test.ts lines 148β164 replace globalThis.fetch and restore it after each test. Existing 404 behaviors are: GitHub latest 404 throws at lines 189β256; stable version existence maps 404 to false at lines 546β600; GHCR version existence treats manifest 404 or 403 as absent at lines 632β703; gzip asset 404 falls back to raw within the same repository at lines 1321β1348; both gzip and raw 404s fail at lines 1372β1381; and nightly mocks dispatch by URL and default unknown URLs to 404 at lines 1480β1640.
π‘ (21:01) GHCR tests in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/test/lib/ghcr.test.ts define the fetch mock helper at lines 24β32, currently expect manifest 404 to throw at lines 130β175, verify Azure redirect requests omit authorization at lines 237β365, and currently expect generic manifest 404 to throw at lines 369β410.
π‘ (21:01) Delta tests in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/test/lib/delta-upgrade.test.ts lines 795β921 use the same global-fetch pattern and default unknown URLs to 404. No existing installer, upgrade, GHCR, or delta test models ordered repository fallback.
π‘ (21:01) Recommended minimal drift guarantee, in exact order: 1. export one ordered TypeScript declaration export const UPGRADE_SOURCES = ["getsentry/toolkit", "getsentry/cli"] as const;; 2. add one clearly marked shell-installer array with the same repository slugs; 3. extend install-script.test.ts to import UPGRADE_SOURCES, parse the marked shell array, and compare exact values and order; 4. extend fake curl to log requested URLs and return scripted HTTP results; 5. add repository-fallback behavior assertions; 6. add packages/cli/install to the CI code path filter.
π‘ (21:01) Recommended fallback assertions are: primary success never contacts legacy; primary 404 contacts legacy next; 401, 403, 429, 500, and transport errors never trigger repository fallback; gzip 404 still triggers raw fallback within the same source; only a missing source advances to the next source; and nightly obtains a repository-specific token before fetching that repositoryβs manifest.
π‘ (21:01) Adding packages/cli/install to CIβs code path filter is required because /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/ci.yml lines 80β89 currently omit the installer. /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/docs-preview.yml lines 11 and 55 explicitly watch it, but that workflow only builds docs and never runs installer tests.
π‘ (21:01) Design alternatives: generating the entire installer was rejected as unnecessary machinery; chosen approach is a marked shell array plus exact parity and integration behavior tests because the existing public symlink already prevents website-copy drift and this provides the smallest merge-time guarantee.
π‘ (21:01) Additional parity defect: /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/install still detects musl and applies a -musl suffix at lines 152β193, using a musl-specific nightly filename at line 252 and stable filename at line 291.
π‘ (21:01) Current release flow produces no musl-named artifacts: /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/script/build.ts lines 58β76 defines build targets/package names with only OS and architecture, and lines 406β444 preserve those names during post-processing; /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/.github/workflows/ci.yml lines 104β113 has no musl matrix targets.
π‘ (21:01) Generated docs nevertheless claim Alpine/musl support in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/script/generate-docs-sections.ts lines 513β522. Consequently, a musl install requests assets the current release workflow never creates, and no installer test exercises this branch.
π‘ (21:01) Package-level validation scripts are defined in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/packages/cli/package.json lines 50β83: pnpm run test:unit (includes test/lib, therefore installer, upgrade, GHCR, and delta tests), pnpm run test:changed, pnpm run test:e2e, pnpm run typecheck, pnpm run lint, pnpm run build, pnpm run check:deps, pnpm run check:errors, pnpm run check:patches, pnpm run check:docs-sections, and pnpm run check:stale-refs.
π‘ (21:01) Root proxy scripts are in /home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus/package.json lines 10β43. There is no check:install, source-parity checker, shellcheck, or bash -n package script.
π‘ (21:01) Investigation made no file edits and ran no tests or builds.