//! Runner instrumentation helpers.
//!
//! The full runner crate is  and has not landed yet. This module
//! ships the small piece of plumbing the runner will call on every step:
//! a stopwatch that captures the start instant, runs the step's future,
//! and produces a [`TestStep`] with RFC 3339 timestamps and an
//! integer-millisecond `duration_ms`.
//!
//! Cache-hit steps follow the convention: they always emit
//! `duration_ms = 1` so reporter math (sums, percentages, cold-vs-cached
//! deltas) never divides by zero on the cached branch.
//!
//! [`TestStep`]: crate::report::TestStep

pub mod consensus;
pub mod engine;
pub mod error;
pub mod executor;
pub mod options;
pub mod restart;
pub mod resume;
pub mod step;

pub use consensus::{attach_to_step, attach_to_test};
pub use engine::Runner;
pub use error::RunnerError;
pub use executor::{TestExecutor, TestOutcome, TestSpec};
pub use options::{Parallelism, ResultCacheOptions, RunnerOptions};
pub use resume::{cell_key, fingerprint, JournalError, RunJournal};
pub use step::{time_step, time_step_sync};
