Skip to main content

FinalizeError

Enum FinalizeError 

Source
#[non_exhaustive]
pub enum FinalizeError { Task(JoinError), Invariant(String), Receipt { context: String, source: Option<ErrorSource>, }, Atif { context: String, source: Option<ErrorSource>, }, Promotion(String), CaptureIncomplete, ToolEvidence(String), Bridge { context: String, source: Option<ErrorSource>, }, BridgeConfig { context: String, source: Option<ErrorSource>, }, }
Expand description

Lifecycle errors.

Variants that wrap an underlying failure carry it as a typed std::error::Error::source instead of a pre-rendered String, so callers can branch on the concrete cause (e.g. io::ErrorKind) via source().downcast_ref::<std::io::Error>() and tracing subscribers receive the full chain. context keeps the exact text the old String payloads rendered, so Display output (which operators grep and HTTP error bodies embed) is unchanged.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Task(JoinError)

Blocking task failed or panicked.

§

Invariant(String)

Internal finalization invariant violated (no underlying error exists to attach, e.g. a recovery path found the session still referenced elsewhere). Shares the Task Display prefix so operator log greps for “finalization task failed:” keep matching the messages this variant absorbed from Task.

§

Receipt

Receipt issuance failed.

Fields

§context: String

Human-readable description (Display-compatible with the old Receipt(String) payload).

§source: Option<ErrorSource>

Underlying typed error, when one exists.

§

Atif

ATIF persistence or parsing failed.

Fields

§context: String

Human-readable description (Display-compatible with the old Atif(String) payload).

§source: Option<ErrorSource>

Underlying typed error, when one exists.

§

Promotion(String)

Promotion is invalid for this session. Genuinely semantic refusals — there is never an underlying error to attach.

§

CaptureIncomplete

One or more upstream actions were not captured.

§

ToolEvidence(String)

Tool evidence is unresolved or temporarily unreadable. Leave the finalization claim retryable without discarding execution evidence.

§

Bridge

Lifecycle event could not be durably published.

Fields

§context: String

Human-readable description (Display-compatible with the old Bridge(String) payload).

§source: Option<ErrorSource>

Underlying typed error, when one exists.

§

BridgeConfig

Lifecycle bridge failed due to a PERMANENT misconfiguration (e.g. BusError::UnknownTopic — the topic was not provisioned via the manifest). SDKs should NOT retry this; the operator must fix the config. Historically this collapsed into Bridge(_) and mapped to HTTP 503 + Retry-After, so clients retried pointlessly. Kept as a distinct variant so finalize_error_response can route it to 400 (no Retry-After) while genuine transient failures keep 503 semantics.

Fields

§context: String

Human-readable description (Display-compatible with the old BridgeConfig(String) payload).

§source: Option<ErrorSource>

Underlying typed error, when one exists.

Implementations§

Source§

impl FinalizeError

Source

pub fn receipt(context: impl Into<String>) -> Self

Semantic receipt failure with no underlying typed error.

Source

pub fn receipt_source<E>(error: E) -> Self
where E: Error + Send + Sync + 'static,

Receipt failure caused by a typed error. The error text is kept in context so Display matches the old stringified payload, while the value itself stays reachable via Error::source().

Source

pub fn atif(context: impl Into<String>) -> Self

Semantic ATIF failure with no underlying typed error.

Source

pub fn atif_source<E>(error: E) -> Self
where E: Error + Send + Sync + 'static,

ATIF failure caused by a typed error (see Self::receipt_source).

Source

pub fn bridge(context: impl Into<String>) -> Self

Semantic bridge failure with no underlying typed error.

Source

pub fn bridge_source<E>(error: E) -> Self
where E: Error + Send + Sync + 'static,

Bridge failure caused by a typed error (see Self::receipt_source).

Source

pub fn is_transient_io(&self) -> bool

True iff this error is caused by a transient I/O condition (spool disk full, read-only filesystem, spool storage temporarily unreachable). The response layer maps these to 503 Service Unavailable + Retry-After rather than the default 500 Internal Server Error, matching the /readyz probe policy that already treats ENOSPC/EROFS as transient. Same permanence-split discipline as Bridge vs BridgeConfig.

Walks the source chain via std::error::Error::source so an av_atif::WriteError { source: io::Error } or an av_receipts::SignError { source: io::Error } are both detected regardless of how deep the wrap is.

Trait Implementations§

Source§

impl Debug for FinalizeError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for FinalizeError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for FinalizeError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<BusError> for FinalizeError

Source§

fn from(error: BusError) -> Self

Preserve the permanence classification when converting a bridge error into a Finalize error. Permanent causes (unknown topic, serde) route to BridgeConfig so clients see a 4xx status without Retry-After; transient causes (I/O, backend outage) stay Bridge and keep 503 with Retry-After. The BusError itself is retained as the typed source so its own chain (e.g. io::Error) survives.

Source§

impl From<JoinError> for FinalizeError

Source§

fn from(source: JoinError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ToCompactString for T
where T: Display,

§

fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>

Fallible version of [ToCompactString::to_compact_string()] Read more
§

fn to_compact_string(&self) -> CompactString

Converts the given value to a [CompactString]. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,