astrid-runtime/astrid · error

materialized capsule file inventory differs from durable…

Error message

materialized capsule file inventory differs from durable package

What it means

Whole-directory inventory check in verify_published_materialization: the set of files (and their bytes) in the materialized capsule directory differs from the expected inventory (package files plus Capsule.toml, meta.json, authority.json), indicating missing, extra, or modified files.

Solutions

  1. Re-materialize the capsule from the durable package to rebuild the projection
  2. Remove extra/unexpected files and re-verify
  3. Investigate the writer that produced the divergent directory
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at crates/astrid-kernel/src/capsule_materialization.rs:73 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/0664207b5d99d1ec. Report an issue: GitHub.

Appendix: source

Thrown at crates/astrid-kernel/src/capsule_materialization.rs:73

            .map(|(path, bytes)| (path.to_owned(), bytes.to_vec()))
            .collect::<std::collections::BTreeMap<_, _>>();
        expected_files.insert(
            "Capsule.toml".to_owned(),
            verified.manifest_bytes().to_vec(),
        );
        expected_files.insert("meta.json".to_owned(), verified.metadata_bytes().to_vec());
        expected_files.insert(
            "authority.json".to_owned(),
            verified.snapshot().package().authority.clone(),
        );
        let actual = Self::inventory_projection_files(dir)?;
        if actual.files
            != expected_files
                .keys()
                .cloned()
                .collect::<std::collections::BTreeSet<_>>()
        {
            anyhow::bail!("materialized capsule file inventory differs from durable package");
        }
        let mut expected_directories = expected_files
            .keys()
            .flat_map(|relative| authenticated_ancestor_directories(relative))
            .collect::<std::collections::BTreeSet<_>>();
        let archive_directories = verified
            .archive_directories()
            .map(ToOwned::to_owned)
            .collect::<Vec<_>>();
        expected_directories.extend(archive_directories.iter().cloned());
        expected_directories.extend(
            archive_directories
                .iter()
                .map(String::as_str)
                .flat_map(authenticated_ancestor_directories),
        );
        if actual.directories != expected_directories {
            anyhow::bail!("materialized capsule directory inventory differs from durable package");

View on GitHub (pinned to affd8760f4)