{"record":{"id":"15cf727a91dcda0b","repo":"jdx/mise","slug":"github-com-repo-has-no-release-carrying-asse","errorCode":null,"errorMessage":"github.com/{repo} has no release {} carrying {asset_name}; mise installs from a packslip and does not guess at release assets","messagePattern":"github\\.com/(.+?) has no release (.+?) carrying (.+?); mise installs from a packslip and does not guess at release assets","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/packslip.rs","lineNumber":760,"sourceCode":"        pin: &Pin,\n        opts: &PackslipOptions<'_>,\n    ) -> Result<Located> {\n        if let Some(located) = self.vendor_entry(project, tv, pin, opts).await? {\n            return Ok(located);\n        }\n        // No signed list names the manifest, so the release asset is the\n        // only place left to find it. Only a GitHub project gets here.\n        let asset_name = bundle_name(project);\n        let repo = Self::repo(project)\n            .ok_or_else(|| eyre!(\"packslip:{project} publishes no signed release list\"))?;\n        let releases = github::list_releases_including_prereleases(&repo).await?;\n        let found = releases.iter().find_map(|r| {\n            let asset = r.assets.iter().find(|a| a.name == asset_name)?;\n            (tag_version(&r.tag_name, project).as_deref() == Some(tv.version.as_str()))\n                .then_some(asset)\n        });\n        let Some(asset) = found else {\n            bail!(\n                \"github.com/{repo} has no release {} carrying {asset_name}; mise installs from a packslip and does not guess at release assets\",\n                tv.version\n            );\n        };\n        Ok(Located {\n            headers: github::get_headers(&asset.browser_download_url)?,\n            url: asset.browser_download_url.clone(),\n            digest: None,\n        })\n    }\n\n    async fn recommendation(\n        &self,\n        project: &str,\n        opts: &PackslipOptions<'_>,\n        pin: &Pin,\n    ) -> Result<Option<String>> {\n        let Some(repo) = Self::repo(project) else {","sourceCodeStart":742,"sourceCodeEnd":778,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/packslip.rs#L742-L778","documentation":"For unlogged installs, mise locates the release asset in the GitHub repo by finding a release whose tag matches the requested version AND which carries an asset with the exact expected `asset_name`. If none matches, mise refuses to guess among the repo's assets and bails, since packslip installs must use the precisely-identified artifact.","triggerScenarios":"Calling `locate_bundle` (from `candidate_exclusion` or `install_payload`) when no GitHub release has both a tag resolving to the requested version and an asset named exactly `asset_name`.","commonSituations":"The vendor renamed release assets (e.g. changed the archive naming scheme) after the requested version; a vendor releases binaries without the expected asset name; a user requests a version whose release was pruned or re-tagged on GitHub.","solutions":["Check the GitHub release page for the exact asset name and update the pin/vendor metadata if the naming changed","Install a different version whose release still carries the expected asset","Report to the vendor that the release is missing the expected asset so they re-publish a correct packslip/list"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  mise::install(\"packslip:acme@1.2.3\");\n} catch (e) {\n  if (String(e).includes(\"does not guess at release assets\")) {\n    console.error(\"Asset missing; try another version or report to vendor.\");\n  } else { throw e; }\n}","preventionTips":["Check the GitHub release page confirms the expected asset name before pinning a version","Watch for vendor asset-naming-scheme changes when upgrading","Report missing/renamed assets to the vendor so the packslip list is corrected"],"tags":["packslip","github","asset-not-found"],"backgroundTag":"resource-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}