A/B PREVIEW · ARROWS · 2026-05-09

Dashboard delta arrows — before & after

Six cases covering the full rule: positive-good, positive-bad, negative-good, negative-bad, ambiguous, near-zero. Real metric values pulled from dare_dashboard.html (May 9th 10:34am refresh) where available; CPU time and "essentially flat" cases are illustrative.

What changed. Vertical arrows ↑/↓ swapped for diagonal ↗/↘ matching Cloudflare's dashboard pattern. Added a near-zero neutral state in grey for any delta with absolute value below 0.5% — stops trivial fluctuations from drawing the eye.

What didn't change. The semantic-colour rule (per project_dashboard_dare_metric_card_pattern.md): each metric carries a preferredDirection baked into config, and colour reflects whether the change is good or bad for that metric, not the literal direction of change. So a 4xx-share going up gets red even though it's "up", and cache hits going down gets red even though it's "down".

GlyphMeaningColour rule
Positive change green if up is good for this metric, red if up is bad
Negative change green if down is good (e.g. CPU time, error rate), red if down is bad
Near-zero (|Δ| < 0.5%) always grey — no semantic signal at trivial deltas
Ambiguous metric (no preferredDirection) grey regardless of direction (e.g. bandwidth — could mean traffic or cost)

1 · Positive-good

Requests +178.2% · preferredDirection: up · more requests = good (real growth signal). Should read green either way.

Old

1.6M Requests↑ +178.2%

New

1.6M Requests↗ +178.2%

2 · Positive-bad

404s +110,671% · preferredDirection: down · more 404s = bad (broken links, bot probes). Up direction reads red.

Old

93.0K 404 errors↑ +110671.4%

New

93.0K 404 errors↗ +110671.4%

3 · Negative-good

CPU time (P90) −12.4% · preferredDirection: down · faster = good. Down direction reads green. (Illustrative — dashboard doesn't currently surface CPU time.)

Old

623µs CPU time (P90)↓ −12.4%

New

623µs CPU time (P90)↘ −12.4%

4 · Negative-bad

Cache hit rate −92.3% · preferredDirection: up · fewer cache hits = bad (origin pressure rises). Down direction reads red.

Old

4.4% Cache hit rate↓ −92.3%

New

4.4% Cache hit rate↘ −92.3%

5 · Ambiguous metric

Bandwidth +163.1% · preferredDirection: neutral · could mean more traffic (good) or more cost (bad). No semantic claim — colour stays grey.

Old

17.0GB Bandwidth↑ +163.1%

New

17.0GB Bandwidth↗ +163.1%

6 · Near-zero (new in B)

Threats blocked +0.3% · preferredDirection: up, but |Δ| < 0.5% threshold. Old style claims a green up-trend that's noise; new style demotes to grey horizontal — visually says "no real change" so the eye skips past.

Old

119.5K Threats blocked↑ +0.3%

New

119.5K Threats blocked→ +0.3%

What this tells us. The diagonal glyph is a tiny stylistic shift but signals "this is a delta indicator, not a sort arrow" — vertical arrows often read as table-header hints in dashboard contexts. The neutral state is the more substantive add: it removes false signal at trivial deltas, which is exactly the case where coloured glyphs are most distracting.

Watch items. The 0.5% threshold is a guess. If real noise sits closer to ±1%, bump it; if rounding lots of meaningful 0.7% wins to grey, drop it to 0.3%. Easy one-line tweak in dare_cf_analytics.py.

Recommendation. Already shipped to production (this preview is the documented before/after). No further action unless the threshold needs retuning after a few cron cycles.