astrid-runtime/astrid · error
capsule content contains a special file
Error message
capsule content contains a special file: {} What it means
Fired by collect_directory_records when the capsule tree contains a file system entry that is not a regular file, directory, or allowed symlink (e.g. FIFO, socket, device node). Such entries cannot be hashed or verified.
Solutions
- Remove the special file (FIFO/socket/device) from the capsule content directory
- Rebuild the capsule from a clean source tree
- Exclude non-regular files from packaging
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/astrid-build/src/artifact.rs:490 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/b9b43be441dd6792.
Report an issue: GitHub.
Appendix: source
Thrown at crates/astrid-build/src/artifact.rs:490
let metadata = std::fs::metadata(&resolved)?;
if !metadata.is_file() {
bail!(
"capsule content cannot contain a directory symlink: {}",
path.display()
);
}
let relative = path.strip_prefix(root)?;
let normalized = normalize_relative_path(relative)?;
let mut file = File::open(&resolved)?;
records.push(hash_reader(normalized, metadata.len(), &mut file)?);
continue;
}
if file_type.is_dir() {
collect_directory_records(root, canonical_root, &path, records, envelope)?;
continue;
}
if !file_type.is_file() {
bail!(
"capsule content contains a special file: {}",
path.display()
);
}
let relative = path.strip_prefix(root)?;
let normalized = normalize_relative_path(relative)?;
if normalized == PROVENANCE_FILE {
if envelope.is_some() {
bail!("capsule directory contains duplicate provenance");
}
*envelope = Some(std::fs::read(&path)?);
continue;
}
let mut file = File::open(&path)?;
let size = file.metadata()?.len();
records.push(hash_reader(normalized, size, &mut file)?);
}
Ok(())View on GitHub (pinned to affd8760f4)