RCTab v2.0.0
Documentation
The User Guide for RCTab v2.0 is available here. The intended audience for this documentation is RCTab users, like Election Administrators. It documents everything a user would need to configure CVRs, set winning rules, adjust the strictness/permissiveness of ballot errors, and most importantly get round by round results. More detailed documentation necessary for certification and approval is forthcoming.
Added Features
- Enable Multi-Vendor Tabulation
- The #1 reason for v2.0! The feature that no vendor voting system has. The ability to run a round by round count with vote records from multiple vendor systems. A must-have feature for statewide RCV in 28 states.
- Enhanced information in summary files output
- Here's a comparison of v2.0.0 summary files to previous versions! The numbers below correspond to the pink numbers on that screenshot. Jurisdictions regularly ask for more granular data than RCTab can produce, and this update responds to those requests.
- 1 RCTab Version Number
- 2 Contest Summary
- Number to be Elected
- Number of Candidates
- Total Number of Ballots
- 3 Number of undervotes in round 0. Previously lumped into the ‘Inactive Ballots’ bucket.
- For each candidate, each round
- 4 % of total votes for each round
- 5 Number of ballots transferred from eliminated candidate(s) in the previous round
- 6 Per-Round winning threshold
- 7 Inactive ballots in each round broken down by category. Previously these were all lumped into one Inactive Ballots bucket
- Overvote
- Skipped Ranking
- Repeat Ranking
- Exhausted Choices
rctab_cvr
output file for all vendors- Vendor agnostic, human and machine readable cast vote record data for every tabulation.
- Tabulate by batch
- Similar to tabulate by precinct, many jurisdictions use this feature for audits. They hand count a single, physically co-located ‘batch’, and then compare that to the voting system generated results.
- Consolidated pre-tabulation checks
- Provides even more confidence that the user configured RCTab correctly. Before running any round by round counts, you can confirm the following. See it here.
- Operator Name
- Total Ballots Cast
- Per-CVR ballot counts
- Provides even more confidence that the user configured RCTab correctly. Before running any round by round counts, you can confirm the following. See it here.
Security Improvements
- Write SHA512 for all output files. A digital fingerprint for every output file
- Mark all output files as read-only. To programmatically prevent tampering
- Full build on airgapped machine. To ensure no part of RCTab ever touches the internet
User Quality Of Life Improvements
- Editable tables during configuration e.g. Candidates, CVRs. How many times do you fat finger a candidate name or the path to a CVR. Now you don’t have to start all over!
- Output file re-organization. Instead of dumping all files into the same folder, with additional tabulations creating even more files in that same folder, we now create a timestamped folder for each tabulation run. Within that timestamped folder you can directly see the round by round results, with other files like precinct reports and cryptographic hashes neatly tucked away within
- Auto-load candidates from CVR. Instead of digging through .json or .xml for long, hard to read codes RCTab can automatically configure the full candidate list with the push of a button. See here.
- CVR selection makes explicit what file types are expected
- Include a # column on Candidate and CVR list
- User friendly installer. No more digging around in the command prompt. First class application like everything else.
- In-app hint text updates
- Progress bar during tabulation
- Enhanced UI log output
- Visual colors for errors and warnings
- Multi-select lines to copy
Additional Tabulation Options
- Allow single-winner threshold to be based on first-round votes only
- Added Stop Tabulation Early option
- CVR Updates
- Enable basic CSV CVR
- Improved logging and error handling for CDF CVRs
Internal Updates // Fixes
- Tabulation uses 50% less memory
- Handle missing/incomplete precinct information gracefully. When tabulate by precinct is enabled, any CVRs that do not have a precinct identifier will be batched together in a “missing_precinct_id” file.
- Test .csv and .json outputs in every test
- Upgrade all dependencies
- CVRs with rankings above configured maximum throw a halting error
- Standardize CVR IDs between
audit.log
andrctab_cvr
. Allows anyone with these files to know for each CVR ballot, for every round what that ballot counts towards and how exactly RCTab translated ballot markings into ranks