BoundaryML/baml · error · FetchError
archive missing expected binary {name}
Error message
archive missing expected binary {name} What it means
FetchError::BinaryNotInArchive is thrown by baml_release when a downloaded release archive is extracted but does not contain the expected binary file name for the target. The archive opened fine (checksum passed) but its contents are missing the file the installer needs, indicating a bad or mis-packaged release artifact.
Source
Thrown at baml_language/crates/baml_release/src/lib.rs:97
Network { url: String, source: reqwest::Error },
#[error("HTTP {status} fetching {url}")]
HttpStatus {
url: String,
status: reqwest::StatusCode,
},
#[error("manifest 404 for version {version} (not released yet?)")]
ManifestNotFound { version: String },
#[error("manifest schema {got} not supported (max {max}); run `baml self-update`")]
ManifestSchemaTooNew { got: u32, max: u32 },
#[error("target {target} not built for version {version}")]
TargetNotInManifest { target: String, version: String },
#[error("sha256 mismatch for {url}: expected {expected}, got {got}")]
ChecksumMismatch {
url: String,
expected: String,
got: String,
},
#[error("archive missing expected binary {name}")]
BinaryNotInArchive { name: String },
#[error("archive contains unsafe path {path}")]
UnsafeArchivePath { path: String },
#[error("disk error: {0}")]
Io(#[from] std::io::Error),
#[error("zip archive error: {0}")]
Zip(#[from] zip::result::ZipError),
}
#[derive(Debug, Clone)]
pub struct Fetcher {
pub spec: ReleaseSpec,
pub product: Product,
pub manifest_base_url: String,
pub release_repo: String,
artifact: Option<Artifact>,
}
View on GitHub (pinned to bd85ce9dee)
Solutions
- Retry with a different (preferably latest) version — the artifact itself is likely mis-packaged
- Verify the archive manually (unzip -l) to see what it actually contains
- Report the broken artifact to the BAML maintainers
- If pinning, switch to the previous known-good version
Example fix
# before $ baml install --version 0.199.0 archive missing expected binary baml # after $ baml install --version 0.200.0
Defensive patterns
Strategy: fallback
Validate before calling
// inspect archive contents before extraction
let names: Vec<String> = zip.file_names().map(String::from).collect();
if !names.iter().any(|n| n.ends_with(expected_binary)) {
eprintln!("archive lacks {expected_binary}; artifact is mis-packaged");
} Type guard
fn is_binary_missing(e: &FetchError) -> bool {
matches!(e, FetchError::BinaryNotInArchive { .. })
} Try / catch
match install(v) {
Err(FetchError::BinaryNotInArchive { name }) => {
eprintln!("{name} missing from artifact for {v}; falling back");
install(prev_stable_version())
}
other => other,
} Prevention
- Pin to known-good released versions
- After a broken artifact is reported, skip that version
- Spot-check new releases (unzip -l) before rolling them out org-wide
- Report mis-packaged artifacts to maintainers promptly
When it happens
Trigger: Extracting a downloaded release archive and finding no entry named like `baml`/`baml.exe` — happens when the release pipeline published a wrongly packaged zip, or the manifest expects a name the archive doesn't use.
Common situations: A broken release build that uploaded a stub or wrong zip, an interrupted release publish that shipped partial packaging, or a target whose artifact naming changed between versions.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- manifest 404 for version {version} (not released yet?)
- target {target} not built for version {version}
- zip archive error: {0}
- Checksum file did not contain an entry for {archive_name}
- target {target} not built for version {}
AI-assisted analysis of BoundaryML/baml@bd85ce9dee (2026-09-12).
Data as JSON: /api/errors/4d41154f91dd4629.
Report an issue: GitHub.