Hmbown/CodeWhale · warning · anyhow::Error

{} does not list {}

Error message

{} does not list {}

What it means

probe_release_source fetched and parsed one candidate source's checksum manifest, but the map has no key for that source's binary_name. The source loses the concurrent probe and its failure is recorded; if all sources fail this way you get the aggregated 'no release source published a usable manifest' error.

Source

Thrown at crates/cli/src/update.rs:941

    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 {}",
            candidate.manifest_url,
            candidate.binary_name
        );
    }
    Ok(checksums)
}

fn ensure_supported_release_target(os: &str, arch: &str) -> Result<()> {
    if os == "linux" && arch == "riscv64" {
        bail!(
            "Linux riscv64 release assets are temporarily unavailable because \
             rquickjs-sys 0.12.0 does not ship riscv64gc-unknown-linux-gnu bindings. \
             See docs/INSTALL.md for the current platform matrix."
        );
    }
    Ok(())
}

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Rely on another source: selection is concurrent, so a healthy mirror wins automatically once available
  2. If all sources report this, treat it as a release publishing bug and report the tag
  3. Mirror operators: regenerate the manifest after every asset change, not before
Defensive patterns

Strategy: validation

Validate before calling

// For custom release-source setups, check a source before trusting it:
fn source_lists_binary(manifest_url: &str, binary_name: &str) -> Result<bool, ureq::Error> {
    let text: String = ureq::get(manifest_url).call()?.into_string()?;
    Ok(text.lines().any(|l| l.contains(binary_name)))
}

Try / catch

Treat this as a per-source loss inside concurrent selection: record the failure, let other sources compete, and only surface an error if every source failed this way.

Prevention

When it happens

Trigger: A mirror whose checksum manifest is older than its release assets (asset renamed or newly added), or a source whose asset naming differs from its own manifest keys.

Common situations: Stale CDN mirrors, release processes that upload binaries before regenerating SHA256SUMS, manifest name typos on secondary sources.

Related errors


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