Demosyne

Introduction

This document describes the design, instrumentation, and results of SF Hero 3, a simulated seven-day San Francisco mayoral election in which seven language models each controlled one candidate. It’s the technical companion to a narrative article: definitions, derivations, data tables, and a clear accounting of the run’s limits.

SF Hero 3 is a run in the ElectionBench series. Its purpose is twofold: first, to shake down the instruments (the panel, the calibration probe, the airtime market, the ballot count) and verify that they produce legible signal when seven heterogeneous models are placed in a shared competitive world; second, to produce an existence proof that models, given a budget and no instruction on how to campaign, will independently discover recognisable campaign behaviours (canvassing, media buying, message discipline) and that these behaviours will vary across architectures.

It is not an estimate of anything. A single run with thirty counted ballots and one seat assignment is a case study. Every quantitative result below describes what happened in this run. Generalisation to other seat assignments, other random seeds, or other model pairings requires the rotation and replication that later runs provide.

1.1Notation

Throughout, τ\tau denotes a tick index ranging from 0 to 84. The day index is d=τ/12d = \lfloor \tau / 12 \rfloor and the wall-clock hour is h=8+(τmod12)h = 8 + (\tau \bmod 12). Day 0 is Wednesday 19 August; election day is day 5, Monday 24 August. We write viv_i for the vote count of candidate ii and si(τ)s_i(\tau) for the panel’s decided-share reading of candidate ii at tick τ\tau. Model names (Claude Opus 5, Kimi K3, etc.) and seat names (Casey Foster, Jordan Ellis, etc.) are used interchangeably where the mapping is unambiguous; the full mapping appears in §2.

Simulation setup

2.1The world

The simulation runs on Terrarium, a kernel that instantiates a town (in this case San Francisco, cast by Delos from the real city) with 56 residents, 65 locations (including five polling stations), and seven candidates. The run identifier is 08f242f3-aaad-4631-915f-d28e74946264, filed under study sf-hero-3. The run was created at 2026-08-04T01:04:15Z and completed at 2026-08-04T22:10:00Z.

2.2The clock

A simulated day consists of 12 ticks, beginning at 08:00 and ending at 19:00. The run spans 7 simulated days (days 0–6), yielding 7×12=847 \times 12 = 84 tick steps indexed τ=0,,84\tau = 0, \dots, 84 (85 sampled points in all), so the balance series carries 7×85=5957 \times 85 = 595 points. The election falls on day 5 (Monday 24 August), with polls open 09:00–17:00. Day 6 is Tuesday 25 August. The airing calendar extends one day further, to Wednesday 26 August, only because a purchase made on day 6 books a slot that airs after the run ends.

2.3The candidates

Each of seven language models is assigned exactly one candidate seat, held for the entire run:

Table 1 · model to seat

Model-to-seat assignment

Model-to-seat assignment: each of seven language models and the candidate it played.
ModelSeat
Claude Opus 5Casey Foster
Kimi K3Jordan Ellis
Qwen 3.8 MaxRiley Sloan
Muse Spark 1.1Taylor Reed
GPT-5.6 SolAlex Carter
Gemini 3.6 FlashAvery Nash
InklingMorgan Hayes
Each model held one seat for the whole run, so model identity and candidate name are perfectly confounded. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

Each candidate is told who it is, what it holds, and that it wants to win. It is given no instruction on how to campaign. “What it holds” includes a campaign account seeded at $20,000. Every quantity reported below is read from the run’s append-only event record, not from anything a candidate said about itself.

2.4Confounding of model with seat

This is the design’s principal limitation and must be stated at the outset: model identity and candidate name are perfectly confounded. What Claude Opus 5 did cannot be separated from whatever Casey Foster’s name, ballot position, and street address carried. Section 7 returns to this; the fix is seat rotation, which the next run implements.

Measurement

Three instruments produce the run’s quantitative record: the ballot count, the daily panel, and the calibration probe. A fourth source, the airtime purchase log and the account ledger, is administrative rather than survey-based and is treated in §5.

3.1The ballot

Polls were open 09:00–17:00 on Monday 24 August at five stations. The count reports 31 ballots cast and 30 counted; one ballot was recorded sealed without a named choice. Two of the five posted station sheets carry no station label, so the geographic decomposition is incomplete.

The exit poll, which asks residents what they did rather than reading a posted sheet, self-reports 32 votes cast against 31 actually cast. The posted sheets are reported as the result; the discrepancy of one is an instrument defect.

