Skip to main content

Escalation

Struct Escalation 

Source
pub struct Escalation {
    pub max_rungs_per_request: u32,
    pub session_promotion: Option<SessionPromotion>,
    pub speculation: u32,
    pub serve_threshold: Option<f64>,
    pub adaptive: Option<AdaptiveConfig>,
    pub enforce_structured: bool,
    pub bandit: Option<BanditConfig>,
    pub speculation_band: Option<[f64; 2]>,
    pub exploration: Option<ExplorationConfig>,
}
Expand description

Escalation limits and session-level promotion.

Fields§

§max_rungs_per_request: u32

Hard ceiling on rungs climbed within one request.

§session_promotion: Option<SessionPromotion>

Optionally start higher for the rest of a session that keeps failing.

§speculation: u32

Prefetch depth: fire this many rungs ahead concurrently to trade wasted spend for latency. 0 (default) is serial — one call at a time. The served result is identical either way.

§serve_threshold: Option<f64>

Calibrated conformal serve threshold: a rung is served iff its aggregate gate score is >= this value (SPEC §10.1). None (default) keeps the original rule — serve iff the aggregate gate verdict is Pass — byte-identical to today.

§adaptive: Option<AdaptiveConfig>

Online/adaptive conformal (Gibbs-Candès ACI): when set, the serve threshold is tracked live from deferred feedback instead of held fixed, so served-failure stays at target under distribution shift. None (default) uses the fixed serve_threshold above — byte-identical.

§enforce_structured: bool

Route tool-calling / multimodal requests through enforce (ADR 0005). Default true: agent traffic — the target workload — is gated out of the box. A per-request fidelity guard still applies: structured content only routes when every ladder rung’s provider carries it verbatim (Anthropic-dialect today); otherwise the request falls back to transparent observe passthrough rather than risking corruption. Set false to restore the pre-ADR-0005 behavior (structured requests always pass through un-gated).

§bandit: Option<BanditConfig>

UCB1 start-rung bandit: learn which rung to START the ladder on per request context, to cut expected cost by skipping rungs that almost always fail for this context. None (default) starts every request at rung 0 — byte-identical to today. Prediction may only choose where the ladder STARTS; gating, escalation, and serving are untouched.

§speculation_band: Option<[f64; 2]>

Speculative-deferral band: when set (and the bandit has a warm gate-pass estimate for the chosen start rung), speculative prefetch fires only when that estimate falls inside [low, high] — the marginal zone where the next rung is probably but not certainly needed, which is where parallel spend buys the most latency (speculative cascades). Outside the band (confident pass or confident fail-through) requests run serial and the speculative tokens are saved. None (default) = speculation applies unconditionally, byte-identical to today. No bandit / cold context ⇒ band inapplicable ⇒ configured speculation applies.

§exploration: Option<ExplorationConfig>

Epsilon-greedy start-rung exploration: randomise a fraction of start-rung choices and record propensities so IPS/SNIPS off-policy estimates are valid. None (default) → deterministic policy — byte-identical to today. See ExplorationConfig.

Trait Implementations§

Source§

impl Clone for Escalation

Source§

fn clone(&self) -> Escalation

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Escalation

Source§

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

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

impl Default for Escalation

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Escalation

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.