Failure taxonomy
Every bundle failure is classified into one of five canonical classes. Each class has a distinct recovery policy that the agent applies automatically.Injecting a fault
The fault injection system lets you trigger any failure class on demand — without real network conditions. Register a one-shot fault before enqueueing a transaction:The fault is consumed after a single use. The next submit after the faulted one goes to real Jito.
How it works
When a fault is registered viaPOST /debug/fault, the sidecar stores it in a next_fault field. The next call to POST /internal/submit:
- Drains the tx queue normally (bytes are retained for retry)
- Detects the pending fault
- Synthesizes a failed lifecycle entry with the specified
failure_class - Emits
TxStatusChanged+BundleSettledSSE events - Returns HTTP 200 with a structured result — no Jito call is made
Running the full demo
Thefault_demo.ts script in the agents/ directory automates the full sequence:
Valid fault classes
string
required
One of the five canonical classes:
fee_too_lowexpired_blockhashbundle_failedcompute_exceededslot_skip
string
Optional custom error string stored in the lifecycle entry’s
raw_error field.
Defaults to "Injected fault: {failure_class} (demo)".