{ "_description": "Per-metric regression thresholds. A metric regresses when current - baseline exceeds BOTH the percentage and absolute bounds (AND, not OR — this tolerates small-value noise). Defaults apply unless a per-metric override exists.", "_bucket_note": "SpanMetrics latency histograms use explicit buckets [1,5,10,25,50,100,250,500,1000,5000]ms. A quantile sitting near a low-end boundary can jump a full bucket (e.g. 1ms->5ms) between runs with no real change, so absolute span bounds are set to ~2 low-end bucket widths (10ms) to tolerate that quantization noise while still catching genuine multi-bucket regressions. The job_queue running bound is widened similarly — per-ledger apply work scales with TxQ burst load.", "defaults": { "span": { "p50": { "max_pct_increase": 50.0, "max_abs_increase_ms": 10.0 }, "p95": { "max_pct_increase": 50.0, "max_abs_increase_ms": 10.0 }, "p99": { "max_pct_increase": 50.0, "max_abs_increase_ms": 15.0 } }, "job_queue": { "p95": { "max_pct_increase": 50.0, "max_abs_increase_us": 20000.0 } } }, "overrides": { "span.consensus.ledger_close": { "p50": { "max_pct_increase": 5.0, "max_abs_increase_ms": 200.0 }, "p95": { "max_pct_increase": 5.0, "max_abs_increase_ms": 500.0 }, "p99": { "max_pct_increase": 5.0, "max_abs_increase_ms": 1000.0 } }, "span.consensus.accept": { "p50": { "max_pct_increase": 5.0, "max_abs_increase_ms": 200.0 }, "p95": { "max_pct_increase": 5.0, "max_abs_increase_ms": 500.0 }, "p99": { "max_pct_increase": 5.0, "max_abs_increase_ms": 1000.0 } } } }