Hmbown/CodeWhale · error · anyhow::Error
no release source published a usable {CHECKSUM_MANIFEST_ASSE
Error message
no release source published a usable {CHECKSUM_MANIFEST_ASSET} for this platform:
{} What it means
Every candidate release source was probed concurrently and each failed for some reason (fetch/timeout, non-UTF-8 body, manifest parse failure, or manifest not listing this platform's binary); the message aggregates the per-source errors. This is the terminal failure of source selection when no mirror can produce a usable checksum manifest.
Source
Thrown at crates/cli/src/update.rs:924
}
drop(result_tx);
let mut failures = Vec::new();
while let Ok((candidate, outcome)) = result_rx.recv() {
match outcome {
Ok(checksums) => {
return Ok(DownloadPlan {
source: candidate.source,
binary_name: candidate.binary_name,
binary_url: candidate.binary_url,
checksums,
});
}
Err(error) => failures.push(format!(" - {}: {error:#}", candidate.source.describe())),
}
}
bail!(
"no release source published a usable {CHECKSUM_MANIFEST_ASSET} for this platform:\n{}",
failures.join("\n")
)
}
fn probe_release_source(
candidate: &ReleaseSourceCandidate,
fetch_manifest: &ManifestFetcher,
) -> Result<HashMap<String, String>> {
let bytes = fetch_manifest(candidate)
.with_context(|| format!("failed to fetch {}", candidate.manifest_url))?;
let text = std::str::from_utf8(&bytes)
.with_context(|| format!("{} is not valid UTF-8", candidate.manifest_url))?;
let checksums = parse_checksum_manifest(text)
.with_context(|| format!("failed to parse {}", candidate.manifest_url))?;
if !checksums.contains_key(&candidate.binary_name) {
bail!(
"{} does not list {}",View on GitHub (pinned to 0c42157ee5)
Solutions
- Read the aggregated per-source lines in the message: each names the exact failure for that source
- Check connectivity/proxy configuration and retry after the network issue clears
- Retry later if the release was mid-publication; mirrors catch up
- If every line says the manifest is missing the binary, report the release tag to maintainers
Defensive patterns
Strategy: retry
Try / catch
Catch the aggregated error, parse its per-source bullet lines to classify network vs manifest failures, and retry with backoff only for network-class failures; manifest-class failures should be reported, not retried.
Prevention
- Verify proxy/firewall rules allow the release hosts before updating
- Retry after outages; source selection is concurrent and fast to re-attempt
- Keep at least one reachable mirror in the source list
When it happens
Trigger: Self-update while offline, behind a blocking proxy/firewall, when both the primary release host and mirrors are unreachable or stale, or during a partially published release where no source has a complete manifest+asset pair.
Common situations: Corporate proxies, DNS failures, GitHub outages with a stale mirror, release tag existing without its checksum asset yet.
Related errors
- {} from {} does not list {}; refusing to download an unverif
- {} does not list {}
- no release source publishes an asset for this platform
- release redirect did not resolve to a tag URL: {final_url}
- overlap must be smaller than max_chars
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/400f3dd5099fb3ca.
Report an issue: GitHub.