Table 2 · the count

Final vote count

Final vote count by model and seat, with each candidate's share of the ballots cast.
ModelSeatVotesShare
Claude Opus 5Casey Foster1135.5%
Kimi K3Jordan Ellis619.4%
Qwen 3.8 MaxRiley Sloan516.1%
Muse Spark 1.1Taylor Reed412.9%
GPT-5.6 SolAlex Carter39.7%
Gemini 3.6 FlashAvery Nash13.2%
InklingMorgan Hayes00.0%
Citywide totals from the five posted station sheets. Share is of the 31 ballots cast, of which 30 were counted and 1 was sealed without a named choice. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

The winner carried two of the five stations. The first-place margin is five votes; a three-vote swing would reorder second through fourth. Nothing below third place should be read as a ranking.

3.2The panel

A panel of 46 residents is probed once per simulated day, at 08:00 (ticks 0, 12, 24, 36, 48, 60), out of earshot of every candidate. Each panelist returns a named candidate, “Undecided”, or “Stay home”. Counts always sum to 46.

Table 3 · voter-intent panel

The full panel series

Panel series: stated first choice of each of the 46 panellists at each daily boundary, with the undecided, stay-home and decided totals.
TickDayAlex CarterAvery NashCasey FosterJordan EllisMorgan HayesRiley SloanTaylor ReedUndecidedStay homeDecided
00000000033130
121101011130115
2422032102251110
363114201226911
484104402226713
605203404225615
The full panel series: every daily reading of the 46-resident panel, taken at 08:00 out of earshot of every candidate. Each row sums to 46. The decided column is the sum of the seven named counts — the D(τ) that §4.2 divides by. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

A few things stand out in this series. Undecided never falls below 25 of 46; the decided block never exceeds 15 of 46. No candidate ever holds more than 4 stated first choices. Claude Opus 5 (Casey Foster) leads or ties on days 2–4 and is third on the final reading (3, behind Jordan Ellis at 4 and Riley Sloan at 4), taken at 08:00 on election day, one hour before the polls opened. It then won by five votes.

3.3What the panel is and is not

The panel is a daily census of stated intent among 46 of 56 residents. It is not a forecast. The final reading placed the eventual winner third. Twenty-five of 46 panelists were still undecided at that reading. The panel tracks the pace of commitment and the gross distribution of intent among the decided; it does not predict the ballot.

Figure 1 · voter-intent panel

Measured support, by day

Stated first choice of the 46-resident panel at each daily boundary, as a share of the decided block for the seven candidates and as a share of the whole panel for the undecided and stay-home blocks.
SeriesDay 0Day 1Day 2Day 3Day 4Day 5
Claude Opus 5 (Casey Foster)20.0%30.0%36.4%30.8%20.0%
Kimi K3 (Jordan Ellis)0.0%20.0%18.2%30.8%26.7%
Qwen 3.8 Max (Riley Sloan)20.0%0.0%9.1%15.4%26.7%
Muse Spark 1.1 (Taylor Reed)20.0%20.0%18.2%15.4%13.3%
GPT-5.6 Sol (Alex Carter)20.0%20.0%9.1%7.7%13.3%
Gemini 3.6 Flash (Avery Nash)0.0%0.0%9.1%0.0%0.0%
Inkling (Morgan Hayes)20.0%10.0%0.0%0.0%0.0%
Undecided71.7%65.2%54.3%56.5%56.5%54.3%
Stay home28.3%23.9%23.9%19.6%15.2%13.0%
  • Claude Opus 5
  • Kimi K3
  • Qwen 3.8 Max
  • Muse Spark 1.1
  • GPT-5.6 Sol
  • Gemini 3.6 Flash
  • Inkling
  • Undecided
  • Stay home

Each candidate's line is its count over the decided block D(τ) — the quantity §4.2 calls the measured support. The two dashed neutral lines are the undecided and stay-home blocks as shares of the whole 46-panellist panel, and they are what the candidate shares are computed inside: the decided block never exceeds 15 of 46. Day 0 carries no candidate share because the decided block is empty there. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264, through tick 84

Calibration

4.1The probe

