An authored tool invocation planned for a step. Args may embed
{{steps.N.path}} / {{calls.K.path}} bindings (see sop::binding)
that resolve against captured run data before dispatch. pinned
carries a sample output (typically lifted from a real run’s
StepToolCall.output_data) so downstream bindings can be authored
and previewed without re-executing the tool.
Lightweight projection of a run for list surfaces (Runs page). Carries
just enough to render a row and open the per-run overlay, without the
full step-result payload.
JSON Schema fragment for validating step input/output data.
Stored as a raw serde_json::Value so callers can validate without
pulling in a full JSON Schema library.
One tool invocation captured during a step’s execution. A step may
make any number of calls (including the same tool repeatedly);
index preserves invocation order so authoring surfaces can replay
the sequence and map data between calls.
A2: the outcome of evaluating a matched trigger against a SOP’s
SopAdmissionPolicy. Advisory - Admit still passes through the authoritative
CAS start_run; the non-admit variants are surfaced by the dispatch layer
(logged + carried on DispatchResult) so a trigger is never silently lost.
How concurrent triggers are handled when a SOP’s execution slots are full. A
run parked at a HITL approval releases its slot (A1), so this governs the
remaining case: too many runs actively executing at once. No variant ever
silently drops a trigger except Drop, which is explicit opt-in.