pub enum RunLogPayload {
Show 17 variants
RunStarted {
ir_hash: Hash,
lockfile_digest: Hash,
params_snapshot: Value,
supervise_policy: Option<SupervisePolicy>,
},
StepEntered {
step_id: StepId,
effect_hash: Hash,
judge_hash: Hash,
resolved_inputs: Value,
},
PreflightProbed {
outcomes: Vec<AssertionOutcomeRecord>,
},
ActionIntent {
call_id: String,
args_snapshot: Value,
chain_index: Option<u32>,
channel: Option<ActChannel>,
action_name: Option<ActionName>,
},
ActionSettled {
call_id: String,
outcome: ActionOutcome,
},
ObservationRecorded {
observation: ObservationRecord,
},
AssertionEvaluated {
outcome: AssertionOutcomeRecord,
},
VerdictRecorded {
verdict: Verdict,
localized: Vec<EvidenceRef>,
localization_gaps: Vec<EvidenceGap>,
remote_archival_error: Option<String>,
},
StepExited {
state: StepState,
output: Option<Value>,
provider_state_summary: Option<ProviderStateSummary>,
localized: Vec<EvidenceRef>,
localization_gaps: Vec<EvidenceGap>,
},
CallFramePushed {
frame: CallFrame,
rebase: bool,
},
CallFramePopped {
outputs: Option<Value>,
},
HandlerTriggered {
hook: HandlerHook,
trigger: u64,
disposition: Option<String>,
},
HumanRequested {
request_id: String,
purpose: HumanPurpose,
mode: Option<HumanMode>,
prompt: String,
presents: Value,
decisions: Option<Vec<String>>,
output_schema: Option<JsonSchemaDocument>,
deadline_at_ms: Option<u64>,
},
HumanResponded {
request_id: String,
purpose: HumanPurpose,
response: Value,
actor: String,
},
RunSuspended {
reason: Option<String>,
provider_state_summary: Option<ProviderStateSummary>,
},
RunResumed {
alignment_report: AlignmentReport,
supervise_policy: Option<SupervisePolicy>,
event_cursor: Option<EventCursor>,
},
RunFinished {
verdict: Option<Verdict>,
remote_archival_error: Option<String>,
},
}Expand description
The closed 17-variant payload union (spine §6.1/A.4).
Variants§
RunStarted
A run segment started.
Fields
supervise_policy: Option<SupervisePolicy>The segment’s supervision policy; explicitly null when
unsupervised (R13 — recorded per segment, never inherited).
StepEntered
A step was scheduled and its inputs are frozen (appended after the
ready-phase input snapshot completes, before preflight /
actionIntent — spine §6.1 M1 note).
Fields
effect_hash: HashEffect-domain hash of the step at execution time (alignment
input; the fold copies it into StepRecord.effectHash).
PreflightProbed
Preflight probes were evaluated (pending incorporation of the payload shape).
Fields
outcomes: Vec<AssertionOutcomeRecord>One outcome per probe assertion, in declaration order.
ActionIntent
The WAL entry written and fsynced before dispatching an action (spine §6.2 — the crash-safety anchor).
Fields
chain_index: Option<u32>1-based position in binding.attempts (2026-07-18
incorporation, item ②): the dispatch-identity discriminant —
the act-chain overlay and the crash-resume chain re-entry
both key on it. Absent on pre-incorporation ledgers.
channel: Option<ActChannel>The bound attempt’s locating channel, verbatim.
action_name: Option<ActionName>The bound attempt’s provider-native action name, verbatim.
ActionSettled
An action reached its four-way terminal.
Fields
outcome: ActionOutcomeThe terminal outcome (never folded).
ObservationRecorded
An observation was captured and localized.
Fields
observation: ObservationRecordThe localized observation record.
AssertionEvaluated
One assertion finished evaluating along its verify chain.
Fields
outcome: AssertionOutcomeRecordThe evaluation outcome.
VerdictRecorded
A verdict was folded and recorded.
Fields
localized: Vec<EvidenceRef>Localized settlement/verdict/human-class evidence of THIS
judgment (item ③, 2026-07-18; observation refs excluded —
they ride observationRecorded). Empty on offline
re-judgements (nothing is newly localized offline) and on
pre-incorporation ledgers.
localization_gaps: Vec<EvidenceGap>Typed localization failures of the same judgment — the honest-gap record (principle 4/R4).
StepExited
A step reached a terminal lifecycle state.
Fields
output: Option<Value>The projected step output, carried when the output projection
completed (spine §6.1 M1 note); absent for exits without an
output (blocked/skipped/aborted, error verdicts). A projected
JSON null IS an output: it rides as "output": null and
refolds as Some(Null), never as absence (I1: the resumed run
binds what the live run bound).
provider_state_summary: Option<ProviderStateSummary>The failure-instant session profile (07 §2.2, incorporated 2026-07-18): present when a fail/unknown verdict is in force at exit; absent otherwise, on aborted follow-up exits (an aborted terminal makes no semantic claim), and on ledgers recorded before incorporation. One-directional additive (R12): pre-field readers reject ledgers carrying it.
localized: Vec<EvidenceRef>The settlement-evidence manifest of an UNVERIFIED exit
(item ③ review fix): an assertion-less step records no
verdict (R4), so its judgment manifest rides the exit
instead — same merge rule, same honesty. Empty on verdict-
bearing exits (the manifest rode verdictRecorded) and on
pre-incorporation ledgers.
localization_gaps: Vec<EvidenceGap>Typed localization failures of the same unverified exit.
CallFramePushed
A subflow call frame was pushed.
Fields
rebase: boolLive-frame RE-ENTRY under a repaired callee, not a new stack
level (07 §5.2 call down-drill, case (a)): the resume descended
back into a frame that was still open and the callee’s irHash
moved, so frames must name the callee actually being executed
(“frames 中该帧的 irHash 更新为新 callee irHash”). The fold
updates that frame’s irHash in place and keeps everything
else — above all its inputsSnapshot, which a new IR never
re-evaluates (§5.2 corollary / §4.6).
Additive optional field (spine §6.1, the 2026-07-18 payload batch): absent on every pre-incorporation ledger, so a refold of an old run is byte-identical to what it always was.
CallFramePopped
A subflow call frame was popped (pending incorporation of the payload shape).
Fields
HandlerTriggered
A handler hook fired.
Fields
hook: HandlerHookWhich hook fired.
HumanRequested
A human interaction was requested (fsynced before notifying any
channel, spine §6.8/§6.9). M2 incorporation of the 06 §2.1 request
shape: mode, decisions, outputSchema and the absolute
deadlineAtMs watermark are carried by the event itself, so the
store arbitration and the lazy timeout settlement need no source
other than the ledger.
Fields
purpose: HumanPurposeStep vs supervision gate (R13).
mode: Option<HumanMode>Interaction mode. Required semantics when purpose is step;
absent for supervision gates, which carry no mode (06 §2.1).
prompt: StringThe prompt shown to the human (auto-generated gate description for supervision requests).
presents: ValueThe evidence/values presented, materialized once at ready —
the resolvedInputs snapshot discipline (06 §2.3).
decisions: Option<Vec<String>>Enumerated options: confirm carries exactly two labels
(position-mapped to pass/fail); judge a subset of the
three-valued vocabulary (06 §2.2).
output_schema: Option<JsonSchemaDocument>Input contract for provideInput responses; the store
arbitration validates against it (06 §4.3 rule 3).
HumanResponded
A human response was arbitrated and recorded (pending incorporation of the payload shape).
Fields
purpose: HumanPurposeStep vs supervision gate (R13).
RunSuspended
The run segment was suspended.
Fields
reason: Option<String>Optional human-readable reason. Structured forms the runner
writes today: stop requested (cooperative stop token),
awaiting human response (requestId <id>), a blocked reason’s
display, and the breakpoint stops stopped at breakpoint --stop-at <canonical path> / stopped at breakpoint --stop-after <canonical path> (the matched step instance’s
canonical run path, spine §9). Free text otherwise.
provider_state_summary: Option<ProviderStateSummary>The suspension-instant session profile (07 §2.2): captured
whenever a live session exists at the write site; same
compat posture as on stepExited.
RunResumed
A run segment resumed from a checkpoint.
Fields
alignment_report: AlignmentReportThe alignment report of this resume (spine §6.7-A).
supervise_policy: Option<SupervisePolicy>The segment’s supervision policy; explicitly null when
unsupervised (R13 — per segment, never inherited).
event_cursor: Option<EventCursor>The new generation’s reseeded cursor (07 §4.5, incorporated
2026-07-18): sessionId is the lineage extension, taken via
currentCursor() after the reconcile decisions and before
this append. Absent when the RPC failed at capture — and on
ledgers recorded before incorporation (one-directional
additive, R12).
RunFinished
The run finished.
Implementations§
Source§impl RunLogPayload
impl RunLogPayload
Sourcepub const EVENT_TYPES: [&'static str; 17]
pub const EVENT_TYPES: [&'static str; 17]
All seventeen wire discriminants (spine §6.1 closed set).
Sourcepub fn event_type(&self) -> &'static str
pub fn event_type(&self) -> &'static str
The wire discriminant (type) of this payload.
Trait Implementations§
Source§impl Clone for RunLogPayload
impl Clone for RunLogPayload
Source§fn clone(&self) -> RunLogPayload
fn clone(&self) -> RunLogPayload
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RunLogPayload
impl Debug for RunLogPayload
Source§impl<'de> Deserialize<'de> for RunLogPayload
impl<'de> Deserialize<'de> for RunLogPayload
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>,
Source§impl JsonSchema for RunLogPayload
impl JsonSchema for RunLogPayload
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more