Anti-Harassment Tools/SecurePoll Improvements/Test Results/5 3 2679

Comments
SecurePoll elects candidates 1 and 2.

OpenSTV elects candidates 1, 2 (or A and B in the output) and another at random.

Election setup

 * Candidates: 5
 * Seats: 3
 * Votes: 2679

Actual
Output from SecurePoll : array(3) { ["elected"]=> array(2) { [0]=>   int(2) [1]=>   int(1) } ["eliminated"]=> array(3) { [0]=>   int(3) [1]=>   int(4) [2]=>   int(5) } ["rounds"]=> array(4) { [0]=>   array(8) { ["round"]=> int(1) ["surplus"]=> int(0) ["rankings"]=> array(5) { [1]=>       array(3) { ["votes"]=> int(0) ["earned"]=> int(509) ["total"]=> int(509) }       [2]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(670) ["total"]=> int(670) }       [3]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(500) ["total"]=> int(500) }       [4]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(500) ["total"]=> int(500) }       [5]=>        array(3) { ["votes"]=> int(0) ["earned"]=> int(500) ["total"]=> int(500) }     }      ["totalVotes"]=> int(2679) ["keepFactors"]=> array(5) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(1) [4]=>       int(1) [5]=>       int(1) }     ["quota"]=> int(670) ["elected"]=> array(0) { }     ["eliminated"]=> array(0) { }   }    [1]=>    array(8) { ["round"]=> int(2) ["elected"]=> array(1) { [0]=>       int(2) }     ["eliminated"]=> array(0) { }     ["surplus"]=> int(0) ["keepFactors"]=> array(5) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(1) [4]=>       int(1) [5]=>       int(1) }     ["quota"]=> int(670) ["rankings"]=> array(5) { [1]=>       array(3) { ["votes"]=> int(509) ["earned"]=> int(0) ["total"]=> int(509) }       [2]=>        array(3) { ["votes"]=> int(670) ["earned"]=> int(0) ["total"]=> int(670) }       [3]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(0) ["total"]=> int(500) }       [4]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(0) ["total"]=> int(500) }       [5]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(0) ["total"]=> int(500) }     }      ["totalVotes"]=> int(2679) }   [2]=>    array(8) { ["round"]=> int(3) ["elected"]=> array(0) { }     ["eliminated"]=> array(3) { [0]=>       int(3) [1]=>       int(4) [2]=>       int(5) }     ["surplus"]=> int(0) ["keepFactors"]=> array(5) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(1) [4]=>       int(1) [5]=>       int(1) }     ["quota"]=> int(670) ["rankings"]=> array(5) { [1]=>       array(3) { ["votes"]=> int(509) ["earned"]=> int(0) ["total"]=> int(509) }       [2]=>        array(3) { ["votes"]=> int(670) ["earned"]=> int(0) ["total"]=> int(670) }       [3]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(0) ["total"]=> int(500) }       [4]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(0) ["total"]=> int(500) }       [5]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(0) ["total"]=> int(500) }     }      ["totalVotes"]=> int(2679) }   [3]=>    array(8) { ["round"]=> int(4) ["elected"]=> array(1) { [0]=>       int(1) }     ["eliminated"]=> array(0) { }     ["surplus"]=> int(589) ["keepFactors"]=> array(5) { [1]=>       int(1) [2]=>       int(1) [3]=>       int(0) [4]=>       int(0) [5]=>       int(0) }     ["quota"]=> int(295) ["rankings"]=> array(5) { [1]=>       array(3) { ["votes"]=> int(509) ["earned"]=> int(0) ["total"]=> int(509) }       [2]=>        array(3) { ["votes"]=> int(670) ["earned"]=> int(0) ["total"]=> int(670) }       [3]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(-500) ["total"]=> int(0) }       [4]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(-500) ["total"]=> int(0) }       [5]=>        array(3) { ["votes"]=> int(500) ["earned"]=> int(-500) ["total"]=> int(0) }     }      ["totalVotes"]=> int(1179) } } }

