Three sources of author-label churn split the per-author hashrate series into fragments (seen in the 09:45-10:30 stretch today; 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, already in ReadWritePaths) at most every 10 s and restored at start. Verified locally: after a restart our name was back on the first scrape.
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.
Three sources of author-label churn split the per-author hashrate series into fragments (seen in the 09:45-10:30 stretch today; 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`, already in ReadWritePaths) at most every 10 s and restored at start. Verified locally: after a restart our name was back on the first scrape.
- 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.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5
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
grenade
merged commit f3c026623e into main2026-09-04 08:10:40 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Three sources of author-label churn split the per-author hashrate series into fragments (seen in the 09:45-10:30 stretch today; lair/quantus#11 follow-up):
--state-file(the service uses/var/lib/quantus-arena/attribution.json, already in ReadWritePaths) at most every 10 s and restored at start. Verified locally: after a restart our name was back on the first scrape.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.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5