====================================================================== SOURCE FILE: 04_c4_b47_noise-soup.yaml TABULATED FILE: 04_c4_b47_noise-soup_tabulated.txt ====================================================================== election_title: Noise Soup — weak factions, cross-winds, flat-liners and static bv_test_id: BV2237 bv_election_id: 74pbyg bv_results_url: https://bettervoting.com/74pbyg/results scenario_description: |- The messy-reality fixture: two loose leans instead of crisp camps, a crosswind bloc, pure-noise voters, flat-line no-preference ballots, one race abstention (~), one spoiled ballot (?), and stray blank cells. No clean story planted - whatever structure the count finds, it found in the noise. Watch the full pairwise matrix: weak, noisy electorates are exactly where Condorcet's neat ordering starts to wobble. The electorate (47 ballots, all individual rows): - leans A-B: 10 voters (4 strong_backup, 3 nuanced, 3 ranked_style) - leans C-D: 13 voters (6 nuanced, 4 slate, 3 weak_backup) - crosswind: 11 voters (5 cliff35, 3 nuanced, 2 anyone_but, 1 protest) - static: 11 voters (6 ranked_style, 3 chaos, 2 flat) - plus 2 marker row(s): 1 spoiled ballot, 1 race abstention Ballot styles in play (taxonomy: 01_STAR/01_Learn/voting_styles/README.md): - slate: partisan slate: equal 5s for the in-group, 0 outside - flat: flat-liner: same score for everyone - anyone_but: 5 for everyone except the villain (0) - chaos: pure noise (fuzzing voter) - nuanced: full 0-5 range, honest gaps, ties allowed - cliff35: cliff ballot: 0 or 3-5, nothing in between - ranked_style: uses each score once, like a ranking - weak_backup: 5 + a grudging 1 backup, rest 0/blank - strong_backup: 5 + a strong 4 backup, rest 0/blank - protest: all zeros plus a lone least-bad 1 What the frozen seed produced: Scoring Round Beth 120, Caleb 113, Dana 112, Aaron 109. Runoff Caleb 18 vs Beth 16 (Equal Support 13). STAR winner: Caleb. No Condorcet winner - the pairwise order wobbles (see the full matrix). Choose-One (Plurality) would elect Aaron. RCV-IRV would elect Beth. Approval would elect Beth. RCV-RR would elect Beth. RANDOM-BUT-HUMAN, reproducible: generated by 06_Other/ballot_style_lab/generate_ballot_styles.py (scenario 'noise_soup', seed 217) - 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 noise_soup voting_method: STAR num_winners: 1 ballots: |- Aaron, Beth, Caleb, Dana 5, 5, 5, 5 3, 3, 3, 3 5, 5, 0, 5 0, 4, 4, 3 2, 5, 3, 4 5, 0, 3, 1 5, 0, 0, 0 4, 5, 2, 3 0, 0, 1, 5 0, 2, 5, 2 2, 5, 3, 4 4, 5, -, - 4, 0, 0, 5 1, 5, 0, 2 5, 5, 0, 5 0, 0, 5, 0 0, 0, 5, 0 ?, ?, ?, ? 5, 3, 4, 2 2, 4, 5, 3 ~, ~, ~, ~ 5, 0, 0, 0 0, 0, 0, 0 1, 5, 0, 2 0, 2, 5, 2 1, -, -, 5 3, 4, 5, 2 0, 5, 0, 5 5, 4, 2, 3 3, 0, 5, 4 -, -, 1, 5 5, 2, 2, 0 2, 5, 0, 0 -, 5, 5, 5 0, 0, 5, 3 4, 5, 0, 0 5, 4, 2, 0 5, 3, 5, 0 0, 3, 4, 5 5, 0, 5, 0 5, 3, 2, 4 4, 2, 3, 5 0, 0, 4, 5 -, 5, 4, - 0, 0, 1, 0 4, 5, 3, 2 0, 2, 2, 3 expected_winners: - Caleb # file: 04_c4_b47_noise-soup.yaml ====================================================================== TABULATION RESULTS ====================================================================== === Noise Soup — weak factions, cross-winds, flat-liners and static === The messy-reality fixture: two loose leans instead of crisp camps, a crosswind bloc, pure-noise voters, flat-line no-preference ballots, one race abstention (~), one spoiled ballot (?), and stray blank cells. No clean story planted - whatever structure the count finds, it found in the noise. Watch the full pairwise matrix: weak, noisy electorates are exactly where Condorcet's neat ordering starts to wobble. The electorate (47 ballots, all individual rows): - leans A-B: 10 voters (4 strong_backup, 3 nuanced, 3 ranked_style) - leans C-D: 13 voters (6 nuanced, 4 slate, 3 weak_backup) - crosswind: 11 voters (5 cliff35, 3 nuanced, 2 anyone_but, 1 protest) - static: 11 voters (6 ranked_style, 3 chaos, 2 flat) - plus 2 marker row(s): 1 spoiled ballot, 1 race abstention Ballot styles in play (taxonomy: 01_STAR/01_Learn/voting_styles/README.md): - slate: partisan slate: equal 5s for the in-group, 0 outside - flat: flat-liner: same score for everyone - anyone_but: 5 for everyone except the villain (0) - chaos: pure noise (fuzzing voter) - nuanced: full 0-5 range, honest gaps, ties allowed - cliff35: cliff ballot: 0 or 3-5, nothing in between - ranked_style: uses each score once, like a ranking - weak_backup: 5 + a grudging 1 backup, rest 0/blank - strong_backup: 5 + a strong 4 backup, rest 0/blank - protest: all zeros plus a lone least-bad 1 What the frozen seed produced: Scoring Round Beth 120, Caleb 113, Dana 112, Aaron 109. Runoff Caleb 18 vs Beth 16 (Equal Support 13). STAR winner: Caleb. No Condorcet winner - the pairwise order wobbles (see the full matrix). Choose-One (Plurality) would elect Aaron. RCV-IRV would elect Beth. Approval would elect Beth. RCV-RR would elect Beth. RANDOM-BUT-HUMAN, reproducible: generated by 06_Other/ballot_style_lab/generate_ballot_styles.py (scenario 'noise_soup', seed 217) - 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 noise_soup --- Runoff (Preference) Matrix --- Head-to-head / pairwise comparison Legend: For - Equal Support - Against * indicates Top 2 Finalist | Aaron | * Beth | * Caleb | Dana | --------------------------------------------------------------------------- Aaron > | --- |14 - 14 - 19 |20 - 8 - 19 |16 - 11 - 20 | * Beth > | 19 - 14 - 14 | --- |16 - 13 - 18 |18 - 17 - 12 | * Caleb > | 19 - 8 - 20 |18 - 13 - 16 | --- |18 - 11 - 18 | Dana > | 20 - 11 - 16 |12 - 17 - 18 |18 - 11 - 18 | --- | [Condorcet Winner] No Condorcet winner (majority cycle: Aaron > Caleb > Beth > Aaron) [Divergence from STAR] STAR = Caleb Choose-One (Plurality) = Aaron (differs from STAR) RCV-IRV = Beth (differs from STAR) Approval = Beth (differs from STAR) RCV-RR = Beth (differs from STAR) Note: 13 of 47 ballots (28%) 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) sides with RCV-IRV, so STAR is the outlier here — STAR need not elect the Condorcet candidate. Full round-by-round reports (generated for review): RCV-IRV rounds: cases_tabulated/04_c4_b47_noise-soup_RCV-IRV_tabulated.txt RCV-RR round-robin: cases_tabulated/04_c4_b47_noise-soup_RCV-RR_tabulated.txt [Runoff Reversal] - Score Round Winner(s) = (Beth) - Runoff Round Winner = (Caleb) Candidate Beth earned the highest total score, but Candidate Caleb 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 47 ballots. Note: 2 of 47 ballots are marked as abstentions. Count × Aaron,Beth,Caleb,Dana 2 × 5, 5, 0, 5 2 × 2, 5, 3, 4 2 × 5, 0, 0, 0 2 × 0, 2, 5, 2 2 × 1, 5, 0, 2 2 × 0, 0, 5, 0 1 × 5, 5, 5, 5 1 × 3, 3, 3, 3 1 × 0, 4, 4, 3 1 × 5, 0, 3, 1 1 × 4, 5, 2, 3 1 × 0, 0, 1, 5 1 × 4, 5, -, - 1 × 4, 0, 0, 5 1 × ?, ?, ?, ? 1 × 5, 3, 4, 2 1 × 2, 4, 5, 3 1 × ~, ~, ~, ~ 1 × 0, 0, 0, 0 1 × 1, -, -, 5 1 × 3, 4, 5, 2 1 × 0, 5, 0, 5 1 × 5, 4, 2, 3 1 × 3, 0, 5, 4 1 × -, -, 1, 5 1 × 5, 2, 2, 0 1 × 2, 5, 0, 0 1 × -, 5, 5, 5 1 × 0, 0, 5, 3 1 × 4, 5, 0, 0 1 × 5, 4, 2, 0 1 × 5, 3, 5, 0 1 × 0, 3, 4, 5 1 × 5, 0, 5, 0 1 × 5, 3, 2, 4 1 × 4, 2, 3, 5 1 × 0, 0, 4, 5 1 × -, 5, 4, - 1 × 0, 0, 1, 0 1 × 4, 5, 3, 2 1 × 0, 2, 2, 3 ('-' = left blank / abstained; '0' = scored zero — both count as 0 stars.) [Score Distribution] (how many ballots gave each star rating) Score Candidate 5 4 3 2 1 0 Abs | Total Avg all Avg rated Aaron 13 6 3 4 3 13 5 | 109 2.3 2.6 Beth 15 5 5 5 0 13 4 | 120 2.6 2.8 Caleb 12 5 6 6 3 11 4 | 113 2.4 2.6 Dana 12 4 7 7 1 12 4 | 112 2.4 2.6 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. [STAR Voting: Scoring Round] The two highest-scoring candidates advance to the next round. Beth -- 120 -- First place Caleb -- 113 -- Second place Dana -- 112 Aaron -- 109 Beth and Caleb advance. [STAR Voting: Automatic Runoff Round] The candidate preferred in the most head-to-head matchups wins. Caleb -- 18 -- First place Beth -- 16 Equal Support -- 13 Caleb wins. Runoff math: 47 ballots cast − 13 Equal Support (no preference between the two finalists) ── 34 voters with a preference (majority = 18) Caleb 18 (53%) · Beth 16 (47%) [STAR Voting: Winner — STAR Voting Method (single winner)] Caleb