[This post is part of my Auditing the Takoma Park Municipal Election series.]
So the votes have been cast, and voters went home. Some of them wrote down their confirmation codes. They probably checked those codes against the official Scantegrity web site. But why would they trust that web site to do all of the math right in the backend?
That’s where the audit work comes in. I’ve now run the Meeting 3 verification, and it looks good: the confirmation codes were properly opened, and I’ve posted my own re-computed version of the confirmation codes. If you’re a Takoma Park voter and you want extra certainty that your vote counted, you should check those confirmation codes and let me know if your confirmation codes don’t appear properly.
But it’s not just the confirmation codes, since we now have the unofficial tally. I’ve posted the tally that I have re-computed from these ballots. Very close to the preliminary results from the unverified opscan software itself, as in, off by only a couple of votes here and there in no way that comes close to changing the results.
Ummmm, but you said this was verifiable, so where is the discrepancy coming from?
There is paper involved, and there is scanning of paper involved. Whenever that happens, errors will occur, either in the normal opscan process, or in the reading of verification codes. If I had to bet money, I’d say it’s probably the opscan scanning that is off, while the Scantegrity code is exactly correct. But, we probably won’t know for sure, and it doesn’t make a difference as long as very few (hopefully no) voters complain about missing confirmation codes.
Now remember, again, this is the unverified tally. We have to give voters the chance to complain about their confirmation codes first. Only then will we run the final audit steps, Meeting 4 + the spoiled ballot checks.
Can I run this myself already?
Yes, check out my audit code from github:
git clone git://github.com/benadida/scantegrity-audit.git
and do a subversion checkout of the Scantegrity data:
svn checkout https://scantegrity.org/svn/data/takoma-nov3-2009
Instructions on how to run the verifications are in the README file, in this case:
python meeting3.py {DATA_DIR} {CONFIRMATION_CODES_OUTPUT_FILE_PATH}
for each of the 6 wards’ data directory. The confirmation codes are written to the given output file.
Then, to run the tally:
python tally.py {QUESTION_ID} {DATA_PATH_1} {DATA_PATH_2} ...
For QUESTION_ID 0, the mayoral race run across all wards, you’ll need all 6 data paths.
For QUESTION_ID 1, you’ll need to run tally.py against each individual ward’s data path, since those are different races.