fairness-observatory

# Fairness Observatory v1

Fairness observability requires **two orders**:

1) **Arrival order** ("first-seen") — when Mallet first observed a transaction
2) **Execution order** — the order transactions appear in blocks

Mallet implements a pragmatic ingest path: a first-seen relayer posts transaction signatures to:

- `POST /api/ingest/seen` with `{ signature, seenAtMs, source }`

This enables real computation of Kendall tau distance (**Dτ**) and inclusion latency distributions.

## Metrics

- **Dτ** — Kendall tau distance between first-seen order and execution order
- **C(W)** — lock contention index via account-set overlap
- **Starvation** — latency percentiles (P50/P95/P99) from first-seen to block time
- **χ²** — failure clustering / distribution shift vs baseline
- **Gini** — inequality on inclusion latency

## Files

- `apps/web/app/api/fairness/slot-report` — slot report endpoint
- `apps/web/lib/fairnessMath.ts` — math primitives
- `apps/web/lib/seenStore.ts` — file-backed seen store
- `apps/web/data/baseline.json` — persisted baseline
Ctrl+K
Mallet | BAM Forge & Validator Control Plane