Skip to main content

ContextSourceExclusionV1

Enum ContextSourceExclusionV1 

Source
pub enum ContextSourceExclusionV1 {
    LifecycleNotLive {
        lifecycle: HarnessRunLifecycleV1,
    },
    NoBinding,
    NoActiveManagedSession,
    NodeIncarnationUnknown {
        node_id: HarnessSelectorV1,
        node_incarnation: HarnessSelectorV1,
        known_incarnations: Vec<HarnessSelectorV1>,
    },
    ManagedSessionRecordMismatch {
        record_id: HarnessSelectorV1,
        workspace_id: HarnessSelectorV1,
        instance_id: u64,
        generation: u64,
        node_has_records: u32,
    },
    ManagedSessionsPageTruncated {
        record_id: HarnessSelectorV1,
        page_len: u32,
        total: u32,
    },
    MonitorUnavailable,
    ProjectionNotLive {
        availability: ProjectionAvailabilityV1,
        freshness: ProjectionFreshnessV1,
        transport_incomplete: bool,
    },
    DurableNodeUnknown {
        node_id: HarnessSelectorV1,
    },
}
Expand description

Names, with its compared inputs, the exact reason context_source_option (hatchery-harness-service::runtime) declined to surface a run as a context_sources candidate. Instrumentation only, never a policy decision – the admission logic itself is unchanged by this type’s existence; it only makes an already-silent exclusion observable from launch-options and the harness’s own logs (context source excluded). One variant per early exit in that function, Live and Durable branches alike; a Live-branch-only or Durable-branch-only condition says so in its own doc comment.

Variants§

§

LifecycleNotLive

The run’s lifecycle is neither Running nor Waiting, and it carries no durable context pack (which would have taken the Durable branch instead of this lifecycle gate).

Fields

§

NoBinding

The run carries no binding at all – Live or Durable branch alike.

§

NoActiveManagedSession

The bound session identity is not Managed at all (Durable branch), or (Live branch) it is Managed with no active_session.

§

NodeIncarnationUnknown

Live branch only: no entry in the runtime inventory carries this run’s exact node_id + node_incarnation pair (the Durable branch re-resolves the node’s CURRENT incarnation by node_id alone instead; see DurableNodeUnknown). known_incarnations names the incarnation(s) the inventory DOES hold for that node_id, bounded at CONTEXT_SOURCE_EXCLUSION_KNOWN_INCARNATIONS_MAX.

Fields

§node_incarnation: HarnessSelectorV1
§known_incarnations: Vec<HarnessSelectorV1>
§

ManagedSessionRecordMismatch

The matched node’s managed_sessions page carries no record whose record_id/workspace_id/active_binding (workspace, instance, generation) match the run’s binding, and that page was NOT cut for size – the record genuinely does not exist on this node right now. node_has_records is the page’s own length, for scale.

Fields

§workspace_id: HarnessSelectorV1
§instance_id: u64
§generation: u64
§node_has_records: u32
§

ManagedSessionsPageTruncated

Same missing-record shape as ManagedSessionRecordMismatch, but the node’s managed_sessions_truncated flag was set: the page the harness received is a PREFIX of the node’s full record set, so the matching record may simply sit past that cut rather than genuinely be absent. page_len is the page’s own length, total the node’s full managed_session_count.

Fields

§page_len: u32
§total: u32
§

MonitorUnavailable

Live branch only: execute_operator_monitor returned an error for this run.

§

ProjectionNotLive

Live branch only: the monitor projection resolved but is not live enough to route an export through right now.

Fields

§transport_incomplete: bool
§

DurableNodeUnknown

Durable branch only: the pack’s node_id is not currently known by the runtime inventory at all (any incarnation), so there is no route to resolve the pack through right now.

Fields

Implementations§

Trait Implementations§

Source§

impl Clone for ContextSourceExclusionV1

Source§

fn clone(&self) -> Self

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 ContextSourceExclusionV1

Source§

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

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

impl<'de> Deserialize<'de> for ContextSourceExclusionV1

Source§

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

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for ContextSourceExclusionV1

Source§

impl PartialEq for ContextSourceExclusionV1

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for ContextSourceExclusionV1

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for ContextSourceExclusionV1

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.