Goal
Surface fuzz run metrics (txs submitted / succeeded / failed, divergences, ledger comparisons, mutations) in the existing xrpl-confluence dashboard so operators can see progress in real time instead of only via /status polling.
Why
Today the sidecar exposes /status returning the runners.Stats JSON. The dashboard (xrpl-confluence/dashboard/) already renders per-node health for rippled/goxrpl; a fuzz panel would show:
- Current
state (running / completed)
- Counters over time (
txs_submitted, divergences — sparklines)
- Last-observed divergence kind + timestamp
- Seed (so you can copy-paste for a reproduce run)
Approach sketch
- Optional: add a Prometheus-compatible metrics endpoint (
/metrics) using github.com/prometheus/client_golang.
- Dashboard scrapes or polls
/status (simpler: matches the existing pattern).
- New dashboard panel: reads
/status every few seconds, renders sparklines + a status tile.
Prerequisites
None — stats already exist in runners.Stats across all three modes (fuzz / replay / reproduce).
Deliverables
- Optional Prometheus metrics on sidecar
- Dashboard JS/HTML additions under
xrpl-confluence/dashboard/
- Screenshot / quick demo in the PR description
Goal
Surface fuzz run metrics (txs submitted / succeeded / failed, divergences, ledger comparisons, mutations) in the existing xrpl-confluence dashboard so operators can see progress in real time instead of only via
/statuspolling.Why
Today the sidecar exposes
/statusreturning therunners.StatsJSON. The dashboard (xrpl-confluence/dashboard/) already renders per-node health for rippled/goxrpl; a fuzz panel would show:state(running / completed)txs_submitted,divergences— sparklines)Approach sketch
/metrics) usinggithub.com/prometheus/client_golang./status(simpler: matches the existing pattern)./statusevery few seconds, renders sparklines + a status tile.Prerequisites
None — stats already exist in
runners.Statsacross all three modes (fuzz / replay / reproduce).Deliverables
xrpl-confluence/dashboard/