ii — the labors
Workflows are data, not code.
Every automation here is a set of YAML definitions that compile into a typed graph before anything runs. They diff in review like any other file, and a mismatched pair of tasks is caught when you plan, not at three in the morning when it runs. The engine never grows a branch for your business, so your hundredth automation costs what your first did.
kind: triggerversion: 1source: webhook---kind: taskversion: 1runner: kind: agent spec: audit.analyst@3input: report.request@1output: report.spec@1uses:policy: timeout: 90s retry: 2 idempotent: true---kind: taskversion: 1runner: kind: script runtime: python entry: render.maininput: report.spec@1
derived from uses:
You never drew an edge. Every arrow above came out of an on:, then:, or uses: reference — hover either side to see which.
four primitives — the whole vocabulary
- Trigger
- cron · webhook · manual
- Task
- script · agent
- Resource
- postgres · object store · http
- Approval
- approvers · timeout
five values — everything that crosses a seam
- Text
- a body of words
- File
- content-addressed blob handle
- Table
- columns plus a row source
- Record
- typed against a registered schema
- Error
- typed failure, routed not thrown
That is the entire vocabulary, and it is closed on purpose. All your business meaning lives in Records, checked against schemas you register, so the engine never grows a branch for your domain and your hundredth workflow type costs the same as your first.