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

Comments
SecurePoll eliminates all candidates. I assume this is because all the candidates have equal votes. In this case, I think we plan to defer to the election admins how to proceed.

This is possibly the same/similar to 20_6_5100_319413701 and 20_6_5000_2048397232.

Election setup

 * Candidates: 5
 * Seats: 3
 * Votes: 100

Actual
Output from SecurePoll :

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

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

R|1                |2                 |3                 |4 |--+--+--+-- |5                 |Exhausted         |Surplus           |Threshold

=
================================================================= 1|        20.000000|         20.000000|         20.000000|         20.000000  |         20.000000|          0.000000|          0.000000|         25.000001  |---  | Count of first choices.

=
================================================================= 2|        21.000000|                  |         20.000000|         20.000000  |         20.000000|         19.000000|          0.749999|         20.250001  |---  | Count after eliminating 2 and transferring votes. All losing candidates | are eliminated. Candidates 1, 2, 3, 4, and 5 were tied when choosing | candidates to eliminate. Candidate 2 was chosen by breaking the tie | randomly. Candidate 1 has reached the threshold and is elected.

=
================================================================= 3|        20.250006|                  |         20.000000|         20.000000  |         20.000000|         19.749994|          0.187504|         20.062502  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.964286.

=
================================================================= 4|        20.062518|                  |         20.000000|         20.000000  |         20.000000|         19.937482|          0.046888|         20.015630  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.955358.

=
================================================================= 5|        20.015646|                  |         20.000000|         20.000000  |         20.000000|         19.984354|          0.011734|         20.003912  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.953126.

=
================================================================= 6|        20.003928|                  |         20.000000|         20.000000  |         20.000000|         19.996072|          0.002945|         20.000983  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.952568.

=
================================================================= 7|        20.000988|                  |         20.000000|         20.000000  |         20.000000|         19.999012|          0.000740|         20.000248  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.952428.

=
================================================================= 8|        20.000253|                  |         20.000000|         20.000000  |         20.000000|         19.999747|          0.000189|         20.000064  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.952393.

=
================================================================= 9|        20.000064|                  |         20.000000|         20.000000  |         20.000000|         19.999936|          0.000047|         20.000017  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.952384.

=
================================================================= 10|        20.000022|                  |         20.000000|         20.000000  |         20.000000|         19.999978|          0.000016|         20.000006  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.952382.

=
================================================================= 11|        20.000022|                  |         20.000000|         20.000000  |         20.000000|         19.999978|          0.000016|         20.000006  |---  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: 1, 0.952382.

=
================================================================= 12|        22.857168|                  |         20.000000|                    |         20.000000|         37.142832|         15.714289|         15.714293  |---  | Count after eliminating 4 and transferring votes. Candidates tied within | precision of computations. Candidates 3, 4, and 5 were tied when choosing | candidates to eliminate. Candidate 4 was chosen by breaking the tie | randomly. Candidates 3 and 5 have reached the threshold and are elected.

Winners are 1, 3, and 5.

Files
array ( '5_2_1' =>   array ( 'count' => 1, 'rank' => array (     1 => '5',      2 => '2',      3 => '1',    ), ), '3_2' =>   array ( 'count' => 1, 'rank' => array (     1 => '3',      2 => '2',    ), ), '2_1' =>   array ( 'count' => 1, 'rank' => array (     1 => '2',      2 => '1',    ), ), '5_2' =>   array ( 'count' => 1, 'rank' => array (     1 => '5',      2 => '2',    ), ), '4_1_2' =>   array ( 'count' => 1, 'rank' => array (     1 => '4',      2 => '1',      3 => '2',    ), ), '4_2' =>   array ( 'count' => 1, 'rank' => array (     1 => '4',      2 => '2',    ), ), '5_1' =>   array ( 'count' => 1, 'rank' => array (     1 => '5',      2 => '1',    ), ), '4_1' =>   array ( 'count' => 2, 'rank' => array (     1 => '4',      2 => '1',    ), ), 3 =>   array ( 'count' => 19, 'rank' => array (     1 => '3',    ), ), 1 =>   array ( 'count' => 20, 'rank' => array (     1 => '1',    ), ), 5 =>   array ( 'count' => 17, 'rank' => array (     1 => '5',    ), ), 2 =>   array ( 'count' => 19, 'rank' => array (     1 => '2',    ), ), 4 =>   array ( 'count' => 16, 'rank' => array (     1 => '4',    ), ), )
 * blt: https://github.com/dominic998/SecurePoll-Test-Data/blob/main/test_data/5_3_100.blt
 * php:

Environment

 * Where you tested: local docker using PHPUnit
 * Version of SecurePoll: commit 7456aea7198d58e058d56ed4c1fd550354803cd5 (patch 24 from https://gerrit.wikimedia.org/r/c/mediawiki/extensions/SecurePoll/+/704454/)