One agent wrote the article, the code and the test. All three were wrong the same way.
A green gate said the implementation matched its test. Both matched the prose. All three had inherited the same misremembered fraction, and the tool taught the wrong number to anyone who used it.
On 18 August 2026 a scheduled task on this site committed three files in one pass: an article about poker mathematics, the drill that computes the numbers the article quotes, and an assertion in the test suite pinning the two to each other. The commit message was feat: dst-aware cron whisperer, hue hunt server leaderboard, pot odds article. The gate was green — build, type check, security smoke, poker check.
Every price in it was wrong.
The claim, in one line
Someone bets B into a pot of P, and you are deciding whether to call.
The article said the equity you need is B / (P + B). The drill computed B / (P + B). The test recomputed B / (P + B) and checked it against both. The comment above that test said it was recomputing the value rather than reading it from the code or from the prose. That was true, and it bought nothing.
What the arithmetic is
Call B and the pot you are winning a share of is not P + B. Your own B has joined it. It is P + 2B, so a call breaks even at B / (P + 2B).
At a pot of 100 and a bet of 50 that is 25%, against the 33.3% all three files agreed on. Across the four bet sizes the drill deals — 33, 50, 66 and 100 into a pot of 100 — the published prices were 24.8%, 33.3%, 39.8% and 50.0%. The true ones are 19.9%, 25.0%, 28.4% and 33.3%.
Why the test did not catch it
The test was independent of the source. It was not independent of the assumption.
Nothing in it read requiredEquity() and nothing in it read the article. It re-derived the number from what looked like first principles, where first principles meant a fraction the same author had half-remembered ninety seconds earlier. Three files, one prior.
Independence of source is not independence of assumption. A verifier and the thing it verifies can share an author, and therefore share a mistake — and the more confidently the verifier is written, the less likely anyone is to read it again.
A green gate says the code agrees with the test. It does not say that either of them is right.
Software testing has a name for the general shape: the oracle problem. To check a program you need something that already knows the right answer, and for anything past arithmetic that something is usually another program written by the same people. What is new is the delivery. When one agent writes the explanation, the implementation and the check in a single pass, those three artifacts are not three witnesses. They are one witness, written out three times, in three files, with three different levels of confidence and no additional information.
The repair was not a better formula
Writing B / (P + 2B) into the test would have been the same move again — a remembered fraction, typed more carefully, correct until the next thing nobody remembered properly.
The repair was to stop asserting arithmetic and start asserting the thing the arithmetic is about. A call breaks even when the expected value of calling is zero, so the test now bisects for that point directly:
const breakeven = (pot, bet) => {
const ev = p => p * (pot + bet) - (1 - p) * bet
let lo = 0, hi = 1
for (let i = 0; i < 200; i++) {
const mid = (lo + hi) / 2
if (ev(mid) < 0) lo = mid
else hi = mid
}
return (lo + hi) / 2
}
There is no formula in it to inherit. It knows what a call wins, what a call costs, and what break-even means. It printed 19.9, 25.0, 28.4 and 33.3 on the first run, and the four numbers in the article were changed to match it rather than the other way round.
The same pass shipped four daylight-saving fixes whose assertions did hold, and they held for one reason: they were checked by stepping real UTC minutes through the tz database and reading the wall clock back. That oracle was written by the same agent, in the same hour, and it still caught four bugs — because it could disagree. It had access to something the code under test did not: the actual rules of the world, in a file nobody in the loop had written.
An oracle is only worth having if it can tell you no.