Skip to content

Narrow Bands — a paint-swatch election scored in slivers of the scale

Generated from 06_c4_b24_narrow-bands.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: Beige

▶ Live on BetterVoting: vote · results ↗ (election gyv2qt · test BV2239).

Scenario

The scale-abuse special: nobody here uses the 0-5 ballot as designed. One camp scores only in 0-2, one only in 3-5, cliff voters jump 0-to-3, sliver voters live in 3-4, plus flat-liners and a protest ballot. Totals come out compressed and bunched - photo-finish territory - and the score-distribution table turns bimodal. A stress fixture for every place the report says 'distribution', 'total', or 'margin'.

The electorate (24 ballots, all individual rows): - cool tilt: 9 voters (6 cliff34, 3 harsh) - warm tilt: 10 voters (5 cliff35, 5 gentle) - drift: 5 voters (3 flat, 2 ranked_style)

Ballot styles in play (taxonomy: 01_STAR/01_Learn/voting_styles/README.md): - cliff35: cliff ballot: 0 or 3-5, nothing in between - cliff34: sliver ballot: 0 or 3-4 only - flat: flat-liner: same score for everyone - harsh: harsh grader: everything squeezed into 0-2 - gentle: gentle soul: everything squeezed into 3-5, no zeros - ranked_style: uses each score once, like a ranking

What the frozen seed produced: Scoring Round Azure 61, Beige 61, Coral 61, Dune 57. A scoring tie at the finalist line - Beige & Coral advance via STAR's official head-to-head tiebreaker. Runoff Beige 9 vs Coral 8 (Equal Support 5). STAR winner: Beige. No Condorcet winner - the pairwise order wobbles (see the full matrix). Choose-One (Plurality) would elect Azure. RCV-IRV would elect Azure. Approval would elect Azure. RCV-RR would elect Coral.

RANDOM-BUT-HUMAN, reproducible: generated by 06_Other/ballot_style_lab/generate_ballot_styles.py (scenario 'narrow_bands', seed 239) - 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 narrow_bands

Ballots

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

Azure, Beige, Coral, Dune
    0,     0,     0,    5
    4,     0,     4,    0
    5,     5,     5,    5
    0,     4,     0,    5
    3,     3,     3,    3
    2,     0,     2,    0
    3,     5,     4,    4
    4,     0,     4,    0
    0,     5,     0,    5
    4,     4,     4,    0
    4,     0,     4,    0
    0,     5,     0,    5
    2,     1,     0,    0
    0,     0,     0,    0
    3,     5,     4,    5
    3,     4,     4,    5
    4,     0,     0,    0
    4,     3,     5,    2
    4,     2,     5,    3
    4,     0,     4,    0
    0,     5,     0,    0
    3,     5,     4,    5
    2,     0,     2,    0
    3,     5,     3,    5

What the engine says

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

[Divergence from STAR]
  STAR                   = Beige
  Choose-One (Plurality) = Azure   (differs from STAR)
  RCV-IRV                = Azure   (differs from STAR)
  Approval               = Azure   (differs from STAR)
  RCV-RR                 = Coral   (differs from STAR)
  Note: 16 of 24 ballots (67%) 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.
  Full round-by-round reports (generated for review):
  RCV-IRV rounds: cases_tabulated/06_c4_b24_narrow-bands_RCV-IRV_tabulated.txt
  RCV-RR round-robin: cases_tabulated/06_c4_b24_narrow-bands_RCV-RR_tabulated.txt

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

[STAR Voting]
 Tabulating 24 ballots.
Count × Azure,Beige,Coral,Dune
    4 ×     4,    0,    4,   0
    2 ×     2,    0,    2,   0
    2 ×     0,    5,    0,   5
    2 ×     3,    5,    4,   5
    1 ×     0,    0,    0,   5
    1 ×     5,    5,    5,   5
    1 ×     0,    4,    0,   5
    1 ×     3,    3,    3,   3
    1 ×     3,    5,    4,   4
    1 ×     4,    4,    4,   0
    1 ×     2,    1,    0,   0
    1 ×     0,    0,    0,   0
    1 ×     3,    4,    4,   5
    1 ×     4,    0,    0,   0
    1 ×     4,    3,    5,   2
    1 ×     4,    2,    5,   3
    1 ×     0,    5,    0,   0
    1 ×     3,    5,    3,   5

[STAR Voting: Scoring Round]
 The two highest-scoring candidates advance to the next round.
   Azure         -- 61 -- Tied for first place
   Beige         -- 61 -- Tied for first place
   Coral         -- 61 -- Tied for first place
   Dune          -- 57
 There's a three-way tie for first.

[STAR Voting: Scoring Round: First tiebreaker]
 The two candidates preferred in the most head-to-head matchups advance.
   Beige         -- 18 -- First place
   Coral         -- 14 -- Second place
   Azure         -- 12
   Equal Support --  5
 Beige and Coral advance.

[STAR Voting: Automatic Runoff Round]
 The candidate preferred in the most head-to-head matchups wins.
   Beige         -- 9 -- First place
   Coral         -- 8
   Equal Support -- 7
 Beige wins.
   Runoff math:
     24  ballots cast
   −  7  Equal Support (no preference between the two finalists)
     ──
     17  voters with a preference  (majority = 9)
           Beige 9 (53%)  ·  Coral 8 (47%)

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

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
        Note: Azure, Beige and Coral tied at 61 in the Scoring Round, and the
              head-to-head rung advanced Beige and Coral. The * marks who
              advanced, not who scored highest.

                 |     Azure    |  * Beige    |  * Coral    |     Dune    |
---------------------------------------------------------------------------
         Azure > |     ---      |10 -  5 -  9 | 2 - 16 -  6 |11 -  4 -  9 |
       * Beige > |  9 -  5 - 10 |    ---      | 9 -  7 -  8 | 5 - 15 -  4 |
       * Coral > |  6 - 16 -  2 | 8 -  7 -  9 |    ---      | 9 -  7 -  8 |
          Dune > |  9 -  4 - 11 | 4 - 15 -  5 | 8 -  7 -  9 |    ---      |

[Condorcet Winner]
  No Condorcet winner (majority cycle: Azure > Beige > Coral > Azure)

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

[Score Distribution] (how many ballots gave each star rating)
                   Score
Candidate   5   4   3   2   1   0  | Total   Avg
Azure       1   8   6   3   0   6  |    61   2.5
Beige       8   3   2   1   1   9  |    61   2.5
Coral       3   9   2   2   0   8  |    61   2.5
Dune        9   1   2   1   0  11  |    57   2.4

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/06_c4_b24_narrow-bands.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 · 05_c3_b38_squeeze-survives · 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