OptionalcurrentThe whole definition, not just its stages: definition-level vocabulary (field titles, author predicates) feeds features like human-language explanations, so the contract asks for it up front.
OptionaldevTooling mode: tooltips additionally show machine names and raw GROQ conditions. Never on for end users.
OptionalevaluationUpgrades the explanations where it speaks: the current stage's transitions and gates get real ✓/✗ verdicts, the rest of the chart stays static. Only read when WorkflowDiagramProps.explain is on — that's the feature gate, this is its data.
OptionalexplainExplain the workflow in human language: tooltips gain each gate's phrased requirements ("«Review decision» must be 'approve'") — derived from the definition alone, so it works without an instance.
OptionalfillSpan the parent instead of hugging the graph: height renders as given
rather than as a ceiling, so '100%' fills a sized parent. The graph fits
centred inside, never scaled past 1:1.
OptionalgatedNames of current-stage transitions that cannot fire yet — their markers show a lock ("can't proceed, criteria unmet").
OptionalheightHeight CEILING: the canvas hugs the laid-out content (and centers in its parent) when the graph is smaller than this. No ceiling under WorkflowDiagramProps.fill — the value renders as given.
OptionalhistoryInstance history; tones visited stages and traversed transitions.
OptionallocalContext snippet around the current stage instead of the whole workflow: only the current stage's own transitions render (LocalView.show picks next / previous / both). The hidden side collapses into short ghost-anchored stubs whose tooltips name the hidden stage. Requires currentStage.
OptionalstaticFrozen canvas: no pan/zoom, no zoom controls — shows its initial fit. Tooltips and hover highlight stay live.
Highlight this stage as where the instance is now.