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
- Run `mise ls-remote packslip:<project>` to see versions the signed list actually offers and pick one of those
- Fix the version string in mise.toml/.tool-versions to an exact listed version
- 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
- Pin exact versions that appear in `mise ls-remote` output
- Re-check pinned versions after a vendor announces manifest changes
- Use version prefixes minimally; prefer fully resolved versions in lockfiles
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
- the release list at is for , not
- the release list expired at
- an exec entry with no command
- cli-spec entry names
- github.com/ has no release carrying ; mise installs from a…
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)