Where the live audit's numbers come from
Not an official INE product; the certified count is the official result.
Sources
- Images: the photos and scans of the presidential tally sheets (actas de escrutinio y cómputo de casilla, 2024) that INE publishes with its preliminary results program (PREP). Fetched from INE's public PREP URLs at most once per second, with the User-Agent
two-hands-audit (contact: see README); a refusal (HTTP 429 or 403) pauses fetching. - Official capture: INE's PREP database (the keyed capture of each acta, cut of 3 June 2024).
- Certified count: INE's Cómputos Distritales (cut of 8 June 2024). It covers the vote rows and the vote total, not sections 2 to 5 or 7. Its observations say whether the district council settled a form by comparison (the acta's figures were compared and kept) or by recount (the ballots were counted again).
What is stored
Only the privacy-masked page (names and signatures blacked out before anything is written or sent), downscaled to at most 150 KB, and the crops of disputed fields. The unmasked image exists only in memory while it is masked. Vote rows are named Option 01 to Option 15; no vote total is summed or shown.
How a form is read and labelled
An open vision model on the AMD Token Factory reads every field twice (digits and words) with the frozen prompt of the measured run; the reader's model id is recorded on every row and receipt. A field is a dispute when the model's digits and words agree with each other and differ from the official capture. Labels, on the vote rows and TOTAL of forms settled by comparison:
- confirmed by the certified count: the certified value equals the model's read and differs from the capture.
- model misread: the certified value equals the capture and differs from the model's read.
- dispute (unconfirmed): everything else (sections the certified count does not cover, recounted forms, or a certified value that matches neither).
A form whose row-label check failed (the model's printed row labels did not confirm the rows were aligned) is still compared field by field, and its disputes are tagged "label check failed: weaker evidence" and counted separately. Such a dispute is "confirmed by the certified count" only when the certified count independently equals the model's value.
Receipts
Each dispute is a leaf of a Merkle tree (SHA-256, the scheme of the audit reports), one tree per state in audit order: a completed state has a final root, the open state a running root. A receipt is checkable offline with python -m twohands.verify_receipt.
Budget and pace
The worker spends at most $0.60 a day on AMD and always leaves $0.10 for the site's live-read button; when the limit is reached it waits for the daily reset at 16:00 UTC. It shares one rate limiter with the live reads.
Separate from the measured results
The live audit skips every form in my pre-registered and measured samples, and its numbers never enter them: those are on Results, with their method. Status: Live audit.