danieldeusing
visitor@danieldeusing:~/articles/ai-predictions-graded-quarterfinals

cat ~/articles/ai-predictions-graded-quarterfinals.mdx

Comunio World Cup 2026 · Part 7

Four of four: the AI's best round of the tournament — and the scoreboard came back empty

The quarterfinals, graded in public: my World Cup fantasy AI called 4 of 4 winners with 3 exact scores — its best round yet, one round after its worst. And when the grader ran, all four tips had silently vanished from the scoreboard: a second format bug, one layer below the fix for the first. Plus the metric that punished a perfect round, and a league lead that grew from 55 to 95.

Jul 16, 2026 · · ~18 min read #ai #agents #football

The last article ended on a specific bet: after the worst round of the tournament, the system had given itself permission to be loud again — and the quarterfinals would show whether a loud call could earn it.

Here’s the quarterfinal scorecard: four of four winners. Three of four exact scores. The average miss on the winning margin, which had just blown out to its worst value, fell to a quarter of a goal — the best it has ever been. The two loudest calls since the system capped its own confidence, at 65 and 66 percent, both landed on the exact scoreline. One round after 2 of 8, the same system, under the same public grading, produced the best round of its tournament.

And when the grader ran, the quarterfinal row on my scoreboard came back empty. Not wrong — empty. Four tips, silently dropped from verification, as if the round had never been predicted at all. The best round this system ever played nearly didn’t get graded at all, and the reason why is the most useful thing in this piece. Four games is a small sample and I’ll keep saying so — but a pipeline that loses your best work without raising its voice is not a small problem, at any sample size.

One clarification I make every round for new readers, because it changes how you should read everything below: nothing here is a model I trained. I take existing, off-the-shelf AI models and give them tools, context, and a job — then tighten the job description round after round. The learning you’re watching is written rules, not retraining; the models themselves never change.

The recap, in case you’re new here

The setup: a squad of AI agents — AI models that don’t just answer questions but use tools, look things up, and act on a task list, closer to interns with a job than to a chatbot — does the daily homework for my team in a fantasy World Cup league. Two kinds of homework, graded separately. The flashy kind: predicting how each game ends — winner, scoreline, and a confidence number, a weather-forecast-style percent for how sure it is. The quiet kind: predicting who actually walks onto the pitch, because in fantasy football a star on the bench earns you nothing. Reality grades both in public, and I write up the marks. This is the sixth graded round. The previous one was the disaster episode — 2 of 8, decomposed into three different kinds of wrong. This one is what happened after the fixes.

The quarterfinal scorecard, graded
The quarterfinals in the evaluated-predictions view (“Bewertete Prognosen”, filtered to “QF”): tip (“Tipp”) against final result (“Endergebnis”), green meaning exact. Morocco–France 0–2, Spain–Belgium 2–1 and Norway–England 1–2 were all called to the goal; only Argentina–Switzerland (tipped 1–0, finished 3–1 after extra time) missed the margin — its “Warum daneben” (why it missed) cell already carries the fatigue lesson the last section of this piece comes back to.

What the four tips looked like before kickoff

The round’s shape matters more than its score, so here are all four calls as they were locked, with the market price next to each. Betting odds are probabilities in disguise: when a bookmaker will only pay you one euro for every five you risk on France, the market is telling you France wins about five times out of six. Thousands of people with money at stake set those prices, which makes them the best free sanity check a forecaster can get — and that’s how I use them throughout this series.

Morocco–France, tipped 0–2 at 65. The market had France around 59 percent. An elite squad against a very good side without the same depth — the exact shape where the system’s new rulebook orders a wider winning margin and a confidence in the sixties, because elite teams don’t win these politely. Finished 0–2.

Spain–Belgium, tipped 2–1 at 66. Spain around 62 percent for the market, and Belgium carrying a tournament-ending injury to one of its key starters. Finished 2–1.

Norway–England, tipped 1–2 at 48. The market saw England at barely 51 percent — a genuine coin flip with a lean. The system said so in its number: 48 sits inside its coin-flip band, which runs 42 to 52, and a value there is the rulebook’s way of writing “this is a toss, with a lean” — not a claim that England was more likely to lose. Finished 1–2. A coin-flip call landing on the exact score is luck riding on honesty, and I’ll take it.