Expected
Output from OpenSTV: Loading ballots from file 5_3_2679.blt. Ballot file contains 5 candidates and 2679 ballots. No candidates have withdrawn. Ballot file contains 2679 non-empty ballots.

Counting votes for 5_3_2679 using Meek STV. 5 candidates running for 3 seats.

R|A                |B                 |C                 |D |--+--+--+-- |E                 |Exhausted         |Surplus           |Threshold

=
================================================================= 1|       509.000000|        670.000000|        500.000000|        500.000000  |        500.000000|          0.000000|          0.249999|        669.750001  |---  | Count of first choices. Candidate B has reached the threshold and is | elected.

=
================================================================= 2|       509.249910|        669.750090|        500.000000|        500.000000  |        500.000000|          0.000000|          0.000089|        669.750001  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: B, 0.999627.

=
================================================================= 3|       509.249910|        669.750090|        500.000000|        500.000000  |        500.000000|          0.000000|          0.000089|        669.750001  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: B, 0.999627.

=
================================================================= 4|       509.249910|        669.750090|                  |        500.000000  |        500.000000|        500.000000|        125.000089|        544.750001  |---  | Count after eliminating C and transferring votes. Candidates tied within | precision of computations. Candidates C, D, and E were tied when choosing | candidates to eliminate. Candidate C was chosen by breaking the tie | randomly.

=
================================================================= 5|       634.249800|        544.750200|                  |        500.000000  |        500.000000|        500.000000|         89.499998|        544.750001  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: B, 0.813060. Candidate A has reached the | threshold and is elected.

=
================================================================= 6|       544.750176|        544.750200|                  |        500.000000  |        500.000000|        589.499624|         44.750186|        522.375095  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.858889 and B, 0.813060.

=
================================================================= 7|       540.803119|        522.375550|                  |        500.000000  |        500.000000|        615.821331|         31.589333|        515.794668  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.823611 and B, 0.779665.

=
================================================================= 8|       520.964256|        515.794810|                  |        500.000000  |        500.000000|        642.240934|         18.379532|        509.189767  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.785525 and B, 0.769843.

=
================================================================= 9|       514.261401|        509.189950|                  |        500.000000  |        500.000000|        655.548649|         11.725675|        505.862838  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.767772 and B, 0.759985.

=
================================================================= 10|       508.375646|        505.863400|                  |        500.000000  |        500.000000|        664.760954|          7.119522|        503.559762  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.755234 and B, 0.755020.

=
================================================================= 11|       505.283200|        503.559940|                  |        500.000000  |        500.000000|        670.156860|          4.421568|        502.210786  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.748080 and B, 0.751582.

=
================================================================= 12|       503.214107|        502.211230|                  |        500.000000  |        500.000000|        673.574663|          2.712667|        501.356335  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.743532 and B, 0.749569.

=
================================================================= 13|       501.989817|        501.356980|                  |        500.000000  |        500.000000|        675.653203|          1.673397|        500.836700  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.740788 and B, 0.748294.

=
================================================================= 14|       501.221412|        500.837060|                  |        500.000000  |        500.000000|        676.941528|          1.029234|        500.514619  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.739087 and B, 0.747518.

=
================================================================= 15|       500.752616|        500.514790|                  |        500.000000  |        500.000000|        677.732594|          0.633702|        500.316852  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.738045 and B, 0.747037.

=
================================================================= 16|       500.462777|        500.317140|                  |        500.000000  |        500.000000|        678.220083|          0.389957|        500.194980  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.737403 and B, 0.746742.

=
================================================================= 17|       500.285246|        500.195200|                  |        500.000000  |        500.000000|        678.519554|          0.240222|        500.120112  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.737009 and B, 0.746560.

=
================================================================= 18|       500.175584|        500.120160|                  |        500.000000  |        500.000000|        678.704256|          0.147870|        500.073937  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736766 and B, 0.746448.

