# `Pixir.Delegate.Progress`
[🔗](https://github.com/Ranvier-Technologies/pixir/blob/main/lib/pixir/delegate/progress.ex#L1)

Shared progress-frame contract for Delegate attach observation.

`pixir delegate attach --progress=stderr-jsonl` has two producers: the ordinary
snapshot path and the daemon-backed follow path. This module keeps their JSONL frame
shape aligned so orchestrators can consume one stable contract while Pixir preserves
the Log as the source of truth.

# `annotate`

```elixir
@spec annotate(map(), map()) :: map()
```

Attach progress metadata to the final Delegate payload.

# `error_frame`

```elixir
@spec error_frame(map(), pos_integer(), map(), keyword()) :: map()
```

Build a recoverable progress error frame.

# `frame`

```elixir
@spec frame(map(), pos_integer(), keyword()) :: map()
```

Build a Delegate progress, terminal, or heartbeat frame from a payload.

# `owner_backed_source?`

```elixir
@spec owner_backed_source?(String.t() | nil) :: boolean()
```

Whether a source comes from a live owner.

# `source`

```elixir
@spec source(
  map(),
  keyword()
) :: String.t()
```

Source vocabulary for a payload observation.

# `terminal?`

```elixir
@spec terminal?(map()) :: boolean()
```

Whether a payload is terminal for attach observation.

---

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