====================================================================== SOURCE FILE: 06_c4_b24_narrow-bands.yaml TABULATED FILE: 06_c4_b24_narrow-bands_tabulated.txt ====================================================================== election_title: Narrow Bands — a paint-swatch election scored in slivers of the scale bv_test_id: BV2239 bv_election_id: gyv2qt bv_results_url: https://bettervoting.com/gyv2qt/results scenario_description: |- 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 voting_method: STAR num_winners: 1 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 expected_winners: - Beige # file: 06_c4_b24_narrow-bands.yaml ====================================================================== TABULATION RESULTS ====================================================================== === Narrow Bands — a paint-swatch election scored in slivers of the scale === 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 --- 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 [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 [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 [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