{"record":{"id":"218b6e8ecdf0206e","repo":"jdx/mise","slug":"resolved-pkgx-package-name-version-does-not-sa","errorCode":null,"errorMessage":"resolved pkgx package {name}@{version} does not satisfy {requirement:?}","messagePattern":"resolved pkgx package (.+?)@(.+?) does not satisfy (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/pkgx.rs","lineNumber":434,"sourceCode":"        .rev()\n        .find(|version| semver_satisfies(version, &range))\n        .map(|version| (*version).to_string())\n        .ok_or_else(|| eyre::eyre!(\"no pkgx version for {name} satisfies {requirement}\"))\n}\n\nasync fn latest_version(name: &str, target: &PlatformTarget) -> Result<String> {\n    list_pkg_versions_for_target(name, target)\n        .await?\n        .last()\n        .map(|v| v.version.clone())\n        .ok_or_else(|| eyre::eyre!(\"no pkgx versions found for {name}\"))\n}\n\nfn ensure_resolved_requirement(name: &str, version: &str, requirement: &str) -> Result<()> {\n    if version_satisfies_requirement(version, requirement)? {\n        Ok(())\n    } else {\n        bail!(\"resolved pkgx package {name}@{version} does not satisfy {requirement:?}\")\n    }\n}\n\nfn merge_requirements(name: &str, left: &str, right: &str) -> Result<String> {\n    let left = left.trim();\n    let right = right.trim();\n    if is_any_requirement(left) {\n        return Ok(right.to_string());\n    }\n    if is_any_requirement(right) || left == right {\n        return Ok(left.to_string());\n    }\n    let merged = format!(\"{left} {right}\");\n    parse_requirement_range(name, &merged)?;\n    Ok(merged)\n}\n\nfn version_satisfies_requirement(version: &str, requirement: &str) -> Result<bool> {","sourceCodeStart":416,"sourceCodeEnd":452,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/pkgx.rs#L416-L452","documentation":"Thrown by `ensure_resolved_requirement` in the pkgx backend: after pkgx resolves a package version for a requirement, mise re-checks the resolved version against the requested requirement with `version_satisfies_requirement` and bails if it does not satisfy it. This is a post-resolution invariant that catches pkgx returning a version outside the user's requested range.","triggerScenarios":"Calling `mise use pkgx:<name>@<requirement>` (via `resolve_closure` -> `ensure_resolved_requirement`) where pkgx's resolver returns `version` that fails the requirement check — e.g. requesting a prefix like `8.1` or a range while pkgx resolves a different/latest version, or requirement syntax mise interprets differently than pkgx does.","commonSituations":"Requesting a version prefix that doesn't match any published package version; requirement strings containing characters pkgx treats differently (e.g. `latest`, partial tags); the package was updated upstream so a previously matching version was removed; merging multiple requirements produced a range no version satisfies.","solutions":["Pin an exact existing version: run `mise ls-remote pkgx:<name>` and use a full version from that list.","Broaden or correct the requirement string (e.g. `pkgx:node@^20` instead of a prefix pkgx can't satisfy).","Re-run with a refreshed package list if upstream changed; clear pkgx/mise caches and retry.","If merging constraints, verify each requirement individually to find which one excludes the resolved version."],"exampleFix":"// before (mise.toml)\n[tools]\n\"pkgx:node\" = \"21.x-nonexistent\"\n\n// after — exact version known to satisfy the requirement\n[tools]\n\"pkgx:node\" = \"21.7.3\"","handlingStrategy":"validation","validationCode":"# confirm a version satisfying the requirement exists before pinning\nmise ls-remote pkgx:node | grep -E '^21\\.' || echo 'requirement unsatisfiable'","typeGuard":null,"tryCatchPattern":"try { await $`mise use pkgx:node@^21` } catch (e) { if (String(e).includes('does not satisfy')) { /* pin an exact version from ls-remote */ } else throw e; }","preventionTips":["Use `mise ls-remote pkgx:<name>` to verify versions before pinning","Prefer full versions or standard ranges over exotic requirement strings","Re-check requirements after upstream version removals"],"tags":["pkgx","version-resolution","versioning","install","rust"],"backgroundTag":"invalid-argument-value","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}