Three sources of author-label churn split the per-author hashrate series
into fragments (lair/quantus#11 follow-up):
- Attribution state lived in memory, so every restart stripped every
author of its name for a few blocks. Votes, held names and the peer-id
to name map are now saved to --state-file (the service uses
/var/lib/quantus-arena/attribution.json) at most every 10 s and
restored at start.
- A name dropped back to the preimage whenever confidence dipped under
0.6. A held name now stays until its node has no vote left in the
20-block window or another node out-votes it outright.
- A duplicate name got its peer-id suffix only once a second node with
that name was attributed, re-labelling the first. Any name used by more
than one node on the feed now always carries the suffix.
Dashboard: the hashrate-by-author panel no longer spans nulls, so a label
change shows as a gap rather than a slope drawn between two points.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5