Workflow anatomy
What a workflow YAML contains, section by section.
Every workflow in the catalog has the same shape. Five sections, in order, each declarative. The harness reads them at boot, validates the schema, and refuses to start if anything is missing.
meta
meta:
slug: refund-request-intake
category: billing
version: 1.4.0
authored: 2026-10-01Identity. The slug is the catalog handle and the URL fragment. Version follows semver and bumps when intents or flow change. Authored is the first-published date — drift surfaces later in the run log.
intents
intents:
- id: refund_request
confidence_floor: 0.7
- id: invoice_question
confidence_floor: 0.6What the workflow recognizes. Each intent declares a confidence floor — below it, the harness asks one targeted clarification rather than guessing.
flow
flow:
- step: intake
on: refund_request
next: collect
- step: collect
fields: [invoice_id, reason, amount]
next: confirm
- step: confirm
next: handoffThe conversation graph. Steps are stepwise, deterministic, and named — exactly the names that appear on the rail in the Live Preview. The harness rejects transitions outside the graph.
escalation
escalation:
triggers: [low_confidence, customer_request, abusive_language]
packet: [summary, intent, attempted_steps, fields_collected]When and how to hand off to a human. Triggers are checked at every step; the packet is what the receiving human reads.
instruments
instruments:
record:
- intent_classification
- confidence_per_turn
- step_transitions
- escalation_reasonWhat the harness records for every run. Recorded events are queryable in the run log and exportable as JSONL.