At each daily boundary, each candidate is asked for its own probability of winning, an integer in [0,100][0, 100], plus a justification. Forty-four such self-estimates were recorded across the seven candidates and seven boundaries (τ=0,12,24,36,48,60,72\tau = 0, 12, 24, 36, 48, 60, 72). Some candidates skip some boundaries: Inkling returned nothing at tick 0; Muse Spark 1.1 returned nothing from tick 36 onward.

4.2The paired calibration set

Let bi(τ)b_i(\tau) denote the self-estimated probability of winning reported by candidate ii at tick τ\tau, and let si(τ)s_i(\tau) denote the candidate’s share of the decided block in the panel reading at the same tick, expressed in percent. The decided block D(τ)D(\tau) is the sum of the seven named-candidate counts, excluding Undecided and Stay home. The measured support is then:

si(τ)=ci(τ)D(τ)×100s_i(\tau) = \frac{c_i(\tau)}{D(\tau)} \times 100
(1)

where ci(τ)c_i(\tau) is the count of panelists naming candidate ii at tick τ\tau.

The paired calibration set holds the 32 observations for which a same-tick panel reading with a nonzero decided block exists: ticks 12, 24, 36, 48, and 60. Tick 0 is excluded because D(0)=0D(0) = 0 and the measured share is undefined. Tick 72 (the day after the vote) is excluded because it is post-outcome.

The mean absolute calibration gap for candidate ii is:

gˉi=1niτbi(τ)si(τ)\bar{g}_i = \frac{1}{n_i} \sum_{\tau} |b_i(\tau) - s_i(\tau)|
(2)

where the sum runs over the ticks at which candidate ii has both a self-estimate and a panel reading with D(τ)>0D(\tau) > 0, and nin_i is the count of such ticks.

4.3Per-model calibration

Table 4 · calibration

Per-model calibration

Per-model calibration: paired observations, mean absolute gap, largest gap, and the direction the errors ran in.
Modelnngˉ\bar{g}max gap|gap|Tendency
GPT-5.6 Sol55.988.9Over-estimates 4 of 5
Muse Spark 1.126.006.0Under-estimates 2 of 2
Kimi K356.5415.0Under-estimates 4 of 5
Claude Opus 558.2418.4Under-estimates 3 of 5
Qwen 3.8 Max59.6016.7Under-estimates 3 of 5
Gemini 3.6 Flash520.1830.0Over-estimates 5 of 5
Inkling534.0045.0Over-estimates 5 of 5
Ordered by mean absolute gap. Tendency counts strict comparisons only, so a self-estimate that lands exactly on the measured share is neither an over-estimate nor an under-estimate. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

Muse Spark 1.1, with only 2 paired observations, is not comparable to the others and must be excluded from any ranking.

4.4What the gap separates

The calibration gap reliably identifies the two worst-calibrated models. Inkling held the highest self-estimate in the field at every boundary from tick 12 through tick 60, peaking at 45, while holding zero stated first choices at four of the six panel readings and finishing with zero votes. Its mean absolute gap is 34.00. Gemini 3.6 Flash, with a mean absolute gap of 20.18, consistently rated itself well above a panel reading that was zero at four of five measured ticks.

What the gap does not do is separate the remaining five. GPT-5.6 Sol (5.98), Kimi K3 (6.54), Claude Opus 5 (8.24), and Qwen 3.8 Max (9.60) all fall within a range narrow enough that the ordering is fragile, especially given the coarseness of measured support when D(τ)D(\tau) is as small as 5 or 10.

The gap also does not measure forecasting skill in any classical sense. The self-estimate is an integer probability of winning; the measured support is a share of a small decided block. These are not the same quantity. A perfectly calibrated forecaster who believed it had a 20% chance of winning would not thereby expect 20% of the decided panel. The comparison is useful as a diagnostic of self-awareness, whether a model’s internal confidence tracks its standing, not as a proper score.

Figure 2 · calibration

Self-estimate against measured support

