# `Statifier.Effect.Done`
[🔗](https://github.com/riddler/statifier-ex/blob/v2.10.0/lib/statifier/effect/done.ex#L1)

Payload for `{:done, %__MODULE__{}}` - the terminal effect
`exit_interpreter` (Appendix D) produces once, after top-level final
entry, when `Statifier.MachineState.status` becomes `:done`. `donedata`
is the top-level final's resolved `<donedata>` content, or `:undefined`
(the SCXML datamodel's "undefined" value) when the final carries none.
`donedata_error` is that resolution's failure channel (ADR-0021's
2026-09-02 note): `nil` when the donedata resolved cleanly and `nil`
for a bare final that declared none, and otherwise the `data` of the
`error.execution` the resolution raised. Without it, `donedata:
:undefined` is the same value for a failed `<content expr>` and for a
final carrying no `<donedata>` at all, because
`exit_interpreter/1` discards the internal queue the raise landed in
before returning. A `<donedata>` whose `<param>`s fail can raise more
than one; this field carries the **first** in document order, and the
rest are still lost with the queue.
`configuration` is the full configuration (ADR-0005, ancestors
included) as it stood at exit: the full set, so a consumer can
observe the terminal position without switching tracing on, since
`MachineState.configuration` is empty by then and
`Statifier.active_leaf_states/1` correctly reports nothing active. See
`Statifier.Interpreter.exit_interpreter/1`.

There is no `c_index`: this effect is produced by `exit_interpreter`
itself, not by one executable-content node. `macrostep`/`microstep`/
`round` are the counters as they stand at the moment of termination. See
`Statifier.Effect.Trace.Done` for the trace-effect counterpart, built from
the same `configuration_at_exit` binding.

# `t`

```elixir
@type t() :: %Statifier.Effect.Done{
  configuration: MapSet.t(non_neg_integer()),
  donedata: term() | nil,
  donedata_error: term() | nil,
  macrostep: non_neg_integer(),
  microstep: non_neg_integer(),
  round: non_neg_integer()
}
```

---

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