Argentina–Switzerland, tipped 1–0 at 50. The cautious one, and the only blemish — more on it below. Argentina won 3–1 after extra time. Winner right, margin wrong.

Three things about that list, before the bug. First: the spread is back. After the round where all eight tips huddled between 42 and 62 — the “bunching” failure, everything mumbled at the same volume — this round ran from 48 to 66: two loud calls on real favourites, two quiet ones on real coin flips, and reality agreed with the sorting. Second, the honesty note: those confidence numbers claim winners, not scorelines. The rulebook earns real credit for calling four winners and for ordering the wider margins on the two favourites — that part is process. Landing three exact scorelines on top of it is luck riding on that process, and the luck was the same kind on the loud calls as on Norway’s coin flip. Third: the system’s own postmortem — the written self-review it files after every round — still lodged a complaint, and it’s the opposite complaint from every earlier round. The France call, it argues, should have been louder — its rulebook allows up to 75 on an elite mismatch, a separate cap keyed to the class gap between squads, not the market-price trigger from the previous article, and it chose the bottom of the band. Being wrong only in the too-shy direction, twice, in a perfect round, is the nicest problem this series has ever logged. It is still logged as a problem, because calibration — how well the stated confidence matches how often you’re actually right — cuts both ways: too shy is miscalibrated just as surely as too sure.

The empty scoreboard

Now the part that kept the round interesting after the football was over.

The previous article’s biggest fix was what I called making the format check physics: after a self-contradicting tip cost two correct calls in the round of 16, the system got a hard validation gate — winner and scoreline must agree before a tip is allowed to persist. That gate ran on all four quarterfinal tips. All four passed. The gate worked exactly as written.

And all four tips still fell out of the grading, because of what they were written in. The scoreline is supposed to be stored as a short text value — “0-2”, the way you’d write it on paper. The predictor stored it as a structured list of two numbers instead: two separate boxes holding 0 and 2, rather than one label reading “0-2”. That same gate compared the winner against the two numbers and was satisfied — two numbers compare just fine, whatever container they arrive in. The grader, though — the strict script further down the pipeline that reads each stored tip and marks it against the real result — reads the scoreline by taking the label apart at the dash. Handed boxes instead of a label, it didn’t crash. It didn’t complain. It skipped the tip and moved on, four times, and the quarterfinal row of the public scoreboard came up empty.

Silent failure: the difference between a system that breaks loudly and one that breaks quietly is the difference between a fire alarm and a smoke detector with a dead battery. The alarm going off at 3am is annoying and gets fixed; the dead detector looks exactly like a working one — until the one day the difference matters. Software that hits bad input should scream and stop. Software that shrugs and skips is manufacturing dead detectors, because an empty result reads as “nothing to report” — and “nothing to report” rarely gets a second look.

The sequence deserves spelling out, because it’s a pattern worth recognizing. The last round’s bug was in how tips were written — so a gate was added at writing time. The gate checked that the record made sense. It did not check what the record was made of — the meaning passed, the container didn’t. Software people call that a type error: the right value in the wrong kind of box, and the gate had never been told the box mattered. And the grader, which had done its taking-apart on all ninety-five graded tips before this round without a single hiccup, had never been taught to say anything when the taking-apart fails — because it never had. Two components, each individually reasonable, and the failure lived exactly in the handoff between them — the one place neither component considers its job. If you run any pipeline where one system writes records and another reads them — orders, bookings, payroll exports — you have this handoff somewhere, and it’s exactly as unwatched as mine was.

The fix has two parts. The gate now checks the container as well as the contents: a scoreline must be text, in score format, home side first, or the tip is refused at the door — that’s the prevention. And the grading side got repaired live, across every script that touches these records, so the round could be graded at all. The rule I’m adding on top of both, for everything in this pipeline that reads records: a record that can’t be read stops the run with a name and a reason, instead of quietly thinning the sample. The gate blocks the bug I now know about; the scream is insurance for the one I haven’t imagined yet. One admission while I’m at it: I didn’t screenshot the empty scoreboard — the live repair happened before I thought to photograph the wreckage — so the citable artifact isn’t a dramatic empty table, it’s the bug’s own entry in the system’s postmortem, which you can read in the lessons table further down.

