# `Raxol.Agent.Contract.Event`
[🔗](https://github.com/DROOdotFOO/raxol/blob/v2.8.0/lib/raxol/agent/contract.ex#L97)

The contract envelope. One struct per observable step; `id` is a
per-run monotonic sequence (the future journal offset).

# `actor`

```elixir
@type actor() :: %{kind: :human | :agent | :system, id: String.t()} | nil
```

Who emitted the event; absent (`nil`) folds as `%{kind: :system}` by rule.

# `provenance`

```elixir
@type provenance() :: %{source: atom(), trust: :trusted | :tainted}
```

Provenance — grow-only; later keys (e.g. :model_family) are additive.

# `t`

```elixir
@type t() :: %Raxol.Agent.Contract.Event{
  actor: actor(),
  branch_id: String.t(),
  family: :loop | :meta,
  id: non_neg_integer(),
  payload: map(),
  provenance: provenance(),
  scope: :session | :global | atom(),
  session_id: String.t(),
  tier: :ephemeral | :durable,
  ts: integer(),
  turn_id: String.t() | nil,
  type: atom(),
  v: non_neg_integer()
}
```

---

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