A dame.is & pds.dad production bsky38.com

Report the number everybody actually asks for: how many votes #72

Merged pds.dad
targeting main
Merged opened by and assigned to pds.dad
targeting main

The stats row counted voters, nominees and the last write, and never the votes themselves. It is the headline number of a poll, the one a reader means when they ask how it is going, and the site could tell you 1,348 people had voted without telling you what for.

It is one more aggregate over rows the query already scans, so it costs nothing: COUNT(*) beside the COUNT(DISTINCT did) that was there, filtered by the same status = 'counted' as every other total here, which is what keeps an over-limit or self vote out of it.

The lexicon gains the field because it has to. Output is validated against it, so a number that is not declared cannot be returned at all — it would be a 500 rather than a missing key.

votes leads the row and takes the full width on a phone. Four cards into two columns is three singles and one double, which leaves a hole wherever the double falls; giving the headline the wide cell fills the grid and puts the biggest total where the eye starts. The other double is "Last activity", and that one is not cosmetic: before hydration it renders a whole UTC timestamp and only becomes "9h ago" once mounted.

Two tests, because votes is the one total here that is not a distinct count and so the one that would agree with voters if it were wrong. One asserts they disagree — four votes from two voters — which a COUNT(DISTINCT did) copied by mistake would fail and every other test in the file would not. The other pins the status filter.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

This pull request has no versions submitted yet.