pub struct EventTag {
pub attached: Option<EventType>,
pub category: EventCategory,
}Expand description
Provenance tag carried alongside a log message so display sinks can route by kind, not by sniffing message text.
The only consumer today is the tui=terminal log sink: it
owns a managed phase-history region (the idempotent catch-up
projection of the scene tree), so the phase start/end readout
lines that would otherwise scroll past in the log stream are
tagged attached: PhaseStart and suppressed from that
stream — they live in the region instead. Every other surface
(session.log, the failure dump, the full TUI panel) treats
all events alike; the tag is purely additive.
The tag is TWO ORTHOGONAL AXES (they were one conflated enum
once, with Diagnostic — “anything else” — riding beside
boundary-attached kinds, and sinks keying presentation rules
off the conflation):
EventTag::attached— WHERE on the execution lifecycle the event belongs, in the canonical lifecycle vocabulary (crate::lifecycle::EventType: session/scope/each/phase boundaries).None= in-flight — emitted from the running body, bound to no boundary.EventTag::category— WHAT the event is about (EventCategory): the semantic domain, independent of when it fired.
Presentation rules derive from the axes instead of naming
bundles: “hide phase-start renders from scrollback” keys on
attached == Some(PhaseStart); “the TUI log panel shows only
in-flight diagnostics” keys on attached.is_none(); “detail
rows fold with their block” keys on attached == Some(PhaseEnd) && category != Outcome.
Fields§
§attached: Option<EventType>The execution-lifecycle boundary this event is attached to;
None = in-flight.
category: EventCategorySemantic category.
Implementations§
Source§impl EventTag
impl EventTag
Sourcepub const fn in_flight(category: EventCategory) -> Self
pub const fn in_flight(category: EventCategory) -> Self
An in-flight event of the given category (no boundary).
Sourcepub const fn at(moment: EventType, category: EventCategory) -> Self
pub const fn at(moment: EventType, category: EventCategory) -> Self
An event attached to a lifecycle boundary.
Trait Implementations§
impl Copy for EventTag
impl Eq for EventTag
impl StructuralPartialEq for EventTag
Auto Trait Implementations§
impl Freeze for EventTag
impl RefUnwindSafe for EventTag
impl Send for EventTag
impl Sync for EventTag
impl Unpin for EventTag
impl UnsafeUnpin for EventTag
impl UnwindSafe for EventTag
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more