{"record":{"id":"61d39e8ebbccb437","repo":"jdx/mise","slug":"the-release-list-of-packslip-project-has-no-vers","errorCode":null,"errorMessage":"the release list of packslip:{project} has no version {}","messagePattern":"the release list of packslip:(.+?) has no version (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/packslip.rs","lineNumber":725,"sourceCode":"                .find(|r| r.version == tv.version)\n            else {\n                return Ok(None);\n            };\n            refuse_if_withdrawn(project, &tv.version, entry)?;\n            return Ok(Some(Located {\n                headers: headers_for(&entry.packslip)?,\n                url: entry.packslip.clone(),\n                digest: list.digest_of(&entry.packslip).map(str::to_string),\n            }));\n        }\n        let list = self.release_list(project, pin, opts).await?;\n        let Some(entry) = list\n            .predicate\n            .releases\n            .iter()\n            .find(|r| r.version == tv.version)\n        else {\n            bail!(\n                \"the release list of packslip:{project} has no version {}\",\n                tv.version\n            );\n        };\n        refuse_if_withdrawn(project, &tv.version, entry)?;\n        Ok(Some(Located {\n            url: entry.packslip.clone(),\n            headers: HeaderMap::new(),\n            digest: list.digest_of(&entry.packslip).map(str::to_string),\n        }))\n    }\n\n    async fn locate_bundle(\n        &self,\n        project: &str,\n        tv: &ToolVersion,\n        pin: &Pin,\n        opts: &PackslipOptions<'_>,","sourceCodeStart":707,"sourceCodeEnd":743,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/packslip.rs#L707-L743","documentation":"After obtaining the verified release list, mise looks up the requested version among `list.predicate.releases`. If no entry matches the requested version, the list is authoritative: the vendor never published (or no longer lists) that version, so mise bails instead of falling back to unsigned sources.","triggerScenarios":"Calling `vendor_entry` (from `locate_bundle`, `candidate_exclusion`, or `install_payload`) when no entry in `list.predicate.releases` has a version equal to the requested tool version.","commonSituations":"A typo'd or nonexistent version in mise.toml or a lockfile; requesting a very old version the vendor dropped from the list; a version exists only in a newer/older list not currently published.","solutions":["Run `mise ls-remote packslip:<project>` to see versions the vendor actually lists and pick one","Correct the version string in mise.toml / mise.lock / CI pin","Ask the vendor to re-list the version if it genuinely existed and was dropped in error"],"exampleFix":"// before (mise.toml)\n[tools.\"packslip:acme\"]\nversion = \"9.9.9\"\n// after\n[tools.\"packslip:acme\"]\nversion = \"1.2.4\"","handlingStrategy":"validation","validationCode":"const listed = mise.lsRemote(\"packslip:acme\");\nif (!listed.includes(requestedVersion)) {\n  throw new Error(`${requestedVersion} is not in the vendor's release list`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run `mise ls-remote` to confirm a version exists before pinning it","Use version ranges/prefixes resolved by mise rather than hand-typed exact versions","Regenerate lockfiles when vendors republish lists"],"tags":["packslip","version","not-found"],"backgroundTag":"record-not-found","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}