//! Cache subsystem for mcptest.
//!
//! The cache lets repeat runs skip work that is provably deterministic.
//! Before any storage layer can stash a result, the engine has to decide
//! whether a given test is even eligible to be cached. That decision is
//! the responsibility of [`eligibility`]; the storage layer ([`store`])
//! handles key derivation and on-disk persistence. HTTP cache
//! integration lives in a follow-up ticket.
//!
//! See `docs/cache-eligibility.md` in the repo for the rules in prose.

pub mod eligibility;
pub mod gha;
pub mod server_directive;
pub mod store;

pub use eligibility::{
    evaluate, CacheDirective, Effect, EligibilityDecision, EligibilityInput, EligibilityReason,
    TestKind, Transport,
};
pub use gha::{select_backend, GhaCacheStore, GhaConfig};
pub use server_directive::{
    parse_from_value as parse_server_directive, CacheScope, ServerCacheDirective,
};
pub use store::{derive, CacheEntry, CacheError, CacheKeyInputs, CacheStore, FsCacheStore};
