# `Hyper.Cluster.Budget`
[🔗](https://github.com/harmont-dev/hyper/blob/main/lib/hyper/cluster/budget.ex#L1)

Cluster-wide budget telemetry: one `Hyper.Node.Budget.NodeState` per node,
keyed `{:node, node()}`. A `Horde.Registry` (DeltaCRDT) with `members: :auto`.

Each node's `Hyper.Node.Budget.Advertiser` owns its entry (the registration is
tied to that pid, so a dead node's entry disappears cluster-wide). Schedulers
read the local replica via `all_states/0` — eventually consistent and
partition-tolerant.

# `all_states`

```elixir
@spec all_states() :: [Hyper.Node.Budget.NodeState.t()]
```

Every node's published `NodeState` from this node's local replica.

# `key`

```elixir
@spec key() :: {:node, node()}
```

This node's registration key.

# `name`

```elixir
@spec name() :: atom()
```

The registry name.

---

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