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

  1. Read the aggregated per-source lines in the message: each names the exact failure for that source
  2. Check connectivity/proxy configuration and retry after the network issue clears
  3. Retry later if the release was mid-publication; mirrors catch up
  4. 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

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


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/400f3dd5099fb3ca. Report an issue: GitHub.