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¶
- Methods disagree on this election — its entry in the divergence review ledger
- Condorcet efficiency (topic hub)
- Ties & tie-breaking (topic hub)
- The tie-breaking ladder (full chain)
- Runoff reversal (worked set)
- Glossary · all cases by method
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