Skip to content

Does the squeeze survive noise? Two poles, one consensus middle

Generated from 05_c3_b38_squeeze-survives.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: Ben

▶ Live on BetterVoting: vote · results ↗ (election td7jfy · test BV2238).

Scenario

The center-squeeze profile - two big poles who each rate consensus-Ben an honest second - but built from NOISY utilities and mixed ballot styles instead of clean textbook blocs. The question the textbook can't answer: does the squeeze still happen once real-world mess is layered on? Tabulate and see whether RCV-IRV's first-choice tunnel vision eliminates the candidate the pairwise count says beats everyone.

The electorate (38 ballots, all individual rows): - Ava pole: 13 voters (6 ranked_style, 3 strong_backup, 3 nuanced, 1 harsh) - Cora pole: 20 voters (11 weak_backup, 4 ranked_style, 3 nuanced, 2 slate) - Ben middle: 5 voters (4 nuanced, 1 gentle)

Ballot styles in play (taxonomy: 01_STAR/01_Learn/voting_styles/README.md): - gentle: gentle soul: everything squeezed into 3-5, no zeros - nuanced: full 0-5 range, honest gaps, ties allowed - strong_backup: 5 + a strong 4 backup, rest 0/blank - weak_backup: 5 + a grudging 1 backup, rest 0/blank - ranked_style: uses each score once, like a ranking - slate: partisan slate: equal 5s for the in-group, 0 outside - harsh: harsh grader: everything squeezed into 0-2

What the frozen seed produced: Scoring Round Cora 124, Ben 111, Ava 80. Runoff Ben 19 vs Cora 18 (Equal Support 1). STAR winner: Ben. Condorcet winner Ben (agrees). Choose-One (Plurality) would elect Cora. RCV-IRV would elect Cora. Approval would elect Cora. 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 'squeeze_survives', seed 51) - 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 squeeze_survives

Ballots

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

Markers on these ballots: - blank · ~ race abstention · & candidate abstention · ? spoiled · % spoiled+reissued — all tabulate as 0 (reported honestly).

Ava, Ben, Cora
  3,   5,    3
  0,   2,    5
  5,   4,    -
  5,   4,    -
  0,   5,    1
  5,   4,    3
  5,   2,    0
  3,   4,    5
  0,   1,    5
  -,   1,    5
  0,   0,    5
  5,   4,    3
  0,   4,    5
  5,   4,    3
  3,   4,    5
  0,   1,    5
  3,   4,    5
  -,   1,    5
  2,   1,    0
  5,   4,    3
  5,   4,    3
  -,   5,    1
  5,   3,    0
  0,   5,    5
  5,   2,    0
  0,   5,    2
  0,   1,    5
  5,   4,    3
  -,   1,    5
  0,   5,    2
  3,   0,    5
  -,   1,    5
  5,   4,    0
  0,   1,    5
  -,   1,    5
  3,   4,    5
  0,   1,    5
  0,   5,    2

What the engine says

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

[Divergence from STAR]
  STAR                   = Ben
  Choose-One (Plurality) = Cora   (differs from STAR)
  RCV-IRV                = Cora   (differs from STAR)
  Approval               = Cora   (differs from STAR)
  Note: 2 of 38 ballots (5%) 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/05_c3_b38_squeeze-survives_RCV-IRV_tabulated.txt

[Runoff Reversal]
 - Score Round Winner(s) = (Cora)
 - Runoff Round Winner   = (Ben)
  Candidate Cora earned the highest total score, but
  Candidate Ben won the automatic runoff — not a malfunction,
  STAR working as designed: the runoff elects the finalist preferred
  by the majority (of voters with a preference).

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

[STAR Voting]
 Tabulating 38 ballots.
Count × Ava,Ben,Cora
    6 ×   5,  4,   3
    5 ×   0,  1,   5
    5 ×   -,  1,   5
    4 ×   3,  4,   5
    3 ×   0,  5,   2
    2 ×   5,  4,   -
    2 ×   5,  2,   0
    1 ×   3,  5,   3
    1 ×   0,  2,   5
    1 ×   0,  5,   1
    1 ×   0,  0,   5
    1 ×   0,  4,   5
    1 ×   2,  1,   0
    1 ×   -,  5,   1
    1 ×   5,  3,   0
    1 ×   0,  5,   5
    1 ×   3,  0,   5
    1 ×   5,  4,   0
  ('-' = left blank / abstained; '0' = scored zero — both count as 0 stars.)

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Cora          -- 124 -- First place
   Ben           -- 111 -- Second place
   Ava           --  80
 Cora and Ben advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Ben           -- 19 -- First place
   Cora          -- 18
   Equal Support --  1
 Ben wins.
   Runoff math:
     38  ballots cast
   −  1  Equal Support (no preference between the two finalists)
     ──
     37  voters with a preference  (majority = 19)
           Ben 19 (51%)  ·  Cora 18 (49%)

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

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
                 |      Ava     |   * Ben     |   * Cora    |
-------------------------------------------------------------
           Ava > |     ---      |14 -  1 - 23 |13 -  1 - 24 |
         * Ben > | 23 -  1 - 14 |    ---      |19 -  1 - 18 |
        * Cora > | 24 -  1 - 13 |18 -  1 - 19 |    ---      |

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

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

[Score Distribution] (how many ballots gave each star rating)
                   Score
Candidate   5   4   3   2   1   0  Abs  | Total  Avg all  Avg rated
Ava        12   0   6   1   0  13    6  |    80      2.1        2.5
Ben         7  14   1   3  11   2    0  |   111      2.9        2.9
Cora       19   0   7   3   2   5    2  |   124      3.3        3.4
  Avg all   = Total / all ballots — a blank counts as 0, so this is the Total the Scoring Round ranks on, per ballot.
  Avg rated = Total / the ballots that scored this candidate (Abs excluded) — support among voters who had an opinion.

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/05_c3_b38_squeeze-survives.yaml

See also

More cases in this set: 01_c3_b31_graders-divide · 02_c4_b40_cliff-city · 03_c4_b33_bullet-storm · 04_c4_b47_noise-soup · 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