PunditBench changelog
Material events affecting scoring, data, or methodology are recorded here (C13/E-transparency).
2026-06-29
- New benchmark — a round-by-round ("live") track. By follower request, alongside the locked self-consistent bracket every model now also predicts the real knockout pairings of each round directly, as reality produces them. Scored like group matches (exact 3 / GD 2 / outcome 1, +1 correct advancer), kept separate from the headline leaderboard and surfaced as a "Round-by-round picks" section on each knockout match page. Stored in its own tree (
data/predictions-live/, raw logs indata/raw-live/) so the pre-kickoff locked predictions are untouched. Each round is hashed and tagged before its first kickoff (predictions-<stage>-live); the golden rule applies per round. See METHODOLOGY.md and OPS.md. - Real Round-of-32 bracket materialised (
data/fixtures/r32.json): group winners/runners-up resolved from the recorded results; the eight third-placed qualifiers (groups B, D, E, F, I, J, K, L) and their slots via FIFA Annexe C, cross-verified against the official published bracket. Locked-bracket advancement/matchup scoring begins paying out now. - First knockout result: match 73, South Africa 0–1 Canada (90' score; sources FIFA.com + ESPN; Canada advance).
- Round-by-round R32 picks locked: 38 of 40 models (tag
predictions-r32-live, sha2567bbc8359…), collected before the round's earliest remaining kickoff. Match 73 is excluded and labelled "not pre-registered" (it had already kicked off). Two models could not be reached this round — Llama 3 70B ("no endpoints") and Claude Fable 5 ("not available") both 404 on OpenRouter; raw attempts kept indata/raw-live/. They retain their locked-bracket entries and can rejoin a later live round if their endpoints return.
2026-06-22
- Site: "Prediction personality" added to each model page. Four style traits derived purely from the model's locked group-stage scorelines: goals per game, draw rate, a chalk-vs-contrarian index (mean agreement with the rest of the field on each match outcome), and favourite bias (how often it backs the underdog in matchups with a clear favourite). "Favourite" is defined endogenously — each team's mean predicted goal difference across the whole field is a "silicon power rating" (Brazil, Germany, Argentina, Spain top it; Curaçao and Haiti anchor it), with a ≥ 0.5-goal gap marking a clear favourite — so no external rankings enter the system. No effect on scoring, results, or the pre-registered predictions: these are read-only style metrics, derived at build from the existing locked data like everything else (new pure module
lib/personality.ts, covered bytests/personality.test.ts). Accuracy still lives entirely on the leaderboard.
2026-06-12
- Methodology page now embeds the verbatim group-stage prompt (generated from the
v1template and verified byte-identical to the published raw logs) plus the exact knockout-prompt deltas. Transparency only — no methodology change. - First result entered: match 1, Mexico 2–0 South Africa (90' score; sources ESPN + FOX Sports). All 40 models had backed Mexico; 26 hit the exact scoreline.
- Hourly results auto-sync added (
.github/workflows/results-sync.yml+scripts/sync-results.ts): ESPN's public scoreboard is polled hourly; finished group matches are entered automatically using the same canonical write asnpm run result(verified byte-identical on match 1), behind strict team-name + kickoff matching. Knockout results stay manual (--advances/--notejudgment). The sync never overwrites: a recorded result that disagrees with ESPN raises an alarm, and every run re-audits recorded scores. Scoring itself is unchanged — results.json remains the single derived-from input. - Site: "Today's matches" extended with a "Latest results" strip (finished matches from the last 48 h stay visible after the visitor's local midnight) and time-derived "In play" / "awaiting score" states between kickoff and the next sync deploy.
2026-06-11 (all before the opening kickoff, 19:00 UTC)
- Methodology v2 — self-consistent bracket simulation. Knockout predictions are no longer collected round-by-round against real pairings; instead every model's own group predictions determine its own bracket, which it predicted through to its own champion. All collected pre-kickoff. Scoring extended with bracket components (advancement, matchup hits, matched-pairing scorelines) — see METHODOLOGY.md.
- Third-place allocation: FIFA Annexe C lookup (495 combinations) parsed from the official regulations and machine-validated; used for all simulated brackets (
data/third-allocation.json, ALLOCATION-NOTES.md). - Roster expanded 18 → 34 → 33: 16 models added (live-catalog-verified); OLMo-3 removed — listed in the catalog but no provider serves it (HTTP 404 on every attempt, logged in raw/group).
- Validator relaxed (applies identically to all): entries for unlisted match numbers are now dropped with a logged warning instead of failing the response. Reason: Phi-4 Mini and LFM-2 predicted past the listed fixtures into the knockout bracket; rejecting that measures formatting, not football. All previously-passing models unaffected. Both models passed on rerun.
- Group-stage hashes: 18-model set
9a7d3581…408fbc(tagpredictions-group), expanded 33-model set4afa1910…d3d83d(tagpredictions-group-v2). Full-tournament hash tagged after simulation completes. - Final pre-kickoff roster cut (operator decision): 44 → 40. Four small models — Granite 4.1 8B, LFM-2 24B, Phi-4 Mini, Llama 3.2 1B — failed a fourth retry cycle with byte-identical errors and were removed from the ranked roster entirely rather than carried as zero/partial entries. Their raw attempts stay published in
data/raw/(the small-model capability floor remains documented in ROSTER-NOTES.md). Every ranked model now carries a complete tournament: 40 models, 19 vendors, 40/40 full brackets. Final hash taggedpredictions-full-tournament-v4. - Pre-kickoff retry round (user-requested): the five models without complete brackets each got a fresh attempt. Hunyuan A13B succeeded on rerouted serving (OpenRouter provider variance) and now carries a full bracket — 40/44 complete; Granite 4.1 (partial through R16), LFM-2, Phi-4 Mini and Llama 3.2 1B reproduced their failures exactly and are final per the failure policy. Updated full-tournament hash tagged
predictions-full-tournament-v3. Site copy corrected: failed simulations are stated as final, not "being collected". - Roster expanded 33 → 44 (still pre-kickoff): a legacy wing (GPT-3.5 Turbo, GPT-4, GPT-4o, Claude 3 Haiku, Llama 3 70B, Gemma 2 27B, Qwen 2.5 72B) and an oddball wing (WizardLM-2 8x22B, Hermes 3 405B, Hunyuan A13B, Llama 3.2 1B; Mercury 2 and LFM-2 retagged oddball). All candidates live-pinged before joining. Inflection dropped: both its endpoints return empty content (raw logs kept). Llama 3.2 1B failed the group-stage format in all attempts (stops near match 48) and stands as a disclosed zero entry. Final ranked roster: 44 models, 21 vendors. Updated full-tournament hash tagged
predictions-full-tournament-v2.
2026-06-10
- Project created. Methodology v1 fixed (see METHODOLOGY.md), scoring rules D1, prompt template v1.
- Fixture dataset built from Wikipedia (two independent extraction passes) and cross-verified against ESPN, Sky Sports, FOX Sports and roadtrips.com official match numbering; all 72 group fixtures agreed across sources.
- Roster of 18 models across 10 vendors verified against the live OpenRouter catalog (
data/roster.json).