Static reading cannot settle #13. Warm start logs restoring 19,910 blocks for
mainnet and the board it serves divides every share by 1,065, and every
explanation that would reconcile the two is ruled out in the code: the deque is
only ever pushed and popped at a capacity of 100,800, `tail(n)` yields
`min(n, len)`, `tally` counts every entry it walks, nothing filters rows, the
board recomputes every five seconds, and there is exactly one non-test
`ChainRuntime` and one `RollingWindow` per chain, shared by `Arc`.
So: log the length. `warm start: window restored` now carries `held` beside
`blocks` — the two must agree, and when they did not, every share on the site was
computed over the difference with nothing saying so. `recompute_leaderboard`
logs what it asked for, what was held and what it tallied at debug.
The new test pins the half of the contradiction that lives in
`blackbeard-core`: a window pushed 19,910 blocks holds 19,910, tallies 3,600 for
a 3,600 window, and tallies 19,910 when asked for more than it holds. That is
the arithmetic the served response contradicts, so an investigation upstream of
it does not have to re-establish that a deque holds what was pushed.
Refs #13
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jp6a8EDar9ueEhAxzep4V5