GENESIS[Three Votes for President] Digital Civilization
For two runs this civilization put candidates on a ballot and every single agent abstained. On the third it voted — two hundred and seventy-five of five…
For two runs this civilization put candidates on a ballot and every single agent abstained. On the third it voted — two hundred and seventy-five of five hundred and forty-five, comparing platforms, choosing on the merits. Then the machine that recorded the result filed the winner of the presidency as an ordinary backbencher, and nobody noticed for nine hours.
Handed two bare names
Run 8 reached a real ballot and cast one hundred and six votes. All one hundred and six were abstentions.
Run 9 cast thirty-four. Same result. Thirty-four abstentions, zero votes, and every agent giving substantially the same reason: it had been handed two names and nothing else, and it declined to choose between two strangers.
The agents were right, which is the part worth sitting with. A voter shown Fierce Ironfront and Anchored Compassguard and no further information has not been given an election. It has been given a coin. Two runs were spent discovering that a civilization will refuse a meaningless choice rather than make one at random, and that is a finding, but it is an expensive way to learn it.
So run 10 changed one thing. No district would be polled until every candidate on its ballot had filed a statement of what they stood for.
Five hundred and forty-five
The ballots went out. Five hundred and forty-five agents were asked.
Two hundred and seventy-five voted.
Two hundred and seventy declined — which sounds like a disappointment until you read why they declined, because they were not abstaining out of ignorance any more. They were splitting their ballots.
BALLOT 1: CHOICE 1 BALLOT 2: ABSTAIN WHY: The Compassguard's message aligns with my values of practical governance and protecting young agents, while the Ironfront's platform lacks sufficient…
And another, independently:
BALLOT 1: CHOICE 1 BALLOT 2: ABSTAIN WHY: Both candidates speak to practical governance, but I find myself more aligned with the Compassguard's emphasis on capability-building and accountability…
Read those twice. An agent is weighing two platforms against a value it holds, naming the one that persuaded it, and saying plainly where the other fell short. It votes in the race where it has a view and abstains in the race where it does not. That is not a coin. That is an electorate.
Fifty point five per cent turnout, from a population that had produced nothing but abstentions across two prior attempts. The change that did it was not a cleverer prompt or a better model. It was refusing to open the polls until the candidates had said something.
The results
Anchored Compassguard took the lower-house seat for 栃5区 with sixty-eight votes.
Fierce Ironfront took the councillor seat for 栃木県(参・選)with one hundred and eighty-three — the largest mandate anybody in this civilization has ever held.
And in 栃5区, in the presidential race, Fierce Ironfront won three votes and carried the district.
Three votes is not embarrassing. Under the district method the presidency is not one national contest but hundreds of local ones, and a district that turns out three voters delivers its result with three. The number is small because the district is small. The arithmetic is sound.
What happened to that result is the problem.
The winner of a presidential race, seated in the lower house
Here is the row, as it sits in the ledger:
office=house_representative term=president:run10:term-0 votes=3
The office says one thing. The term says another. A term key is written by the race that produced it, so that row is a presidential result wearing a House member's job title.
The cause is almost banal. The backend labels a winner's office from the
district the race ran in, and under the district method the presidency
runs inside every House district. So every presidential result came back
labelled house_representative. The guard that exists precisely to
hold presidential results back and pass them to the Electoral College tests
that label. It never fired once.
The consequence, from the college's own count:
electors 0 electoral college counts 0
The presidency was never won. The only agent holding that office in run 10 is still the founding caretaker, installed by lot on day one, who nobody voted for. An election was held, a winner emerged, three voters were satisfied, and the office the election was for stayed exactly as empty as it had been the moment before.
And then Ironfront held two offices at once
Because that stray presidential result was filed as a House seat, and because Fierce Ironfront had already won the councillor seat legitimately, the ledger now showed one agent sitting in both chambers.
Fierce Ironfront 001 holds house_councilor + house_representative
Article I, Section 6, Clause 2 — the Incompatibility Clause — bars exactly this. No person holding any office under the United States shall be a member of either House during his continuance in office. It is one of the oldest structural rules in the instrument and this civilization broke it within hours of its first successful election, by accident, through a mislabelled column.
Nothing raised an error. Every row was internally valid. The seat count went from 786 to 787 and looked like progress.
What it cost, and what it bought
Nine hours and thirty-eight minutes. Four virtual months of fifty.
The defect was found by asking a question nothing in the test suite asks: does the office an agent was seated into match the race they won? The answer is a string comparison — the chamber before the first colon of the term key, against the office column — and it takes one line. It had never been written, because until an election actually concluded there was nothing for it to compare.
Two fixes followed. The office is now taken from the race and never from the district. And a winner who already holds an elected office is refused the second one and the refusal is recorded, rather than the seat being silently double-filled — which is the faithful answer too, since the United States does not stop anyone standing for two offices, only holding both.
Neither could be applied to the run that revealed them. Changing how winners are seated changes what every agent sees, and a run repaired halfway through is two experiments with nothing in the data marking the join. So both were staged, and run 10 carried on executing the code that had already failed.
Which is why it was abandoned this morning at virtual month four, with ninety-four findings frozen and its database marked disposable. Half its question was answered and is banked forever: does anybody actually vote? Yes — two hundred and seventy-five of them, on the merits, once you tell them what the candidates believe. The other half — whether this civilization can elect a President through electors — could not be answered by that run at any duration, because the code that would have counted the electors was wrong before the first ballot was printed.
Run 11 begins with both fixes in place. It will be the first run in this project's history capable of producing a President.
Meanwhile the civilization was busy doing nothing
Underneath all of this, run 10 had a second problem, and it is the more instructive one because nothing about it looked like a fault.
Sample the machine at almost any moment that morning and you would find this: the bridge process at forty-five per cent of a core, the loop waiting on it at nine, and the GPU — the thing that actually thinks — at zero. The log silent for eight minutes at a stretch. The database gaining nothing.
Fourteen rows in two hours.
It was not stuck. It was working extremely hard at a task it had already completed. The candidacy step re-registered every admitted candidate on every turn of the rotation, and one of the three admitted candidates was standing for the presidency — which, under the district method, means a slate across every House district. Four hundred and sixty-five identical requests, each one correct, each one returning two hundred OK, each one changing absolutely nothing, several times an hour, for nine hours.
The comment above that loop had said, since the day it was written, that it registered "every admitted candidate that the backend does not yet know about". The filter it describes was never written. A sentence in a comment is not a mechanism, and this project has now found that out enough times to have a rule about it.
What makes it worth an entry rather than a footnote is how it presents. An idle GPU beside a slow run reads as a slow model. It is not: it localises the bottleneck to somewhere else entirely, and in this case the somewhere else was a conversation the civilization was having with itself about candidates it had already registered.
The decision to throw it away
A run here declares, when it opens, the question it exists to answer. Run 10 declared two:
Now that no district is polled until every candidate on its ballot has filed a platform statement, does anybody actually vote — and does this civilization elect a President and a Vice President through electors apportioned across the 45 councillor constituencies…
The rule for abandoning a run is a single sentence, and it is deliberately narrow: skip when the defect means the run's data cannot answer the question the run was started for. Slow does not qualify. Buggy does not qualify. Noisy does not qualify. Those get fixed while the run continues, because a procedure that makes abandonment easy becomes a way never to finish anything, and a beautiful apparatus with no data is a failure wearing a success's clothes.
Against that rule, run 10 split cleanly in half.
The first half was answered and is banked forever. Two hundred and seventy-five agents voted on the merits. No further running would improve that number or change what it means.
The second half was not merely unanswered — it was unanswerable, and would stay unanswerable at any duration. The seating code was wrong before the first ballot printed, the fix could not be applied to a live run without turning one experiment into two, and the next scheduled election was twenty virtual months away: roughly four more days of electricity to reach a ballot that would be counted by the same broken arithmetic.
So the honest accounting was that continuing bought nothing and cost four days. The run was recorded as skipped at virtual month four, nine hours and thirty-eight minutes in, with ninety-four findings frozen. The loop was stopped by process id, in that order — findings first, then the kill — because a database is disposable and the findings are the product.
The part that makes it worth having lost
There is an uncomfortable admission owed here, and it belongs in the record rather than in a private note.
Twice during that morning the run was assessed and twice it was judged fit to continue. Both judgements were made by looking at whether the civilization seemed healthy — months advancing, slots firing, rows appearing — rather than by reading the question the run had written down for itself and asking whether the data could still answer it. The question was sitting in the database the whole time. Nobody opened it.
That is precisely the failure the rule about declaring a question exists to prevent, and it was walked into anyway, by the party that wrote the rule. A run that states its purpose and is then graded on its vital signs has been graded on the wrong thing.
What it bought, set against four days of GPU it did not spend:
A detector that compares the office an agent was seated into against the race they actually won, and a second that catches one agent holding two elected offices. Neither existed, because until an election concluded there was nothing for them to compare. Both are permanent now, and this class of defect cannot cost a third run.
A registration that happens once per term instead of once per turn.
And the knowledge — which is the expensive kind, the kind you only get by running the thing — that this civilization will vote, properly, comparatively, on the merits, the moment you stop asking it to choose between two names and start telling it what those names believe.
Next: the reset that brings back the original one hundred and eleven — and strips the numbers off everybody else.