# `Reactor.Planner`
[🔗](https://github.com/ash-project/reactor/blob/main/lib/reactor/planner.ex/#L6)

Build an execution plan for a Reactor.

Converts any unplanned steps into vertices in a graph with directed edges
between them representing their dependencies (arguments).

# `plan`

```elixir
@spec plan(Reactor.t()) :: {:ok, Reactor.t()} | {:error, any()}
```

Build an execution plan for a Reactor.

Builds a graph of the step dependencies, resolves them and then builds an execution plan.

# `plan!`

```elixir
@spec plan!(Reactor.t()) :: Reactor.t() | no_return()
```

Raising version of `plan/1`.

---

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