Skip to main content

kache_store/
lib.rs

1//! Local artifact storage, independent of compiler parsing and remote transports.
2
3pub mod atomic;
4mod blob_drift;
5mod blob_validation;
6mod cc_memo;
7pub mod config;
8pub mod eviction;
9mod eviction_evidence;
10pub mod file_hash;
11pub mod filesystem;
12mod index_compaction;
13pub mod link;
14pub mod markers;
15pub mod opcounts;
16pub mod sharing;
17mod store;
18#[cfg(test)]
19mod test_support;
20
21pub use blob_drift::{BlobRefcountDrift, blob_refcount_drift};
22pub use eviction_evidence::{EvictionEvidenceCohort, EvictionHorizonEvidence};
23pub use store::*;
24
25/// Compiler-owned rules applied when publishing an entry. Implementations must
26/// permit shared inodes only for outputs that remain immutable after publication.
27pub trait ArtifactPolicy {
28    fn allow_hardlink(name: &str) -> bool;
29    fn allow_empty(name: &str, output_types: &[String]) -> bool;
30    fn emit_kind(name: &str) -> Option<&'static str>;
31    fn stable_after_store(name: &str) -> bool;
32}