Skip to content

Bloc STAR

One line: Bloc STAR fills N seats by running ordinary single-winner STAR N times on the same ballots — elect a winner, remove them from the field, re-run the count on who's left. Same 0–5 ballot, same two rounds, repeated once per seat.

→ Prerequisite: STAR — start here · the fork this sits on one side of: Electing more than one, simply · the proportional alternative: STAR-PR · Glossary: Bloc STAR · Curriculum: 201.5

Level: 201 · for voters


The ballot: nothing changes

You score every candidate 0 to 5, exactly as in single-winner STAR. There is no "pick three for three seats" instruction, no ranking, nothing to ration. Whether the race fills one seat or five, the ballot in your hand is the same — which is the practical argument for the whole scored family: voters learn one ballot and it serves every kind of race.

That matters more than it sounds. Under SNTV / Bloc Plurality the ballot itself changes with the seat count and forces you to spend a scarce mark; here your score for one candidate never costs another candidate anything.

The published voter instructions say all of that in four sentences, the second of which is a complete description of the count. Read line by line, with the naming rules that go with them: the ballot and the official definitions.

The count: elect, remove, re-run

To fill N seats:

  1. Scoring round. Add up every candidate's stars. The two highest advance.
  2. Automatic runoff. Of those two finalists, whoever more voters scored higher wins the seat.
  3. Remove the winner from the field and go back to step 1 with the same, unchanged ballots.
  4. Repeat until N seats are filled.

Each seat is a complete little STAR election. Nothing is reweighted, spent, or transferred between seats — that is the single difference from STAR-PR, and the reason this method is majoritarian rather than proportional.

Worked — the baseline case. 3 candidates, 2 seats, 3 ballots (the smallest Bloc election that actually decides anything: with 2 candidates for 2 seats nobody can lose):

--- Bloc STAR Voting Method (2 winners) ---

[Bloc STAR]
 Tabulating 3 ballots to fill 2 seats.
Alice,Bruno,Clara
    5,    3,    1
    4,    5,    2
    5,    4,    0

[Bloc STAR: Round 1: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Alice         -- 14 -- First place
   Bruno         -- 12 -- Second place
   Clara         --  3
 Alice and Bruno advance.

[Bloc STAR: Round 1: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Alice         -- 2 -- First place
   Bruno         -- 1
   Equal Support -- 0
 Alice wins.
   Runoff math:
     3  ballots cast
   − 0  Equal Support (no preference between the two finalists)
     ─
     3  voters with a preference  (majority = 2)
           Alice 2 (67%)  ·  Bruno 1 (33%)

──────────────────────────────────────────────────

[Bloc STAR: Round 2: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Bruno         -- 12 -- First place
   Clara         --  3 -- Second place
 Bruno and Clara advance.

[Bloc STAR: Round 2: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Bruno         -- 3 -- First place
   Clara         -- 0
   Equal Support -- 0
 Bruno wins.
   Runoff math:
     3  ballots cast
   − 0  Equal Support (no preference between the two finalists)
     ─
     3  voters with a preference  (majority = 2)
           Bruno 3 (100%)  ·  Clara 0 (0%)

[Bloc STAR: Winners — Bloc STAR Voting Method (2 winners)]
 Alice
 Bruno

Want the whole count? See the full LH report → 00_c3_b3_bloc-baseline-2-seats (yaml).

What "remove" does — and what it doesn't

The removal step is the one place people expect more machinery than there is. Removing a seated candidate only takes them out of the running. It does not touch anyone's ballot, discount anyone's scores, or change any other candidate's total.

Look at the baseline count above: Bruno scores 12 in round 1 and 12 again in round 2, and Clara scores 3 both times. The whole of round 2 is round 1 with one column deleted. In the 100-voter BV1835 case the same thing runs four times: Ava's 294 points are re-printed, untouched, in every one of the four scoring rounds.

Two consequences worth holding onto:

  • The scoring round is decided once, in effect. Score order never changes between seats; candidates just drop off the top of it. All the seat-to-seat action is in the runoff, which compares a different pair each round.
  • Nothing punishes a voter for having been "represented" already. If your favorites take seats 1 and 2, your ballot is exactly as loud for seat 3 as it was for seat 1. That is precisely what a proportional method refuses to allow — see the majority sweep.

Running it

voting_method: Bloc STAR     # aliases: bloc, "bloc star"
num_winners: 2

House style spells it Bloc STAR rather than the vaguer bloc — the count is a specific method, not a generic mode. Everything else in the file is an ordinary STAR file, and no display options are needed: the engine's defaults switch the finalists matrix off for multi-winner races automatically — a "Top 2 Finalist" matrix is a single-winner idea and prints misleadingly across several seats.

.venv/bin/python STARVote_LH_tabulation_engine/starvote_larry_hastings.py 02_STAR_Bloc/02_Examples/cases/00_c3_b3_bloc-baseline-2-seats.yaml

Reading the report

Each seat prints as a numbered Round with its own scoring round and automatic runoff, separated by a horizontal rule, then a single Winners block listing the seats in the order they were filled. That order is real information — it is a rough strength ranking of the winners, and when a tie is broken it says which seat the coin decided. It is not, however, a ranking of anything about the losers.

The _tabulated mirror adds what the on-screen report leaves out: the score distribution, the full pairwise matrix, the Condorcet notes, and the runoff-math funnel for every seat.

Where to go next

Three things separate Bloc STAR from what people assume it does. In the order they bite:

  1. The majority sweep — a cohesive majority can take every seat. Majoritarian by design; the reason to reach for STAR-PR when you want representation instead.
  2. The score leader can win no seat — Bloc STAR is not "top N by points." Seats go to whoever is preferred head-to-head, so a broadly-liked compromise candidate who leads every scoring round can be shut out entirely.
  3. Ties, seat by seat — the single-winner ladder runs once per seat, and a tie broken at seat 1 changes the field every later seat is decided in.

Then: honest limits, and how it compares to the other at-large methods.