jdx/mise · error

the release list of packslip

Error message

the release list of packslip:{project} has no version {}

What it means

The signed release list for a packslip project was fetched and verified, but it contains no release entry whose version equals the requested tool version. mise refuses to fabricate or guess an entry, so installation cannot proceed.

Solutions

  1. Run `mise ls-remote packslip:<project>` to see versions the signed list actually offers and pick one of those
  2. Fix the version string in mise.toml/.tool-versions to an exact listed version
  3. Ask the vendor to add the missing version to their packslip release list

Example fix

// before
[tools]
ripgrep = 'packslip:13.9.9'
// after
[tools]
ripgrep = 'packslip:14.1.0'
Defensive patterns

Strategy: validation

Validate before calling

mise ls-remote packslip:<project> | grep -Fx '13.9.9'  # confirm the exact version is listed before pinning

Type guard

null

Try / catch

// treat as a user-input resolution failure
match err {
    Err(e) if e.to_string().contains("has no version") => fallback_to_remote_listing(),
    other => other?,
}

Prevention

When it happens

Trigger: Resolving an install/lock for packslip:{project}@<version> (vendor_entry via locate_bundle/verified_release/install_payload) when tv.version does not appear verbatim in list.predicate.releases — mistyped version, version removed from the manifest, or querying a version published after the manifest revision.

Common situations: User pins a version that the vendor never released or later withdrew/renamed; .tool-versions/mise.toml carries a stale version; vendor republished the manifest without that version.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17). Data as JSON: /api/errors/61d39e8ebbccb437. Report an issue: GitHub.

Appendix: source

Thrown at src/backend/packslip.rs:829

                .iter()
                .find(|r| r.version == tv.version)
            else {
                return Ok(None);
            };
            refuse_if_withdrawn(project, &tv.version, entry)?;
            return Ok(Some(Located {
                url: entry.packslip.clone(),
                digest: list.digest_of(&entry.packslip).map(str::to_string),
            }));
        }
        let list = self.release_list(project, pin, opts).await?;
        let Some(entry) = list
            .predicate
            .releases
            .iter()
            .find(|r| r.version == tv.version)
        else {
            bail!(
                "the release list of packslip:{project} has no version {}",
                tv.version
            );
        };
        refuse_if_withdrawn(project, &tv.version, entry)?;
        Ok(Some(Located {
            url: entry.packslip.clone(),
            digest: list.digest_of(&entry.packslip).map(str::to_string),
        }))
    }

    async fn locate_bundle(
        &self,
        project: &str,
        tv: &ToolVersion,
        pin: &Pin,
        opts: &PackslipOptions<'_>,
    ) -> Result<Located> {

View on GitHub (pinned to 533346cc37)