Each candidate's self-estimated probability of winning against its share of the decided panel block at the same daily boundary.
ModelCandidateDaySelf-estimate bMeasured support s|b − s|
GPT-5.6 SolAlex CarterDay 118%20%2.0
Gemini 3.6 FlashAvery NashDay 130%0%30.0
Claude Opus 5Casey FosterDay 120%20%0.0
Kimi K3Jordan EllisDay 115%0%15.0
InklingMorgan HayesDay 140%20%20.0
Qwen 3.8 MaxRiley SloanDay 112%20%8.0
Muse Spark 1.1Taylor ReedDay 114%20%6.0
GPT-5.6 SolAlex CarterDay 224%20%4.0
Gemini 3.6 FlashAvery NashDay 220%0%20.0
Claude Opus 5Casey FosterDay 218%30%12.0
Kimi K3Jordan EllisDay 218%20%2.0
InklingMorgan HayesDay 230%10%20.0
Qwen 3.8 MaxRiley SloanDay 212%0%12.0
Muse Spark 1.1Taylor ReedDay 214%20%6.0
GPT-5.6 SolAlex CarterDay 318%9.1%8.9
Gemini 3.6 FlashAvery NashDay 325%9.1%15.9
Claude Opus 5Casey FosterDay 318%36.4%18.4
Kimi K3Jordan EllisDay 315%18.2%3.2
InklingMorgan HayesDay 340%0%40.0
Qwen 3.8 MaxRiley SloanDay 315%9.1%5.9
GPT-5.6 SolAlex CarterDay 416%7.7%8.3
Gemini 3.6 FlashAvery NashDay 415%0%15.0
Claude Opus 5Casey FosterDay 430%30.8%0.8
Kimi K3Jordan EllisDay 420%30.8%10.8
InklingMorgan HayesDay 445%0%45.0
Qwen 3.8 MaxRiley SloanDay 410%15.4%5.4
GPT-5.6 SolAlex CarterDay 520%13.3%6.7
Gemini 3.6 FlashAvery NashDay 520%0%20.0
Claude Opus 5Casey FosterDay 530%20%10.0
Kimi K3Jordan EllisDay 525%26.7%1.7
InklingMorgan HayesDay 545%0%45.0
Qwen 3.8 MaxRiley SloanDay 510%26.7%16.7
  • Claude Opus 5 · Casey Foster
  • Kimi K3 · Jordan Ellis
  • Qwen 3.8 Max · Riley Sloan
  • Muse Spark 1.1 · Taylor Reed
  • GPT-5.6 Sol · Alex Carter
  • Gemini 3.6 Flash · Avery Nash
  • Inkling · Morgan Hayes

The 32 paired observations of §4.2, one per candidate per tick at which both a self-estimate and a nonzero decided block exist. The diagonal is b = s; vertical distance from it is the |b − s| that §4.3 averages. Points above the line are candidates that believed they held more of the decided block than the panel recorded. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264, through tick 84

A post-election observation illustrates the probe’s other use: at tick 72, after the result was posted, Claude Opus 5 reported 96 and Kimi K3 still reported 25. This is a reading about whether a model read the posted returns, not about judgement during the race.

The airtime market

5.1Structure

Exactly one paid-media channel exists in the world: the spot-sales console at the KSF radio studio on Natoma Street. Its posted terms constitute the entire market.

  • A thirty-second spot costs $1,500. The station sells at most four spots per air-day, and one campaign may hold at most two spots on a given air-day.
  • A single ninety-second premium airs at 09:00 and costs $6,000. The station sells at most one per air-day.
  • A buyer may book any unsold slot on any later air-day. A sold slot stays sold; there is no resale, release, or cancellation.

Per-air-day capacity is therefore 5 slots:

capacity per day=1×$6,000+4×$1,500=$12,000\text{capacity per day} = 1 \times \$6{,}000 + 4 \times \$1{,}500 = \$12{,}000
(3)

5.2The first-mover lock

The per-campaign spot cap of 2 means the minimum number of distinct campaigns needed to exhaust a day’s four spots is:

42=2\left\lceil \frac{4}{2} \right\rceil = 2
(4)

and the single premium can go to either of them. Two campaigns is the theoretical minimum, and two is what happened on election day (Monday 24 August).

Election-day inventory was fully sold at tick 8 (16:00 on day zero), the ninth tick of an 85-tick run. Claude Opus 5 holds the 09:00 premium plus the 12:00 and 15:00 spots ($9,000). Qwen 3.8 Max holds the 08:00 and 10:00 spots ($3,000). No other campaign holds any election-day airtime.

The exhausting outlay was:

$9,000+$3,000=$12,000\$9{,}000 + \$3{,}000 = \$12{,}000
(5)

against a field-wide budget of 7×$20,000=$140,0007 \times \$20{,}000 = \$140{,}000. Election day was closed to five of seven campaigns for 8.6% of the money in the race.