=
================================================================= 19|       500.107991|        500.074600|                  |        500.000000  |        500.000000|        678.817409|          0.091295|        500.045648  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736617 and B, 0.746380.

=
================================================================= 20|       500.067428|        500.045790|                  |        500.000000  |        500.000000|        678.886782|          0.056608|        500.028305  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736526 and B, 0.746337.

=
================================================================= 21|       500.041557|        500.028370|                  |        500.000000  |        500.000000|        678.930073|          0.034963|        500.017482  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736469 and B, 0.746311.

=
================================================================= 22|       500.025687|        500.017650|                  |        500.000000  |        500.000000|        678.956663|          0.021667|        500.010835  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736434 and B, 0.746295.

=
================================================================= 23|       500.016363|        500.010950|                  |        500.000000  |        500.000000|        678.972687|          0.013655|        500.006829  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736413 and B, 0.746285.

=
================================================================= 24|       500.009817|        500.006930|                  |        500.000000  |        500.000000|        678.983253|          0.008373|        500.004187  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736399 and B, 0.746279.

=
================================================================= 25|       500.006359|        500.004250|                  |        500.000000  |        500.000000|        678.989391|          0.005303|        500.002653  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736391 and B, 0.746275.

=
================================================================= 26|       500.003951|        500.002910|                  |        500.000000  |        500.000000|        678.993139|          0.003429|        500.001716  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736386 and B, 0.746273.

=
================================================================= 27|       500.002407|        500.002240|                  |        500.000000  |        500.000000|        678.995353|          0.002323|        500.001162  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736383 and B, 0.746272.

=
================================================================= 28|       500.002221|        500.001570|                  |        500.000000  |        500.000000|        678.996209|          0.001895|        500.000948  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736382 and B, 0.746271.

=
================================================================= 29|       500.001542|        500.001570|                  |        500.000000  |        500.000000|        678.996888|          0.001554|        500.000779  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736381 and B, 0.746271.

=
================================================================= 30|       500.001357|        500.000900|                  |        500.000000  |        500.000000|        678.997743|          0.001127|        500.000565  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736380 and B, 0.746270.

=
================================================================= 31|       500.000678|        500.000900|                  |        500.000000  |        500.000000|        678.998422|          0.000788|        500.000395  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736379 and B, 0.746270.

=
================================================================= 32|       500.000678|        500.000900|                  |        500.000000  |        500.000000|        678.998422|          0.000788|        500.000395  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: A, 0.736379 and B, 0.746270.

=
================================================================= 33|       500.000678|        500.000900|                  |                    |        500.000000|       1178.998422|        375.000393|        375.000395  |---  | Count after eliminating D and transferring votes. Candidates tied within | precision of computations. Candidates D and E were tied when choosing | candidates to eliminate. Candidate D was chosen by breaking the tie | randomly. Candidate E has reached the threshold and is elected.

Winners are A, B, and E.

Files
array ( 1 =>   array ( 'count' => 509, 'rank' => array (     1 => '1',    ), ), '2_1' =>   array ( 'count' => 670, 'rank' => array (     1 => '2',      2 => '1',    ), ), 3 =>   array ( 'count' => 500, 'rank' => array (     1 => '3',    ), ), 4 =>   array ( 'count' => 500, 'rank' => array (     1 => '4',    ), ), 5 =>   array ( 'count' => 500, 'rank' => array (     1 => '5',    ), ), )
 * blt: https://github.com/dominic998/SecurePoll-Test-Data/blob/main/test_data/5_3_2679.blt
 * php:

Environment

 * Where you tested: local docker using phpunit
 * Version of SecurePoll: commit 271145d5f3cae3b0a1b76d0f5dfeb609615d60b7 (patch 16 from https://gerrit.wikimedia.org/r/c/mediawiki/extensions/SecurePoll/+/704454/)