Expand description
Operation terminals (spec §7.12).
A terminal is the opposite of an effect: it requires no resolution, is allocated no effect id, and an operation commits at most one for its whole life. Both facts are expressed in the types rather than left to convention:
StepDispositionmakes “a committed step publishes effects or a terminal” a union instead of a(Vec<KernelEffect>, Option<KernelTerminal>)pair that can hold both;TerminalSlotmakes “exactly once” an API a second commit cannot pass, rather than an invariant each of four hosts re-implements (recovery-chain distortion R-C2 #6: terminal deduplication currently relies on host convention).
The usage report is committed inside the terminal and nowhere else, so there is no second place a run’s accounting can disagree with itself.
Structs§
- Agent
Terminal - Cancelled
Terminal - Effects
Disposition - Failed
Terminal - Kernel
Failure - A kernel-side failure, as opposed to a host effect failure. This is what a
HostEffectFailureescalates into after the kernel has made its one policy decision (DEC-5) and decided it cannot continue. - Loop
Result - What an agent loop produced.
- Pace
Decision - Terminal
Already Committed - A second terminal was offered for an operation that already has one.
- Terminal
Disposition - Terminal
Slot - The operation’s single terminal slot.
- Usage
Report - Resource accounting for one operation. No wall clock and no duration: elapsed time is a host observation, derivable from the envelope times already in the journal.
- Workflow
Outcome - Workflow
Terminal
Enums§
- Kernel
Failure Code - Kernel
Terminal - How an operation ended.
- Pace
Action - Step
Disposition - What a single committed step publishes.
- Termination
Reason - Why the loop stopped.
- Workflow
Status