Errors
Structured error hierarchy with TraceInfo, error IDs, JSON serialization, and wrap() for cause chaining.
Error Hierarchy
PatchError
├── StorageError
├── CircuitBreakerOpenError
└── StorageConnectionError
├── FSMError
├── InvalidStateTransition
└── StateNotFoundError
├── MiddlewareError
└── RouterError
TraceInfo
Every PatchError includes a trace_info with error ID, timestamp, and context for log correlation.
try:
await patch_helper.set_state(SomeState.step)
except InvalidStateTransition as e:
print(e.trace_info.error_id) # "err_abc123"
print(e.trace_info.timestamp) # datetime
print(e.to_json()) # full JSON repr