OptionalAssignedFor a human task, who it is waiting on.
OptionalClaimedThe dispatcher instance holding (or losing) the claim.
OptionalClaimedTasks this instance claimed on this pass, for THIS graph.
OptionalClaimWhat happened to the claim.
OptionalClaimWhen the claim lapses unless extended, ISO 8601.
OptionalCompletedHow many nodes have reached a terminal state, and out of how many.
OptionalConditionThe condition text, so a viewer can show WHY without loading the row.
OptionalDependsThe edge's origin task. TaskID above is the edge's target.
OptionalEdgeThe MJ: Task Dependencies row the verdict is about.
OptionalEligibleTasks whose prerequisites were satisfied this pass.
OptionalErrorFailure detail on TaskFailed.
OptionalHeldTasks held by an unanswerable condition or undecided fork.
OptionalInstanceTasks this INSTANCE is executing right now, across every graph it is working — not this graph's in-flight count.
Named for what it measures because the two readings differ and a viewer cannot tell them
apart: it is the dispatcher's own load against MaxConcurrentTasks, which is what explains a
graph whose steps are ready but not starting. A per-graph count would answer a different
question (and is visible anyway as the steps rendered running on the canvas).
OptionalOwnerWho the graph belongs to, from the parent's durable metadata.
Carried on the frame rather than looked up by the consumer because a consumer's delivery filter runs per frame and synchronously — a database round trip there would make watching a run cost more than running it. Absent means the graph predates ownership being recorded, and a consumer that authorizes on it should fail closed rather than broadcast.
The graph this happened in — the subscription key.
OptionalPassMonotonic per-instance pass counter, so a viewer can order and gap-detect ticks.
OptionalProgressWhat the runner says it is doing.
OptionalProgress0–100 when the runner can quantify it.
OptionalReasonHuman-readable detail: the hold reason, the override applied, or who paused the graph.
OptionalStatusThe task's (or, for GraphSettled, the graph's) status after the event.
OptionalTaskThe node it happened to. Absent on GraphSettled, which is about the graph itself.
OptionalTaskNode name, so a consumer can label the frame without loading the row.
OptionalTotalOptionalVerdictWhat the gate decided: the edge is open, the branch was not taken, or it cannot be answered yet.
One thing that happened, addressed by the graph it happened in.
Addressed by
ParentTaskID, deliberately not by session. A durable graph outlives the tab that submitted it — it may be started by a schedule with no session at all, and a user who refreshes mid-run should still see the rest. Keying on the graph means "watch this workflow run" works for anyone permitted to read it, whenever they arrive.Frames are semantic, not cache invalidations: a consumer renders "step 3 of 7 running" from the frame itself rather than re-reading rows and diffing them to guess what changed.