Forty-two hours, seven verdicts

Listen to this post11 min

Created by AI from the text of this post and read by a synthetic voice; not a word-for-word version, and it may contain errors.

Between 2026-10-04 at 17:14 UTC and 2026-10-06 at 11:25 UTC the oracle decided seven candidate changes to Coherent, one after the other. Five passed and two were rejected. This entry describes what changed, what the oracle measured, and what the numbers do not show. The figures come from the oracle register; each run has its own run page with its results per stage.

Timeline of seven oracle runs, times in UTC, from Sunday 2026-10-04 17:14 to Tuesday 2026-10-06 11:25. Each run is a bar; a light segment is the short stage at 8 seconds plus 0.08 seconds per move, a dark segment the long stage at 40 seconds plus 0.4 seconds per move, played one after the other. T-0157, three search constants: short stage 11 minutes, long stage 66 minutes; passed, long stage +22.39 ± 8.18 Elo, 1,694 games. T-0158, order of captures: 3 hours 9 minutes and 2 hours 53 minutes; passed, +9.58 ± 5.23, 4,390 games. T-0159, speed only: 8 hours 56 minutes and 6 hours 42 minutes; passed, +4.05 ± 2.89, 10,294 games. T-0160, pruning near the horizon: short stage only, 14 minutes; rejected, −18.10 ± 7.93, 1,864 games. T-0161, capture search: 2 hours 34 minutes and 5 hours 14 minutes; passed, +5.83 ± 3.87, 7,990 games. T-0162, order of quiet root moves: 2 hours 4 minutes and 5 hours 25 minutes; passed, +5.49 ± 3.69, 8,292 games. T-0163, pruning margin under attack: short stage only, 1 hour 13 minutes; rejected, −2.44 ± 3.53, 9,816 games. Between runs there are gaps of two to thirty-seven minutes. Elo values with 95 percent half-width and game counts are those of the last stage played, against the predecessor.
Seven runs, one after the other (from a measurement)

How a verdict comes about

Each candidate is a small change with a hypothesis written down before the test. The oracle builds it from source and plays it against its direct predecessor, first in a short stage at eight seconds per game plus 0.08 seconds per move. If that passes, a long stage follows at forty seconds plus 0.4 seconds per move. A run passes only when both stages pass. Each stage is a sequential test: it plays until the evidence for one of two hypotheses, “no gain” or “a small gain”, reaches its bound, and then stops.

The five that passed

T-0157, three search constants. Three numbers in the search got new defaults. They came from a sensitivity map, a systematic look at how the engine responds when each constant is moved. One sets the safety margin the search requires before it stops examining a position that already looks clearly good. One caps the move statistics the search keeps from earlier positions. The third decides when one move counts as so much better than all others that it is searched deeper. The long stage showed a gain of about 22 Elo Strength difference to the opponent, estimated from the games, with a 95-percent half-width where the oracle reported one. Never an absolute rating..

T-0158, order of captures. A search is faster when it tries the best move first. A capture that does not lose material by a quick exchange count but has done badly in earlier searches now comes after the two “killer moves”, quiet moves that recently refuted other lines, and before the remaining quiet moves.

T-0159, speed only. In three places the program first filled memory with zeros, although each value was overwritten before it was read, and the compiler had turned that into a slow instruction. Given the same number of positions to search, the engine now makes exactly the same decisions, as the author's comparison before the test showed; it only gets there faster. On the clock that means more positions in the same time. The author measured about one percent fewer instructions per position, on an earlier base version.

T-0161, capture search. At the end of every line the engine plays out captures until the position is quiet. Two rules now shorten this, a third keeps more recaptures. Outside check, once one move has been searched, further plain captures are skipped; checks, promotions and recaptures on the square just played to are still searched. In check, quiet evasions are skipped once one reply has been found that does not lose to mate. And recaptures are no longer thrown out by the two quick estimates that discard captures unlikely to change the score. A starting value for the first rule taken from the description of Stockfish 19 was discarded; the value measured is our own.

T-0162, order of quiet root moves. At the root, the engine used to sort its quiet moves after each iteration by how much search effort they had cost. A lot of effort does not mean a move did well. Each quiet root move now carries its own score, empty at the start of every search: after each completed iteration the best one gains and the others lose.

The two that were rejected

T-0160 changed how the search drops quiet moves one or two moves before its horizon. Until now, once a fixed number of moves has been tried there, it skips all remaining quiet moves; the candidate set that limit separately for each quiet move, from its record in earlier searches. The short stage ended after fourteen minutes, about 18 Elo below the predecessor. In the short stage the change was worse.

T-0163 restricted two shortcuts that lower the safety margin from T-0157's first constant when the evaluation is rising or the opponent has just weakened its own position. They now applied only while no own piece was attacked by a cheaper enemy piece. After nearly 10,000 games the short stage stood close to zero, with an interval that includes zero. That does not prove the change harmful. It means the evidence favoured “no gain” over “a small gain”, and the test is built to stop there.

