# `Statifier.Effect.Trace.TransitionsSelected`
[🔗](https://github.com/riddler/statifier-ex/blob/v2.0.0/lib/statifier/effect/trace/transitions_selected.ex#L1)

Trace payload for `{:trace, %__MODULE__{}}` - emitted whenever
`select_transitions` returns, including the empty set
(`docs/observability.md` constraint 2's "transitions selected" row).
`t_indexes` are the selected transitions' `t_index` identities (constraint
3, never `%Statifier.Machine.Transition{}` structs), in the order
selection returned them. `event` is the event the selection matched
against, or `nil` for an eventless round.

Built with `new/2`, never a struct literal, so `macrostep`/`microstep`/
`round` are always stamped from the `Statifier.MachineState` at hand.

# `t`

```elixir
@type t() :: %Statifier.Effect.Trace.TransitionsSelected{
  event: Statifier.Event.t() | nil,
  macrostep: non_neg_integer(),
  microstep: non_neg_integer(),
  round: non_neg_integer(),
  t_indexes: [non_neg_integer()]
}
```

# `new`

```elixir
@spec new(machine_state :: Statifier.MachineState.t(), fields :: keyword()) :: t()
```

Stamps `macrostep`/`microstep`/`round` from `machine_state` and sets
`fields` (`:t_indexes`, optional `:event`).

---

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