Skip to main content

EngineError

Enum EngineError 

Source
pub enum EngineError {
Show 22 variants Storage, Projection, Vector, Embedder, EmbedderNotConfigured, KindNotVectorIndexed, EmbedderDimensionMismatch { expected: u32, actual: u32, }, Scheduler, OpStore, WriteValidation, SchemaValidation, Overloaded, Closing, Extractor, Consolidator, InvalidFilter { reason: String, }, InvalidArgument { msg: String, }, VectorEquivalenceMismatch { reason: String, }, IllegalTransition { from_state: LifecycleState, to_state: LifecycleState, legal: Vec<LifecycleState>, }, NotLifecycleAddressable { id_space: IdSpaceKind, }, ErasureIncomplete { stage: String, detail: String, }, ProjectionDestructive { name: String, delta: String, },
}

Variants§

§

Storage

§

Projection

§

Vector

§

Embedder

§

EmbedderNotConfigured

§

KindNotVectorIndexed

§

EmbedderDimensionMismatch

Fields

§expected: u32
§actual: u32
§

Scheduler

§

OpStore

§

WriteValidation

§

SchemaValidation

§

Overloaded

§

Closing

§

Extractor

G11 (Slice 15) — BYO-LLM extractor subprocess error (protocol mismatch, spawn failure, or harness-returned error code).

§

Consolidator

0.8.12 Slice 15 (OPP-2, ADR-0.8.12) — BYO-LLM consolidation provider error (protocol mismatch, spawn/handshake failure, task not advertised in supported_tasks, or a malformed/out-of-cluster verdict). Rides the SAME provider_session transport as Extractor; this is the task-specific leaf.

§

InvalidFilter

G4 (Slice 35) — filter predicate construction error: non-allowlisted path or invalid filter argument. NOT a panic — returned as a typed error from Predicate::json_path_eq / Predicate::json_path_compare.

Fields

§reason: String
§

InvalidArgument

Slice 20 (G5/G6) — an argument is out of the accepted range (e.g. depth > 3 for graph traversal). The msg field carries a human-readable explanation; it is intentionally non-exhaustive so the binding layer can forward it as a ValueError / TypeError.

Fields

§

VectorEquivalenceMismatch

0.8.18 Slice 5 (#5 vector-equivalence probe KEYSTONE) — the open-time self-check re-embedded the 45 committed probes with the live backend and found a divergence beyond the frozen D4 floor (a Phase-1 mean-centered embedding_bin sign flip, OR a Phase-2 un-centered L2 distance over VECTOR_EQUIVALENCE_L2_EPSILON). Engine::open succeeded into a degraded state (dense_disabled = true); this query-time error is raised at the single choke point Engine::search_inner_with_stats BEFORE any embedding / vector SQL / graph seeding / CE rerank, refusing EVERY vector-dependent arm (search, search_expand, explain/rerank, graph-arm). The explicit text-only/FTS-only path (Engine::search_text_only) stays serviceable. Sibling of the open-time EngineOpenError::EmbedderIdentityMismatch; per ADR-0.8.18 codex R2 U1-1 the refusal surfaces as an EngineError (queries never surface EngineOpenError). reason carries a human-readable summary.

Fields

§reason: String
§

IllegalTransition

OPP-12 Phase-1 (0.8.19 Slice 10) — a lifecycle transition/purge move that the engine-enforced legal-transition table (design §2) forbids. Raised for an illegal transition target (purged/pending are never transition targets; self-loops; a from→to pair not in the table) AND for a purge precondition failure (purge is legal only from deleted). from_state/to_state use the FULL, parity-safe field names (S7 — from is a Python reserved word); legal enumerates the target states reachable from from_state in the full state machine.

Fields

§from_state: LifecycleState
§

NotLifecycleAddressable

OPP-12 Phase-1 (0.8.19 Slice 10) — a lifecycle verb (transition/purge) was addressed with a non-Logical id space (a Content/h: doc-seeded or Passage/p: synthetic id). Only the Logical (l:) space is lifecycle-addressable (design §3); this is a typed refusal, never a panic or a silent no-op. id_space carries the offending IdSpaceKind.

Fields

§id_space: IdSpaceKind
§

ErasureIncomplete

0.8.20 Slice 5b (R-20-E5, design 0.8.20-slice0-erasure-design.md §4 item 4) — an erasure verb (purge / excise_source / excise_collection_record) deleted its rows but could NOT complete the erasure at rest, so it refuses to report success.

The motivating case is the write-ahead log. PRAGMA secure_delete=ON zeroes pages freed inside the database file, but the erased content also sits in the WAL as committed frames from the ORIGINAL insert: an erasure DELETE appends new frames, it never rewrites old ones. Only a wal_checkpoint(TRUNCATE) removes them, and a concurrent reader pinning a WAL snapshot makes that checkpoint return busy. After a bounded retry the verb raises THIS error rather than returning Ok over erased bytes that are still grep-able on disk.

Contract: an erasure verb must never report success on an incomplete erasure. The row deletions are committed and durable when this is raised; what failed is the at-rest scrub. The remedy is to retry the verb (or recover --truncate-wal) once the blocking reader has finished. stage names the uncompleted step (e.g. "wal_checkpoint", "telemetry_redaction"); detail is a human-readable summary.

Fields

§stage: String
§detail: String
§

ProjectionDestructive

0.8.20 Slice 15d (R-20-PR) — configure_projections refused an incompatible/DESTRUCTIVE change to an existing projection name that was NOT accompanied by an explicit drop. Omission from the spec never drops (C3, api-surface.md:27); a role REMOVAL or a tokenizer/embedder change on a live projection would silently discard an expensive-to-rebuild resource, so it is refused with the destructive delta surfaced. The caller re-issues with drop: [name] to consciously rebuild.

Fields

§name: String
§delta: String

Trait Implementations§

Source§

impl Clone for EngineError

Source§

fn clone(&self) -> EngineError

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 EngineError

Source§

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

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

impl Display for EngineError

Source§

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

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

impl Eq for EngineError

Source§

impl Error for EngineError

1.30.0 · 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 PartialEq for EngineError

Source§

fn eq(&self, other: &EngineError) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for EngineError

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
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> 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.