pub enum RunnerError {
Show 14 variants
IrHashMismatch {
declared: Hash,
computed: Hash,
},
StepHashMismatch {
step_id: StepId,
domain: &'static str,
declared: Hash,
computed: Hash,
},
NotInM0Subset {
step_id: Option<StepId>,
construct: String,
},
InvalidHumanStep {
step_id: StepId,
reason: String,
},
CallDepthExceeded {
depth: usize,
max: usize,
},
SubflowRegistry {
detail: String,
},
CapabilityDrift {
expected: Hash,
attested: Hash,
},
InvalidParams {
reason: String,
},
OldIrMismatch {
expected: Hash,
computed: Hash,
},
RequiresConfirmation {
report: Box<AlignmentReport>,
},
M0Unsupported {
detail: String,
},
EvidenceIntegrity {
asset_id: String,
expected: String,
actual: String,
},
Store(StoreError),
Provider(ProviderError),
}Expand description
Runner-level typed error (thiserror). Step-level failures are not errors — they fold into verdicts and the run finishes; this enum covers refusals (load checks, capability drift, M0 subset, resume gates) and infrastructure failures (store, provider).
Variants§
IrHashMismatch
The FlowIR’s stored irHash does not match recomputation
(load check, spine §1.2: the runner recomputes and compares).
Fields
StepHashMismatch
A step’s stored effectHash/judgeHash does not match
recomputation (the artifact is self-checkable, 02 §12.2).
Fields
NotInM0Subset
The IR uses a construct outside the current execution subset — fail-closed, never silently skipped. The vocabulary that remains outside: the re-invocation dispositions on call/human hosts (07 §1’s attempt-framed re-call and the fresh-request re-ask), which the load gate keeps as typed refusals.
Fields
InvalidHumanStep
A human step’s declared shape is inconsistent (runtime defense line
against hand-built IR; the compiler check phase refuses these
first): confirm without exactly two decision labels, judge
decisions outside the three-valued vocabulary, or provideInput
without an outputSchema (06 §2.2).
CallDepthExceeded
The static call closure exceeds maxCallDepth (07 §1.3: 8 frames
including the root; the compiler already refuses this — the load
check is the runtime defense against hand-built IR).
Fields
SubflowRegistry
The subflow registry handed to the runner does not close over the
IR’s subflows pins (a call target is missing, a hash key does not
self-verify, or a pin disagrees with the flow’s own table).
CapabilityDrift
The session attestation does not match the IR’s lockfileDigest
(spine §4.1/§5 capability_drift): refuse to run or resume, never
silently degrade.
Fields
InvalidParams
The run params are not usable (not an object, or a required param without default is missing).
OldIrMismatch
The supplied old FlowIR is not the IR the run executed.
Fields
RequiresConfirmation
Re-execution of already-effective mutating steps requires explicit
human authorization (07 §5.4 unified gate). Fails closed; the
author releases entries by naming them in
ResumeOptions::allow_mutating_reexec (the CLI’s repeatable
--allow-mutating-reexec <stepId>). The report carries whatever
remains gated.
Fields
report: Box<AlignmentReport>The alignment report whose requiresConfirmation entries name
the gated steps.
M0Unsupported
A combination that is valid in the design but deliberately not implemented in M0 (each site documents the pending incorporation).
EvidenceIntegrity
Localized evidence bytes do not match the provider-declared sha256 (04 §4.3: evidence integrity is non-negotiable).
Fields
Store(StoreError)
Store-layer failure (SQLite / fold / IO).
Provider(ProviderError)
Provider-layer failure outside an action terminal (e.g. reconcile or verdict write-back failed).
Trait Implementations§
Source§impl Debug for RunnerError
impl Debug for RunnerError
Source§impl Display for RunnerError
impl Display for RunnerError
Source§impl Error for RunnerError
impl Error for RunnerError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()