Dashboard › cli › Distillation
7d16d4ec-254b-4aaa-a60e-789629cfa058["lore_tm_v1_cAXsCh432OSvJtDKpwbVqBnoUV_8JXTH9wY9KLWfwV4","lore_tm_v1_75lrk57SUCtUjreldD3TBHLLEoRYMA2KxFzcQ4QP9f4","lore_tm_v1_lXwq7abBRQ2Vd_xvLyTGzVXBKcuwZ5NFBim7W0zvnFE","lore_tm_v1_TmkQNfAFy5KMlb37jY42ZQ2aNvMXgVCRUTE6iCoXKXk","lore_tm_v1_LHAJGxrPRXZwndGuQPpKhvSLAH5jCZ4OBYo1KF7asmE","lore_tm_v1_ZVcXXytyqR5R-yCNTe3GQ2ciGFbkSSw_q-8oWc-ZEno","lore_tm_v1_WdB546A38W7ZZcsEOAgFvxh5aEH4FAUcmn8mI66RnBI","lore_tm_v1_HytqrSaij8uzmEqYww7OfHhfyWLmQzo2rpbF5y_R81k","lore_tm_v1_Nuy4QY8KsFzIR6hZvOyRCkObW98-aCMtkUra8EdtgxQ","lore_tm_v1_6jSIcQIdZBRin5qSDG7Bhl5XaVXF4ZRvFxnH9NpEDVI","lore_tm_v1_N3SAToWwB09Ht3selwdSSmhw2dr5yCASSUtdOVTbg-Y","lore_tm_v1_sXPWCF3jV28l1ryYP4UOs1xE2NI_zanbV3HWDYzJ6nA","lore_tm_v1_IgZ_mQ3Aw8Fcn9ql4Nqng72HZ0bZ1IXqOwlzaOlNCx8","lore_tm_v1_Vo6B2zL0H_I77UqPBkNDFYcggZApNuVi05vGANbWjOY","lore_tm_v1_yNaZ7n6k5LPKUKqCI1wSpiNuLTawGQUTbvegbXyLv_A","lore_tm_v1_wnsakoYl44mETByzWTt9SgFpi67HeZhmkMj1QJREXnE","lore_tm_v1_FjgT34IFynsY2fnMoSwTOTi78racWPi_poapCnK9GfY","lore_tm_v1_2IwQa_ASbFb10v-0eBHfEtJEmo0g4oeHQ3zsWrhbjRw","lore_tm_v1_b2UZ4cFetRJaO5HjraL1EtARs4PpAT87WNKji_-KUi8","lore_tm_v1__Ebl1JedIK5MduUvwvv2odBUijlmjX6KFHRcj3N5vXY","lore_tm_v1_4G9cvtCAxKjwBAe34I3dBmLodITjrYwYe4zA1Kagwz8","lore_tm_v1_lu8-62_HL-K6SpjP_80K11u59OQzEC00musSFv3C260","lore_tm_v1__DE8RWbvCtFlhZSXKC8fLmQ7AihA1PGr2xqiJ0QQssM","lore_tm_v1_jed7M9FpGvcy-Zs12boMB9mwOVK3MVu0vz1VXOK2bwU","lore_tm_v1_8xa2B6GVPspT4I7RzSkd2vQlkmnnKOUg3F1et71NHdI"]
Date: September 9, 2026
packages/cli/install script must always check the ordered upgrade sources exactly as: 1. getsentry/toolkit / ghcr.io/getsentry/toolkit, 2. getsentry/cli / ghcr.io/getsentry/cli.getsentry/cli; every migrated stable CLI release and nightly must therefore be dual-published to Toolkit and legacy CLI endpoints during the compatibility window.getsentry/cli before any CLI history is imported into getsentry/sentry-mcp; it must work before the Toolkit rename, discover Toolkit releases afterward, and preserve upgrades for older binaries through legacy endpoints.UPGRADE_SOURCES across src/lib/binary.ts, ghcr.ts, upgrade.ts, and delta-upgrade.ts; mirror ordered fallback in install; add a check: script proving installer/TypeScript source-order parity; preserve sha256-<binary> / from-version delta chains and cleanup/keep-count parity across both GHCR packages; configure post-migration Toolkit stable/nightly releases to publish to both repositories; keep getsentry/cli writable through the compatibility window.getsentry/cli using the release systemβs computed version, never a manually pinned target; 2. verify a pre-bridge binary upgrades to it through getsentry/cli; 3. verify the bridge binary handles a 404 from not-yet-existing getsentry/toolkit and upgrades through getsentry/cli; 4. verify identical installer behavior; 5. record the bridge version in getsentry/cli#1244; only then begin getsentry/cli#1239.getsentry/cli; 3. verify bridge and Toolkit-built binaries upgrade through getsentry/toolkit; 4. simulate Toolkit 404 and verify both new binaries fall back to getsentry/cli; 5. compare release assets, SHA-256 values, GHCR manifests, and delta-chain metadata and require exact matches; 6. repeat the matrix for the install script and one nightly.getsentry/cli may be archived only after telemetry and release evidence show the legacy endpoint is unnecessary, and must remain writable until then.packages/cli/test/lib/install-script.test.ts had 2 tests with 1 failure because packages/cli/install did not define UPGRADE_SOURCES; assistant planned source-selection and deterministic fake-curl coverage without modifying concurrent TypeScript work.packages/cli/install was modified, and packages/cli/test/lib/install-script.test.ts was replaced with expanded deterministic installer coverage using temporary fake curl and gunzip executables, recorded request URLs in SENTRY_TEST_REQUESTS_FILE, recorded setup arguments in SENTRY_TEST_ARGS_FILE, and scenario selection through SENTRY_TEST_SCENARIO.curl scenarios covered Toolkit stable listing, legacy latest release, exact Toolkit cli@... tags, exact legacy tags, Toolkit/legacy repository probes, GHCR token and nightly manifest/blob requests, redirect downloads, gzip downloads, HTTP 404 fallback, HTTP 403/429 non-fallback, and simulated network exits 6 and 7.v4.1.10 had 10 tests: 8 passed and 2 failed. "selects a nightly source before requesting source-specific GHCR data" did not record "nightly" in setup arguments; "passes setup options through to sentry cli setup" received one malformed string, "clinsetupn--installn--methodncurln--channelnstablen--no-modify-pathn--no-completionsn--no-agent-skillsn", instead of 10 separate arguments.packages/cli/test/lib/install-script.test.ts, the focused suite passed all 10 tests in 868ms: transform 285ms, setup 78ms, import 320ms, tests 274ms, environment 0ms.packages/cli/test/lib/install-script.test.ts:271-275, requiring the runInstaller(["--version", "nightly"], "nightly-fallback") call to be split across multiple lines; the test file was reformatted accordingly.packages/cli/src/lib/upgrade.ts showed stable resolution via fetchLatestFromGitHubWithSource() and resolveUpgradeSource({ getProbeUrl: getGitHubLatestReleaseUrl }), filtering non-draft/non-prerelease tags by source.tagPrefix; nightly resolution used resolveUpgradeSource({ getProbeUrl: getGitHubRepositoryUrl }), then source-specific getAnonymousToken(source) and fetchNightlyManifest(token, signal, source)."stops source selection on a non-404 response" to fail: exit code was correctly 1 and only that test ran, but stderr said "Failed to find a CLI release in getsentry/toolkit" rather than containing "HTTP 403"; 9 tests were skipped.packages/cli/install; checks then passed and all 10 focused installer tests passed in 1.37s, with transform 506ms, setup 117ms, import 564ms, tests 397ms, and environment 0ms.packages/cli/install and packages/cli/test/lib/install-script.test.ts, totaling 389 insertions and 54 deletions; install changed by 149 lines and the test changed by 294 lines.cli@VERSION; exact pinned-release probes; source selection before nightly GHCR requests; gzip-to-raw fallback constrained to the same selected source; non-blocking telemetry; and deterministic request-order/source-affinity tests.bash -n install passed, ShellCheck passed, Biome passed, focused Vitest passed 10/10 with 0 failures, and git diff --check passed. The deliberate non-404 regression failed as expected before restoration and passed afterward.packages/cli/src/lib/binary.ts, packages/cli/src/lib/delta-upgrade.ts, packages/cli/src/lib/ghcr.ts, packages/cli/src/lib/release-notes.ts, packages/cli/src/lib/upgrade.ts, packages/cli/src/lib/version-check.ts, and their corresponding tests; assistant stated these concurrent TypeScript changes were left untouched.test.poolOptions was removed in Vitest 4 and former pool options must be top-level.