Failure model (spec)¶
Failures are represented as immutable FailureArtifact objects.
FailureArtifact fields¶
A failure artifact MUST include:
failure_class— machine-actionable classificationcategory—operational_failureorepistemic_failurephase— canonical phase where the failure occurredrecoverable— whether the runner may attempt recoverymodeandmessage— how the failure was detected and what happened
Failure classes and profiles¶
Each FailureClass has a profile defining retryability, replayability, and category.
The profile is the source of truth for how the runner and tooling may react.
| FailureClass | Category | Retryable | Replayable |
|---|---|---|---|
validation_error |
operational | No | Yes |
execution_error |
operational | Yes | No |
resource_exhaustion |
operational | Yes | No |
fatal_failure |
operational | No | No |
user_interruption |
operational | No | Yes |
budget_exceeded |
operational | No | Yes |
max_iterations |
operational | No | Yes |
verification_veto |
operational | No | Yes |
epistemic_uncertainty |
epistemic | No | Yes |
Invariants¶
- Every
FailureClassMUST have a profile. - A failure artifact’s
categoryMUST match the profile’s category. - If
recoverableis true, the profile MUST mark the class retryable.
(Implementation reference: src/bijux_agent/pipeline/results/failure.py.)