Skip to content

Spoiler — chocolate's majority splits, vanilla steals the win

Generated from 02_icecream_chocolate_split.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: MilkChoco

Scenario

100 dessert voters. Chocolate lovers are a 66% MAJORITY, but there are THREE chocolates on the menu — DarkChoco, MilkChoco, and ChocoChip. Only 34 prefer Vanilla.

Under Choose-One each voter picks one flavor, so chocolate splits: DarkChoco 24, MilkChoco 22, ChocoChip 20. Vanilla wins with 34 of 100 — a flavor a two-thirds majority didn't want. Classic vote splitting.

STAR lets chocolate lovers give all three chocolates high scores, so the majority isn't split. The runoff elects MilkChoco — the chocolate everyone in the bloc can live with — over the spoiler Vanilla.

Parameters (from the YAML)

blocs:
  Chocolate: [DarkChoco, MilkChoco, ChocoChip]

Ballots

Row 1 = candidate names; each later row is one voter's 0–5 scores (a N × prefix = N identical ballots).

Count:DarkChoco,MilkChoco,ChocoChip,Vanilla
24:5,4,2,0   # dark base — also like milk
22:4,5,4,0   # milk base — like all chocolate
20:2,4,5,0   # chip base — also like milk
34:0,0,0,5   # vanilla bloc

What the engine says

The count, step by step — the rounds and how the winner is reached:

[Divergence from STAR]
  STAR                   = MilkChoco
  Choose-One (Plurality) = Vanilla   (differs from STAR)

[Vote-splitting check]
  Choose-One first choices: Vanilla 34, DarkChoco 24, MilkChoco 22, ChocoChip 20
  Plurality winner: Vanilla (34, 34.0%)
  Bloc 'Chocolate' = DarkChoco, MilkChoco, ChocoChip: combined 66 (66.0%); winner Vanilla is OUTSIDE it.
  => VOTE SPLITTING: the 'Chocolate' bloc is an outright majority (66 vs
     Vanilla's 34) but split across 3 candidates, so Vanilla won Choose-One.
     STAR elected MilkChoco.

--- STAR Voting Method (single winner) ---

[STAR Voting]
 Tabulating 100 ballots.
Count × DarkChoco,MilkChoco,ChocoChip,Vanilla
   34 ×         0,        0,        0,      5
   24 ×         5,        4,        2,      0
   22 ×         4,        5,        4,      0
   20 ×         2,        4,        5,      0

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   MilkChoco     -- 286 -- First place
   DarkChoco     -- 248 -- Second place
   ChocoChip     -- 236
   Vanilla       -- 170
 MilkChoco and DarkChoco advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   MilkChoco     -- 42 -- First place
   DarkChoco     -- 24
   Equal Support -- 34
 MilkChoco wins.
   Runoff math:
     100  ballots cast
   −  34  Equal Support (no preference between the two finalists)
     ───
      66  voters with a preference  (majority = 34)
           MilkChoco 42 (64%)  ·  DarkChoco 24 (36%)

[STAR Voting: Winner — STAR Voting Method (single winner)]
 MilkChoco

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
                  |  * DarkChoco  | * MilkChoco  |   ChocoChip  |    Vanilla   |
--------------------------------------------------------------------------------
    * DarkChoco > |      ---      |24 - 34 - 42  |24 - 56 - 20  |66 -  0 - 34  |
    * MilkChoco > | 42 - 34 - 24  |     ---      |46 - 34 - 20  |66 -  0 - 34  |
      ChocoChip > | 20 - 56 - 24  |20 - 34 - 46  |     ---      |66 -  0 - 34  |
        Vanilla > | 34 -  0 - 66  |34 -  0 - 66  |34 -  0 - 66  |     ---      |

[Condorcet Winner]
  Condorcet Winner: MilkChoco — matches the STAR winner

[Condorcet Loser]
  Condorcet Loser: Vanilla — loses every head-to-head matchup — elected by Choose-One (Plurality)!

[Score Distribution] (how many ballots gave each star rating)
                   Score
Candidate   5   4   3   2   1   0  | Total   Avg
DarkChoco  24  22   0  20   0  34  |   248   2.5
MilkChoco  22  44   0   0   0  34  |   286   2.9
ChocoChip  20  22   0  24   0  34  |   236   2.4
Vanilla    34   0   0   0   0  66  |   170   1.7

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 method_comparisons/split_voting/_main/02_icecream_chocolate_split.yaml

See also

More cases in this set: 00_plurality_vs_majority · 01_political_left_split · 03_lunch_veggie_vs_meat · 04_star_wars_vote_split · 05a_residual_split_bullet-voting · 05b_residual_split_expressive-fix · 06_sub_majority_not_spoiled