# `Runic.Workflow.RunnableCompleted`
[🔗](https://github.com/zblanco/runic/blob/main/lib/workflow/runnable_completed.ex#L1)

Event recording that a runnable completed execution successfully.

Fields:

- `duration_ms` — wall-clock execution time in milliseconds (monotonic)
- `attempt` — zero-based attempt index (0 = first try, 1 = first retry, etc.)
- `result_fact` — the `%Fact{}` produced by the step

# `t`

```elixir
@type t() :: %Runic.Workflow.RunnableCompleted{
  attempt: non_neg_integer(),
  completed_at: integer(),
  duration_ms: non_neg_integer(),
  node_hash: non_neg_integer(),
  result_fact: Runic.Workflow.Fact.t(),
  runnable_id: term()
}
```

---

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