====================================================================== SOURCE FILE: b484mbm_tie_every_rung.yaml TABULATED FILE: b484mbm_tie_every_rung_tabulated.txt ====================================================================== election_title: "3 candidates / 2 seats, Bloc STAR — tie at every rung (484mbm)" # BV tracker fields (read by tools_adam/scripts/build_bv_registry.py; engine ignores). # No bv_test_id on purpose: this case is named by its bvid, which is unique by # construction. The election's PERMANENT BetterVoting title reads "BV2263 — …", # which is wrong — BV2263 was minted concurrently for the over-50% control # (xw23m9) and a BV title cannot be edited or deleted. `484mbm` is the id to # quote; the number on the BV page should be ignored. bv_election_id: 484mbm bv_results_url: https://bettervoting.com/484mbm/results scenario_description: |- The smallest election that ties all the way down. Three voters, three candidates, two seats; the ballots rotate, so each voter's 3 / 4 / 5 lands on a different candidate (Arden > Blythe > Corin > Arden, rock-paper-scissors). Every deterministic rung comes back level. Scores: 12 = 12 = 12. Pairwise: each candidate is preferred on 3 of the 9 matchup-ballots, and each wins exactly one head-to-head 2-1, so the cycle ties on either reading. Five-star: one score-5 vote each. Nothing in the ballots separates the three, so the two seats are filled entirely by whatever tie-breaking policy was published before the count. That makes it a clean divergence probe, and the two engines take different paths to the same pair. BetterVoting SKIPS the pairwise rung whenever more than two candidates are tied (log `pairwise_too_many_candidates`), falls through five-star, and settles seat 1 with its seeded random draw perm = [Blythe, Arden, Corin] -> Blythe, then Arden. The LH engine DOES compute the pairwise rung, finds it tied 3-3-3, and only then reaches its own tiebreaker. Pinning lot_numbers to BV's perm reproduces BV exactly. Also a live repro of the tieBreakType reporting gap already seen on BV130-r2: round 0 carries `tieBreakType: "random"` and the logs name both draws, but the top-level `tieBreakType` is `"none"` and `tied` is `[]` — so the summary a reader sees does not say a seat was decided by lot. Backs the .starvote input-format page, which runs the same election through Larry Hastings' own CLI with the tiebreaker switched off, where it refuses to pick anyone at all: 07_Concepts/tabulation_engines/LH_starvote/starvote_file_format.md num_winners: 2 voting_method: Bloc STAR lot_numbers: [Blythe, Arden, Corin] # BV's drawn perm — reproduces Blythe, Arden ballots: |- Arden,Blythe,Corin 3,4,5 5,3,4 4,5,3 expected_winners: - Blythe - Arden # file: b484mbm_tie_every_rung.yaml ====================================================================== TABULATION RESULTS ====================================================================== === 3 candidates / 2 seats, Bloc STAR — tie at every rung (484mbm) === The smallest election that ties all the way down. Three voters, three candidates, two seats; the ballots rotate, so each voter's 3 / 4 / 5 lands on a different candidate (Arden > Blythe > Corin > Arden, rock-paper-scissors). Every deterministic rung comes back level. Scores: 12 = 12 = 12. Pairwise: each candidate is preferred on 3 of the 9 matchup-ballots, and each wins exactly one head-to-head 2-1, so the cycle ties on either reading. Five-star: one score-5 vote each. Nothing in the ballots separates the three, so the two seats are filled entirely by whatever tie-breaking policy was published before the count. That makes it a clean divergence probe, and the two engines take different paths to the same pair. BetterVoting SKIPS the pairwise rung whenever more than two candidates are tied (log `pairwise_too_many_candidates`), falls through five-star, and settles seat 1 with its seeded random draw perm = [Blythe, Arden, Corin] -> Blythe, then Arden. The LH engine DOES compute the pairwise rung, finds it tied 3-3-3, and only then reaches its own tiebreaker. Pinning lot_numbers to BV's perm reproduces BV exactly. Also a live repro of the tieBreakType reporting gap already seen on BV130-r2: round 0 carries `tieBreakType: "random"` and the logs name both draws, but the top-level `tieBreakType` is `"none"` and `tied` is `[]` — so the summary a reader sees does not say a seat was decided by lot. Backs the .starvote input-format page, which runs the same election through Larry Hastings' own CLI with the tiebreaker switched off, where it refuses to pick anyone at all: 07_Concepts/tabulation_engines/LH_starvote/starvote_file_format.md --- Preference Matrix --- Head-to-head / pairwise comparison Legend: For - Equal Support - Against Informational only — not part of the 2-winner count below, so no Top-2 finalists are marked. | Arden | Blythe | Corin | ----------------------------------------------------- Arden > | --- |1 - 0 - 2 |2 - 0 - 1 | Blythe > | 2 - 0 - 1 | --- |1 - 0 - 2 | Corin > | 1 - 0 - 2 |2 - 0 - 1 | --- | [Condorcet Winner] No Condorcet winner (majority cycle: Arden > Corin > Blythe > Arden) --- Bloc STAR Voting Method (2 winners) --- [Bloc STAR] Tabulating 3 ballots to fill 2 seats. Arden,Blythe,Corin 3, 4, 5 5, 3, 4 4, 5, 3 [Score Distribution] (how many ballots gave each star rating) Score Candidate 5 4 3 2 1 0 | Total Avg Arden 1 1 1 0 0 0 | 12 4.0 Blythe 1 1 1 0 0 0 | 12 4.0 Corin 1 1 1 0 0 0 | 12 4.0 [Bloc STAR: Round 1: Scoring Round] The two highest-scoring candidates advance to the next round. Arden -- 12 -- Tied for first place Blythe -- 12 -- Tied for first place Corin -- 12 -- Tied for first place There's a three-way tie for first. [Bloc STAR: Round 1: Scoring Round: First tiebreaker] The two candidates preferred in the most head-to-head matchups advance. Arden -- 3 -- Tied for first place Blythe -- 3 -- Tied for first place Corin -- 3 -- Tied for first place Equal Support -- 0 There's still a three-way tie for first. [Bloc STAR: Round 1: Scoring Round: Second tiebreaker] The two candidates with the most votes of score 5 advance. Arden -- 1 -- Tied for first place Blythe -- 1 -- Tied for first place Corin -- 1 -- Tied for first place There's still a three-way tie for first. *(Ties are resolved by choosing the tied candidate with the highest-priority official lot number.)* Lot-number priority order: ['Blythe', 'Arden', 'Corin'] [Tiebreaker: Lot Number Priority] Tie among: ['Arden', 'Blythe', 'Corin'] Resolved: ['Blythe', 'Arden'] (selected by lot-number priority). [Lot-decided tie — rare] ⚠ The ballots did not break this tie: the deterministic rungs (pairwise / score, then five-star) all came back equal, so the pre-published LOT order chose among the tied candidates — the result here was set by lot, not by the votes. Usually the "dead rung": no tied candidate held a score-5 vote (five-star counts fives, not fours). Verify the tied candidates' 5-counts. [Bloc STAR: Round 1: Automatic Runoff Round] The candidate preferred in the most head-to-head matchups wins. Blythe -- 2 -- First place Arden -- 1 Equal Support -- 0 Blythe wins. Runoff math: 3 ballots cast − 0 Equal Support (no preference between the two finalists) ─ 3 voters with a preference (majority = 2) Blythe 2 (67%) · Arden 1 (33%) ────────────────────────────────────────────────── [Bloc STAR: Round 2: Scoring Round] The two highest-scoring candidates advance to the next round. Arden -- 12 -- First place Corin -- 12 -- Second place Arden and Corin advance. [Bloc STAR: Round 2: Automatic Runoff Round] The candidate preferred in the most head-to-head matchups wins. Arden -- 2 -- First place Corin -- 1 Equal Support -- 0 Arden wins. Runoff math: 3 ballots cast − 0 Equal Support (no preference between the two finalists) ─ 3 voters with a preference (majority = 2) Arden 2 (67%) · Corin 1 (33%) [Bloc STAR: Winners — Bloc STAR Voting Method (2 winners)] Blythe Arden