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
- Rely on another source: selection is concurrent, so a healthy mirror wins automatically once available
- If all sources report this, treat it as a release publishing bug and report the tag
- 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
- Mirror operators: regenerate checksum manifests after uploading assets
- Publish assets and their manifest atomically per tag
- Monitor mirrors for manifest/asset drift
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
- {} from {} does not list {}; refusing to download an unverif
- no release source published a usable {CHECKSUM_MANIFEST_ASSE
- no release source publishes an asset for this platform
- Android dladdr could not locate the updater's loaded image
- Android dladdr returned an empty loaded-image path
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/92f9f95a9e5f1af7.
Report an issue: GitHub.