minerva 0.2.0

Causal ordering for distributed systems
//! The block-document probe: PRD 0019 stage A, taken under ruling R-16.
//!
//! A structured page composed entirely from shipped materials, in the
//! parallel per-kind-maps recipe the stage-A scoping fixed: block identity is
//! an order-pair dot; block order is a [`Rhapsody`](crate::metis::Rhapsody);
//! uniform block fields (the kind tag, the title) are a
//! `DotMap<BlockDot, DotMap<Field, DotFun<&str>>>`; paragraph-kind content is
//! a `DotMap<BlockDot, Rhapsody>` (a sequence per block); table-kind content
//! is a `DotMap<BlockDot, DotMap<u32, DotFun<&str>>>`. Four causal pairs, on
//! the studio's own two-pair precedent (text beside cursors), each driven
//! through its [`Composer`](crate::metis::Composer).
//!
//! The probe exists to answer three questions with recorded evidence, never
//! to ship anything: whether the read-side conjunction rule classifies every
//! cross-pair delivery interleaving honestly (`coherence.rs`), where the
//! parallel per-kind-maps recipe hurts (`kinds.rs`: key-space duplication, no
//! canonical drop of a superseded kind's subtree, nothing preventing a
//! cross-kind read), and what a delete-plus-reinsert "move" loses
//! (`move_fork.rs`: the identity-fork exhibit, stage C's motivating number).
//! `measurements.rs` records the shape counters (the S110/S181 discipline).
//! The harness owns mechanism, never policy: which kind wins a conflict,
//! whether stale content is retracted, and what a render shows are the
//! scenarios' choices, made visible so the recipe reads plainly.

mod coherence;
mod gossip;
mod kinds;
mod measurements;
mod move_fork;
mod page;
mod reads;
mod render;
mod write;

pub use gossip::{gossip_fields, gossip_order, gossip_page, gossip_para, gossip_table};

/// The paragraph kind tag: sequence-shaped content in the paragraph map.
pub const PARAGRAPH: &str = "paragraph";

/// The table kind tag: nested-map content in the table map.
pub const TABLE: &str = "table";