jdx/mise · error
github.com/{repo} has no release {} carrying {asset_name}; m
Error message
github.com/{repo} has no release {} carrying {asset_name}; mise installs from a packslip and does not guess at release assets What it means
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.
Source
Thrown at src/backend/packslip.rs:760
pin: &Pin,
opts: &PackslipOptions<'_>,
) -> Result<Located> {
if let Some(located) = self.vendor_entry(project, tv, pin, opts).await? {
return Ok(located);
}
// No signed list names the manifest, so the release asset is the
// only place left to find it. Only a GitHub project gets here.
let asset_name = bundle_name(project);
let repo = Self::repo(project)
.ok_or_else(|| eyre!("packslip:{project} publishes no signed release list"))?;
let releases = github::list_releases_including_prereleases(&repo).await?;
let found = releases.iter().find_map(|r| {
let asset = r.assets.iter().find(|a| a.name == asset_name)?;
(tag_version(&r.tag_name, project).as_deref() == Some(tv.version.as_str()))
.then_some(asset)
});
let Some(asset) = found else {
bail!(
"github.com/{repo} has no release {} carrying {asset_name}; mise installs from a packslip and does not guess at release assets",
tv.version
);
};
Ok(Located {
headers: github::get_headers(&asset.browser_download_url)?,
url: asset.browser_download_url.clone(),
digest: None,
})
}
async fn recommendation(
&self,
project: &str,
opts: &PackslipOptions<'_>,
pin: &Pin,
) -> Result<Option<String>> {
let Some(repo) = Self::repo(project) else {View on GitHub (pinned to afd2eddd3a)
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
Defensive patterns
Strategy: fallback
Try / catch
try {
mise::install("packslip:acme@1.2.3");
} catch (e) {
if (String(e).includes("does not guess at release assets")) {
console.error("Asset missing; try another version or report to vendor.");
} else { throw e; }
} Prevention
- 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
When it happens
Trigger: 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`.
Common situations: 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.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- the release list in github.com/{repo} is for {}, not {projec
- {rel} is not a directory of the repository
- brew-cask: unsupported tap URL for '{name}'; only GitHub tap
- must not record a pin before replacement succeeds
- aqua package {} does not have repo_owner and/or repo_name.
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/15cf727a91dcda0b.
Report an issue: GitHub.