//! Evidence bundle creation and management.
//!
//! Split across private sibling files under `bundle/`:
//!
//! | Sub-module     | Concern                                                   |
//! |----------------|-----------------------------------------------------------|
//! | `command`        | `CommandRecord` — rows in `commands.json`                 |
//! | `test_summary`   | `TestSummary` + `parse_cargo_test_output`                 |
//! | `outcome_record` | `TestOutcomeRecord` — rows in `tests/test_outcomes.jsonl` |
//! | `capture`        | `normalize_captured_text` — LF-normalize stdout/stderr    |
//! | `signing`        | `sign_bundle` / `verify_bundle_signature` (HMAC envelope) |
//! | `index`          | `EvidenceIndex` — struct mirror of `index.json`           |
//! | `builder`        | `EvidenceBuildConfig`, `EvidenceBuilder` (assembly state) |
//! | `time`           | `utc_now_rfc3339` + `utc_compact_stamp`                   |
//!
//! Re-exports below keep the crate's public API flat — every
//! consumer continues to `use evidence_core::bundle::{EvidenceBuilder, …}`
//! without caring about the split.

mod builder;
mod builder_coverage;
mod capture;
mod command;
mod command_failure;
mod error;
mod index;
mod outcome_record;
mod run_capture;
mod signing;
mod test_summary;
mod time;

pub use builder::{EvidenceBuildConfig, EvidenceBuilder};
pub use command::CommandRecord;
pub use command_failure::{STDERR_TAIL_LINES, ToolCommandFailure, tail_stderr};
pub use error::BuilderError;
pub use index::EvidenceIndex;
pub use outcome_record::{TestOutcomeRecord, TestsError};
pub use signing::{SigningError, sign_bundle, verify_bundle_signature};
pub use test_summary::{
    TestOutcome, TestSummary, parse_cargo_test_output, parse_cargo_test_output_detailed,
    parse_cargo_test_output_with_outcomes,
};
pub use time::{utc_compact_stamp, utc_now_rfc3339};
