Skip to main content

EmitError

Enum EmitError 

Source
pub enum EmitError {
    Unsupported {
        form: &'static str,
    },
    MemoryIdAllocation {
        name: String,
        cause: BindError,
    },
    SemanticSupersessionConflict {
        s: SymbolId,
        p: SymbolId,
        valid_at: ClockTime,
        existing: SymbolId,
    },
    InferentialSupersessionConflict {
        s: SymbolId,
        p: SymbolId,
        valid_at: ClockTime,
        existing: SymbolId,
    },
    SupersessionDag(DagError),
    ProceduralSupersessionConflict {
        rule_id: SymbolId,
        existing: SymbolId,
    },
}
Expand description

Errors produced by the Emit stage. An EmitError always means an invariant should have been caught earlier or the form is not yet supported at this milestone.

Variants§

§

Unsupported

A form shape is not yet wired to a canonical record. See the module-level scope notes for which forms emit records in this milestone.

Fields

§form: &'static str

Form name (alias, rename, retire, correct, promote, query).

§

MemoryIdAllocation

Allocating the synthesized __mem_{n} symbol failed. The only realistic cause is a name collision with an agent-emitted symbol that used the reserved __mem_ prefix, which would itself be a prior bug; preserved as a typed variant for diagnosability.

Fields

§name: String

The synthesized name that collided.

§cause: BindError

Underlying bind error.

§

SemanticSupersessionConflict

Two Semantic writes land at the same (s, p) with identical valid_at. Per temporal-model.md § 5.1 two memories cannot both be authoritative at the same conflict key and identical validity start under the single-writer invariant — surface as a deterministic emit-time error so the agent can correct the valid_at or choose a different (s, p).

Fields

§s: SymbolId

Subject of the conflicting write.

§p: SymbolId

Predicate of the conflicting write.

§valid_at: ClockTime

Shared valid_at that triggered the conflict.

§existing: SymbolId

Memory ID of the existing current-state memory.

§

InferentialSupersessionConflict

Two Inferential writes land at the same (s, p) with identical valid_at. Per temporal-model.md § 5.4 Inferential supersession mirrors Semantic § 5.1 — equal valid_at against the same (s, p) is a deterministic write conflict the agent must resolve by choosing a distinct valid_at or re-keying.

Fields

§s: SymbolId

Subject of the conflicting write.

§p: SymbolId

Predicate of the conflicting write.

§valid_at: ClockTime

Shared valid_at that triggered the conflict.

§existing: SymbolId

Memory ID of the existing current-state memory.

§

SupersessionDag(DagError)

An auto-supersession edge failed the DAG’s acyclicity check. Cannot happen from auto-supersession alone (new memories have fresh IDs that cannot appear as ancestors), but the DAG’s contract surfaces any violation rather than silently accepting.

§

ProceduralSupersessionConflict

Two Procedural writes in the same batch land on overlapping supersession keys (same rule_id or same (trigger, scope)). They would share committed_at per § 9.2 monotonic-batch semantics, producing a zero-duration Supersedes edge. Per the Semantic analog at § 5.1 this is a deterministic write conflict rather than a silent accept — the agent should split the batch or choose distinct keys.

Fields

§rule_id: SymbolId

The rule_id under conflict.

§existing: SymbolId

The first in-batch Pro memory that occupies the key.

Trait Implementations§

Source§

impl Debug for EmitError

Source§

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

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

impl Display for EmitError

Source§

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

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

impl Error for EmitError

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<DagError> for EmitError

Source§

fn from(source: DagError) -> Self

Converts to this type from the input type.
Source§

impl From<EmitError> for PipelineError

Source§

fn from(source: EmitError) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for EmitError

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for EmitError

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

Source§

type Output = T

Should always be Self
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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