election_title: Does the squeeze survive noise? Two poles, one consensus middle
bv_test_id: BV2238
bv_election_id: td7jfy
bv_results_url: https://bettervoting.com/td7jfy/results

scenario_description: |-
  The center-squeeze profile - two big poles who each rate consensus-Ben an
  honest second - but built from NOISY utilities and mixed ballot styles
  instead of clean textbook blocs. The question the textbook can't answer:
  does the squeeze still happen once real-world mess is layered on? Tabulate
  and see whether RCV-IRV's first-choice tunnel vision eliminates the
  candidate the pairwise count says beats everyone.

  The electorate (38 ballots, all individual rows):
    - Ava pole: 13 voters (6 ranked_style, 3 strong_backup, 3 nuanced, 1 harsh)
    - Cora pole: 20 voters (11 weak_backup, 4 ranked_style, 3 nuanced, 2 slate)
    - Ben middle: 5 voters (4 nuanced, 1 gentle)

  Ballot styles in play (taxonomy:
  01_STAR/01_Learn/voting_styles/README.md):
    - gentle: gentle soul: everything squeezed into 3-5, no zeros
    - nuanced: full 0-5 range, honest gaps, ties allowed
    - strong_backup: 5 + a strong 4 backup, rest 0/blank
    - weak_backup: 5 + a grudging 1 backup, rest 0/blank
    - ranked_style: uses each score once, like a ranking
    - slate: partisan slate: equal 5s for the in-group, 0 outside
    - harsh: harsh grader: everything squeezed into 0-2

  What the frozen seed produced: Scoring Round Cora 124, Ben 111, Ava 80.
  Runoff Ben 19 vs Cora 18 (Equal Support 1). STAR winner: Ben. Condorcet
  winner Ben (agrees). Choose-One (Plurality) would elect Cora. RCV-IRV would
  elect Cora. Approval would elect Cora. 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
  'squeeze_survives', seed 51) - 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 squeeze_survives

voting_method: STAR
num_winners: 1
ballots: |-
  Ava, Ben, Cora
    3,   5,    3
    0,   2,    5
    5,   4,    -
    5,   4,    -
    0,   5,    1
    5,   4,    3
    5,   2,    0
    3,   4,    5
    0,   1,    5
    -,   1,    5
    0,   0,    5
    5,   4,    3
    0,   4,    5
    5,   4,    3
    3,   4,    5
    0,   1,    5
    3,   4,    5
    -,   1,    5
    2,   1,    0
    5,   4,    3
    5,   4,    3
    -,   5,    1
    5,   3,    0
    0,   5,    5
    5,   2,    0
    0,   5,    2
    0,   1,    5
    5,   4,    3
    -,   1,    5
    0,   5,    2
    3,   0,    5
    -,   1,    5
    5,   4,    0
    0,   1,    5
    -,   1,    5
    3,   4,    5
    0,   1,    5
    0,   5,    2

expected_winners:
  - Ben

# file: 05_c3_b38_squeeze-survives.yaml
