Exercise 10 — Later-no-harm: did the threes harm Amir, or did the zeros hide Bess?¶
Nine voters, three candidates. Amir's four fans face the classic scored-ballot dilemma: they honestly like Bess second — should they say so? Run it both ways: first with the fans scoring nothing below their favorite, then with their honest 3s for Bess. One of those elections is a textbook later-no-harm failure. The exercise is deciding what it means.
▶ Live on BetterVoting: reticent vote · results ↗ · generous vote · results ↗ (elections g6q42v / yyhj9x, Test IDs BV2195–96; each carries an RCV-IRV race — no Ranked Robin races on purpose: the reticent profile's rank conversion hides a Condorcet cycle BetterVoting would resolve at random).
You practice: the later-no-harm criterion — the one RCV-IRV keeps and STAR deliberately gives up — run live in both directions, and the discipline of keeping it distinct from favorite betrayal.
Work each part on paper before opening its solution. Both YAMLs are runnable; their expected_winners keys are regression-tested, and the _tabulated mirrors are the full audit reports.
The ballots¶
Nine voters, scores 0–5. Only the first column changes between the two runs:
| ×4 Amir fans (reticent → generous) | ×2 Bess-first | ×3 Cato-first | |
|---|---|---|---|
| Amir | 5 → 5 | 2 | 0 |
| Bess | 0 → 3 | 5 | 1 |
| Cato | 0 → 0 | 0 | 5 |
Your task¶
- (a) Tabulate the reticent profile (fans score Amir 5, everyone else 0). Who wins, against whom, by what count?
- (b) Before computing: the fans now add an honest Bess 3 to their ballots — twelve points that can only help Bess. Write down your prediction, and what you'd tell the fans.
- (c) Tabulate the generous profile. Name the criterion whose failure you just watched, precisely.
- (d) Now argue the other side: what do the honest ballots reveal that the reticent ones concealed? (Check Bess head-to-head against both rivals, and check what RCV-IRV does on the honest profile.)
- (e) Keep the ledger straight: which criterion did STAR just fail, which one does RCV-IRV fail instead, and why can't a method simply keep both?
Solutions¶
(a) Reticent — Amir wins, 6–3, over Cato
--- STAR Voting Method (single winner) ---
[STAR Voting]
Tabulating 9 ballots.
Count × Amir,Bess,Cato
4 × 5, 0, 0
3 × 0, 1, 5
2 × 2, 5, 0
[STAR Voting: Scoring Round]
The two highest-scoring candidates advance to the next round.
Amir -- 24 -- First place
Cato -- 15 -- Second place
Bess -- 13
Amir and Cato advance.
[STAR Voting: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Amir -- 6 -- First place
Cato -- 3
Equal Support -- 0
Amir wins.
Runoff math:
9 ballots cast
− 0 Equal Support (no preference between the two finalists)
─
9 voters with a preference (majority = 5)
Amir 6 (67%) · Cato 3 (33%)
[STAR Voting: Winner — STAR Voting Method (single winner)]
Amir
(b) The prediction
The soothing intuition: "your 3 for Bess can't hurt Amir — Amir still has your 5." Commit to a winner before opening (c).(c) Generous — Bess wins, 5–4, over Amir: a later-no-harm failure
[Divergence from STAR]
STAR = Bess
Choose-One (Plurality) = Amir (differs from STAR)
RCV-IRV = Amir (differs from STAR)
Note: no ballots had tied scores, so RCV-IRV vs STAR here is a genuine
method difference, not a tie-breaking artifact.
Note: Ranked Robin (RCV-RR) agrees with STAR, so RCV-IRV is the lone
outlier — the classic center-squeeze signature.
Full round-by-round reports (generated for review):
RCV-IRV rounds: cases_tabulated/ex10_generous_RCV-IRV_tabulated.txt
--- STAR Voting Method (single winner) ---
[STAR Voting]
Tabulating 9 ballots.
Count × Amir,Bess,Cato
4 × 5, 3, 0
3 × 0, 1, 5
2 × 2, 5, 0
[STAR Voting: Scoring Round]
The two highest-scoring candidates advance to the next round.
Bess -- 25 -- First place
Amir -- 24 -- Second place
Cato -- 15
Bess and Amir advance.
[STAR Voting: Automatic Runoff Round]
The candidate preferred in the most head-to-head matchups wins.
Bess -- 5 -- First place
Amir -- 4
Equal Support -- 0
Bess wins.
Runoff math:
9 ballots cast
− 0 Equal Support (no preference between the two finalists)
─
9 voters with a preference (majority = 5)
Bess 5 (56%) · Amir 4 (44%)
[STAR Voting: Winner — STAR Voting Method (single winner)]
Bess
(d) The other reading — the zeros were hiding the consensus winner
Look at what the honest ballots reveal: **every one of the nine voters scores Bess above zero**, and Bess beats Amir head-to-head 5–4 *and* Cato 6–3 — on honest preferences, **Bess is the Condorcet winner**. The reticent profile didn't "protect Amir" in any neutral sense; it *suppressed the information* that a majority prefers Bess. And here's the twist the engine's divergence block hands you: on the honest ballots, **RCV-IRV still elects Amir** — Bess, with only two first-choices, is eliminated first (the [center squeeze](ex05_center_squeeze.md), cameo appearance). IRV keeps its later-no-harm promise *by never looking at the preferences that would break it*. Same election, both faces of the trade: STAR honors the revealed consensus and forfeits LNH; IRV keeps LNH and forfeits the consensus winner.(e) The ledger
- **STAR fails later-no-harm** (this exercise) — knowingly: [equal.vote's own materials concede it](../01_Learn/properties_and_limits/STAR_honest_limits.md), because honoring compromise support is the design goal. - **RCV-IRV keeps later-no-harm but fails [favorite betrayal](../01_Learn/properties_and_limits/favorite_betrayal_voting_301.md)** structurally (center squeeze pushes lesser-evil ranking), plus the squeeze itself — the price of not counting lower preferences until eliminations force it. - They can't both be had in a method worth having: later-no-harm *requires* the count to ignore your compromise until your favorite is dead; using that information *at all* — which is what makes broad winners findable — is what LNH forbids. Keep the two criteria distinct (the repo's standing rule): LNH is about your *lower* rankings hurting your *top*; favorite betrayal is about needing to *demote your top* to get a tolerable result. A method's choice between them is a values statement, not a bug on either side.Reading this fairly¶
Sincere ballots throughout — the "failure" in (c) needs no strategy, which per the four-part test makes it fair currency against STAR; this page states it as plainly as any critic would. The symmetric honesty is part (d): the same election shows what keeping LNH costs IRV. One-point margins, engineered for arithmetic you can do at a whiteboard.
Run it yourself¶
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/05_Practice/cases/ex10_reticent.yaml
python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 01_STAR/05_Practice/cases/ex10_generous.yaml
Sources: ex10_reticent.yaml · ex10_generous.yaml. Full audit reports: reticent · generous.
Where this comes from. Original to this repo (ballots and cast). Concept homes: the glossary's later-no-harm entry, favorite betrayal 301 (why the two criteria must not be conflated), and STAR's honest limits.
Back to the exercises set · curriculum home: Voting 301