92e281e4ec
Two #283 groundwork moves for the fold-registry model: - TraceStreamer::register_tap returns a TapWriterOpener — everything needed to open one tap's incremental writer later, from inside a consumer node's initialize, without holding the streamer. tap_writer is re-expressed as register_tap(..).open(), so there is exactly one open path; pinned by a byte-equality test between the two. - TapRecorder leaves aura-std (which must not know aura-registry, C28 layering) and is reworked in aura-runner as the record entry's consumer: it holds the TapTraceWriter in-graph — initialize opens (deferred; an open error is stored and the node degrades to inert), eval appends per fired warm cycle (zero heap, no thread, no channel), finalize finishes the writer and reports exactly one terminal outcome. The SyncSender-based aura-std variant and its planned writer-thread protocol are retired; newest_cell becomes pub for the assembly crate. Verification: cargo clippy --workspace --all-targets -D warnings clean; aura-core/engine/registry/std/runner suites green (new tests: opener equivalence, happy-path capture + single Ok outcome, failed-open inert + single Err outcome). refs #283 refs #77
38 lines
1.3 KiB
Rust
38 lines
1.3 KiB
Rust
//! aura-runner — the C28 assembly position (#295).
|
|
//!
|
|
//! The canonical member-run recipe as a library: harness assembly, input
|
|
//! binding (C26), the C1-load-bearing param<->config translators, and the
|
|
//! axis/risk-regime conventions. [`DefaultMemberRunner`] is the shipped
|
|
//! `aura_campaign::MemberRunner` implementation over that recipe, plus the
|
|
//! campaign trace-persistence disk-layout writers (`runner` module) and the
|
|
//! shared coverage-report walk (`coverage` module). A downstream World
|
|
//! program reaches the entire family/validation machinery through this
|
|
//! crate plus `aura-campaign`, with no `aura` binary involved.
|
|
|
|
pub mod axes;
|
|
pub mod binding;
|
|
pub mod coverage;
|
|
pub mod family;
|
|
pub mod measure;
|
|
pub mod member;
|
|
pub mod project;
|
|
pub mod reproduce;
|
|
pub mod runner;
|
|
pub mod tap_recorder;
|
|
pub mod translate;
|
|
|
|
pub use project::Env;
|
|
pub use runner::DefaultMemberRunner;
|
|
pub use tap_recorder::TapRecorder;
|
|
|
|
/// A refusal a library function reports instead of exiting the process
|
|
/// itself. The shell (`aura-cli`'s `dispatch_reproduce`) is the single place
|
|
/// that maps it back to the identical stderr bytes + exit code, so the
|
|
/// binary's observable behaviour stays byte-unchanged (#295, spec §Error
|
|
/// handling).
|
|
#[derive(Debug)]
|
|
pub struct RunnerError {
|
|
pub exit_code: i32,
|
|
pub message: String,
|
|
}
|