# Workflow edges and conditions

Edges connect Workflow nodes. Every source node stores an outgoing edge order; Operade evaluates that edge order from top to bottom, and the first match wins.

## Choose a condition

- **Unconditional** always matches. Put it after more specific conditions when it is a fallback.
- **LLM judgment** asks a forced model decision using your evaluation instructions.
- **Expression** evaluates a typed boolean expression without string-to-number or truthy coercion.
- **Result** matches success or failure and is available only on an edge leaving a Tool node.

Give each edge a short label that explains the route. A blank LLM condition, non-boolean expression, Result edge from a non-Tool node, missing target, or stale edge-order entry creates a readiness error.

## Control precedence

Reorder outgoing edges in the inspector. Operade records every evaluated edge with whether it matched and stops as soon as one matches. An early unconditional edge therefore makes later edges unreachable. When no edge matches, the current behavior depends on the node: a waiting Subagent can remain current, while a Tool result with no matching route fails visibly.

Start may have only one outgoing edge. Tool nodes must have at least one. End nodes have none. Every outgoing edge must appear exactly once in its source node's order.

## Verify routing

Use [Test chat](/docs/agents/test-chat) to exercise each branch. In Conversation detail, **[Activity](/docs/monitor/transcript-and-activity)** lists `workflow_edge_evaluated`, labels, match results, and duration. If an expression behaves unexpectedly, review [expression and variable types](/docs/workflows/expressions-and-variables).
