pub enum LoopEvent {
Show 43 variants
ConversationSeeded {
seed: ConversationSeeded,
},
ConversationDelta {
record: ConversationDeltaRecord,
},
TurnObserved {
turn: u32,
actor: String,
output: TurnOutput,
},
ToolCallObserved {
call: ProviderToolCall,
},
ProposalObserved {
call_id: String,
proposal: EffectProposal,
},
ProposalChecked {
call_id: String,
proposal: EffectProposal,
witness: Box<FullAdmissibilityWitness>,
},
EffectApplied {
call_id: String,
mutated: bool,
output: String,
},
ToolBatchConflict {
call_id: String,
conflicts_with: String,
resources: Vec<String>,
},
EffectDenied {
call_id: String,
reason: String,
class: ResidualClass,
},
CandidateMeasured {
node_id: String,
generation: u32,
candidate_id: String,
energy: f64,
hard_pass: bool,
residuals: Vec<ResidualEvent>,
},
GateDecisionRecorded {
node_id: String,
generation: u32,
candidate_id: String,
decision: GateDecision,
observed_energy: Option<f64>,
best_accepted_before: Option<f64>,
},
DecisionBoundRefused {
node_id: String,
generation: u32,
bound: u64,
decisions_used: u64,
},
CandidateRestored {
checkpoint_id: String,
},
EffectBoundaryMeasured {
call_id: String,
node_id: String,
generation: u32,
energy: f64,
hard_pass: bool,
residuals: Vec<ResidualEvent>,
},
ContextCheckpointCreated {
checkpoint: ContextCheckpoint,
},
DurableCandidateCheckpoint {
candidate_id: String,
state_root: String,
control: ControlFrame,
conversation: Conversation,
birth_deps: Vec<StateDependency>,
canonical_scope: Vec<String>,
files: Vec<DurableSeedFile>,
},
RecoveryControlGranted {
failure: FailureKind,
level: CascadeLevel,
forced_escalation: bool,
model: ModelId,
},
RouteFailover {
from_model: ModelId,
to_model: ModelId,
cause: String,
},
RecoveryContained {
reason: String,
restored_checkpoint_id: String,
},
SearchOpened {
forest_id: String,
node_id: String,
generation: u32,
accepted_root: String,
limits: SearchLimits,
resumed_from: Option<String>,
},
SearchUsageSnapshot {
forest_id: String,
epoch: u64,
usage: SearchUsage,
},
BranchForked {
forest_id: String,
branch_id: String,
parent_branch: Option<String>,
seed_checkpoint: String,
seed_witness: WitnessRef,
},
BranchStrategySelected {
forest_id: String,
branch_id: String,
strategy_id: String,
},
BranchObservation {
forest_id: String,
branch_id: String,
observation: String,
},
BranchCandidateMeasured {
forest_id: String,
branch_id: String,
candidate_id: String,
measurement: BranchMeasurement,
},
PartialCheckpointed {
forest_id: String,
branch_id: String,
checkpoint: PartialCheckpointRef,
},
FrontierEpochStarted {
forest_id: String,
epoch: u64,
forest_digest: String,
},
FrontierEntryServed {
forest_id: String,
branch_id: String,
epoch: u64,
},
BranchIneligible {
forest_id: String,
branch_id: String,
reason: String,
},
BranchNotSelected {
forest_id: String,
branch_id: String,
},
BranchAbandoned {
forest_id: String,
branch_id: String,
reason: String,
},
BranchSelected {
forest_id: String,
branch_id: String,
candidate_id: String,
},
BranchCommitted {
forest_id: String,
branch_id: String,
candidate_id: String,
decision: GateDecision,
},
NoGoodRecorded {
forest_id: String,
branch_id: String,
key: String,
evidence_hash: String,
support_kind: String,
},
SearchClosed {
forest_id: String,
usage: SearchUsage,
},
ContextWorkingSet {
forest_id: String,
branch_id: String,
turn: u32,
page_ids: Vec<String>,
},
ContextPagesSelected {
forest_id: String,
branch_id: String,
turn: u32,
resident_digest: String,
page_ids: Vec<String>,
},
ContextMiss {
forest_id: String,
branch_id: String,
turn: u32,
key: String,
},
ContextPageRecalled {
forest_id: String,
branch_id: String,
turn: u32,
page_id: String,
},
ContextInfeasible {
forest_id: String,
branch_id: String,
turn: u32,
required: u64,
allowance: u64,
},
ContextCompacted {
forest_id: String,
branch_id: String,
summary_page: String,
source_pages: Vec<String>,
},
PromptProgramCompiled {
turn: u32,
program: CompiledPromptProgram,
},
PromptProgramInvoked {
turn: u32,
invocation_digest: String,
platform_digest: String,
domain_digest: String,
tool_spec_hash: String,
resident_context_digest: String,
},
}Expand description
Recorded loop events (the ledger consumes these in system 14).
Variants§
ConversationSeeded
The fold base for the model context (Gate O). Additive: old ledgers without seeds still replay.
Fields
seed: ConversationSeededConversationDelta
One digest-chained model-context change, recorded before it is applied to the live projection.
Fields
record: ConversationDeltaRecordTurnObserved
Fields
actor: StringWhich actor observed this output (PSP-10 system 27). Empty on pre-PSP-10 rows; the observation is always recorded before any parse.
output: TurnOutputToolCallObserved
Fields
call: ProviderToolCallProposalObserved
ProposalChecked
EffectApplied
ToolBatchConflict
A same-turn footprint collision (Gate P): the call was returned to the model as an observation, never given an invented order.
EffectDenied
Fields
class: ResidualClassTyped admissibility residual (PSP-9 system 9): CapabilityDenied
for kernel denials, BudgetExhausted for budget boundaries.
CandidateMeasured
Fields
candidate_id: StringCandidate identity "{node}/{gen}/c{seq}" (PSP-10 Phase 2). The
accepted fold keys by it; empty on pre-PSP-10 rows.
residuals: Vec<ResidualEvent>GateDecisionRecorded
Fields
candidate_id: StringShares the measurement’s candidate identity so the two events key together (Proposition 2). Empty on pre-PSP-10 rows.
decision: GateDecisionDecisionBoundRefused
The loop refused to submit a candidate past the finite-decision bound
N_gate = floor(V0/rho) + B + 1 (PSP-10 Gate X). The refusal itself
appends no gate decision.
CandidateRestored
EffectBoundaryMeasured
Fields
residuals: Vec<ResidualEvent>ContextCheckpointCreated
Fields
checkpoint: ContextCheckpointDurableCandidateCheckpoint
A gate acceptance made durable: the control frame plus every mutated path’s content-addressed artifact handle, sufficient to rebuild the accepted candidate and continue the loop after a crash.
Fields
candidate_id: StringThe accepted candidate this checkpoint makes durable (PSP-10 Phase 2). Empty on pre-PSP-10 rows.
control: ControlFrameconversation: ConversationExact provider-neutral projection selected for the next model turn.
birth_deps: Vec<StateDependency>Per-message birth dependencies, parallel to the conversation (Gate AF): a resumed loop restores each page’s real birth state instead of relabelling everything with the live root. Empty on pre-provenance rows.
files: Vec<DurableSeedFile>RecoveryControlGranted
RouteFailover
RecoveryContained
SearchOpened
Fields
limits: SearchLimitsSearchUsageSnapshot
The forest’s consumption at an epoch boundary, so an interrupted run’s usage is reconstructible from the ledger (Gate AC + resume).
BranchForked
Fields
seed_witness: WitnessRefBranchStrategySelected
BranchObservation
BranchCandidateMeasured
PartialCheckpointed
FrontierEpochStarted
Fields
FrontierEntryServed
BranchIneligible
BranchNotSelected
BranchAbandoned
BranchSelected
BranchCommitted
NoGoodRecorded
Fields
SearchClosed
ContextWorkingSet
ContextPagesSelected
ContextMiss
ContextPageRecalled
ContextInfeasible
ContextCompacted
PromptProgramCompiled
A prompt program recompiled mid-loop — the offered tool surface or the failover route changed, so the program identity changed (PSP-10 Gate Z).
PromptProgramInvoked
The exact prompt binding of one model call: both program digests and the invocation digest (one record per call, Gate Z).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for LoopEvent
impl<'de> Deserialize<'de> for LoopEvent
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for LoopEvent
impl RefUnwindSafe for LoopEvent
impl Send for LoopEvent
impl Sync for LoopEvent
impl Unpin for LoopEvent
impl UnsafeUnpin for LoopEvent
impl UnwindSafe for LoopEvent
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.