Runs

Every register entry, newest first. Short and long stage are labelled separately; the quoted value is the long stage when there is one and is never added to or averaged with the short stage. Verdicts without games name their evidence. This table is not a highlight reel.

Register export 2026-10-30 · Register T-0001 – T-0227 · 225 entries · Run feed (RSS)

How each run ended

How each run ended 36 runs passed, 6 failed, 18 were rejected; 12 of the passed runs played no games. passed failed or rejected passed without games Epoch 2 Epoch 3 Epoch 4 Epoch 5 +2.94 0 −2.94 upper bound lower bound T-0046 2026-08-30 T-0061 2026-09-03 T-0076 2026-09-14 T-0090 2026-09-19 T-0105 2026-09-22
One mark per run in register order, final log-likelihood ratio of the quoted stage. Every SPRT run starts at 0; it passes at the upper bound and fails at the lower one. Hollow marks passed without games (identity, correction, epoch change, adoption) and sit outside the bounds, not as an SPRT exit.

Register T-0105 – T-0046

Run Verdict 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. Date Games LLR Log-likelihood ratio, the running evidence of an SPRT. It starts at 0; a stage passes at the upper bound and fails at the lower one. Hypothesis
T-0105 rejected
short stage +0.22 ± 4.33
7,760 −2.96 A dedicated opening book replaces early search decisions with predetermined moves.
T-0104 passed
long stage +20.29 ± 11.59
short stage +12.25 ± 8.54
1,234 +2.94 Three functional-neutral optimizations increase engine speed without altering the search tree: static exchange evaluation reuses shared attack masks, has_non_pawn_material considers only the side's own pieces, and transposition table entries for child nodes are prefetched immediately after move execution using __builtin_prefetch.
T-0103 rejected
short stage −5.87 ± 7.92
2,310 −2.96 The redundant side_index function is replaced by direct conversion of the Color enum and removed.
T-0102 rejected
short stage +0.45 ± 4.08
8,522 −2.96 A failed hash allocation is caught and resolved by using a smaller table instead of terminating the search thread.
T-0101 rejected
short stage +1.38 ± 3.29
13,842 −2.95 Profile-guided optimization uses a frozen representative execution profile for code generation.
T-0100 passed
long stage +49.16 ± 19.68
short stage +39.13 ± 18.05
562 +2.99 Incorporating game outcomes into the training target with a WDL ratio of 0.3 improves evaluation compared to relying purely on teacher scores.
T-0099 passed
long stage +168.60 ± 35.02
short stage +160.72 ± 36.01
222 +2.95 Including the game outcome in the training target with a weight of 0.3 improves evaluation compared to relying purely on the teacher score. A preliminary stage compares weights of 0.3 and 0.5.
T-0098 passed
long stage +11.29 ± 8.00
short stage +5.99 ± 4.81
2,586 +2.97 Move lists and their sorting helpers now use fixed capacities instead of repeated heap allocations per search node.
T-0097 rejected
short stage −17.53 ± 13.78
1,190 −2.97 The cost of the next iteration is estimated geometrically from the last two iterations and must fit within the soft time limit before starting.
T-0096 rejected
short stage −14.42 ± 12.31
1,326 −2.95 Extracting the loss bit from the sorting rank combined with the pawn short-circuit for capturer minus victim exceeding 100 on non-promotions reduces search time under -O2 with an upper 95 percent confidence bound below 0.97.
T-0095 rejected
short stage +1.90 ± 3.63
16,292 −2.98 In quiescence search when not in check, a usable transposition table entry pointing in the right direction (lower bound above stand_pat, or upper bound below stand_pat) replaces stand_pat before the stand-pat cutoff, affecting alpha and best. The delta pruning cutoff continues to use the raw static evaluation, following the approach in Stockfish qsearch.
T-0094 rejected
long stage +0.98 ± 4.03
short stage +5.05 ± 3.91
10,594 −2.97 With identical best move stability, a high root node fraction of the best move from depth five onwards reduces soft search time by at most 12.5% after a completed iteration. Conversely, a low node fraction extends soft search time by at most 25% within the hard limit.
T-0093 rejected
short stage +0.39 ± 5.19
8,076 −2.97 Internal iterative reduction reduces by two plies instead of one starting at a remaining depth of 8.
T-0092 passed
long stage +34.14 ± 15.99
short stage +64.65 ± 23.27
776 +2.97 Several board representation optimizations were ported to the current version: mask generation retaining previous move ordering, evasions as mask parameters, legality tests prior to moves using check-givers and pins per node with mask checks per move, check detection via masks on demand, and a streamlined undo. The search tree remains identical, and a throughput increase of +24 to +29 % is expected.
T-0091 passed
long stage +26.37 ± 13.80
short stage +25.11 ± 14.05
990 +2.97 Transposition table upper-bound entries are now stored without a best move. In all-nodes no move raises alpha, meaning the move with the highest fail-soft upper bound yields worse move ordering than the standard heuristics and prevents internal iterative reduction.
T-0090 passed
long stage +16.78 ± 10.59
short stage +8.45 ± 6.63
1,678 +2.97 Trivial board getters such as side_to_move, key, halfmove_clock, en_passant_square, castling_rights, and fullmove_number are inlined in the header to allow embedding without LTO. Additionally, has_non_pawn_material is optimized to iterate over the set bits of occupied() instead of using a 64-square loop. Together, these tree-neutral changes yield an expected speedup of approximately +4.04% nps with identical search behavior.
T-0089 passed
long stage +17.97 ± 11.16
short stage +18.06 ± 11.36
1,606 +2.96 This tree-neutral speed update optimizes SEE Static exchange evaluation: an estimate of the material outcome of a capture sequence on one square, without searching. by early exit once the sign is determined and computes SEE on demand for captures ordered by MVV-LVA, moving losing captures behind quiet moves with only one evaluation per capture in quiescence search. In addition, the network evaluation accumulator is reduced from int64 to int32, which yielded an additional +7.5% nps in benchmark builds.
T-0088 passed
long stage +25.23 ± 13.60
short stage +21.81 ± 12.74
1,076 +2.98 Older transposition table bounds may once again be used for search cutoffs when the halfmove clock is zero.
T-0087 passed
long stage +14.00 ± 9.64
short stage +15.63 ± 10.58
2,260 +2.95 Capture-only ProbCut tests selected captures using a shallow search against a raised beta to prune deep fail-high nodes earlier.
T-0086 rejected
short stage −21.66 ± 15.23
1,028 −2.98 Horizontal training augmentation deterministically mirrors only training positions without remaining castling rights. Mirror orbits are kept strictly separated from the holdout set.
T-0085 passed
long stage +86.16 ± 28.28
short stage +136.97 ± 35.27
358 +2.95 A 128-feature NNUE Efficiently updatable neural network: a small network that evaluates positions and is updated incrementally move by move. net trained for 80 epochs replaces the current evaluation weights. It was trained on 181,346,139 lines from 2,642,799 games. The engine is expected to play stronger under timed conditions than the baseline.
T-0084 passed epoch change, no games The evaluation network is updated to a different training epoch derived from the same original source data.
T-0083 passed
long stage +2.84 ± 2.24
short stage +5.10 ± 3.94
42,252 +2.97 An improving signal derived from the evaluation of the same side two plies earlier is initially used exclusively to reduce the reverse futility pruning margin.
T-0082 passed
long stage +39.52 ± 12.94
short stage +47.59 ± 14.34
1,342 +2.96 Eight tree-neutral speed optimizations are combined and tested as a single candidate. Because all eight changes preserve the search tree identically, their combined effect can be evaluated directly through the node rate.
T-0081 passed
long stage +15.35 ± 7.87
short stage +23.00 ± 9.94
3,670 +2.94 Late move reduction (LMR) is increased by one additional step for moves with negative history. This acts in the opposite direction of the history-based reduction protection and is applied only after the conclusion of SPSA tuning.
T-0080 rejected
short stage −118.10 ± 24.08
562 −2.95 A tree-identical speed bundle consisting of SEE ray masks, insertion sort, a tactical generator, move structure, and dead rank yields +18.6% E-core and +20.3% P-core node rate with bit-identical bench and perft Performance test: counting all legal move sequences to a fixed depth, to check a move generator against known numbers.. It is combined with a continuous LMR formula into a single candidate, preserving the exact search tree of the LMR modification. Under the clock, the combined version is expected to play at least as strongly as the LMR modification alone.
T-0079 rejected
short stage −137.38 ± 26.16
492 −2.96 Pre-registered coordinate-wise tuning and SPSA are used to adjust existing search constants without introducing new search mechanics.
T-0078 rejected
short stage −157.71 ± 26.80
454 −2.96 Pre-registered coordinate descent tuning and SPSA adjust existing search constants without introducing any new search mechanics.
T-0077 rejected
short stage −135.37 ± 25.63
504 −2.97 Quiescence search stores fail-highs in the transposition table.
T-0076 passed
long stage +172.05 ± 27.97
short stage +143.17 ± 26.61
456 +2.95 A network additionally trained on campaign data plays stronger than the production network trained solely on the legacy data set.
T-0075 passed
long stage +4.50 ± 3.53
short stage +3.01 ± 2.38
17,746 +2.95 The network evaluation updates the feature accumulators for both perspectives incrementally with every piece change on the board, instead of re-accumulating them from all pieces during each evaluation call.
T-0074 passed
long stage +26.81 ± 10.69
short stage +28.21 ± 11.25
2,000 +2.95 Bitboard attack operations replace the previous attack generation for mobility evaluation and move generation.
T-0073 passed byte-identical, no games This is an identity resubmission of the unchanged baseline engine to test infrastructure. No source code modifications or engine promotions are included.
T-0072 passed
long stage +260.44 ± 39.40
short stage +222.52 ± 36.23
378 +2.96 Together with the int16 evaluation core, the third network generation replaces the hand evaluation and gains significantly in playing strength compared with the bound predecessor.
T-0071 rejected
long stage +1.05 ± 1.65
short stage +2.71 ± 2.11
76,396 −2.97 If negamax clamps its alpha-beta window to the mate values reachable at ply [-Mate + ply, Mate - ply - 1], the fixed-depth result and mate distance are preserved, while impossible subtrees are eliminated.
T-0070 passed epoch change, no games Epoch change of the same predecessor source
T-0069 rejected
short stage +0.71 ± 2.51
44,794 −2.96 A session-wide correction of systematic raw evaluation errors, indexed by pawn structure and side to move, can make RFP, null move, Futility and QSearch stand-pat more reliable.
T-0068 rejected
short stage −7.07 ± 6.81
6,196 −2.95 If the main search at depth at most 3 omits materially losing captures, weakly contributing subtrees can be saved without touching the explicitly protected cases.
T-0067 passed
long stage +16.22 ± 8.31
short stage +7.60 ± 5.35
3,730 +2.97 If a sufficiently deep non-PV Principal variation: the line of best moves the search currently expects. node without a TT Transposition table: a cache of already searched positions, keyed by a hash of the position. move is reduced by exactly one level, the worse-ordered search costs less and the saved budget can produce additional depth at more important nodes.
T-0066 passed
long stage +17.47 ± 8.64
short stage +24.65 ± 10.49
3,364 +2.95 Using the already maintained occupancy bitboards in scan_board and see preserves search behavior and reduces computational effort.
T-0065 passed
long stage +6.74 ± 4.86
short stage +5.82 ± 4.43
11,088 +2.97 Omitting the lower Zobrist hashing A way of computing a position hash incrementally: each piece on each square has a random number, and the hash is their combination. bits already determined by the table index enables 16-byte TT entries and doubles the number of slots with the same hash budget; this could reduce TT collisions and search effort.
T-0064 passed
long stage +11.72 ± 6.91
short stage +3.13 ± 2.44
5,428 +2.95 A generation-aware, depth-preferred replacement preserves more valuable Transposition table entries and brings measurable Elo compared with unconditional replacement.
T-0063 passed byte-identical, no games Adding a pure comment line leaves the binary unchanged. The identity path can mark the candidate as passed without playing any games.
T-0062 passed epoch change, no games Epoch change of the same predecessor source
T-0061 passed correctness proof, no games Correction K7: counters saturate at INT_MAX, movetime capped; behaviorally identical to the predecessor (manifest empty)
T-0060 passed correctness proof, no games Correction K2: FEN Forsyth–Edwards Notation, a one-line text description of a chess position. parsing checks the plausibility of the en-passant square; behaviorally identical to the predecessor (manifest empty)
T-0059 passed correctness proof, no games The knight count in the draw detection was corrected. The engine behaves identically except in three manifest positions.
T-0058 passed correctness proof, no games In evaluate(), the side-relative value is clamped to the range [-28999, 28999]. This change is expected to be functionally identical to the predecessor version.
T-0057 passed byte-identical, no games A pure comment line under engine/src/ leaves the binary unchanged; the identity path then records the verdict without games.
T-0056 passed epoch change, no games Epoch change of the same predecessor source
T-0055 rejected
short stage −0.17 ± 2.99
25,880 −2.94 Infrastructure test on the compute machine: predecessor source against itself (live path cell → SFTP → build → oracle).
T-0054 passed adoption, no games Takeover of the running predecessor
T-0053 failed
short stage +0.38 ± 2.52
36,362 −2.95 Reporting forced mates as signed UCI Universal Chess Interface, the text protocol between a chess engine and the program that runs it. move counts should make Coherent's analysis output correct for protocol clients without changing the search tree or bench depth.
T-0052 passed
long stage –
short stage +17.17 ± 8.88
486 +2.95 Giving a side with at least two bishops a tapered bonus of 30 centipawns in the middlegame and 50 in the endgame should strengthen Coherent by valuing their complementary color control and greater reach as the board clears.
T-0051 failed
short stage −13.95 ± 9.25
3,664 −2.95 Tapered pawn-structure scores should improve endgame move choices by increasing doubled- and isolated-pawn penalties with the endgame pawn value and doubling passed-pawn bonuses as non-pawn material disappears.
T-0050 failed
short stage −9.19 ± 7.57
5,028 −2.95 Persisting history and countermove heuristics across searches in a game should improve quiet-move ordering by avoiding a cold start on every move.
T-0049 passed
long stage +1,194.89
short stage +4.79 ± 3.80
486 +2.95 Probing current-generation transposition bounds in quiescence and prioritizing a matching tactical table move should reduce repeated evaluation, move-generation, and SEE work without replacing deeper principal-search entries.
T-0048 failed
short stage −2.91 ± 5.01
11,566 −2.96 Pruning non-promoting, non-checking captures with negative SEE at non-PV nodes through depth two should strengthen Coherent by avoiding full searches of exchanges already known to lose material.
T-0047 failed
short stage −12.54 ± 8.63
3,882 −2.95 Preserving castling rights should improve move choices by assigning a phase-tapered value to each retained castling option that the king table and pawn shield do not represent.
T-0046 failed
short stage −4.43 ± 5.30
8,152 −2.97 Configurable 50 ms move overhead and a per-move cap of half the remaining clock should reduce time forfeits by preserving transmission reserve and preventing single searches from exhausting the clock.