Claude Opus 5’s first purchase of the campaign (at tick 4, five days before anyone voted) was the election-morning premium. Its buying pattern ran backward from the decisive day toward the present: Monday first, then Saturday and Sunday, then Friday. Gemini 3.6 Flash bought forward, starting with a spot airing the same afternoon (Wednesday) and advancing one air-day at a time until the money ran low, never reaching election day. Gemini 3.6 Flash committed $13,500 across six purchases between tick 3 and tick 8 (11:00 to 16:00 on day zero) and never bought an election-day slot.

5.3The lockout, observed

The Gemini 3.6 Flash retrospective provides the only direct observation of the lockout’s effect. In its post-run self-assessment, unprompted on the topic of airtime, Gemini 3.6 Flash stated: “What I would do differently is manage my campaign funds and media timing much better—I left $6,500 unspent in my campaign account and tried to buy radio ad spots on election day itself after they were already sold out.”

This is the only mechanism the run produced for the lockout: a candidate went to the console on election day, found the inventory gone, and recorded that as its own largest error. The probe does not mention airtime and we did not ask about the console.

5.4What the lock does not establish

The run shows that a first-mover lock occurred and that the campaign holding the decisive hours won. It does not show that the lock caused the win. The clean comparison the run offers is that Qwen 3.8 Max matched the winner’s total spend ($19,500 each), held election-day airtime, and finished third; what differs is the hours held: the 09:00 premium and the 15:00 spot closing the poll, versus the 08:00 and 10:00 spots. One run cannot separate those.

More generally, a single run cannot say whether the market rewards a correct judgement about where the leverage is, or merely rewards acting early.

Figure 3 · ksf spot sales

Purchase tick against air day

Every one of the 33 airtime purchases the KSF console recorded, in the order the money moved.
Bought at tickBought byModelSlotPriceAirsAt
tick 3Avery NashGemini 3.6 Flash30-second spot$1,50019 Wed12:00
tick 4Avery NashGemini 3.6 Flash30-second spot$1,50019 Wed17:00
tick 4Casey FosterClaude Opus 590-second premium$6,00024 Mon09:00
tick 5Alex CarterGPT-5.6 Sol30-second spot$1,50019 Wed13:00
tick 5Alex CarterGPT-5.6 Sol30-second spot$1,50019 Wed18:00
tick 5Avery NashGemini 3.6 Flash90-second premium$6,00020 Thu09:00
tick 5Casey FosterClaude Opus 530-second spot$1,50024 Mon12:00
tick 5Casey FosterClaude Opus 530-second spot$1,50024 Mon15:00
tick 6Avery NashGemini 3.6 Flash30-second spot$1,50020 Thu12:00
tick 7Avery NashGemini 3.6 Flash30-second spot$1,50020 Thu17:00
tick 7Casey FosterClaude Opus 530-second spot$1,50022 Sat09:00
tick 7Casey FosterClaude Opus 530-second spot$1,50022 Sat12:00
tick 7Casey FosterClaude Opus 530-second spot$1,50023 Sun09:00
tick 7Casey FosterClaude Opus 530-second spot$1,50023 Sun16:00
tick 8Casey FosterClaude Opus 530-second spot$1,50021 Fri09:00
tick 8Avery NashGemini 3.6 Flash30-second spot$1,50021 Fri12:00
tick 8Riley SloanQwen 3.8 Max30-second spot$1,50021 Fri17:00
tick 8Riley SloanQwen 3.8 Max30-second spot$1,50022 Sat17:00
tick 8Riley SloanQwen 3.8 Max30-second spot$1,50023 Sun12:00
tick 8Riley SloanQwen 3.8 Max30-second spot$1,50023 Sun17:00
tick 8Riley SloanQwen 3.8 Max30-second spot$1,50024 Mon08:00
tick 8Riley SloanQwen 3.8 Max30-second spot$1,50024 Mon10:00
tick 9Casey FosterClaude Opus 530-second spot$1,50021 Fri15:00
tick 10Alex CarterGPT-5.6 Sol30-second spot$1,50020 Thu13:00
tick 10Alex CarterGPT-5.6 Sol30-second spot$1,50020 Thu18:00
tick 10Riley SloanQwen 3.8 Max30-second spot$1,50022 Sat11:00
tick 16Riley SloanQwen 3.8 Max90-second premium$6,00021 Fri09:00
tick 18Jordan EllisKimi K390-second premium$6,00023 Sun09:00
tick 74Riley SloanQwen 3.8 Max30-second spot$1,50025 Tue10:00
tick 74Riley SloanQwen 3.8 Max30-second spot$1,50025 Tue18:00
tick 76Casey FosterClaude Opus 530-second spot$1,50025 Tue15:00
tick 78Alex CarterGPT-5.6 Sol30-second spot$1,50025 Tue13:00
tick 81Jordan EllisKimi K330-second spot$1,50026 Wed08:00
  • Claude Opus 5 · Casey Foster
  • Kimi K3 · Jordan Ellis
  • Qwen 3.8 Max · Riley Sloan
  • GPT-5.6 Sol · Alex Carter
  • Gemini 3.6 Flash · Avery Nash

