pub enum FlowError {
Parse(String),
Analyze(String),
Compile(String),
Runtime(String),
Denied(String),
Core(Error),
}Expand description
A failure in one of the Flux-Lang pipeline phases.
Variants§
Parse(String)
The compact syntax or JSON AST could not be parsed.
Analyze(String)
The analyzer rejected the AST (unknown op, unbound symbol, illegal expression position, invalid name, arity/required-param or scalar type mismatch, unbounded loop, …). Effect authorization is not the analyzer’s job — policy decides allow/deny/approve at dispatch.
Compile(String)
The LLM front-end failed to produce a valid AST (after repair attempts).
Runtime(String)
A failure while executing a plan.
Denied(String)
The host’s safety envelope refused to run an op — a policy / permission-rule /
capability-scope / user-approval denial, marked by the host on the dispatch outcome
(OpOutcome::denied). Structured (not the in-band error string a
failed op surfaces as) so is_fatal can see it: re-attempting a
deliberate refusal can never succeed and only re-prompts/re-audits the same denial (L-21).
Core(Error)
An error bubbled up from a lower flux layer.
Implementations§
Source§impl FlowError
impl FlowError
Sourcepub fn is_fatal(&self) -> bool
pub fn is_fatal(&self) -> bool
Whether this error is fatal — a deliberate refusal (a denied confirm, an op
Denied by the host’s safety envelope) or a failed invariant
(AssertFailed) — rather than a transient failure. Fatal errors must never be re-attempted
or silently absorbed by the reliability wrappers: retry propagates them immediately, and
the wrap points (loop’s body re-wrap, the composite-op boundary) preserve their structural
identity instead of stringifying them, so an enclosing retry still sees them.
Trait Implementations§
Source§impl Error for FlowError
impl Error for FlowError
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()