Describe it; get a plan you can argue with
workflow_compiled · workflow_plan_edited · workflow_publishedProblem. A form-first builder asks the user to know the step vocabulary before they can express the intent. Most people can describe the outcome and cannot name the steps — so they either give up at the empty canvas or build something wrong and only find out at run time.
The compile contract
Compilation is deterministic in one respect that matters: checkpoint placement is a separate pass, not a suggestion from the model. The compiler walks the generated steps, finds the first one flagged external, and inserts a checkpoint before it. The plan the user reads has already satisfied WINV-1; they are approving the shape of the work, not remembering to add a safety gate.
Stories
- One free-text field with three worked examples; no required fields, no step picker, no connector picker
- Returns a numbered step list within 10s p95, each step showing its category tag (Workspace · Connector · Agent · App) and the connector it will use
- Auto-inserted checkpoints are visually distinct and labelled "added — nothing external runs before this"
- Anything the compiler couldn't resolve appears as a named gap ("which Jira project?"), not a guess
- Steps requiring a capability above the workspace's current phase render locked, with what unlocks them and when
- Refine by replying in English ("skip clients with nothing shipped") — recompiles, and diffs against the previous plan rather than replacing it silently
- "Edit steps" opens the same plan on the canvas (W1.2) with no data loss in either direction
- Removing the auto checkpoint is refused with the reason and who can change it, not greyed out without explanation
- The plan is a draft — private, unpublished, not schedulable, and clearly marked so
- Describing a workflow to the agent in a Matrix Room produces the same compiled plan, posted in-room as a message
- The in-room plan carries a link to the canvas; per Surfaces the canvas itself is not rendered in-room
- Publishing from chat requires the same test-run prompt as the web path — the surface changes, the gate doesn't
- A one-line goal can be saved without compiling to fixed steps — the agent decides the path at run time (the milestones' authoring Mode 1)
- Even undecided, the external boundary is fixed at authoring time: the user names which connectors are in scope and the checkpoint still precedes any external act
- The run view shows the path the agent actually took, so an agent-mode run is auditable after the fact even though it wasn't planned before