Skip to content

Cliff City food trucks — everyone scores 0 or 3-5, nothing between

Generated from 02_c4_b40_cliff-city.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: Churro

▶ Live on BetterVoting: vote · results ↗ (election fm8cbv · test BV2235).

Scenario

A whole town votes like it's Approval-with-a-volume-knob: every ballot is either 0 ('not my truck') or 3-5 ('one of mine'). Nobody uses 1 or 2 - the middle of the scale is a ghost town. Cliff ballots are the halfway house between Approval (one bit) and full STAR expressiveness; the test is what the all-or-mostly ballots do to the score distribution and how much runoff-deciding information survives the cliff.

The electorate (40 ballots, all individual rows): - Arepa crowd: 8 voters (6 cliff35, 1 slate, 1 cliff34) - Bao crowd: 16 voters (12 cliff35, 2 slate, 2 cliff34) - Churro crowd: 9 voters (5 slate, 3 cliff34, 1 cliff35) - grazers: 7 voters (3 cliff34, 2 chaos, 1 anyone_but, 1 flat)

Ballot styles in play (taxonomy: 01_STAR/01_Learn/voting_styles/README.md): - cliff35: cliff ballot: 0 or 3-5, nothing in between - slate: partisan slate: equal 5s for the in-group, 0 outside - anyone_but: 5 for everyone except the villain (0) - cliff34: sliver ballot: 0 or 3-4 only - chaos: pure noise (fuzzing voter) - flat: flat-liner: same score for everyone

What the frozen seed produced: Scoring Round Bao 100, Churro 99, Arepa 52, Dumpling 46. Runoff Churro 15 vs Bao 14 (Equal Support 11). STAR winner: Churro. Condorcet winner Churro (agrees). Choose-One (Plurality) would elect Bao. RCV-IRV would elect Bao. 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 'cliff_city', seed 123) - 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 cliff_city

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

Arepa, Bao, Churro, Dumpling
    0,   5,      4,        0
    0,   5,      0,        0
    5,   -,      -,        -
    5,   0,      5,        5
    0,   5,      0,        0
    0,   5,      4,        0
    4,   0,      0,        4
    0,   3,      4,        0
    5,   0,      0,        0
    0,   0,      5,        0
    0,   0,      5,        0
    1,   3,      4,        0
    0,   5,      0,        4
    0,   5,      4,        0
    0,   5,      0,        0
    0,   4,      4,        0
    0,   4,      4,        0
    0,   5,      0,        4
    0,   0,      0,        4
    0,   0,      4,        0
    0,   0,      5,        0
    0,   5,      0,        4
    5,   0,      4,        0
    -,   5,      -,        -
    0,   5,      5,        0
    0,   0,      5,        5
    3,   3,      3,        3
    0,   0,      3,        5
    0,   4,      0,        0
    4,   0,      4,        0
    5,   4,      5,        0
    5,   0,      0,        0
    5,   0,      4,        0
    0,   0,      5,        0
    -,   5,      5,        5
    0,   0,      4,        3
    0,   5,      0,        0
    0,   5,      0,        0
    5,   0,      0,        0
    0,   5,      0,        0

What the engine says

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

[Divergence from STAR]
  STAR                   = Churro
  Choose-One (Plurality) = Bao   (differs from STAR)
  RCV-IRV                = Bao   (differs from STAR)
  Note: 10 of 40 ballots (25%) 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/02_c4_b40_cliff-city_RCV-IRV_tabulated.txt

[Runoff Reversal]
 - Score Round Winner(s) = (Bao)
 - Runoff Round Winner   = (Churro)
  Candidate Bao earned the highest total score, but
  Candidate Churro 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 40 ballots.
Count × Arepa,Bao,Churro,Dumpling
    6 ×     0,  5,     0,       0
    4 ×     0,  0,     5,       0
    3 ×     0,  5,     4,       0
    3 ×     5,  0,     0,       0
    3 ×     0,  5,     0,       4
    2 ×     0,  4,     4,       0
    2 ×     5,  0,     4,       0
    1 ×     5,  -,     -,       -
    1 ×     5,  0,     5,       5
    1 ×     4,  0,     0,       4
    1 ×     0,  3,     4,       0
    1 ×     1,  3,     4,       0
    1 ×     0,  0,     0,       4
    1 ×     0,  0,     4,       0
    1 ×     -,  5,     -,       -
    1 ×     0,  5,     5,       0
    1 ×     0,  0,     5,       5
    1 ×     3,  3,     3,       3
    1 ×     0,  0,     3,       5
    1 ×     0,  4,     0,       0
    1 ×     4,  0,     4,       0
    1 ×     5,  4,     5,       0
    1 ×     -,  5,     5,       5
    1 ×     0,  0,     4,       3
  ('-' = 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.
   Bao           -- 100 -- First place
   Churro        --  99 -- Second place
   Arepa         --  52
   Dumpling      --  46
 Bao and Churro advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Churro        -- 15 -- First place
   Bao           -- 14
   Equal Support -- 11
 Churro wins.
   Runoff math:
     40  ballots cast
   − 11  Equal Support (no preference between the two finalists)
     ──
     29  voters with a preference  (majority = 15)
           Churro 15 (52%)  ·  Bao 14 (48%)

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

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
                 |     Arepa    |   * Bao     |  * Churro   |   Dumpling  |
---------------------------------------------------------------------------
         Arepa > |     ---      |10 - 10 - 20 | 7 - 16 - 17 | 9 - 23 -  8 |
         * Bao > | 20 - 10 - 10 |    ---      |14 - 11 - 15 |20 - 14 -  6 |
      * Churro > | 17 - 16 -  7 |15 - 11 - 14 |    ---      |18 - 16 -  6 |
      Dumpling > |  8 - 23 -  9 | 6 - 14 - 20 | 6 - 16 - 18 |    ---      |

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

[Condorcet Loser]
  Condorcet Loser: Dumpling — 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
Arepa       8   2   1   0   1  26    2  |    52      1.3        1.4
Bao        15   4   3   0   0  17    1  |   100      2.5        2.6
Churro      9  12   2   0   0  15    2  |    99      2.5        2.6
Dumpling    4   5   2   0   0  27    2  |    46      1.2        1.2
  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/02_c4_b40_cliff-city.yaml

See also

More cases in this set: 01_c3_b31_graders-divide · 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