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