election_title: Bullet Storm — a bullet-voting electorate and the few who spread
bv_test_id: BV2236
bv_election_id: w9f4vd
bv_results_url: https://bettervoting.com/w9f4vd/results

scenario_description: |-
  Three brigades bullet-vote their champion (5 and silence - many literally
  leave the rest blank), while a thoughtful minority spreads honest scores.
  The lesson lives in the Automatic Runoff: a bullet ballot whose champion
  missed the top-two scored both finalists 0 - it goes EQUAL SUPPORT, silent
  by its own choice, and the runoff is decided by the voters who gave the
  count something to work with. Bullet voting is legal, counted - and
  self-muting.

  The electorate (33 ballots, all individual rows):
    - Astrid brigade: 12 voters (8 bullet, 4 strong_backup)
    - Boris brigade: 7 voters (6 bullet, 1 weak_backup)
    - Carla brigade: 8 voters (8 bullet)
    - the thoughtful few: 6 voters (5 nuanced, 1 ranked_style)

  Ballot styles in play (taxonomy:
  01_STAR/01_Learn/voting_styles/README.md):
    - weak_backup: 5 + a grudging 1 backup, rest 0/blank
    - strong_backup: 5 + a strong 4 backup, rest 0/blank
    - bullet: choose-one transplant: favorite 5, rest 0/blank
    - nuanced: full 0-5 range, honest gaps, ties allowed
    - ranked_style: uses each score once, like a ranking

  What the frozen seed produced: Scoring Round Carla 73, Astrid 67, Boris 39,
  Dolores 27. Runoff Astrid 13 vs Carla 13 (Equal Support 7). The runoff
  itself is TIED - broken by the next official tiebreaker (higher scoring
  total). STAR winner: Carla. Choose-One (Plurality) would elect Astrid.
  RCV-IRV would elect Astrid. 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
  'bullet_storm', seed 90) - 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 bullet_storm

voting_method: STAR
num_winners: 1
ballots: |-
  Astrid, Boris, Carla, Dolores
       1,     5,     0,       0
       5,     -,     4,       -
       5,     0,     0,       4
       0,     0,     5,       0
       0,     0,     5,       0
       0,     0,     5,       0
       5,     -,     -,       -
       5,     0,     0,       0
       -,     -,     5,       -
       0,     0,     5,       0
       -,     -,     5,       -
       2,     0,     4,       5
       -,     5,     -,       -
       5,     -,     4,       -
       3,     2,     5,       4
       5,     0,     0,       0
       -,     5,     -,       -
       5,     0,     4,       0
       -,     -,     5,       -
       5,     -,     -,       -
       0,     0,     5,       0
       0,     0,     2,       5
       -,     -,     5,       -
       5,     0,     0,       0
       0,     5,     0,       0
       5,     0,     0,       0
       0,     5,     0,       0
       0,     5,     0,       0
       5,     -,     -,       -
       1,     0,     5,       4
       0,     2,     0,       5
       5,     0,     0,       0
       0,     5,     0,       0

expected_winners:
  - Carla

# file: 03_c4_b33_bullet-storm.yaml
