batuta/stack/publish_status/mod.rs
1//! Publish Status Scanner with O(1) Cache
2//!
3//! Scans PAIML stack repositories for publish status with intelligent caching.
4//! Uses content-addressable cache keys to achieve O(1) lookups for unchanged repos.
5//!
6//! ## Cache Invalidation
7//!
8//! Cache keys are computed from:
9//! - Cargo.toml content hash (blake3)
10//! - Git HEAD commit SHA
11//! - Worktree modification time
12//!
13//! crates.io versions are cached with 15-minute TTL.
14//!
15//! ## Performance Target
16//!
17//! - Cold cache: <5s (parallel fetches)
18//! - Warm cache: <100ms (O(1) hash checks)
19
20mod cache;
21mod format;
22mod git;
23mod scanner;
24mod types;
25
26#[cfg(test)]
27mod proptests;
28#[cfg(test)]
29mod tests;
30#[cfg(test)]
31mod tests_extended;
32
33// Re-export all public types and functions
34pub use cache::{compute_cache_key, PublishStatusCache};
35pub use format::{format_report_json, format_report_text};
36pub use git::{determine_action, get_git_status, get_local_version};
37pub use scanner::PublishStatusScanner;
38pub use types::{CacheEntry, CrateStatus, GitStatus, PublishAction, PublishStatusReport};