Skip to content

The Graders' Divide — a harsh 0-2 camp meets a gentle 3-5 camp

Generated from 01_c3_b31_graders-divide.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: Clara

▶ Live on BetterVoting: vote · results ↗ (election 4jmgrd · test BV2234).

Scenario

Two camps, two GRADING CULTURES. The Abby camp are harsh graders: even their favorite only earns a 2, everyone else 0-1. The Bruno camp are gentle souls: nobody gets less than a 3, their favorite a 5. Same kind of opinions underneath - wildly different ballots on top. The test: what do asymmetric scale habits do to the Scoring Round, and does the Automatic Runoff (which only asks WHO YOU PREFER, not how loudly you said it) keep the result sane?

The electorate (31 ballots, all individual rows): - Abby camp: 15 voters (15 harsh) - Bruno camp: 16 voters (16 gentle)

Ballot styles in play (taxonomy: 01_STAR/01_Learn/voting_styles/README.md): - gentle: gentle soul: everything squeezed into 3-5, no zeros - harsh: harsh grader: everything squeezed into 0-2

What the frozen seed produced: Scoring Round Bruno 80, Clara 80, Abby 78. The top two tie the Scoring Round dead even - both advance, and the runoff decides. Runoff Clara 13 vs Bruno 11 (Equal Support 7). STAR winner: Clara. No Condorcet winner - the pairwise order wobbles (see the full matrix). Choose-One (Plurality) would elect Bruno. RCV-IRV would elect Bruno. Approval would elect Abby. The engine flags the classic center-squeeze signature (RCV-IRV the lone outlier).

RANDOM-BUT-HUMAN, reproducible: generated by 06_Other/ballot_style_lab/generate_ballot_styles.py (scenario 'graders_divide', seed 94) - utilities sampled from the faction model above, then rendered through each voter's ballot style. Per 07_Concepts/topics/simulate_utilities_not_ballots.md this is the 'stress-test the tabulator' job (with human-shaped renderings), not a method-welfare comparison. Regenerate byte-identically: python generate_ballot_styles.py --emit graders_divide

Ballots

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

Abby, Bruno, Clara
   3,     5,     4
   2,     0,     1
   3,     5,     4
   2,     0,     1
   3,     5,     5
   2,     0,     1
   3,     5,     4
   2,     0,     1
   3,     5,     3
   2,     0,     0
   3,     5,     3
   2,     0,     1
   2,     0,     1
   3,     5,     4
   3,     5,     4
   3,     5,     5
   3,     5,     5
   2,     0,     1
   2,     0,     1
   3,     5,     5
   2,     0,     1
   3,     5,     4
   2,     0,     1
   3,     5,     4
   3,     5,     5
   3,     5,     3
   3,     5,     4
   2,     0,     1
   2,     0,     1
   2,     0,     0
   2,     0,     2

What the engine says

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

[Divergence from STAR]
  STAR                   = Clara
  Choose-One (Plurality) = Bruno   (differs from STAR)
  RCV-IRV                = Bruno   (differs from STAR)
  Approval               = Abby   (differs from STAR)
  Note: 9 of 31 ballots (29%) had equal non-zero scores, so their ranks were
        decided by candidate priority order. The RCV-IRV result may be an
        artifact of score-to-rank tie-breaking rather than a deep
        difference.
  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/01_c3_b31_graders-divide_RCV-IRV_tabulated.txt

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

[STAR Voting]
 Tabulating 31 ballots.
Count × Abby,Bruno,Clara
   12 ×    2,    0,    1
    8 ×    3,    5,    4
    5 ×    3,    5,    5
    3 ×    3,    5,    3
    2 ×    2,    0,    0
    1 ×    2,    0,    2

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Bruno         -- 80 -- First place
   Clara         -- 80 -- Second place
   Abby          -- 78
 Bruno and Clara advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Clara         -- 13 -- First place
   Bruno         -- 11
   Equal Support --  7
 Clara wins.
   Runoff math:
     31  ballots cast
   −  7  Equal Support (no preference between the two finalists)
     ──
     24  voters with a preference  (majority = 13)
           Clara 13 (54%)  ·  Bruno 11 (46%)

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

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
                 |      Abby    |  * Bruno    |  * Clara    |
-------------------------------------------------------------
          Abby > |     ---      |15 -  0 - 16 |14 -  4 - 13 |
       * Bruno > | 16 -  0 - 15 |    ---      |11 -  7 - 13 |
       * Clara > | 13 -  4 - 14 |13 -  7 - 11 |    ---      |

[Condorcet Winner]
  No Condorcet winner (majority cycle: Abby > Clara > Bruno > Abby)

[Score Distribution] (how many ballots gave each star rating)
                   Score
Candidate   5   4   3   2   1   0  | Total   Avg
Abby        0   0  16  15   0   0  |    78   2.5
Bruno      16   0   0   0   0  15  |    80   2.6
Clara       5   8   3   1  12   2  |    80   2.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 06_Other/ballot_style_lab/cases/01_c3_b31_graders-divide.yaml

See also

More cases in this set: 02_c4_b40_cliff-city · 03_c4_b33_bullet-storm · 04_c4_b47_noise-soup · 05_c3_b38_squeeze-survives · 06_c4_b24_narrow-bands · 07a_c5_b36_herb-council-bloc-3-seats · 07b_c5_b36_herb-council-pr-3-seats · 08_c6_b29_quota-circus-pr-2-seats · 09_c7_b44_park-bloc-4-seats