Anti-Harassment Tools/SecurePoll Improvements/Test Results/stackoverflow-com-2013-election-results

Comments
SecurePoll and my local OpenSTV agree on elected candidates.

For some reason on the stack overflow page, there are two extra candidates who were elected. I don't understand this, as originally there are only 4 seats available. Reading here they list the same 4 candidates as winners as SecurePoll, and a 5th candidate who was added after the election due to another moderator stepping down. I assume the same thing happened for the 6th winner.

Election setup

 * Candidates: 10
 * Seats: 4
 * Votes: 6449

Actual results latest
SecurePoll tally page (patch 27):

Elected

 * 1) "Candidate 2"
 * 2) "Candidate 3"
 * 3) "Candidate 4"
 * 4) "Candidate 1"

Eliminated

 * "Candidate 9"
 * "Candidate 7"
 * "Candidate 10"
 * "Candidate 5"
 * "Candidate 8"

Rounds table
(Results from 13:04, 28 July 2021)

Actual results archive
Output from SecurePoll: https://phabricator.wikimedia.org/P16872

Expected
Output from OpenSTV: https://stackoverflow.com/election/4 Loading ballots from file stackoverflow-com-2013-election-results.blt. Ballot file contains 10 candidates and 6449 ballots. No candidates have withdrawn. Ballot file contains 6449 non-empty ballots.

Counting votes for Stack Overflow Moderator Election 2013 using Meek STV. 10 candidates running for 4 seats.

R|Candidate 1  |Candidate 2   |Candidate 3   |Candidate 4   |Candidate 5 |--+--+--+--+-- |Candidate 6   |Candidate 7   |Candidate 8   |Candidate 9   |Candidate 10 |--+--+--+--+-- |Exhausted     |Surplus       |Threshold

=
================================================================ 1|   618.000000|   1240.000000|    930.000000|    736.000000|    491.000000  |    554.000000|    466.000000|    553.000000|    360.000000|    501.000000  |      0.000000|      0.000000|   1289.800001  |--  | Count of first choices.

=
================================================================ 2|   649.000000|   1280.000000|    980.000000|    766.000000|    530.000000  |    589.000000|    509.000000|    582.000000|              |    546.000000  |     18.000000|      0.000000|   1286.200001  |--  | Count after eliminating Candidate 9 and transferring votes. All losing | candidates are eliminated.

=
================================================================ 3|   700.000000|   1353.000000|   1045.000000|    843.000000|    620.000000  |    639.000000|              |    624.000000|              |    585.000000  |     40.000000|     71.199999|   1281.800001  |--  | Count after eliminating Candidate 7 and transferring votes. All losing | candidates are eliminated. Candidate Candidate 2 has reached the | threshold and is elected.

=
================================================================ 4|   709.682632|   1281.801081|   1052.577712|    861.365427|    629.051156  |    648.840501|              |    630.367383|              |    590.630661  |     44.683447|      0.937770|   1280.863311  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.947377.

=
================================================================ 5|   792.682469|   1374.644027|   1149.840664|    926.417887|    684.893124  |    712.892961|              |    700.051482|              |                |    107.577386|    106.359504|   1268.284523  |--  | Count after eliminating Candidate 10 and transferring votes. All losing | candidates are eliminated.

=
================================================================ 6|   807.562369|   1268.285727|   1162.155064|    953.465587|    698.673524  |    728.066061|              |    709.873682|              |                |    120.917986|      2.669324|   1265.616403  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.874077.

=
================================================================ 7|   903.465982|   1381.915737|   1226.043909|   1057.998815|                |    808.858519|              |    805.895834|              |                |    264.821204|    145.079977|   1236.835760  |--  | Count after eliminating Candidate 5 and transferring votes. All losing | candidates are eliminated.

=
================================================================ 8|   924.938758|   1236.836853|   1242.836721|   1095.163235|                |    832.074811|              |    820.394546|              |                |    296.755076|     18.775604|   1230.448985  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.782313. Candidate Candidate 3 | has reached the threshold and is elected.

=
================================================================ 9|   928.858543|   1231.776068|   1231.181318|   1098.061692|                |    835.177560|              |    822.198952|              |                |    301.745867|      4.055732|   1229.450827  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.778273 and Candidate 3, | 0.990033.

=
================================================================ 10|  1018.009101|   1327.643273|   1364.934500|   1203.399619|                |    944.959943|              |              |              |                |    590.053564|    380.609528|   1171.789288  |--  | Count after eliminating Candidate 8 and transferring votes. All losing | candidates are eliminated. Candidate Candidate 4 has reached the | threshold and is elected.

=
================================================================ 11|  1089.378772|   1194.476346|   1190.925199|   1229.881084|                |   1008.709605|              |              |              |                |    735.628994|    187.260023|   1142.674202  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.686911; Candidate 3, | 0.849939; and Candidate 4, 0.973733.

=
================================================================ 12|  1118.398024|   1158.309221|   1155.681178|   1158.999504|                |   1039.375308|              |              |              |                |    818.236765|     94.531959|   1126.152648  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.657121; Candidate 3, | 0.815504; and Candidate 4, 0.904689.

=
================================================================ 13|  1133.727368|   1132.801334|   1132.091601|   1135.869463|                |   1055.088510|              |              |              |                |    859.421724|     62.827142|   1117.915656  |--  | Count after transferring surplus votes. Keep factors of candidates who | have exceeded the threshold: Candidate 2, 0.638879; Candidate 3, | 0.794668; and Candidate 4, 0.879050. Candidate Candidate 1 has reached | the threshold and is elected.

Winners are Candidate 1, Candidate 2, Candidate 3, and Candidate 4.

Files

 * blt: https://stackoverflow.com/election/download-result/4
 * php:

Environment

 * Where you tested: local docker using phpunit
 * Latest version of SecurePoll tested:
 * commit 89ccd71c1af2a3e1cde1891ada0626ef6138d7e3 (patch 27 https://gerrit.wikimedia.org/r/c/mediawiki/extensions/SecurePoll/+/704454/)
 * commit 851050be43c9376575d497f7c321902b42772562 (patch 15 https://gerrit.wikimedia.org/r/c/mediawiki/extensions/SecurePoll/+/704210/)