Conversation
The page is reached four different ways and served one of them. Rewrites it for all four, without moving the page or changing the anchor the app links to. The `## Random Tie-breakers` heading is preserved exactly. en.yaml sends voters to ties.html#random-tie-breakers when a tie is broken, so that heading text is load-bearing and the section has to stand alone -- a voter arriving from the results page reads it cold, with nothing above it. What changed and why: - The old page described the shuffle as breaking the tie "randomly" and pointed readers at the source tree for details. shuffleCandidatesForRandomTiebreak.ts opens with "I'm putting this in a separate file so that the documentation is easy to reference" -- the mechanism was written up for the docs and never picked up. The page now explains it, because the truth is much better than the summary: the shuffle is DETERMINISTIC by design, re-running the count always gives the same order, the full order (not just the winner) is shown on the results page and included in the download, and the algorithm was chosen to be language-agnostic so anyone can reproduce it. That turns a contested tie from something a candidate must accept into something they can check. - Adds the raw-vs-tally caveat from the same source comment: the shuffle uses the RAW ballot count, while the results page shows a tally count that excludes uncountable ballots. Anyone checking the result needs to know which number applies. - New section on ties in small and test elections, which is where nearly everyone meets their first tie. Three things, one of which is documented nowhere: the tie-break order changes with EVERY ballot cast, because the ballot count feeds the shuffle -- so an order seen while testing is not the order the real election will produce. And since test ballots are deleted at finalize, the real election starts from zero ballots regardless. Also warns that a deliberately tied test election is a poor test, since it exercises the tie-breaking path rather than the count. - Widens the page past STAR. It was titled "STAR Voting Ties", but BetterVoting offers seven methods and the most common tie in practice is for the last seat in a multi-winner race. - States plainly that a rule agreed in advance is what makes a tie-break defensible -- any rule chosen beforehand beats the best rule chosen after the votes are in. Deliberately NOT documented: the break_ties_randomly setting. It appears in one place, a display toggle for the results title, and does not control whether ties are broken randomly. Documenting it would require guessing at intent. Verified with a local build: the page renders, and id="random-tie-breakers" is still present in the output so the in-app link keeps working. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
✅ Deploy Preview for bettervoting ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Warning Review limit reached
Next review available in: 26 minutes Limit details: You’ve used all 1 included review currently available under your plan. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Description
The ties page is reached four different ways and currently serves one of them. This rewrites it for all four — without moving the page or changing the anchor the app links to.
## Random Tie-breakersis preserved character-for-character.en.yamlsends voters toties.html#random-tie-breakerswhen a tie is broken, so that heading is load-bearing and the section has to stand alone — a voter arriving from the results page reads it cold, with nothing above it.What changed
The shuffle is now explained rather than deferred. The old page said ties are broken "randomly" and pointed at the source tree. But
shuffleCandidatesForRandomTiebreak.tsopens with "I'm putting this in a separate file so that the documentation is easy to reference" — the mechanism was written up for the docs and never picked up. The truth is much better than the summary:That turns a contested tie from something a candidate must accept into something they can check.
Adds the raw-vs-tally caveat from the same source comment — the shuffle uses the raw ballot count, while the results page shows a tally count excluding uncountable ballots. Anyone verifying a tie-break needs to know which applies.
New section: ties in small and test elections. Where nearly everyone meets their first tie. One point is documented nowhere: the tie-break order changes with every ballot cast, because the ballot count feeds the shuffle — so an order seen while testing is not the order the real election produces. And test ballots are deleted at finalize, so the real election starts from zero regardless. Also warns that a deliberately tied test election is a poor test, since it exercises the tie-breaking path rather than the count.
Widens it past STAR. It was titled "STAR Voting Ties", but BetterVoting offers seven methods and the most common tie in practice is the last seat in a multi-winner race.
Not documented, deliberately: the
break_ties_randomlysetting. It appears in one place — a display toggle for the results title — and does not control whether ties are broken randomly. Documenting it would mean guessing at intent. Flagging it here instead.Verification. Local build: page renders, and
id="random-tie-breakers"is present in the output, so the in-app link keeps working.Screenshots / Videos (frontend only)
n/a — documentation.
Related Issues
None.