BoundaryML/baml · error
Checksum file did not contain an entry for {archive_name}
Error message
Checksum file did not contain an entry for {archive_name} What it means
parse_release_checksum scans a downloaded SHA256SUMS-style checksum file line by line looking for the entry matching the archive's file name. If no line's name equals archive_name, it bails with this message. It means the checksum file is present but doesn't cover the requested archive.
Source
Thrown at baml_language/crates/baml_release/src/lib.rs:399
});
}
Ok(())
}
pub fn parse_release_checksum(checksum_text: &str, archive_name: &str) -> Result<String> {
for line in checksum_text.lines() {
let mut parts = line.split_whitespace();
let Some(hash) = parts.next() else {
continue;
};
let Some(name) = parts.next() else {
continue;
};
if name == archive_name {
return validate_sha256(hash);
}
}
anyhow::bail!("Checksum file did not contain an entry for {archive_name}")
}
fn download_bytes(url: &str) -> Result<Vec<u8>, FetchError> {
let client = reqwest::blocking::Client::builder()
.connect_timeout(Duration::from_secs(10))
.timeout(Duration::from_mins(10))
.user_agent("baml-release/1")
.build()
.map_err(|source| FetchError::Network {
url: url.to_string(),
source,
})?;
let mut last_error = None;
for attempt in 1..=3 {
match client.get(url).send() {
Ok(response) if response.status() == reqwest::StatusCode::NOT_FOUND => {
return Err(FetchError::ManifestNotFound {View on GitHub (pinned to bd85ce9dee)
Solutions
- Confirm the archive file name exactly matches an entry in the checksum file (check spelling, extension, and target triple).
- Download the checksum file from the same release/version as the archive.
- Clear any cached checksum file and re-fetch the current release's checksums.
- If the artifact genuinely has no checksum entry, report the incomplete release to the publisher.
Example fix
// before
verify("baml-cli-x86_64-unknown-linux-musl.tar.gz", old_checksums) // not listed
// after
verify("baml-cli-x86_64-unknown-linux-gnu.tar.gz", checksums_for_same_release) Defensive patterns
Strategy: validation
Validate before calling
let present = checksum_text.lines().any(|l| {
l.split_whitespace().nth(1).map_or(false, |n| n.trim_start_matches('*') == archive_name)
});
if !present { return Err(format!("{archive_name} missing from checksum file")); } Try / catch
match verify_archive_checksum(bytes, url) {
Err(e) if e.to_string().contains("did not contain an entry") => re_fetch_matching_checksums(),
r => r,
} Prevention
- Download the checksum file and archive from the same release/version.
- Verify the artifact's file name matches a SHA256SUMS entry before verification.
- Invalidate cached checksum files when switching release versions.
When it happens
Trigger: Calling parse_release_checksum (via verify_release_archive_checksum_text) with an archive_name absent from the checksum text — e.g. wrong file name casing, querying a target artifact not published in that release's checksums, or checksum file from a different release version.
Common situations: Fetching a checksums file for release X but an artifact name from release Y; artifacts renamed between releases while cached checksum file is stale; partial uploads where some targets are missing from SHA256SUMS.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- target {target} not built for version {}
- checksum for '%s' not found within file %s
- {kind} artifact failed integrity validation
- BAML_CACHE_VERIFY: cached diagnostics for `{}` differ from a
- no BAML project found; run `baml init` before adding a gener
AI-assisted analysis of BoundaryML/baml@bd85ce9dee (2026-09-12).
Data as JSON: /api/errors/ccd9df787d57c264.
Report an issue: GitHub.