Dashboard › cli › Distillation
f13bff8e-c7b7-4e71-b3d1-cf5b1d99d63d["lore_tm_v1_rqjFjs3Wz2Acc5lv9zOWad4JoOSjLTqKTiMp1K14yYM","lore_tm_v1_poxWgZsovwxpv-BrbrFz_hQLd8vwGeKGak7K35CpPE0","lore_tm_v1_VXRIcQDxqDf2zWUVGxFyuZf9dUUMOJ6r0MrG4pa9Y2s","lore_tm_v1_xf0dlUKNNS6fPJ8bcbChCiStGiAwkXIIpLXCEfbb4_k","lore_tm_v1_cWJUnCcuimUGK86KaUWnLzhd2guV6aj7Jy7EIchNjZY","lore_tm_v1_fQd9jzr8lgW_VeIKNUBIlDqxbJnTJCrt8UQXICpHers","lore_tm_v1_CzYDyz12mt06Z2LnFBVolidvEcn12NGiAws89pCMPVk","lore_tm_v1_bBTMPiAVq9BJZ3kX1hz5Z56sMgtQnKP9r0Rc3Fa6BVY","lore_tm_v1_fnLlzRZ1IFgNJs5vhnXgwcGqV4p-ouh3wCZ2q3cTCxQ","lore_tm_v1_rWWDIJB7eMkX3dmD2Nni25DLkRVVCO3p4tFRf88bLwQ","lore_tm_v1_uCc9XHGwwCVLK3oUUTxy_kF3Cn3u0xPs3T25P4JKZcA","lore_tm_v1_Tn7ZncrVyaCZRSTluNqZlaI2O7AXBdtkH8Tzg7_EfO0","lore_tm_v1_VWWWIlGnLi7s1Wl1qE0Vlo0w7Pq2tSv_PoIk8Eyguig","lore_tm_v1_d9Bm1K7UrYGNnNi1Bgkd6Qm3P_ybn15HY62wv5qS5w8","lore_tm_v1_R6F5IaRHJFTeh1YKEZmhW3rnlizLnh7T5x9UYB1XvNE","lore_tm_v1_SPPalC-g-452m4wDJGuKeyGLjOMidUfc5TrOofEJwaY","lore_tm_v1_E1W8TCX5bSYqBkSlkVjTtbqL1FJOk6j2h9ADgpqKctI","lore_tm_v1_O0qkCymQdG551Pdmx_MHP49mVM8JZOYPH8Ur_nhA9Jk","lore_tm_v1_Anqw71lTZQs86vS3nrn8QbzE9qunDNKs5sWxwVvUhus","lore_tm_v1_HjsmnL_ZxHL44fsSjCBrycJCrdidyCCQ_TYL4CGWrIo","lore_tm_v1_OUzvGrvLxUB7VFXyaG5CMehVQITsM7MfBz_AxbP1SVM","lore_tm_v1_Y70ZbBYOZ5Vv_P0kObZEksU_CacPBaoSaTzBJvfSN0k","lore_tm_v1_iNOfed7qDpBJh7YedHXUC1MT72kmAxZYS10mj-Q7kSM","lore_tm_v1_0GvViIUGRgIj466tQPLqoGVtqGqzgQG_wWzKdm2h2mg","lore_tm_v1_SUc8glZFM-43hYKT55-2fQlYtrgAT9OZxkuOQkSfhB0","lore_tm_v1_7CAyhB07R3T5XaaIMV-zhj8K8TFfJWs1gfTBNHs7-lk","lore_tm_v1_7jbxNv8yKCQyXXbs5Tq-8ikKak2EcIyph_Rnljy0nH8","lore_tm_v1_DQxvAgSdKkpXAdIpTOqsnxleKpgCdYWkQPZtyBtf1jI","lore_tm_v1_LZWFGGKPi4qmVfZ1ts3ITHz8TC4PvXII9VLj-2du4Kc","lore_tm_v1_2DeVc7dEP0P-a6VDt6mVr3--GbqUJdFCCe144Er4Mh8","lore_tm_v1_YuyrG1jJWE2ciSaRysTakVIUq8fXzZZ1LgyLslf2NmI","lore_tm_v1_aEKDa3pPe1U3sWquIx21G4lQWuEQP3L4xg_qxZxmaQ4","lore_tm_v1_65qkwoV3djzECNZIlNZb0IvXbmow_LQQ8vLUskXh50k"]
Date: Sep 10, 2026
packages/cli/src/commands/cli/upgrade.ts:221-235: automatic cache fallback treated every UpgradeError with reason === "network_error" as a transport outage, although that reason also represented HTTP 403/429/500 and invalid pinned-release metadata from packages/cli/src/lib/upgrade.ts:713-733. With a cached target and patch, a curl installation could therefore continue after authorization, rate-limit, server, or malformed HTTP-200 failures instead of terminating.packages/cli/src/lib/upgrade.ts:570-576 and stable package-manager routing at :661-670: any non-empty npm /latest version was accepted. A value such as 1.2.3-dev.123 could reach packages/cli/src/commands/cli/upgrade.ts:1075-1086 and migrate a stable npm installation to a Toolkit nightly binary; values such as 1.2.3-beta.1 could be installed as stable. Pinned package-manager targets likewise lacked stable-version validation before versionExists().prerelease(version) === null; every malformed or prerelease value must be rejected before execution or migration.-dev, beta/RC, malformed, and stable versions.DO-NOT-MERGE. Static review found no deterministic test proving fail-closed behavior when HTTP/metadata failures coincide with populated offline caches; tests were not run because that review was restricted to immutable Git objects.network_error combined transport failures, HTTP responses, and malformed metadata, while the fallback in packages/cli/src/commands/cli/upgrade.ts:221-235 assumed it meant transport only.UpgradeTransportError as a typed subclass while retaining the external UpgradeError.reason === "network_error" contract and existing CLI output. Only true connection, TLS, and timeout wrappers emit the subclass; HTTP and metadata failures remain ordinary UpgradeError. Automatic cached fallback requires the exact transport type.UpgradeTransportError changes were applied in packages/cli/src/lib/errors.ts, packages/cli/src/lib/binary.ts, packages/cli/src/lib/ghcr.ts, and packages/cli/src/commands/cli/upgrade.ts.validateStableVersion() at the npm response boundary and before package-manager existence checks in packages/cli/src/lib/upgrade.ts. It rejects malformed SemVer and every semantic prerelease while preserving valid stable values and upstream v normalization."No version found in npm registry", was preserved; strict malformed/prerelease errors were added separately.packages/cli/test/lib/upgrade.test.ts for npm latest and pinned package-manager paths. Malformed and prerelease versions are rejected before any installation route.--check tests with a populated target cache instead of a full patch-cache fixture because --check traverses the same automatic fallback classification without applying code.packages/cli/test/commands/cli/upgrade.test.ts: 1. a true transport failure uses the cached target; 2. HTTP 403 never uses the cached target; 3. malformed HTTP 200 never uses the cached target or probes legacy."never uses the cached target after %s" for parameterized HTTP/metadata failure cases.packages/cli/test/commands/cli/upgrade.test.ts:429 under lint/suspicious/useStaticResponseMethods: new Response(JSON.stringify([{ tag_name: "mcp@1.0.0" }])) should use Response.json([{ tag_name: "mcp@1.0.0" }]). The check examined 8 files, fixed 2 files, and still reported 1 error.Response.json([{ tag_name: "mcp@1.0.0" }]); the focused compile/test set was scheduled to rerun, with no rerun outcome yet reported.