{"record":{"id":"4ce8edc748820320","repo":"jdx/mise","slug":"error","errorCode":null,"errorMessage":"{}","messagePattern":"\\{\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/aqua.rs","lineNumber":5003,"sourceCode":"        return Ok(versions.into_iter().map(|v| (v, None, None)).collect());\n    }\n    let repo = format!(\"{}/{}\", pkg.repo_owner, pkg.repo_name);\n    let releases = github::list_releases_including_prereleases(&repo).await?;\n    Ok(releases\n        .into_iter()\n        .map(|r| {\n            let released_at = r.released_at().to_string();\n            (r.tag_name, Some(released_at), Some(r.prerelease))\n        })\n        .collect())\n}\n\nfn validate(pkg: &AquaPackage, version: &str) -> Result<()> {\n    if pkg.no_asset.unwrap_or(false) {\n        bail!(\"no asset released\");\n    }\n    if let Some(message) = &pkg.error_message {\n        bail!(\"{}\", message);\n    }\n    if !is_platform_supported(&pkg.supported_envs, os(), arch()) {\n        bail!(\n            \"unsupported env: {}/{} (supported: {:?})\",\n            os(),\n            arch(),\n            pkg.supported_envs\n        );\n    }\n    match pkg.package_type() {\n        AquaPackageType::Cargo => {\n            bail!(\n                \"package type `cargo` is not supported in the aqua backend. Use the cargo backend instead{}.\",\n                pkg.crate_name\n                    .as_deref()\n                    .filter(|name| !name.is_empty())\n                    .or_else(|| {\n                        pkg.name","sourceCodeStart":4985,"sourceCodeEnd":5021,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/aqua.rs#L4985-L5021","documentation":"Aqua registry entries can carry an `error_message` field that registry maintainers set to explain why a package cannot be used (deprecated, moved, renamed, requires migration). When validate() sees it, it bails with the message verbatim (bail!(\"{}\")), so the text you get is the registry's own explanation.","triggerScenarios":"Installing an aqua package whose AquaPackage.error_message is Some (src/backend/aqua.rs:5003); the check runs for every install/resolution of that package.","commonSituations":"Tool was deprecated or archived upstream; the registry entry points to a moved repository and instructs users to use a new name; a package is temporarily disabled by aqua maintainers.","solutions":["Read the error_message text — it usually names the replacement package or reason","Switch mise.toml to the replacement tool/package named in the message","Update mise to refresh the embedded registry in case the entry was fixed upstream","Check the upstream repository's status (archived/renamed) and migrate accordingly"],"exampleFix":"// before\n[tools]\naqua:old-owner/renamed-tool = \"latest\"\n\n// after (per the registry's error_message)\n[tools]\naqua:new-owner/renamed-tool = \"latest\"","handlingStrategy":"try-catch","validationCode":"// surface the registry's error_message before attempting install\nconst pkg = await fetchAquaRegistryEntry(pkgName);\nif (pkg.error_message) {\n  console.warn(`aqua registry says: ${pkg.error_message} — migrate before installing`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  await $`mise install`;\n} catch (e) {\n  const msg = String(e);\n  if (!msg.includes(\"unsupported env\") && msg.includes(\"Use\") === false && msg.length < 300) {\n    // likely a registry error_message; read it and switch to the recommended replacement\n    console.error(\"registry says:\", msg);\n  } else throw e;\n}","preventionTips":["Read the error text — it is the aqua registry's own migration/deprecation notice","Check the upstream repo for renames/archives when a pinned tool suddenly errors","Periodically run `mise upgrade` yourself to catch registry migration notices early"],"tags":["aqua","registry","deprecated"],"backgroundTag":"upstream-api-error","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"}