One more thing, because the previous article made a point of the opposite ruling, and the distinction matters here. In the round of 16, two tips with the right winner stayed graded wrong, and I let the grade stand — the records contradicted themselves, and a record that contradicts itself is wrong, whatever was meant. These four tips were different: winner and numbers agreed, unambiguously, in every one. The record was right and the reader was broken. So the reader was fixed and the round was graded, and the 4 of 4 above is the result. That’s the line I’ll hold for the rest of the series: a broken grader gets repaired and re-run; an ambiguous record stays wrong forever. One is fixing the ruler again. The other is arguing with it.

The metric that punished the perfect round

Here’s the round’s strangest number, and my favourite lesson in it.

This series has been chasing a target called confidence discrimination — the gap between how confident the system is on calls it gets right versus calls it gets wrong. Think of a doctor whose voice sounds exactly as hesitant about a harmless mole as about the thing that needs surgery: whatever their hit rate, their tone has stopped carrying information. A useful forecaster is loud when it’s right and quiet when it’s wrong, so a bigger gap is better, and the standing target is a gap of at least ten points. It went into the quarterfinals at 8.45.

The system then played a perfect round — four of four, with the confidence spread finally back — and the discrimination number fell, to 7.95.

Walk through why, because the arithmetic is doing something sneaky. The metric averages confidence over all correct calls, and separately over all wrong ones. The quarterfinals added four correct calls at 65, 66, 48 and 50 — and the two coin flips in that list, the honest 48 and 50, dragged the correct-pile average down. No wrong calls were added, so the wrong pile stayed put, and the gap shrank. Now run the what-if with one thing changed: had the system lost both coin flips — a 2-of-4 round instead of 4-of-4 — those same low numbers would have joined the wrong pile, pulled its average down, and the discrimination score would have gone up. The metric rewards losing your humble calls and punishes winning them.

That’s not a football problem, that’s a KPI-design problem — a KPI, key performance indicator, being any number a team steers by — and it’s worth stripping to its skeleton: I set a number to encourage a behaviour — “be loud only when you’re right” — and the number turned out to also punish a behaviour I want — “be humble on coin flips, and win them anyway when the coin lands your way.” The target stays for now, because with so few games left it has little steering power either way — but I’ve stopped reading it as a grade and started reading it as what it is: one lens, with a blind spot I can now name. The test I’d suggest for any metric you steer by — dashboards at work included — is exactly the one that exposed this: imagine the best round your system could possibly have, and check which direction the needle moves. If perfection makes the number worse, the number is measuring something other than what you hired it to measure.

The per-round scorecard across the tournament
The per-round view (“Pro Spieltag” = per round; rows sorted by name, not date): in tournament order, winners called correctly ran 46% → 75% → 71% → 73%, collapsed to 25% in the round of 16 — and the quarterfinals stand at 4 of 4, with 3 exact scores and a goal-difference error (“Tordiff. MAE”, the average miss on the winning margin) of 0.25, the best of the tournament. Below it, the system’s own lessons table — the second row is the two-layer format bug this piece is about. Four games; the sample-size warning applies to the good rounds too.

The blemish, and what it taught

Argentina–Switzerland deserves its own paragraphs, because the miss has a mechanism in it.

Switzerland is the kind of opponent the system now has a hard rule for: a side that meets every criterion of what the postmortems call the bus-park test — set up deep, concede possession, play for the draw and the penalty shootout. That posture is exactly what burned the system’s most expensive tip of the tournament, a 76-percent favourite knocked out on penalties, so the rule caps both the margin and the confidence: tip the favourite by a single goal, stay near fifty. The system followed it mechanically. 1–0 Argentina, at 50.

For ninety minutes the rule looked right — 1–1 at the whistle. Then extra time happened, and Switzerland stopped running. They had gone through a full extra-time-plus-penalties marathon in the previous round, and against a fresh Argentina the fatigue arrived on schedule: 3–1 after 120 minutes.

The refinement the postmortem wrote is the kind I like most, because it’s narrow and mechanical: the bus-park cap still governs the first ninety minutes — but when the bus-parking side is carrying an extra-time-and-penalties round in its legs, the final scoreline gets tipped a goal richer on each side, 2–1 instead of 1–0, at meaningfully higher confidence: the same one-goal margin, written by a rule that now expects the game to open up late. Fatigue is not a vibe; it’s on the match record of the previous round, checkable before kickoff.

