# `Condukt.Workflows.Executor`
[🔗](https://github.com/tuist/condukt/blob/1.5.1/lib/condukt/workflows/executor.ex#L1)

Executes a validated workflow document.

The executor topologically sorts the step DAG using each step's
declared `needs:` plus the step ids referenced by `${...}`
expressions inside any of its fields. Each step is then run in
turn:

1. Skip the step if any of its dependencies were skipped.
2. Evaluate `when:`. If it is false, mark the step as skipped.
3. Interpolate the step's fields against the current context.
4. Dispatch on `kind` to the matching handler (`cmd`, `http`,
   `map`).
5. Record the step's output in the context.

After all steps have run, the top-level `output` expression is
resolved and returned.

# `run`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
