Skip to content

BV1815 — Bloc STAR, 3 candidates, 2 seats (seat 2 by score tiebreak)

Method: Bloc STAR (multi-winner, majoritarian) · 2 seats · Expected winners: A, C · full count →

A real BetterVoting election (id fk38pk, marked Passed) labeled "basic / simple" — but it quietly exercises the score tiebreaker at the second seat. LH and BetterVoting agree: winners A, C.

Reference files: bv1815_bloc_3c2s_basic.yaml (expected_winners: [A, C]) · frozen export bv1815_bloc_3c2s_basic_bv_export.json (BV fk38pk). Backs sheet row BV1815.

The election

Bloc STAR, 3 candidates, 2 seats, 3 ballots:

A,B,C
4,1,0
3,0,2
5,0,0

Totals: A = 12, B = 1, C = 2.

The case file

The YAML the engine actually runs, embedded at build time — so the parameters on this page can never drift from the file:

cases/bv1815_bloc_3c2s_basic.yaml
election_title: "BV1815  Bloc STAR, 3 candidates, 2 seats (seat 2 by score tiebreak)"

scenario_description: |-
  The LH reference for BetterVoting test BV1815 (a real election, id fk38pk,
  marked Passed). Labeled "basic/simple", but it quietly exercises the score
  tiebreaker at the second seat.

  Bloc STAR, 3 candidates, 2 seats. Totals: A=12, B=1, C=2.
    - Seat 1: A (12) and C (2) advance; A wins the runoff 3-0, taking seat 1.
    - Seat 2: remove A -> B and C. In the runoff B and C TIE 1-1 (one voter
      prefers each; one is Equal Support). The tie falls to the SCORE rung:
      C's total (2) beats B's (1), so C takes seat 2.
  Winners: A, C. BetterVoting agrees (tieBreakType: "score", elected A, C) — this
  case Passes; it's the Bloc analog of a runoff decided by the score tiebreaker.
  (Aside: the BV export labels votingMethod "STAR" rather than "Bloc STAR" — #904.)

num_winners: 2
voting_method: Bloc STAR
ballots: |-
  A,B,C
  4,1,0
  3,0,2
  5,0,0

expected_winners:
  - A
  - C

# file: bv1815_bloc_3c2s_basic.yaml

What makes it interesting

Seat 1 is a clean win for A. Seat 2 is not clean: with A removed, B and C each total near-nothing and tie 1–1 in the runoff (one voter prefers B, one prefers C, one is Equal Support). The tie falls to the first runoff rung — highest total score — and C (2) beats B (1). BetterVoting resolves it the same way (tieBreakType: "score", elected A, C), which is why this "basic" case is a clean Pass and a useful reference that the score tiebreaker works in Bloc.

View 1 — BetterVoting

Result: A and C win (2 seats). nAbstentions: 0, nTallyVotes: 3 (all ballots counted), tieBreakType: "score". (Aside: the export labels votingMethod: "STAR" rather than "Bloc STAR" — #904.)

The results page paginates one card per seat. Seat 1 — A takes 12 of the 15 available points and wins the runoff 3–0, so the runoff bar reads 100% and the dashed majority threshold line falls at 50% of the same axis (with no Equal Support, both are measured against the same 3 voters):

BetterVoting seat 1 for fk38pk: scoring round A 12, C 2, B 1; runoff A 100% with the majority threshold line at mid-bar

Seat 2 — the tie. C and B each hold one preference and one ballot rates them equally, so all three bars read 33% while the majority threshold line lands at 1 vote — the exact height of both candidate bars. Two bars touching a line labelled "majority" in a runoff neither of them won:

BetterVoting seat 2 for fk38pk: runoff C 33%, B 33%, Equal Support 33%, both bars reaching the majority threshold line

The gap between those two readings is the denominator mismatch filed as #1471 — the labels divide by all three bars, the marker by the two finalists only. It changes nothing about the count (both engines elect A and C); it's what the picture says about it. What the three denominators are worth in a Bloc race: Over 50% — what a landslide actually buys.

View 2 — the LH report

The two rungs to watch: Round 2: Automatic Runoff Round shows the 1–1 tie (with one Equal Support), and First tiebreaker shows the score rung breaking it — C (2) over B (1).

The full audit, embedded from the _tabulated mirror rather than pasted, so it tracks the engine:

cases/cases_tabulated/bv1815_bloc_3c2s_basic_tabulated.txt
======================================================================
SOURCE FILE:     bv1815_bloc_3c2s_basic.yaml
TABULATED FILE:  bv1815_bloc_3c2s_basic_tabulated.txt
======================================================================

election_title: "BV1815 — Bloc STAR, 3 candidates, 2 seats (seat 2 by score tiebreak)"

scenario_description: |-
  The LH reference for BetterVoting test BV1815 (a real election, id fk38pk,
  marked Passed). Labeled "basic/simple", but it quietly exercises the score
  tiebreaker at the second seat.

  Bloc STAR, 3 candidates, 2 seats. Totals: A=12, B=1, C=2.
    - Seat 1: A (12) and C (2) advance; A wins the runoff 3-0, taking seat 1.
    - Seat 2: remove A -> B and C. In the runoff B and C TIE 1-1 (one voter
      prefers each; one is Equal Support). The tie falls to the SCORE rung:
      C's total (2) beats B's (1), so C takes seat 2.
  Winners: A, C. BetterVoting agrees (tieBreakType: "score", elected A, C) — this
  case Passes; it's the Bloc analog of a runoff decided by the score tiebreaker.
  (Aside: the BV export labels votingMethod "STAR" rather than "Bloc STAR" — #904.)

num_winners: 2
voting_method: Bloc STAR
ballots: |-
  A,B,C
  4,1,0
  3,0,2
  5,0,0

expected_winners:
  - A
  - C

# file: bv1815_bloc_3c2s_basic.yaml

======================================================================
TABULATION RESULTS
======================================================================

=== BV1815 — Bloc STAR, 3 candidates, 2 seats (seat 2 by score tiebreak) ===
  The LH reference for BetterVoting test BV1815 (a real election, id fk38pk,
  marked Passed). Labeled "basic/simple", but it quietly exercises the score
  tiebreaker at the second seat.

  Bloc STAR, 3 candidates, 2 seats. Totals: A=12, B=1, C=2.
    - Seat 1: A (12) and C (2) advance; A wins the runoff 3-0, taking seat 1.
    - Seat 2: remove A -> B and C. In the runoff B and C TIE 1-1 (one voter
      prefers each; one is Equal Support). The tie falls to the SCORE rung:
      C's total (2) beats B's (1), so C takes seat 2.
  Winners: A, C. BetterVoting agrees (tieBreakType: "score", elected A, C) — this
  case Passes; it's the Bloc analog of a runoff decided by the score tiebreaker.
  (Aside: the BV export labels votingMethod "STAR" rather than "Bloc STAR" — #904.)

--- 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.
               |      A     |     B     |     C     |
-----------------------------------------------------
           A > |    ---     |3 - 0 - 0  |3 - 0 - 0  |
           B > | 0 - 0 - 3  |   ---     |1 - 1 - 1  |
           C > | 0 - 0 - 3  |1 - 1 - 1  |   ---     |

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

[Condorcet Loser]
  No strict Condorcet loser; jointly weak Condorcet losers: B, C (winless — pairwise ties)

--- Bloc STAR Voting Method (2 winners) ---
[Bloc STAR]
 Tabulating 3 ballots to fill 2 seats.
A,B,C
4,1,0
3,0,2
5,0,0

[Score Distribution] (how many ballots gave each star rating)
                Score
Candidate  5  4  3  2  1  0  | Total   Avg
A          1  1  1  0  0  0  |    12   4.0
B          0  0  0  0  1  2  |     1   0.3
C          0  0  0  1  0  2  |     2   0.7

[Bloc STAR: Round 1: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   A             -- 12 -- First place
   C             --  2 -- Second place
   B             --  1
 A and C advance.

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

──────────────────────────────────────────────────
[Bloc STAR: Round 2: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   C             -- 2 -- First place
   B             -- 1 -- Second place
 C and B advance.

[Bloc STAR: Round 2: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   B             -- 1 -- Tied for first place
   C             -- 1 -- Tied for first place
   Equal Support -- 1
 There's a two-way tie for first.

[Bloc STAR: Round 2: Automatic Runoff Round: First tiebreaker]
 The highest-scoring candidate wins.
   C             -- 2 -- First place
   B             -- 1
 C wins.

[Bloc STAR: Winners — Bloc STAR Voting Method (2 winners)]
 A
 C