pub struct ThreadEvent {
pub frame: Option<StreamFrame>,
pub payload: Option<Payload>,
}Expand description
One typed stream composes a Thread’s decision context. Common frame controls have no payload. Every data frame carries exactly one payload; snapshots and delta batches become visible only at their checkpoint. SectionReplacement.section and SectionStatus.section use these exact keys: overview (overview); captures (capture); review (comparison, review, diff); evidence (evidence, check_acknowledgement); collaboration (discussion, turn, context, source_target); analysis (analysis); checkouts (checkout); timeline (timeline_event, run, operation); sharing (sharing, publication). Replacement clears only that section’s committed collection. V1 timeline “operation” is explicitly empty. Timeline always reports a section status, including an eligible empty collection. Timeline run/event frames reuse RunRecord/TimelineRecord output, ordered by server change sequence; recorded_at is display time only. Removal uses Removal. A lost timeline membership proof or change-log continuity ends with Reset then FIN. Resource-reader and Thread/Spool audience rights are ceilings. A run/event is visible only to its verified direct-human principal account or a live same-principal agent whose final effective PoP key digest exactly equals the run’s frozen actor digest. Agent labels, Thread/Spool owner and admin roles never override that predicate. Join current sharing epoch, audience, billing/deletion gates and the payload deadline before order, limit or count. Forbidden and absent run IDs, pages and cursors have identical status, count, cursor and Reset shapes. No hidden append advances a visible cursor. Every eligibility-bearing frame gets a fresh current database authorization check immediately before handoff; expiry wakes idle followers without a sweep. Unknown section semantics require a fresh supported view, never silent loss.
Fields§
§frame: Option<StreamFrame>§payload: Option<Payload>Trait Implementations§
Source§impl Clone for ThreadEvent
impl Clone for ThreadEvent
Source§impl Debug for ThreadEvent
impl Debug for ThreadEvent
Source§impl Default for ThreadEvent
impl Default for ThreadEvent
Source§impl Message for ThreadEvent
impl Message for ThreadEvent
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.