Both changes stay out of the engine. A rejection is a normal outcome, not a fault in the process: the last test before this stretch, T-0155, started on 2026-10-03, was rejected too, after more than 40,000 games in the long stage.

Small effects cost games

Short stage of all seven runs: two clear results, five small ones Short stage of all seven runs: two clear results, five small ones. Short stage, 8 s + 0.08 s per move, with 95 % half-width: T-0157 27.07, T-0158 2.75, T-0159 1.55, T-0160 -18.1, T-0161 3.07, T-0162 3.49, T-0163 -2.44. -30-20-10010203040Elo against thepredecessor, short stageRunT-0157T-0158T-0159T-0160T-0161T-0162T-0163Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0157: 27.07 ± 9.19Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0158: 2.75 ± 2.21Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0159: 1.55 ± 1.13Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0160: -18.1 ± 7.93Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0161: 3.07 ± 2.44Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0162: 3.49 ± 2.72Short stage, 8 s + 0.08 s per move, with 95 % half-width, T-0163: -2.44 ± 3.53

Short stage of all seven runs: two clear results, five small ones. Short stage, 8 s + 0.08 s per move, with 95 % half-width: T-0157 27.07, T-0158 2.75, T-0159 1.55, T-0160 -18.1, T-0161 3.07, T-0162 3.49, T-0163 -2.44.

Short stage of all seven runs: two clear results, five small ones (data of the chess project).

How long a test runs depends on the size of the effect. The short stage took eleven minutes for T-0157 and fourteen for T-0160. T-0159, the speed change, needed about 72,000 games and nearly nine hours in the short stage alone. Across the seven runs the oracle played about 180,000 games. The exact values:

RunStageResult (Elo)Games
T-0157long, passed+22.39 ± 8.181,694
T-0158long, passed+9.58 ± 5.23not stated
T-0159short+1.55 ± 1.1371,692
T-0159long, passed+4.05 ± 2.89not stated
T-0161long, passed+5.83 ± 3.87not stated
T-0162long, passed+5.49 ± 3.69not stated
T-0160short, rejected−18.10 ± 7.931,864
T-0163short, rejected−2.44 ± 3.539,816

What five passes are worth

Each of these gains is measured against the engine's own predecessor, at the oracle's time controls. Added together, the five long-stage gains come to about 47 Elo. That sum overstates the progress, for two reasons. A test that stops as soon as it reaches its upper bound reports, on average, too large a gain; the run pages say so next to each value. And a gain in self-play counts for less against other engines; AFE Anchor-forwarded Elo: an estimate of a Coherent build’s strength on the scale of the latest anchoring, carried forward by the measured gains of the runs since. An estimate, not a measurement. Explained in full converts it with a factor of 0.703.

The website's estimate of playing strength, AFE, takes both into account. It starts from the anchoring of version 0.2.0 at about 3600 against engines from other projects, a project measurement outside the register, and adds the six runs since then that passed with a long-stage gain, the five above and T-0154 from 2026-10-03. After T-0162 it stands at about 3630, with a nominal ninety percent model interval. Of the self-play gain measured since that anchoring, AFE credits only part. The transfer to the scale of the rating list carries a further uncertainty, stated separately rather than inside the interval. The exact values:

QuantityValue
Sum of the five long-stage gains (Elo)+47.34
Anchoring of version 0.2.03600 ± 52
AFE after T-01623628
Nominal ninety percent model interval3605 to 3651
Self-play gain since the anchoring (Elo)+51.36
Credited by AFE (Elo)about +28
Transfer to the rating-list scale±51
AFE after each passed run: the centre rises slowly, the interval widens AFE after each passed run: the centre rises slowly, the interval widens. AFE with nominal 90 % model interval: T-0157 3616, T-0158 3621, T-0159 3623, T-0161 3625, T-0162 3628. 360036103620363036403650AFE, anchor scale (estimate)After runT-0157T-0158T-0159T-0161T-0162AFE with nominal 90 % model interval, T-0157: 3616 ± 14.5AFE with nominal 90 % model interval, T-0158: 3621 ± 17AFE with nominal 90 % model interval, T-0159: 3623 ± 19.5AFE with nominal 90 % model interval, T-0161: 3625 ± 21AFE with nominal 90 % model interval, T-0162: 3628 ± 23

AFE after each passed run: the centre rises slowly, the interval widens. AFE with nominal 90 % model interval: T-0157 3616, T-0158 3621, T-0159 3623, T-0161 3625, T-0162 3628.

AFE after each passed run: the centre rises slowly, the interval widens (data of the chess project).

The interval grows with every step, because each step brings its own uncertainty. AFE is an estimate, not a measurement: the run pages mark it as a value on a new anchor set that is not linked to earlier ones, and whether its intervals hold as often as stated has not yet been checked. How it is computed is explained in “From a carried-forward number to AFE”. A value anchored to a rating list comes only from anchoring against engines from other projects.

Five passes in forty-two hours is a good stretch, not a trend. Each step is small, each was measured only against the version before it, and two of seven ideas did not hold up.