Skip to content

Exercise 12 — Two seats, one neighborhood: Bloc STAR sweeps

Generated from ex12_bloc_sweep.yaml — do not edit by hand. Regenerate: python STARVote_LH_tabulation_engine/tools_adam/scripts/build_yaml_pages.py.

Method: Bloc STAR (multi-winner, majoritarian) · 2 seats · Expected winners: Asa, Bram

▶ Live on BetterVoting: vote · results ↗ (election 89wwvr · test BV2199).

Scenario

A neighborhood association elects a two-seat board. The north side (6 of 10 voters) runs Asa and Bram; the south side (4 of 10) runs Cleo and Dane. Bloc STAR fills seats by running single-winner STAR once per seat: seat 1 goes to Asa (30 points; runoff 6-0 over Bram with 4 Equal Support), then Asa is removed and seat 2 goes to Bram (runoff 6-4 over Cleo). The cohesive 60% takes 100% of the board — majoritarian by design, the right tool when the body must act as one and the wrong one when it should mirror the neighborhood. The companion file ex12_proportional_share.yaml reruns the same ten ballots under Allocated Score (STAR-PR): the south side's 40% earns one of the two seats. Exercise: ex12_bloc_vs_proportional.md. Ballots and cast are this repo's own. Live on BetterVoting (Test ID BV2199): https://bettervoting.com/89wwvr/results — one election, both races (Bloc STAR + STAR-PR); BV agrees on both seat pairs.

Ballots

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

Asa,Bram,Cleo,Dane
5,4,0,0 # 6 north-side voters: Asa first, Bram close behind
5,4,0,0
5,4,0,0
5,4,0,0
5,4,0,0
5,4,0,0
0,0,5,4 # 4 south-side voters: Cleo first, Dane close behind
0,0,5,4
0,0,5,4
0,0,5,4

What the engine says

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

--- 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

Full audit — preference matrix, Condorcet, and score distribution

--- Preference Matrix ---
Head-to-head / pairwise comparison
Legend: For - Equal Support - Against
        Informational only — not part of the 2-winner count below,
        so no Top-2 finalists are marked.
               |     Asa    |    Bram   |    Cleo   |    Dane   |
-----------------------------------------------------------------
         Asa > |    ---     |6 - 4 - 0  |6 - 0 - 4  |6 - 0 - 4  |
        Bram > | 0 - 4 - 6  |   ---     |6 - 0 - 4  |6 - 0 - 4  |
        Cleo > | 4 - 0 - 6  |4 - 0 - 6  |   ---     |4 - 6 - 0  |
        Dane > | 4 - 0 - 6  |4 - 0 - 6  |0 - 6 - 4  |   ---     |

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

[Condorcet Loser]
  Condorcet Loser: Dane — loses every head-to-head matchup

[Score Distribution] (how many ballots gave each star rating)
                Score
Candidate  5  4  3  2  1  0  | Total   Avg
Asa        6  0  0  0  0  4  |    30   3.0
Bram       0  6  0  0  0  4  |    24   2.4
Cleo       4  0  0  0  0  6  |    20   2.0
Dane       0  4  0  0  0  6  |    16   1.6

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/ex12_bloc_sweep.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_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