{"record":{"id":"400f3dd5099fb3ca","repo":"Hmbown/CodeWhale","slug":"no-release-source-published-a-usable-checksum-man","errorCode":null,"errorMessage":"no release source published a usable {CHECKSUM_MANIFEST_ASSET} for this platform:\n{}","messagePattern":"no release source published a usable (.+?) for this platform:\n(.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/cli/src/update.rs","lineNumber":924,"sourceCode":"    }\n    drop(result_tx);\n\n    let mut failures = Vec::new();\n    while let Ok((candidate, outcome)) = result_rx.recv() {\n        match outcome {\n            Ok(checksums) => {\n                return Ok(DownloadPlan {\n                    source: candidate.source,\n                    binary_name: candidate.binary_name,\n                    binary_url: candidate.binary_url,\n                    checksums,\n                });\n            }\n            Err(error) => failures.push(format!(\"  - {}: {error:#}\", candidate.source.describe())),\n        }\n    }\n\n    bail!(\n        \"no release source published a usable {CHECKSUM_MANIFEST_ASSET} for this platform:\\n{}\",\n        failures.join(\"\\n\")\n    )\n}\n\nfn probe_release_source(\n    candidate: &ReleaseSourceCandidate,\n    fetch_manifest: &ManifestFetcher,\n) -> Result<HashMap<String, String>> {\n    let bytes = fetch_manifest(candidate)\n        .with_context(|| format!(\"failed to fetch {}\", candidate.manifest_url))?;\n    let text = std::str::from_utf8(&bytes)\n        .with_context(|| format!(\"{} is not valid UTF-8\", candidate.manifest_url))?;\n    let checksums = parse_checksum_manifest(text)\n        .with_context(|| format!(\"failed to parse {}\", candidate.manifest_url))?;\n    if !checksums.contains_key(&candidate.binary_name) {\n        bail!(\n            \"{} does not list {}\",","sourceCodeStart":906,"sourceCodeEnd":942,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/cli/src/update.rs#L906-L942","documentation":"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.","triggerScenarios":"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.","commonSituations":"Corporate proxies, DNS failures, GitHub outages with a stale mirror, release tag existing without its checksum asset yet.","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"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"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.","preventionTips":["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"],"tags":["release","network","checksums","self-update"],"backgroundTag":"all-release-sources-failed","analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}