Exercise 8 — a smallest runoff reversal (sample solution, two candidates)¶
Generated from ex08_minimal_reversal_2c.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.
Method: STAR (single winner) · 1 seat · Expected winner: A
Scenario¶
A sample solution to the construction exercise ex08_build_a_reversal.md: the smallest election this repo knows where the score leader loses the automatic runoff. Three voters, two candidates. B piles up points from two friendly-but-not-first ballots (B 13, A 10) — yet a 2-1 majority scores A above B, so A wins the runoff. Score voting and majority rule disagree in the purest possible form; STAR sides with the majority. (With only two candidates the finalist matrix is trivial, so show_matrix is off per house style.)
Ballots¶
The ballots as marked — the filled bubble is the score given, and the score is the number in its column:
| # | Ballot as marked | A | B |
|---|---|---|---|
| 1 | ![]() |
5 | 4 |
| 2 | ![]() |
5 | 4 |
| 3 | ![]() |
0 | 5 |
The same ballots as the file records them:
Row 1 = candidate names; each later row is one voter's 0–5 scores (a N × prefix = N identical ballots).
A,B
5,4 # two voters: A first, B a friendly 4
5,4
0,5 # one voter: B only
What the engine says¶
The count, step by step — the rounds and how the winner is reached:
[Divergence from STAR]
STAR = A
Approval = B (differs from STAR)
[Runoff Reversal]
- Score Round Winner(s) = (B)
- Runoff Round Winner = (A)
Candidate B earned the highest total score, but
Candidate A won the automatic runoff — not a malfunction,
STAR working as designed: the runoff elects the finalist preferred
by the majority (of voters with a preference).
--- STAR Voting Method (single winner) ---
[STAR Voting]
Tabulating 3 ballots.
Count × A,B
2 × 5,4
1 × 0,5
[STAR Voting: Scoring Round]
The two highest-scoring candidates advance to the next round.
B -- 13 -- First place
A -- 10 -- Second place
B and A advance.
[STAR Voting: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
A -- 2 -- First place
B -- 1
Equal Support -- 0
A wins.
Runoff math:
3 ballots cast
− 0 Equal Support (no preference between the two finalists)
─
3 voters with a preference (majority = 2)
A 2 (67%) · B 1 (33%)
[STAR Voting: Winner — STAR Voting Method (single winner)]
A
Full audit — preference matrix, Condorcet, and score distribution¶
--- Runoff (Preference) Matrix ---
Head-to-head / pairwise comparison
Legend: For - Equal Support - Against
* indicates Top 2 Finalist
| * A | * B |
-----------------------------------------
* A > | --- |2 - 0 - 1 |
* B > | 1 - 0 - 2 | --- |
[Condorcet Winner]
Condorcet Winner: A — matches the STAR winner
[Condorcet Loser]
Condorcet Loser: B — loses every head-to-head matchup — elected by Approval!
[Score Distribution] (how many ballots gave each star rating)
Score
Candidate 5 4 3 2 1 0 | Total Avg
A 2 0 0 0 0 1 | 10 3.3
B 1 2 0 0 0 0 | 13 4.3
Everything in one file: the _tabulated mirror (regenerated on every run; every analysis forced on).
Run it yourself:
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/05_Practice/cases/ex08_minimal_reversal_2c.yaml
See also¶
- Methods disagree on this election — its entry in the divergence review ledger
- Runoff reversal (worked set)
- Glossary · all cases by method
More cases in this set: ex01_district_combined · ex01_district_east · ex01_district_west · ex02_bella_exits · ex02_nine_ballots · ex02_tenth_ballot · ex03_five_verdicts · ex04_olympics_1994 · ex05_center_squeeze · ex06_bullet_backfire · ex06_bullet_honest · ex07_vanishing_votes · ex08_minimal_reversal_3c · ex09_game_night_cycle · ex10_generous · ex10_reticent · ex11_spoiler_added · ex11_two_way_base · ex12_bloc_sweep · ex12_proportional_share · ex13_approve3 · ex13_approve4 · ex13_bullet · ex13_opinions · ex14_two_novels · ex14_two_novels_fullranks · ex15_approval_pairwise · ex15_approval_yes_no · ex15_score_profile


