minerva 0.2.0

Causal ordering for distributed systems
//! The build-cfg-gated harness exposure: present only under
//! `--cfg fuzzing`, absent from every ordinary build, every feature
//! combination, and the documented surface.
//!
//! Ruling R-71 named this path when it declined to ship the epoch
//! schedule tape's libFuzzer leg beside the in-tree proptest driver. The
//! fuzz crate's other targets each carry their own small copy of the
//! shape they drive, which is right for a four-hundred-line codec harness
//! and wrong at the fleet's scale: the replica recipe alone runs past two
//! thousand lines, so a copy would be a fork that drifts from the tree it
//! is supposed to defend. The lawful alternative the ruling reserved is
//! this one door, gated on a build cfg rather than a feature, so no
//! consumer can enable it and no published API mentions it.
//!
//! Nothing here is a mechanism. Every function is a driver over the
//! `metis::tests::fleet` harness, and its contract is the harness's own:
//! interpret the bytes, assert the charter's fleet-wide laws, panic on a
//! violation so libFuzzer records the input.

/// Drives the epoch schedule tape's addressed arm over one byte slice.
///
/// The bytes are read from both ends (ops from the front, delivery
/// addresses from the back), interpreted over a fresh three-replica
/// fleet, and the run closes with a heal, a drain, and the charter's
/// fleet-wide convergence and quiescence laws. A law violation panics
/// with the failing replica named; the tape itself is the reproducer, and
/// `crate::metis::tests::fleet::tape` carries the in-tree proptest twin
/// that gates the same door under `cargo test`.
pub fn epoch_schedule_tape(tape: &[u8]) {
    crate::metis::tests::fleet::tape::run_addressed_tape(tape);
}

/// Drives the membership schedule tape's addressed arm over one byte slice.
///
/// This sibling keeps the epoch tape's existing corpus byte-stable while
/// widening the operation alphabet to open arrival rounds and departure
/// attestations, install admitted joiners through bootstrap, and crash the
/// moving fleet. Its in-tree proptest twin owns the same convergence,
/// quiescence, and recorded-membership laws.
pub fn membership_schedule_tape(tape: &[u8]) {
    crate::metis::tests::fleet::membership_tape::run_membership_tape(tape);
}