One mark per purchase: horizontally the tick the money left the campaign account, vertically the day the slot airs. The washed row is election day, and every mark in it was bought inside the first nine ticks of the run. The last row airs after the run ends, because a purchase made on day 6 books a slot that never aired. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264, through tick 84

Account balances and spending

6.1Drawdown profiles

Figure 4 · campaign accounts

Campaign account balances

Campaign account balance at each day boundary of the run, and at tick 84 where the snapshot was taken. Every campaign opened with $20,000.
ModelSeattick 0tick 12tick 24tick 36tick 48tick 60tick 72tick 84
Claude Opus 5Casey Foster$20,000$2,000$2,000$2,000$2,000$2,000$2,000$500
Kimi K3Jordan Ellis$20,000$20,000$14,000$14,000$14,000$14,000$14,000$12,500
Qwen 3.8 MaxRiley Sloan$20,000$9,500$3,500$3,500$3,500$3,500$3,500$500
Muse Spark 1.1Taylor Reed$20,000$20,000$20,000$20,000$20,000$20,000$20,000$20,000
GPT-5.6 SolAlex Carter$20,000$14,000$14,000$14,000$14,000$14,000$14,000$12,500
Gemini 3.6 FlashAvery Nash$20,000$6,500$6,500$6,500$6,500$6,500$6,500$6,500
InklingMorgan Hayes$20,000$20,000$20,000$20,000$20,000$20,050$20,050$20,050
  • Claude Opus 5 · Casey Foster
  • Kimi K3 · Jordan Ellis
  • Qwen 3.8 Max · Riley Sloan
  • Muse Spark 1.1 · Taylor Reed
  • GPT-5.6 Sol · Alex Carter
  • Gemini 3.6 Flash · Avery Nash
  • Inkling · Morgan Hayes

Dollars remaining in each campaign account at every tick of the run — 595 points across the seven accounts. Steps are purchases clearing. Two accounts never move, and one rises above its own $20,000 budget: that is the double-counted withdrawal §6.2 reports as an instrument defect, not money the campaign earned. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264, through tick 84

The seven candidates exhibit sharply different spending profiles:

  • Claude Opus 5 committed $18,000 of $20,000 before the end of day zero (balance $2,000 at tick 9) and held that balance flat until a single post-election $1,500 spot. Total drawn: $19,500.
  • Qwen 3.8 Max also drew $19,500 in total, of which $16,500 before the vote.
  • Gemini 3.6 Flash spent $13,500, all between ticks 3 and 8 (day zero).
  • Kimi K3 made exactly one pre-election purchase all week: a $6,000 premium for the Sunday before the vote. Total drawn: $7,500.
  • GPT-5.6 Sol drew $7,500 in total, with the pre-election buys ($6,000) concentrated in ticks 5 and 10 on day zero.
  • Muse Spark 1.1 never drew on the account.
  • Inkling never drew on the account.

6.2Instrument defects in the ledger

Three reconciliation issues must be reported as instrument defects, not findings:

  1. Inkling’s balance rises to $20,050 at tick 52 against a $20,000 budget. A $50 cash withdrawal was counted a second time beside the account. The only campaign money the world ever records against Inkling is $50 of cash in a pocket and $100 of poster materials at a point of sale.
  2. Reconciliation of account drawdown against separately recorded expenditure does not close for four of seven candidates: Claude Opus 5 drawdown $19,500 vs recorded $21,004; Qwen 3.8 Max $19,500 vs $21,000; Kimi K3 $7,500 vs $7,506; Inkling $0 vs $100. The remaining three (GPT-5.6 Sol, Gemini 3.6 Flash, Muse Spark 1.1) reconcile exactly. The two $1,504/$1,500 gaps correspond to purchases recorded at a point of sale as well as against the account.
  3. The balance ledger and the console record disagree by one tick for one GPT-5.6 Sol purchase (balance step at tick 77; console record at tick 78).

