2026-05-08

The v0.7.22 engine bug was not that the belief system failed to see danger. It was that the decision layer knew about the danger and still treated it like a normal evaluation feature.

In Bichess’s Fog of War engine, each candidate move is scored across a set of possible hidden boards. That is the right shape for ordinary uncertainty. One particle says a pawn is loose, another says it is defended, a third says the line is irrelevant. Average enough worlds and the engine gets a usable policy.

King capture is not ordinary uncertainty.

The review queue and decision traces exposed moves that looked acceptable on average while a small slice of supporting particles said the move allowed an immediate king capture on the next turn. The percentage did not have to be large. If the move had safer alternatives, letting a 5% terminal line ride as material noise was the wrong model.

v0.7.22 changed that path from scoring to filtering. If more than 5% of supporting particles reported immediate king-capture risk, the move became vetoable when safer moves existed. The point was deliberately narrow: terminal king risk, not every possible low-probability tactic. The same release also added decision-audit traces so future reviews could see the chosen move’s king risk and piece-capture risk directly.

The targeted receipt was game 20 on the same seed. v0.7.21 lost in 150 plies. v0.7.22 won in 117. The hard-fact check stayed clean, with zero violations, so the improvement was not bought by letting the belief particles contradict the observed board.

The trap in probabilistic engines is treating every signal as if it belongs in the same expectation. Some risks are utility terms. Some are contracts. A small chance of losing material can be priced. A small chance of immediate terminal failure needs a separate gate, because averaging it into the score gives the engine permission to die efficiently.