# `ShotUn.Trace.Node`
[🔗](https://github.com/jcschuster/ShotUn/blob/v0.2.1/lib/shot_un/trace.ex#L1)

A single node in a `ShotUn.Trace` decision tree.

Each node represents the state reached after applying `rule` to its
parent's state. The root has `kind: :start`, `rule: :init` and no
parent; leaves are either `:solution` or `:fail`. All term-bearing
fields are pre-formatted strings captured while the term-factory
scratchpad was alive, so the tree remains meaningful after the
algorithm tears down its scratchpad.

# `kind`

```elixir
@type kind() :: :start | :step | :solution | :fail
```

# `t`

```elixir
@type t() :: %ShotUn.Trace.Node{
  children: [t()],
  depth: non_neg_integer() | nil,
  flex: [{String.t(), String.t()}],
  id: non_neg_integer(),
  kind: kind(),
  note: String.t() | nil,
  pairs: [{String.t(), String.t()}],
  parent_id: non_neg_integer() | nil,
  rule: atom() | nil,
  substs: [String.t()]
}
```

---

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