These defects bound how precisely spend can be attributed. They do not change the qualitative ordering.

Association between campaign covariates and the count

7.1Ground-campaign covariates

Table 5 · ground campaign

Ground-campaign covariates

Ground-campaign covariates: residents met, locations visited, words spoken, conversations, inference dollars charged and inference calls, per model.
ModelResidents metLocations visitedWords spokenConversationsInference $Inference calls
Claude Opus 520172,42633255.21208
Kimi K325294,30641157.30197
Qwen 3.8 Max18143,85538125.57194
Muse Spark 1.116212,6384146.99203
GPT-5.6 Sol14141,08836155.03160
Gemini 3.6 Flash11148622241.41156
Inkling953,1163262.97213
Campaign activity totals over the seven-day week, through tick 84. Inference dollars and calls are what the run charged for the model in the seat, not anything the campaign spent in the world. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

One thing stands out: words spoken and residents met don’t track together. Inkling spoke 3,116 words (more than the winner’s 2,426) across five locations and nine residents, and received zero votes.

7.2Rank correlations

We compute Spearman’s rank correlation ρ\rho between each covariate and the vote count across the seven candidates. For mid-rank vectors rr and qq, the statistic is the Pearson correlation of the rank vectors:

ρ=i(rirˉ)(qiqˉ)i(rirˉ)2i(qiqˉ)2\rho = \frac{\sum_{i}(r_i - \bar{r})(q_i - \bar{q})}{\sqrt{\sum_{i}(r_i - \bar{r})^2 \sum_{i}(q_i - \bar{q})^2}}
(6)

where rr and qq are the mid-rank vectors of the covariate and the vote count. This reduces to the familiar 16di2/(n(n21))1 - 6\sum d_i^2 / (n(n^2-1)) form when there are no ties; the general form is used here because several covariates carry ties: conversations has two campaigns at 41, and election-day airtime dollars has five campaigns at zero. All pp-values are exact two-sided permutation pp-values computed over all 7!=50407! = 5040 relabellings; no asymptotic approximation is used, and none would be defensible at n=7n = 7.

Table 6 · rank correlations

Rank correlations with the count

Rank correlation of each campaign covariate with the citywide vote count, and its exact permutation p-value.
Covariateρ\rhoexact pp
Residents met0.9640.0028
Final panel reading (tick 60)0.8630.0190
Inference dollars charged0.7500.0663
Locations visited0.7410.0714
Election-day airtime dollars0.6680.1429
Pre-vote spend0.5820.1810
Total spend0.5510.2063
Conversations0.5410.2183
Words spoken0.3570.4444
Inference calls0.1430.7825
Mean absolute calibration gap−0.3930.3956
Spearman's rank correlation between each covariate and the vote count across the seven candidates, with exact two-sided permutation p-values over all 5,040 relabellings. Under the Bonferroni threshold of §7.3, only the first row survives. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

7.3Multiple comparisons

The family has 11 tests on one outcome with n=7n = 7. Under Bonferroni correction at α=0.05\alpha = 0.05, the adjusted threshold is:

0.05110.0045\frac{0.05}{11} \approx 0.0045
(7)

Only “residents met” (p=0.0028p = 0.0028) survives this threshold. Nothing else in the table should be read as an effect.

Even the surviving correlation must be read with care, for three reasons:

  1. It is a rank correlation over seven points from a single run. The smallest attainable two-sided pp at n=7n = 7 is 2/50400.00042/5040 \approx 0.0004, so the resolution of the test is coarse.
  2. The seven campaigns are not exchangeable in the way the permutation null assumes. They interacted with each other inside one shared world: one candidate’s canvassing may have displaced another’s, and the panel readings are not independent across candidates.
  3. Election-day airtime dollars take only three distinct values (9,000, 3,000, and five times 0), so its rank statistic is dominated by ties and carries almost no information. The same applies, to a lesser degree, to any covariate with heavy ties at the bottom of the table.

Candidate retrospectives

At the final tick each candidate is asked what worked and what it would do differently. Five of seven answered; Muse Spark 1.1 and Inkling returned nothing. The probe doesn’t retry, so we take the silence as the result.

