karapace/crates/karapace-schema/src/lib.rs
Marco Allegretti cdd13755a0 feat: karapace-schema — manifest v1, normalization, identity hashing, lock file v2
- TOML manifest parsing with strict schema validation (deny_unknown_fields)
- Deterministic normalization: sorted packages, deduplication, canonical JSON
- Two-phase identity: preliminary (from manifest) and canonical (from lock)
- Lock file v2: resolved packages with pinned versions, base image content digest
- Dual lock verification: integrity (hash) and manifest intent (drift detection)
- Built-in presets: dev, dev-rust, dev-python, gui-app, gaming, minimal
- Blake3 256-bit hashing throughout
2026-02-22 18:36:15 +01:00

23 lines
991 B
Rust

//! Manifest parsing, normalization, lock files, and environment identity for Karapace.
//!
//! This crate defines the schema layer: TOML manifest parsing (`ManifestV1`),
//! normalized representations (`NormalizedManifest`), deterministic environment
//! identity computation (`compute_env_id`), lock file generation/verification
//! (`LockFile`), and built-in preset definitions.
pub mod identity;
pub mod lock;
pub mod manifest;
pub mod normalize;
pub mod preset;
pub mod types;
pub use identity::{compute_env_id, EnvIdentity};
pub use lock::{LockError, LockFile, ResolutionResult, ResolvedPackage};
pub use manifest::{
parse_manifest_file, parse_manifest_str, BaseSection, GuiSection, HardwareSection,
ManifestError, ManifestV1, MountsSection, ResourceLimits, RuntimeSection, SystemSection,
};
pub use normalize::{NormalizedManifest, NormalizedMount};
pub use preset::{get_preset, list_presets, Preset, BUILTIN_PRESETS};
pub use types::{EnvId, LayerHash, ObjectHash, ShortId};