pub enum HostEffectFailureKind {
TransportExhausted,
ProtocolError,
StorageUnavailable,
PermissionDenied,
ResourceExhausted,
Unknown,
}Expand description
The stable, cross-effect executor failure classification (§7.9).
Six values, closed, and the same six for every effect kind. This is the whole of what a host
may say about why an effect did not happen: a vendor’s own error taxonomy — rate_limited,
overloaded, service_unavailable, context_length_exceeded, 429, 503 — has no
representation here and must be folded into one of these before it reaches the kernel. That
fold is the host’s job precisely because the alternative is core reading raw vendor strings,
which is how one provider’s wording silently became another provider’s recovery policy (§22.8).
Deliberately not here:
- cancellation — that is
HostControl::Cancel, never an effect failure; - provider context overflow — that is
ProviderOutcome::ContextOverflow, a semantic success outcome the kernel recovers from, not a transport failure; - rate limiting and transient unavailability — the host retries those against its own
ladder and reports
Self::TransportExhaustedonly once the ladder is spent. A distinctrate_limitedcode would be an invitation for the kernel to run a back-off it cannot see the inputs to, which is the redispatch DEC-5 deletes.
Variants§
TransportExhausted
The host exhausted its own transport retry ladder. The kernel never saw the backoff, and this is the only code a spent rate-limit or unavailable ladder may arrive as.
ProtocolError
The host cannot execute this effect at all — unknown kind included. DEC-7 makes answering
with this code an obligation: dropping the effect or busy-waiting on it is a contract
violation, and it is why an if/else-if chain without a final else is not a legal main
loop.
PermissionDenied
ResourceExhausted
Unknown
Implementations§
Trait Implementations§
Source§impl Clone for HostEffectFailureKind
impl Clone for HostEffectFailureKind
Source§fn clone(&self) -> HostEffectFailureKind
fn clone(&self) -> HostEffectFailureKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more