# `GEPA.Tracking`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/tracking.ex#L1)

Experiment tracking behavior and built-in trackers.

HTML/artifact visualization is intentionally excluded. Trackers receive
scalar metrics, tables, and summary maps from the engine and can forward
them to external systems or keep them in memory for tests and local tooling.

# `tracker`

```elixir
@type tracker() :: module() | struct() | nil
```

# `finish`
*optional* 

```elixir
@callback finish(term()) :: :ok | {:error, term()}
```

# `log_metrics`

```elixir
@callback log_metrics(term(), map(), keyword()) :: :ok | {:error, term()}
```

# `log_summary`

```elixir
@callback log_summary(term(), map()) :: :ok | {:error, term()}
```

# `log_table`
*optional* 

```elixir
@callback log_table(term(), String.t(), [map()], keyword()) :: :ok | {:error, term()}
```

# `start`
*optional* 

```elixir
@callback start(term()) :: :ok | {:ok, term()} | {:error, term()}
```

# `create_experiment_tracker`

```elixir
@spec create_experiment_tracker(keyword() | map()) ::
  GEPA.Tracking.ExperimentTracker.t()
```

Create the dependency-free experiment tracker used for upstream-style
tracking options.

# `finish`

```elixir
@spec finish(tracker()) :: :ok
```

# `log_metrics`

```elixir
@spec log_metrics(tracker(), map(), keyword()) :: :ok
```

# `log_summary`

```elixir
@spec log_summary(tracker(), map()) :: :ok
```

# `log_table`

```elixir
@spec log_table(tracker(), String.t(), [map()], keyword()) :: :ok
```

# `start`

```elixir
@spec start(tracker()) :: :ok
```

---

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