Exercise 12 — Two seats, one neighborhood¶
A neighborhood association elects a two-seat board. The north side — six voters of ten — runs Asa and Bram; the south side's four voters run Cleo and Dane. Everyone votes honestly. Count the same ten ballots two ways and you get two different boards. Neither count is broken. The exercise is deciding what a "fair" committee even means.
▶ Live on BetterVoting: vote · results ↗ (election 89wwvr, Test ID BV2199 — both races in one election; BV agrees on both seat pairs, and banners the STAR-PR race "Tied!" — a documented serializer quirk, see solution (d)).
You practice: multi-winner thinking — Bloc STAR (run STAR once per seat) versus Allocated Score (STAR-PR: winners spend their supporters' ballot weight) — and the majoritarian-vs-proportional design question underneath.
Work each part on paper before opening its solution. Both YAMLs are runnable (the same ballots, different voting_method); the _tabulated mirrors are the full audit reports.
The ballots¶
Ten voters, four candidates, two seats, scores 0–5:
| ×6 north side | ×4 south side | |
|---|---|---|
| Asa | 5 | 0 |
| Bram | 4 | 0 |
| Cleo | 0 | 5 |
| Dane | 0 | 4 |
Your task¶
- (a) Bloc STAR, seat 1: run ordinary single-winner STAR on all ten ballots. Who wins — and what's odd about the runoff tally?
- (b) Bloc STAR, seat 2: remove the seat-1 winner and run STAR again. Who joins the board? Characterize the final board in one sentence.
- (c) Before touching the proportional count, decide: is (b)'s outcome a bug? Write down your answer and your reason.
- (d) Allocated Score: seat 1 goes to the top scorer, and then a quota (10 voters ÷ 2 seats = 5 ballots' worth) of that winner's strongest supporters is spent. Work out what's left, then award seat 2. Who's on this board?
- (e) Two counts, two boards, zero mistakes. State the rule for choosing between them.
Solutions¶
(a) Seat 1 — Asa, with a 6–0 runoff
--- Bloc STAR Voting Method (2 winners) ---
[Bloc STAR]
Tabulating 10 ballots to fill 2 seats.
Count × Asa,Bram,Cleo,Dane
6 × 5, 4, 0, 0
4 × 0, 0, 5, 4
[Bloc STAR: Round 1: Scoring Round]
The two highest-scoring candidates advance to the next round.
Asa -- 30 -- First place
Bram -- 24 -- Second place
Cleo -- 20
Dane -- 16
Asa and Bram advance.
[Bloc STAR: Round 1: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Asa -- 6 -- First place
Bram -- 0
Equal Support -- 4
Asa wins.
Runoff math:
10 ballots cast
− 4 Equal Support (no preference between the two finalists)
──
6 voters with a preference (majority = 4)
Asa 6 (100%) · Bram 0 (0%)
──────────────────────────────────────────────────
[Bloc STAR: Round 2: Scoring Round]
The two highest-scoring candidates advance to the next round.
Bram -- 24 -- First place
Cleo -- 20 -- Second place
Dane -- 16
Bram and Cleo advance.
[Bloc STAR: Round 2: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Bram -- 6 -- First place
Cleo -- 4
Equal Support -- 0
Bram wins.
Runoff math:
10 ballots cast
− 0 Equal Support (no preference between the two finalists)
──
10 voters with a preference (majority = 6)
Bram 6 (60%) · Cleo 4 (40%)
[Bloc STAR: Winners — Bloc STAR Voting Method (2 winners)]
Asa
Bram
(b) Seat 2 — Bram. The board is a sweep
--- Bloc STAR Voting Method (2 winners) ---
[Bloc STAR]
Tabulating 10 ballots to fill 2 seats.
Count × Asa,Bram,Cleo,Dane
6 × 5, 4, 0, 0
4 × 0, 0, 5, 4
[Bloc STAR: Round 1: Scoring Round]
The two highest-scoring candidates advance to the next round.
Asa -- 30 -- First place
Bram -- 24 -- Second place
Cleo -- 20
Dane -- 16
Asa and Bram advance.
[Bloc STAR: Round 1: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Asa -- 6 -- First place
Bram -- 0
Equal Support -- 4
Asa wins.
Runoff math:
10 ballots cast
− 4 Equal Support (no preference between the two finalists)
──
6 voters with a preference (majority = 4)
Asa 6 (100%) · Bram 0 (0%)
──────────────────────────────────────────────────
[Bloc STAR: Round 2: Scoring Round]
The two highest-scoring candidates advance to the next round.
Bram -- 24 -- First place
Cleo -- 20 -- Second place
Dane -- 16
Bram and Cleo advance.
[Bloc STAR: Round 2: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Bram -- 6 -- First place
Cleo -- 4
Equal Support -- 0
Bram wins.
Runoff math:
10 ballots cast
− 0 Equal Support (no preference between the two finalists)
──
10 voters with a preference (majority = 6)
Bram 6 (60%) · Cleo 4 (40%)
[Bloc STAR: Winners — Bloc STAR Voting Method (2 winners)]
Asa
Bram
(c) Is the sweep a bug?
Trick question — it's a *specification*, not a defect. If this board must act as one voice (an executive, a negotiating team), electing the majority's whole slate is defensible and arguably correct. If the board is supposed to *represent the neighborhood*, a 10-voter body where 4 voters have zero seats is malrepresentation by construction. The count didn't decide that; whoever chose the count did. Hold your answer and check it against (e).(d) Allocated Score — the north pays for Asa, and Cleo takes seat 2
Round 1
The highest-scoring candidate wins a seat.
Asa -- 30 -- First place
Asa wins a seat.
Round 1: Ballot allocation round
Allocating 6 ballots at score 5.
This allocation overfills the quota. Returning fractional surplus.
Allocating only 83.33% of these ballots.
Keeping these ballots, but multiplying their weights by 1/6.
Round 2
The highest-scoring candidate wins a seat.
Cleo -- 20 -- First place
Dane -- 16
Bram -- 4
Cleo wins a seat.
(e) The rule
**Ask what the body is for, then pick the count — never the reverse.** Bodies that must *act* (a mayor's office, a bargaining team) suit majoritarian fills like [Bloc STAR](../../02_STAR_Bloc/README.md); bodies that must *deliberate and represent* (a council, this association board) suit proportional fills like [Allocated Score and its siblings](../../03_STAR_PR/README.md). The ten ballots contain both answers; the seat-filling rule is a constitutional choice about whose voice a seat is. Arguing "which board won" without first answering "what is the board for" is the category error this exercise exists to vaccinate against.Reading this fairly¶
Two clean factions and near-clone running mates — engineered so the philosophies separate perfectly (real electorates blur the boundary and the methods converge accordingly). Note what was not varied: same ballots, same honest voters, same engine; the only change was voting_method. Per the four-part test, neither result is a "whoops" — this is the rare exercise where both outcomes are working as designed.
Run it yourself¶
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/05_Practice/cases/ex12_bloc_sweep.yaml
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/05_Practice/cases/ex12_proportional_share.yaml
Sources: ex12_bloc_sweep.yaml · ex12_proportional_share.yaml. Full audit reports: bloc · allocated.
Where this comes from. Original to this repo (ballots and cast). Concept homes: electing more than one, Bloc STAR, proportional STAR.
Back to the exercises set · curriculum home: Voting 301