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

  1. Check the GitHub release page for the exact asset name and update the pin/vendor metadata if the naming changed
  2. Install a different version whose release still carries the expected asset
  3. 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

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


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/15cf727a91dcda0b. Report an issue: GitHub.