//! Write-Ahead Log (WAL) and durability primitives for Episteme. //! //! This crate provides the foundational durability layer, ensuring that //! assertions are safely persisted to disk before being acknowledged. //! //! # Record Format (v2) //! //! Each record is stored as: `[payload_len:u32_LE][crc32c:u32][blake3:32][payload:N]` //! //! - CRC32C provides fast integrity checking to detect torn writes //! - BLAKE3 provides content-addressed verification //! //! # Crash Recovery //! //! The WAL provides crash recovery guarantees via immediate fsync. When a //! record is appended with `DurabilityLevel::Immediate` (the default), it //! is guaranteed to survive process crashes or power failures. //! //! On open, the journal scans all records across all segments, verifying //! CRC32C and BLAKE3. Any corrupt or partial records at the tail are truncated. //! //! # Log Rotation //! //! Segment files are named `{base_offset:016x}.wal`. When the current segment //! exceeds the configured max size, a new segment is created. Old segments //! can be cleaned up once all consumers have advanced past them. pub mod durability; /// Error types and Result wrapper for WAL operations. pub mod error; /// Binary format for WAL records and headers. pub mod format; /// The main Journal API. pub mod journal; /// Crash recovery: file scanning, validation, and truncation. pub mod recovery; /// Log rotation via segment files. pub mod segment; /// Group commit buffer for batching fsync operations. #[cfg(feature = "group-commit")] pub mod group_commit; pub use durability::{DurabilityLevel, FsyncGuard}; pub use error::{QuarantineError, Result}; pub use format::{FileHeader, Record, HEADER_SIZE, RECORD_OVERHEAD}; pub use journal::Journal; pub use recovery::RecoveryReport; pub use segment::{Segment, SegmentManager};