Exercise 14 — The transfer machine, fully ranked (BV probe variant)¶
Generated from ex14_two_novels_fullranks.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.
Method: STV (proportional, ranked ballots) · 2 seats · Expected winners: Austen, Camus
▶ Live on BetterVoting: vote · results ↗ (election bj8dfc · test BV2202).
Scenario¶
The same nine voters as ex14_two_novels.yaml with every ballot completed to a full ranking — 5×(Austen>Bronte>Camus>Dickens), 1×(Bronte>Camus> Austen>Dickens), 3×(Camus>Dickens>Bronte>Austen). The added trailing rankings are never reached by any transfer, so the quota, the rounds and the seats are identical to the exercise — under whichever of the two published Droop quotas the count applies: Austen elected in round 1, her surplus transferring to Bronte, and Camus taking the second seat. Seats: Austen + Camus. This variant exists as a bug probe: BetterVoting's STV tabulator returns a server error on the exercise's truncated ballots (BV2201, tk776t) — and, it turns out, on this fully-ranked copy too (BV2202, bj8dfc), acquitting truncation. The bug has since been fully DIAGNOSED (probes BV2203-2205): any STV count whose eliminations leave ONE remaining hopeful who then reaches quota crashes — BV's IRV.ts redistributes the winner's surplus over an empty candidate list, and [].reduce with no initial value throws. This count is exactly that shape (Camus elected last and alone). Full bisection, evidence table, and ready-to-file issue: 06_Other/STV/bv_stv_sole_survivor_crash/; narrative: ex14_transfer_machine.md. Live on BetterVoting (Test ID BV2202): https://bettervoting.com/bj8dfc — the vote page works; /results currently errors (the bug above).
Ballots¶
Each row is one voter's ranking, most-preferred first (N: prefix = N identical ballots).
5:Austen>Bronte>Camus>Dickens
1:Bronte>Camus>Austen>Dickens
3:Camus>Dickens>Bronte>Austen
What the engine says¶
The count, step by step — the rounds and how the winner is reached:
--- STV / Single Transferable Vote (multi-winner — 2 seats) ---
Exercise 14 — The transfer machine, fully ranked (BV probe variant)
Tabulating 9 ballots (ranked ballots).
2 seats; quota = 3.00 (exact Droop, votes/(seats+1)) — 33.3% of 9.
Elected at >= quota, and every surplus is measured from it.
(Hand-count Droop, floor(9/3)+1 = 4, is a different but equally standard rule.)
ROUND 1
Candidate Votes Status
----------- ------- --------
Austen 5 Elected
Camus 3 Hopeful
Bronte 1 Hopeful
Dickens 0 Hopeful
FINAL RESULT
Candidate Votes Status
----------- ------- --------
Austen 3.00 Elected
Camus 3.00 Elected
Bronte 3.00 Rejected
Dickens 0.00 Rejected
Winner(s) — STV / Single Transferable Vote (multi-winner — 2 seats)
Austen
Camus
Full audit — preference matrix, Condorcet, and score distribution¶
--- Smith Set (the generalized Condorcet winner) ---
The smallest group whose every member beats every candidate outside it —
the honest answer to "who is even in contention?".
Smith set (1 of 4): Austen
Outside (3): Bronte, Camus, Dickens
One member ⇒ Austen is the Condorcet winner, beating every rival head-to-head.
More: 07_Concepts/topics/smith_set.md
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/ex14_two_novels_fullranks.yaml
See also¶
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_2c · 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 · ex15_approval_pairwise · ex15_approval_yes_no · ex15_score_profile