Logged-out readers were not realising that an account missing from the board can be put there by voting for them. The site did say so, in the hero's third clause and in the empty-pool state, and the empty-pool state stops rendering the moment the first vote lands. So the one explanation a reader could still meet was the one written for a situation that no longer occurs.
Meanwhile the state they do meet said the opposite. Search the leaderboard for
someone with no votes and it answered "No nominee matches", full stop, at the
highest-intent moment on the page: they have named the person they came for.
"No nominee matches" reads as "not eligible". It now says nobody matching them
has a vote yet, that anyone with a Bluesky account can be voted for, and
carries the handle they typed to the vote page in ?q=.
Three surfaces, one sentence between them (VOTE_IS_NOMINATION), so they cannot
drift into three explanations of one rule:
- the search miss, which was the dead end;
- a line under the leaderboard header, so the rule arrives without having to search for it first. The caption above it says where the cut falls; this says there is no door to get through first;
- the foot of the list, for the reader who scrolls it rather than searches it and reaches the end without finding who they came for.
Two things had to be built for the handoff to survive. HandleInput looks up a
value it was given rather than typed — onInput is a DOM handler and never
fires for one set in code, so a prefilled box would have sat there holding a
handle with nothing selected; it runs once on mount, and an exact match
auto-selects as it would have if typed. And the vote page's "Log in to vote"
carries returnTo with the query on it. Without that the chain died precisely
for the people it exists for: a logged-out reader arrives holding a handle, logs
in, and is returned to the front page having lost it.
/vote?q=jay.bsky.team now opens with that account picked and a Vote button
ready.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com