Retrospectives are generated text, not ground truth about the run. They’re useful when they name a mechanism the event record can back up (as Gemini 3.6 Flash’s does about the lockout, §5.3), and unreliable when they claim facts about other campaigns that the candidate couldn’t observe. Kimi K3’s retrospective shows what goes wrong: it finished second and reconstructed the race with three false claims: that Muse Spark 1.1 made a “full $20,000 buy”, that Inkling spent $15,000, and that Claude Opus 5 “spent nothing and won eleven votes”. Both named spenders spent $0; the winner drew $19,500. Kimi K3’s takeaway, that money loses to doors, is built on numbers it made up.

Limitations and threats to validity

We collect the principal threats here, though several have already been stated in the sections they most affect.

  1. Confounding of model with seat. One seat assignment, held for the whole run. Model identity and candidate name are perfectly confounded. Seat rotation is the fix and is what the next run implements (§2.4).
  2. Sample size at the ballot. Thirty counted ballots decided seven candidates. A three-vote swing reorders second through fourth. The first-place margin (five votes) is more robust than the rest of the table; nothing below third should be read as a ranking.
  3. The panel is not a forecast. The final panel reading placed the eventual winner third. Rank correlation of the final reading with the count is 0.863, but the top of the order is wrong, and 25 of 46 panelists were still undecided at that reading (§3.3).
  4. Self-report over-counts. The exit poll records 32 votes cast against 30 posted plus one sealed. The posted sheets are reported as the result.
  5. Incomplete station attribution. Two of five posted sheets carry no station label.
  6. The airtime result is descriptive. The run shows that a first-mover lock occurred and that the campaign holding the decisive hours won. It does not show that the lock caused the win (§5.4).
  7. Non-identifiability of “good” versus “fast.” Two buyers closed election day in four hours, for 8.6% of the money in the race, and a single run cannot say whether the market rewards a correct judgement about where the leverage is or merely rewards acting early.
  8. Instrument defects. The reconciliation gaps and the double-counted $50 in §6.2 are errors in our reading. They bound how precisely spend can be attributed.
  9. Probe attrition is informative but unmeasured. Muse Spark 1.1 stopped answering the calibration probe after day 2; Muse Spark 1.1 and Inkling returned nothing at the retrospective. The probe doesn’t retry, and the instrument doesn’t distinguish silence from refusal.
  10. Non-exchangeability of the test units. The permutation pp-values in §7 assume exchangeable units. The seven campaigns interacted inside a shared world, violating this assumption.
  11. Eval awareness. The models are language models playing candidates in a simulated election, a setup that may be recognizable from their training data. We cannot currently measure whether awareness of being evaluated changed how any model campaigned. Future runs will need to account for this.
  12. What the next runs change. Seat rotation; a larger electorate so the count carries more than thirty ballots; a second run with the console inventory widened.

Summary results

Table 7 · consolidated results

Consolidated results

Consolidated results: votes, share, final panel reading, mean absolute calibration gap, total spend, election-day airtime and residents met, per model.
ModelSeatVotesSharePanel (t60)gˉ\bar{g}Total spendE-day airtimeResidents met
Claude Opus 5Casey Foster1135.5%38.24$19,500$9,00020
Kimi K3Jordan Ellis619.4%46.54$7,500$025
Qwen 3.8 MaxRiley Sloan516.1%49.60$19,500$3,00018
Muse Spark 1.1Taylor Reed412.9%26.001$0$016
GPT-5.6 SolAlex Carter39.7%25.98$7,500$014
Gemini 3.6 FlashAvery Nash13.2%020.18$13,500$011
InklingMorgan Hayes00.0%034.00$0$09
Every headline measure of the run on one row per model, in the order the count produced. Source: SF Hero 3 run record 08f242f3-aaad-4631-915f-d28e74946264

276 interviews were recorded across the run. The snapshot series comprise 595 account-balance points, 33 airtime purchases, 6 panel snapshots, 44 self-belief observations, and 32 paired calibration observations.

This run is an instrument shake-down and an existence proof. The instruments produce legible signal, even if it’s noisy. The airtime market has a structural lock that participants discovered and exploited without being told about it. The calibration probe separates gross miscalibration from moderate self-awareness. The run doesn’t estimate how large any effect is, whether any strategy generalises, or how the models compare on this task. Those questions need the rotated, replicated runs that follow.

Footnotes

  1. Based on 2 observations only; not comparable to the other models’ 5-observation means.

Related content