{"record":{"id":"fb115dafea176847","repo":"jdx/mise","slug":"e","errorCode":null,"errorMessage":"{e}","messagePattern":"\\{e\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/toolset/mod.rs","lineNumber":173,"sourceCode":"        let versions = self\n            .versions\n            .clone()\n            .into_iter()\n            .map(|(ba, tvl)| {\n                let reporter = progress.as_ref().and_then(|p| p.start_tool(&ba.short));\n                (config.clone(), ba, tvl, opts.clone(), reporter)\n            })\n            .collect::<Vec<_>>();\n        let tvls = parallel::parallel(\n            versions,\n            |(config, ba, mut tvl, opts, reporter)| async move {\n                let result = crate::ui::resolve_progress::scope(\n                    reporter.as_ref().map(|p| p.reporter()),\n                    tvl.resolve(&config, &opts),\n                )\n                .await;\n                if let Some(reporter) = reporter {\n                    reporter.complete(result.as_ref().err().map(|e| e.to_string()).as_deref());\n                }\n                if let Err(err) = result {\n                    if Error::is_required_channel_resolution_err(&err) {\n                        return Err(err);\n                    }\n                    if Error::is_not_in_lockfile(&err) && !opts.warn_not_in_lockfile {\n                        debug!(\"Failed to resolve tool version list for {ba}: {err}\");\n                    } else {\n                        // warn_once: a command may resolve the same toolset more than\n                        // once, and repeating an identical failure adds no information.\n                        warn_once!(\"Failed to resolve tool version list for {ba}: {err}\");\n                    }\n                }\n                Ok((ba, tvl))\n            },\n        )\n        .await?;\n        self.versions = tvls.into_iter().collect();","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/toolset/mod.rs#L155-L191","documentation":"resolve_with_progress in src/toolset/mod.rs propagates errors from the tool-version list resolution (tvl.resolve) while reporting completion to the progress reporter. Channel-required resolution errors are re-raised directly; lockfile misses are downgraded to warnings when opts.warn_not_in_lockfile is set. The `{e}` message is whatever the underlying resolution failed with.","triggerScenarios":"Resolving tool versions (mise install/use) when the backend fails to list/resolve a requested version — network errors hitting the version provider, an unresolvable version request, or lockfile inconsistencies.","commonSituations":"Offline/CI environments where version listing HTTP calls fail, requesting `latest` when the registry is unreachable, or a version present in mise.lock but not resolvable upstream after upstream deleted a release.","solutions":["Read the underlying message and check network connectivity or the backend's availability.","Pin an explicit, still-existing version instead of `latest` or a channel that can't be resolved.","Update or regenerate mise.lock so entries match what upstream can resolve.","Retry after transient network failures or configure a token if the backend rate-limited the request."],"exampleFix":"# before\nnode = \"22\"   # resolves via network; fails offline\n# after\nnode = \"22.11.0\"  # pinned; resolvable from local cache/lockfile","handlingStrategy":"retry","validationCode":"# pre-check that the requested version exists upstream before resolve\nmise ls-remote node@22.11.0 || echo \"version not resolvable\"","typeGuard":null,"tryCatchPattern":"match resolve_with_opts(config, tvl, opts).await {\n    Err(e) if e.to_string().contains(\"network\") || e.to_string().contains(\"timeout\") => retry_with_backoff(3),\n    Err(e) => return Err(e),\n    Ok(ts) => Ok(ts),\n}","preventionTips":["Pin explicit concrete versions instead of `latest` in CI.","Keep mise.lock committed so resolution can succeed from lockfile data.","Configure API tokens for version-listing backends to avoid rate limits.","Cache tool version lists in offline/air-gapped environments."],"tags":["toolset","version-resolution","network","lockfile"],"backgroundTag":"resource-not-found","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}