# `BeamConsole.Diff`
[🔗](https://github.com/cristianodabc/beam-console/blob/v0.5.4/lib/beam_console/diff.ex#L1)

Describes bounded differences between two sampled runtime snapshots.

Lifecycle fields use `observed_` terminology because short-lived changes can
occur between samples and are not guaranteed to be lossless.

# `entity_id`

```elixir
@type entity_id() :: String.t()
```

# `field`

```elixir
@type field() ::
  :observed_started | :observed_stopped | :changed | :edge_added | :edge_removed
```

# `omission_counts`

```elixir
@type omission_counts() :: %{optional(field()) =&gt; non_neg_integer()}
```

# `t`

```elixir
@type t() :: %BeamConsole.Diff{
  changed: [entity_id()],
  edge_added: [entity_id()],
  edge_removed: [entity_id()],
  from_sequence: non_neg_integer(),
  observed_started: [entity_id()],
  observed_stopped: [entity_id()],
  omitted: non_neg_integer(),
  omitted_by: omission_counts(),
  to_sequence: non_neg_integer()
}
```

# `between`

```elixir
@spec between(
  BeamConsole.Snapshot.t() | nil,
  BeamConsole.Snapshot.t(),
  non_neg_integer()
) :: t()
```

Computes a bounded difference from one snapshot to the next.

Passing `nil` as the previous snapshot reports current processes as observed
starts. Once the event limit is reached, remaining records are counted in
`omitted`; `omitted_by` preserves the affected change categories.

---

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