fd303de94d
All 14 process::exit sites in aura-runner (member x8, measure x5,
translate x1) convert to RunnerError { exit_code, message } propagation;
run_signal_r / run_measurement return Result tuples carrying the
skipped-tap names beside the C18 reports (record shapes untouched), and
the CLI owns printing via the shared exit_on_runner_error arm (the
dispatch_reproduce pattern — reproduce now uses the same helper).
cost_knob becomes fallible: the sweep worker maps it into the cell's
MemberFault (closing the one hole in 'a worker never process-exits'),
the persist path keeps its string channel. The skipped-tap note is
CLI-printed from returned data, byte-identical.
The one deliberate behaviour change is the minuted C14 adjudication:
refusals in the content of what argv named (binding, synthetic mismatch,
compile, tap-bind content, exposes-neither) move exit 1 -> 2; the
boundary is FORM vs VALUE — an out-of-domain override value keeps the
runtime class via the panic containment, matching the campaign leg.
Environment/data/IO refusals stay 1 (TapPlanError::exit_class is the
single source). Named re-pins in exec.rs, run_refuses_unrunnable_
blueprint.rs, tap_recording.rs, graph_construct.rs; new library-level
test pins the milestone promise (a refusal returns in-process, the
embedding host survives). Prose is byte-identical everywhere.
Docs in lockstep: C28 deferred block closed (14 sites, hole closed),
C14 partition + form-vs-value boundary, C27 note emission, guide exit
classes. Fork minutes: issues/297#issuecomment-4868 and -4873.
closes #297
43 lines
1.5 KiB
Rust
43 lines
1.5 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_plan;
|
|
pub mod tap_recorder;
|
|
pub mod translate;
|
|
|
|
pub use project::Env;
|
|
pub use runner::DefaultMemberRunner;
|
|
pub use tap_plan::{
|
|
bind_tap_plan, BoundTaps, FoldBuildCtx, FoldEntry, FoldOutput, FoldRegistry, FoldSink, TapPlan,
|
|
TapPlanError, TapSubscription,
|
|
};
|
|
pub use tap_recorder::TapRecorder;
|
|
|
|
/// A refusal a library function reports instead of exiting the process
|
|
/// itself. The shell (`aura-cli`'s `exit_on_runner_error`, shared by the
|
|
/// dispatch arms) maps it back to the stderr bytes + exit code; the class
|
|
/// follows the C14 partition — argv-named content 2, environment/data/IO 1
|
|
/// (#295/#297).
|
|
#[derive(Debug)]
|
|
pub struct RunnerError {
|
|
pub exit_code: i32,
|
|
pub message: String,
|
|
}
|