The same fatigue signal showed up in the quiet half of the system, from the other direction. The who-starts model had another strong round — right on about 85 percent of 79 graded start-calls, second-best of the tournament — but its worst misses cluster tellingly: Switzerland’s winger, rated a near-certain starter, given five minutes off the bench by a coach managing exhausted legs. And one of Spain’s most celebrated midfielders, rated 90 to start, beginning the match on the bench — because from the quarterfinals on, coaches stop fielding “the regular eleven” and start building one eleven per opponent. Both misses became caps: a hard ceiling on start-probabilities for attackers whose team just played 120 minutes, and a rule that deep in the knockouts, no one gets rated a 90-plus certainty without a recent word from the coach. Keep that second one in mind — the semifinals are about to test it much harder.

The who-starts calibration across the tournament
The who-starts calibration (“Aufstellungs-Kalibrierung”): every confidence band against how often those players really started, each actual sourced from the public match record (the “en.wikipedia.org” links). Across the tournament the model lands about four calls in five, and this round ran above that line. The biggest-outliers list (“Größte Ausreißer”) underneath is where every expensive miss carries its written rule.

The league: the gap doubles

The league table is where both halves of the system — flashy and quiet — get added up in points, so here’s the round’s ledger.

First place, 526 points, ninety-five clear of second. The quarterfinals added a hundred points — not the biggest haul of my tournament, the round before added 134 — but the gap nearly doubled, from 55 to 95, because second place managed only sixty. In a fantasy knockout, the difference is what decides it, not your raw points — and the difference compounds when your squad keeps playing and the other squads’ players go home.

That’s also the round the squad got reshaped for the endgame. Fantasy value dies with elimination — a star on a knocked-out team earns nothing and sells for less every day — so the moves were brutal and simple: everyone from eliminated nations sold, and the money concentrated into teams still standing. The most instructive trade was paying 14.65 million for a French midfielder whose listed market value was 9.86 million — nearly five million over the sticker price, on purpose. Overpaying is rational arithmetic when knockout minutes are doubled and scarce: the question is never “what is he worth on the list,” it’s “what are guaranteed minutes on a semifinalist worth to me, at this point in the knockouts, against the alternative of holding cash that earns nothing.” Swap the nouns and it’s the call a business makes when it pays above list price for the proven supplier who can actually deliver this quarter — the premium isn’t waste, it’s the price of certainty inside a short window.

The league table after the quarterfinals
The table after the quarterfinals (rival names masked — they’re real people). First on points (“Punkte”: 526, ninety-five clear) and first on total worth (“Gesamtwert”). The lead has gone 5 → 55 → 95 across three knockout rounds.

Strip the football out

Three things from this round survive the noun-swap into any business system.

A fix is only done when the layer downstream of it has been tested too. The write-side gate passed records that the read-side couldn’t read; each component was fine and the system wasn’t. The unit of verification is the pipeline, not the patch — the day you tighten the invoice template is the day to also run one invoice all the way through to payment.

Silence is the most expensive failure mode. Wrong output gets caught, because someone disagrees with it. Missing output reads as “nothing happened” and gets believed. If a step in a pipeline can swallow bad input and produce a smaller, cleaner-looking result, it will eventually delete your best round — audit reports, monthly rollups, the nightly job that copies data between systems, all of them deserve the rule this round forced on my grader: fail loud or don’t run.

Before you steer by a metric, feed it a perfect day. My discrimination score went down because the system won the coin flips it had honestly labelled as coin flips. A KPI that punishes the behaviour you want quietly trains you, or your team, toward the wrong thing. Running “what would perfection do to this number” costs five minutes and would have caught this at design time.

The semifinal bracket the system faced next: France–Spain and England–Argentina, and both of its calls are already locked in. France–Spain, tipped as a 1–1 draw at 45 — two sides with clean-sheet streaks and a market that couldn’t pick a favourite. England–Argentina, England by 2–1 at 55, the slight favourite at the top edge of the coin-flip zone. No loud call in the pair, because by the market’s lights none was available: every side left standing is elite, and elite against elite is the coin-flip zone by definition. The next article grades both tips, and after a 4-of-4 round the most honest thing I can tell you is that the system itself expects to be wrong on roughly one of the two. That’s what the numbers 45 and 55 mean. Whether it holds — you’ll read it here, same scoreboard, same rules.