The bleeding edge Stockfish seems to have a tactical improvement
Moderator: Ras
-
Dann Corbit
- Posts: 12856
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: The bleeding edge Stockfish seems to have a tactical improvement
I make a couple small changes. I turn off buffering so that the string I/O won't go wrong in Windows (which has the wrong sort of default for stdin/stdout/stderr). I also profile about ten times longer with a search several plies deeper than the default. The first change probably costs a fraction of an Elo, because it slows down I/O but I hate it when the engines get decoupled in Arena (it still happens sometimes because I am convinced Arena uses buffered I/O). The second change probably gives me a fraction of an Elo, but I would expect the net change to be zero. I also compile with the bleeding edge GCC, though I see that others say certain older versions of GCC are best.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
chrisw
- Posts: 4835
- Joined: Tue Apr 03, 2012 4:28 pm
- Location: Midi-Pyrénées
- Full name: Christopher Whittington
Re: The bleeding edge Stockfish seems to have a tactical improvement
A windows compiler, such as VS, won’t allow the old C I/o stuff because it insists on defensive coding where the max size of buffer is DEFINED at compile time, and checked for overflow at run time. Other C compilers don’t insist and hence are prone to buffer overflow and subsequent unpredictable results. Like crash back to system etc.Dann Corbit wrote: ↑Fri Mar 20, 2026 6:16 am I make a couple small changes. I turn off buffering so that the string I/O won't go wrong in Windows (which has the wrong sort of default for stdin/stdout/stderr). I also profile about ten times longer with a search several plies deeper than the default. The first change probably costs a fraction of an Elo, because it slows down I/O but I hate it when the engines get decoupled in Arena (it still happens sometimes because I am convinced Arena uses buffered I/O). The second change probably gives me a fraction of an Elo, but I would expect the net change to be zero. I also compile with the bleeding edge GCC, though I see that others say certain older versions of GCC are best.
-
Dann Corbit
- Posts: 12856
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: The bleeding edge Stockfish seems to have a tactical improvement
You can change cin, cout, cerr too, which also default to buffered in Windows (or they used to, I did not check the standard recently). Line buffered is good enough, you don't have to turn buffering off completely.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
Dann Corbit
- Posts: 12856
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: The bleeding edge Stockfish seems to have a tactical improvement
this is the stuff I use for fooling around with my idea. This particular version is only for "stuck in a draw"
Calm down null move like this:
added this to uci.h
and this to ucioption.cpp
I think double would probably be better than int and I should widen the ranges. The only real restriction is that the divisor D should not be zero.
Code: Select all
int stagnation(Stack* ss) {
int maxprobe = ss->ply;
A = int(Options["A"]);
if (maxprobe <= A)
return 0;
int stagnant_length = 0;
bool improving;
bool opponentWorsening;
for (int i = 0; i < maxprobe; i+=2)
{
improving = ss->staticEval > (ss - (2 + i))->staticEval;
opponentWorsening = ss->staticEval > -(ss - 1)->staticEval;
if (improving == false && opponentWorsening == false)
{
stagnant_length++;
}
else
{
break;
}
}
return stagnant_length;
}
Code: Select all
if (improving == false)
{
B = int(Options["B"]);
C = int(Options["C"]);
D = int(Options["D"]);
int horror = stagnation(ss);
if (horror >= B)
{
R -= std::min((horror - C)/D, 1);
}
Code: Select all
Option(int v, int minv, int maxv, OnChange = nullptr);
Code: Select all
o["A"] << Option(8, 1, 50);
o["B"] << Option(14, 1, 50);
o["C"] << Option(9, 1, 50);
o["D"] << Option(2, 1, 50);
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
Dann Corbit
- Posts: 12856
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: The bleeding edge Stockfish seems to have a tactical improvement
For Crystal 5, I currently have:
A=7
B=3
C=4
D=5
I should probably also allow negative values to test, since I am dyxlexic and often get things backwards.
A=7
B=3
C=4
D=5
I should probably also allow negative values to test, since I am dyxlexic and often get things backwards.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
-
Nordlandia
- Posts: 2833
- Joined: Fri Sep 25, 2015 9:38 pm
- Location: Sortland, Norway
Re: The bleeding edge Stockfish seems to have a tactical improvement
Test position: White draws | r5k1/ppbNP1pb/3pR1p1/P1p1p1PK/1P2p3/1P2P3/6PP/2B5 w - - 0 1
[pgn][Event "?"]
[Site "?"]
[Date "????.??.??"]
[Round "?"]
[White "New game"]
[Black "?"]
[Result "*"]
[WhiteFideId "-1"]
[BlackFideId "-1"]
[SetUp "1"]
[FEN "r5k1/ppbNP1pb/3pR1p1/P1p1p1PK/1P2p3/1P2P3/6PP/2B5 w - - 0 1"]
[PlyCount "0"]
[GameId "2289682850335518"]
{[#]} *[/pgn]
[pgn][Event "?"]
[Site "?"]
[Date "????.??.??"]
[Round "?"]
[White "New game"]
[Black "?"]
[Result "*"]
[WhiteFideId "-1"]
[BlackFideId "-1"]
[SetUp "1"]
[FEN "r5k1/ppbNP1pb/3pR1p1/P1p1p1PK/1P2p3/1P2P3/6PP/2B5 w - - 0 1"]
[PlyCount "0"]
[GameId "2289682850335518"]
{[#]} *[/pgn]
-
peter
- Posts: 3559
- Joined: Sat Feb 16, 2008 7:38 am
- Full name: Peter Martan
Re: The bleeding edge Stockfish seems to have a tactical improvement
This Didukh- study is even some harder for engines, if 0.00- eval is demanded too, not only best first move(s), e.g Lc0 needs so "see" 10.Bh4 in main line to get drawing eval, even if 1.Kg4 is up at once, similiar case with SF dev (260307), this one getting it at 8.Nf8+, but then at least keeping 0.00 in hash jumping backwards to root position at once again.Nordlandia wrote: ↑Fri Mar 20, 2026 8:43 am Test position: White draws | r5k1/ppbNP1pb/3pR1p1/P1p1p1PK/1P2p3/1P2P3/6PP/2B5 w - - 0 1
[pgn][Event "sp.hm 12th World Cup FIDE 2025"]
[Site "; World Cup FIDE 2025"]
[Date "2025.??.??"]
[Round "?"]
[White "Didukh=S"]
[Black "(=0471.88h5g8) MR"]
[Result "1/2-1/2"]
[WhiteFideId "-1"]
[BlackFideId "-1"]
[SetUp "1"]
[FEN "r5k1/ppbNP1pb/3pR1p1/P1p1p1PK/1P2p3/1P2P3/6PP/2B5 w - - 0 1"]
[PlyCount "28"]
[GameId "2289692712260369"]
[EventDate "2025.??.??"]
{source: World Cup FIDE 2025} 1. Kg4 $1 (1. Rxg6 $2 Kf7 $1) (1. Kh4 $2 Kf7 $1 2. Nf8 cxb4 3. Bd2 Bxa5 4. Rxd6 Kxe7 5. Rd5 b6 6. Nxh7 Ke6 7. Rb5 a6) 1... Kf7 2. Nf8 cxb4 (2... Rxf8 3. exf8=Q+ Kxf8 4. bxc5 dxc5 5. Bb2 Kg8 6. Rxe5 $1) 3. Bd2 $1 (3. e8=Q+ $2 Rxe8 4. Rxe8 Kxe8 5. Nxh7 Kf7 6. h4 Kg8) 3... Bxa5 4. Rxd6 Kxe7 5. Rd5 $1 b6 6. Nxh7 Ke6 $1 7. Rb5 a6 8. Nf8+ $1 (8. Be1 $2 axb5 9. Nf8+ Kf7) 8... Rxf8 9. Be1 $1 axb5 (9... Rc8 {<main>} 10. Bh4 Rc2 11. g3 axb5 (11... Rxh2 12. Rxb6+ $1 Bxb6) 12. h3 Rc4 13. bxc4 b3 14. cxb5 Be1) 10. Bh4 $1 (10. h3 $2 Kd5 $1 11. Bh4 Rf4+ $1 12. exf4 exf4 13. Kxf4 Kd4 14. Be1 Kd3) 10... Rd8 (10... Kd5 11. g3 $1) 11. h3 $1 (11. g3 $2 Rd4 $1 12. exd4 Kd5 13. dxe5 (13. h3 e3 14. Kf3 Kxd4) 13... Kxe5) 11... Rd3 12. g3 Rd4 13. exd4 Kd5 14. dxe5 Kxe5 1/2-1/2
[/pgn]
Crystal 9 with 30 threads of 16x4.3GHz CPU, Syzygy ProbeLimit=0
r5k1/ppbNP1pb/3pR1p1/P1p1p1PK/1P2p3/1P2P3/6PP/2B5 w - - 0 1
Code: Select all
Analysis by Crystal 9:
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Lg8 4.Lxb4 Te8 5.h4 Txe7 6.Txe7+ Kxe7 7.Sxg6+ Ke8 8.Kf5 Lxb3 9.Sh8 b6 10.a6 Kf8 11.g4
Die Stellung ist ausgeglichen.
= (0.05) Tiefe: 10/27 00:00:00
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Te8 4.Lxb4 Lg8 5.h4 Txe7 6.Txe7+ Kxe7 7.Sxg6+ Ke8 8.h5 Le6+ 9.Kh4 Kf7 10.Sh8+ Kg8 11.Sg6
Die Stellung ist ausgeglichen.
= (0.00) Tiefe: 11/28 00:00:00
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Lg8 4.Lxb4 Te8 5.h4 Txe7 6.Txe7+ Kxe7 7.Sxg6+ Ke8 8.h5 Le6+ 9.Kh4 Kf7 10.Sh8+ Kg8 11.Sg6
Die Stellung ist ausgeglichen.
= (0.05) Tiefe: 12/28 00:00:00
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Lg8 4.Lxb4 Te8 5.h4 Txe7 6.Txe7+ Kxe7 7.Sxg6+ Ke8 8.h5 Le6+ 9.Kh4 Kf7 10.Sh8+ Kf8 11.Sg6+
Die Stellung ist ausgeglichen.
= (0.00) Tiefe: 13/29 00:00:00 2718kN
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Lxa5 4.h4 Lg8 5.Txg6 Te8 6.Kh5 Txe7 7.Se6 Txe6 8.Txe6 Kxe6 9.Kg6 Ld8 10.Kxg7 Lf7 11.g4 Le8 12.Lxb4 d5 13.Lc5
Schwarz steht deutlich besser.
-+ (-2.45) Tiefe: 14/36 00:00:00 30280kN
...
1.Kg4 Kf7 2.Sf8 cxb4 3.h4 Lg8 4.Ld2 Lxa5 5.Kh3 Ke8 6.Txg6 Kxe7 7.Txg7+ Kxf8 8.Txb7 Ld5 9.Th7 Tb8 10.h5 Tb7 11.Th8+ Kg7 12.Th6 Lf7 13.Kg4 Td7 14.Kh4 Td8
Schwarz hat entscheidenden Vorteil.
-+ (-2.85) Tiefe: 16/42 00:00:01 93587kN
1.Kg4 Kf7 2.Sf8 cxb4 3.h4 Lg8 4.Txg6 Te8 5.Se6 Kxg6 6.h5+ Kf7 7.Sxc7 Txe7 8.Sb5 Td7 9.Sxa7 Ke6 10.Ld2 d5 11.Lxb4 d4 12.exd4 exd4 13.Kf4 Kd5
Schwarz hat entscheidenden Vorteil.
-+ (-3.00) Tiefe: 17/42 00:00:02 126MN
...
1.Kg4 Kf7 2.Sf8 cxb4 3.h4 Lg8 4.h5 gxh5+ 5.Kf5 Lxa5 6.Sg6 Lh7 7.Txd6 Lc7 8.Te6 Te8 9.Lb2 Lxg6+ 10.Txg6 Txe7 11.Lc1 a6 12.Lb2 a5 13.La1 Kg8 14.g4 hxg4 15.Kxg4
Schwarz steht deutlich besser.
-+ (-2.25 ++) Tiefe: 21/59 00:00:14 741MN
1.Kg4 Kf7 2.Sf8 cxb4 3.h4 Lg8 4.h5 gxh5+ 5.Kf5 Lxa5 6.Sg6 Lh7 7.Txd6 Lc7 8.Te6 Te8 9.Lb2 Lxg6+ 10.Txg6 Txe7 11.Lc1 a6 12.Lb2 a5 13.La1 Kg8 14.g4 hxg4 15.Kxg4
Schwarz steht deutlich besser.
-+ (-1.75 ++) Tiefe: 21/59 00:00:14 742MN
1.Kg4 Kf7 2.Sf8 cxb4 3.h4 Lg8 4.h5 gxh5+ 5.Kf5 Lxa5 6.Sg6 Lh7 7.Txd6 Lc7 8.Te6 Te8 9.Lb2 Lxg6+ 10.Txg6 Txe7 11.Lc1 a6 12.Lb2 a5 13.La1 Kg8 14.g4 hxg4 15.Kxg4
Schwarz steht besser.
-/+ (-1.00 ++) Tiefe: 21/59 00:00:14 743MN
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Lxa5 4.Txd6 Kxe7 5.Td5 b6 6.Sxh7 Ke6 7.Tb5 a6 8.Sf8+ Txf8 9.Le1 axb5 10.Lh4 Td8 11.h3 Td4 12.exd4 Kd5 13.dxe5 Kxe5 14.Lf2 e3 15.Lxe3 Ke4 16.Lf4 Kd3 17.h4 Kc3 18.h5 gxh5+ 19.Kxh5 Kxb3 20.Le5 Kc2 21.g6 b3 22.Lxg7 Lb4 23.g4 La3 24.Le5 b2
Die Stellung ist ausgeglichen.
= (-0.15) Tiefe: 21/59 00:00:14 747MN
1.Kg4 Kf7 2.Sf8 cxb4 3.Ld2 Lxa5 4.Txd6 Kxe7 5.Td5 b6 6.Sxh7 Ke6 7.Tb5 a6 8.Sf8+ Txf8 9.Le1 axb5 10.Lh4 Td8 11.h3 Td4 12.exd4 Kd5 13.dxe5 Kxe5 14.Lf2 e3 15.Lxe3 Ke4 16.Lf4 Kd3 17.h4 Kc3 18.h5 gxh5+ 19.Kxh5 Kxb3 20.Le5 Kc2 21.g6 b3 22.Lxg7 Lb4 23.g4 La3 24.Le5 b2
Schwarz steht besser.
-/+ (-0.85 ++) Tiefe: 22/33 00:00:14 749MN
...
1.Kg4 Kf7 2.Sf8 b6 3.axb6 axb6 4.La3 Lg8 5.bxc5 bxc5 6.h4 Tc8 7.b4 Ke8 8.Txg6 Kxe7 9.bxc5 Kxf8 10.cxd6 Kf7 11.h5 Ld8 12.d7 Tc2 13.Ta6 Txg2+ 14.Kh3 Txg5 15.Ta8 Tg1
Die Stellung ist ausgeglichen.
= (-0.05 ++) Tiefe: 30/67 00:00:24 1169MN
1.Kg4 Kf7 2.Sf8 b6 3.axb6 axb6 4.La3 Lg8 5.bxc5 bxc5 6.h4 Tc8 7.b4 Ke8 8.Txg6 Kxe7 9.bxc5 Kxf8 10.cxd6 Kf7 11.h5 Ld8 12.d7 Tc2 13.Ta6 Txg2+ 14.Kh3 Txg5 15.Ta8 Tg1
Die Stellung ist ausgeglichen.
= (0.00 ++) Tiefe: 30/67 00:00:25 1212MN
...
1.Kg4 Kf7 2.Sf8 b6 3.La3 Lg8 4.axb6 axb6 5.h4 Txf8 6.exf8D+ Kxf8 7.Txg6 Lh7 8.bxc5 Lxg6 9.cxd6 Ld8 10.d7+ Kg8 11.b4 Kf8 12.b5+ Kg8 13.Ld6 Lf7 14.Kf5 Lc4 15.g6 Lxb5 16.Ke6 Le2 17.Kf5
Die Stellung ist ausgeglichen.
= (0.00) Tiefe: 39/43 00:00:45 1960MNPeter.
-
Dann Corbit
- Posts: 12856
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: The bleeding edge Stockfish seems to have a tactical improvement
It's not buffer overflow I am worried about. It is full buffering causing reads to be incorrectly interpreted. See the video "Understanding Buffer Flushing in C/C++: Preventing Incorrect File Outputs" for instance as an explanation of what I am trying to communicate.chrisw wrote: ↑Fri Mar 20, 2026 6:26 am A windows compiler, such as VS, won’t allow the old C I/o stuff because it insists on defensive coding where the max size of buffer is DEFINED at compile time, and checked for overflow at run time. Other C compilers don’t insist and hence are prone to buffer overflow and subsequent unpredictable results. Like crash back to system etc.
If you run analysis of 1000 EPD positions in Arena at rapid speed (e.g. 10 seconds or less per position) somewhere in the output the engine and the GUI will become disconnected and the output becomes useless.
Here is sample output at a speed higher than I ever run, but it demonstrates the problem more easily:
Code: Select all
Analysis of G:\hardest.epd
3/20/2026 3:35:28 AM Level: 1 Second
Analyzing engine: Stockfish_26031819_x64_avx2
1 g6; id "TTT2.014";
Searching move: g5-g6
Best move (Stockfish_26031819_x64_avx2): Kb1-b2
Not found in: 00:01
Found 747 WDL and 741 DTZ tablebase files (up to 7-man).
Available processors: 0-31
Using 31 threads
NNUE evaluation using nn-9a0cc2a62c52.nnue (105MiB, (82672, 1024, 31, 32, 1))
NNUE evaluation using nn-47fc8b7fff06.nnue (6MiB, (22528, 128, 15, 32, 1))
Network replica 1: Shared memory.
2/6 00:00 6k 2,051k -0.41 Kb2 Bxh5
3/6 00:00 8k 2,611k -0.46 Kb2 Bxh5 Bxe5+ Kg8
4/8 00:00 10k 3,264k -0.24 Kb2
5/10 00:00 19k 6,395k -1.08 g6 Bxg6+ Kb2 Bxh5 Bxe5+ Ng7
6/24 00:00 274k 8,299k -1.99 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 Be8 Bc2 Qh6 Bd4 Qxh2 Ne4 Qe2 Bc3 g4 Kb1 Bf7
7/21 00:00 276k 8,356k -1.93 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 Be8 Bc2 Qh6 Bd4 Qxh2 Ne4 Qe2 Bc3 g4 Kb1 Qb5+ Ka2
8/18 00:00 279k 8,216k -1.86 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 Qh6
9/21 00:00 291k 8,557k -2.02 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 Be8 Bc2 Qh6 Bd4 Qxh2 Ne4 Qe2 Bc3 g4 Kb1 g3 Nxg3
10/30 00:00 787k 14,852k -2.03 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 Be8 h3 Bh5
11/34 00:00 1,525k 19,548k -2.03 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 g4 Bc3 Be8 Nxg4 Qe4 Ne5 Qb7 Ng8 Qg2+ Ka3 Qf2 Ng4 Qa7+ Kb2 Bf7 Bxf7 Qxf7
12/31 00:00 1,574k 19,674k -2.11 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 g4 Bc3 Be8 Nxg4 Qe4 Ne5 Qb7 Nd5 Ba4 Ng6+ Kh7 Nf8+ Kg8 Nf6+ Kxf8
13/35 00:00 2,933k 22,392k -2.38 Kb2 Bxh5 Bxe5+ Ng7 Ne7 hxg5 Bxb3 g4 Bc3 Be8 Nxg4 Qe4 Ne5 Qa8
3/20/2026 3:35:34 AM, Time for this analysis: 00:00:01, Rated time: 00:01
2 b6; id "ACT1-B.157";
Searching move: b5-b6
Best move (Stockfish_26031819_x64_avx2): Be2-f1
Not found in: 00:01
Found 747 WDL and 741 DTZ tablebase files (up to 7-man).
Available processors: 0-31
Using 31 threads
NNUE evaluation using nn-9a0cc2a62c52.nnue (105MiB, (82672, 1024, 31, 32, 1))
NNUE evaluation using nn-47fc8b7fff06.nnue (6MiB, (22528, 128, 15, 32, 1))
Network replica 1: Shared memory.
2/6 00:00 10k 4,937k -2.27 Bf3
3/4 00:00 11k 5,605k -2.02 Bf3 Bb6 Bd1
4/8 00:00 14k 6,820k -2.15 Bd1 Bb6 Bh2 Bd8
5/5 00:00 16k 5,172k -1.54 Bh2
6/10 00:00 18k 6,164k -1.73 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7
7/9 00:00 21k 6,870k -1.73 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7
8/14 00:00 45k 14,967k -2.03 b6 Bxb6 Bxa7 Bd8 Bf2 Nh6 Be1 Nxg4
9/15 00:00 57k 14,305k -1.79 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7
10/17 00:00 84k 16,759k -1.54 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7 Nf7
11/29 00:00 149k 13,578k -1.57 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7 Kxd7 b6 f5 b7 Bc7 Be3 e6 Bxg5 Nf7 Bxh4 Nd6 Bf2 Nxb7 Bg8 Ke7
12/34 00:00 412k 16,471k -1.59 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7 f5 Be3 f4 b6 Kxd7 b7 Kc7 Bc5 e5 Be4 Kb8 Be7 g4 Bxh4 Bc7 Bf2
13/32 00:00 423k 16,918k -1.68 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7 Kxd7 b6 f5 b7 Bc7 Be3 e6 Bxg5 Nf7 Bf6
14/33 00:00 428k 17,120k -1.61 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7 Kxd7 b6 f5 b7 Bc7 Be3 e6 Bxg5 Nf7 Bxh4 Nd6 Kg2 Nxb7 Kf3
15/45 00:00 1,267k 19,795k -1.63 Bf1+ Kxg4 Be2+ Kxf5 Bd3+ Kxe6 Bxh7 Nh6 Bxa7 Kxd7 b6 f5 b7 Bc7 Be3 e6 Bxg5 Nf7 Bxh4 Nd6 Bg5
3/20/2026 3:35:36 AM, Time for this analysis: 00:00:01, Rated time: 00:02
3 Ka7; id "ACT4.053";
Searching move: Kb8-a7
Best move (Stockfish_26031819_x64_avx2): Kb8-a8
Not found in: 00:01
Found 747 WDL and 741 DTZ tablebase files (up to 7-man).
Available processors: 0-31
Using 31 threads
NNUE evaluation using nn-9a0cc2a62c52.nnue (105MiB, (82672, 1024, 31, 32, 1))
NNUE evaluation using nn-47fc8b7fff06.nnue (6MiB, (22528, 128, 15, 32, 1))
Network replica 1: Shared memory.
2/4 00:00 560 560k +3.85 Kxb7 Bd4 Kxb6
3/6 00:00 2k 2,356k +3.34 Kxb7 Be5 Kxb6 Bh2 Kb7
4/6 00:00 4k 3,852k +3.77 Kxb7 Be5 Kxb6 Bg3
5/10 00:00 18k 9,097k +4.19 Kxb7 Be5 Kxb6 Bc7+ Kb7
6/9 00:00 20k 10,089k +3.79 Kxb7 Be5 Kxb6 Bh2
7/10 00:00 23k 11,440k +4.51 Kxb7 Be5 Kxb6 Bb8 Kb7 Bc7 Kc6 Bh2
8/13 00:00 49k 16,168k +4.55 Kxb7 Bd4 Kxb6 Bb2 Ka6 Be5 b6
9/14 00:00 64k 21,338k +4.24 Kxb7 Be5 Kc6 Bf6 Kxb6
10/20 00:00 98k 24,616k +4.44 Kxb7 Bb2 Kxb6 Be5 Kc6 Bh2 Kb7 Bf4 b6
11/12 00:00 140k 27,982k +4.26 Kxb7 Bc3 Kxb6 Be5
12/22 00:00 199k 28,476k +4.25 Kxb7 Bc3 Kxb6 Ba5+ Kc6 Bc7 Kd5 Bh2 b6 Bb8 Kc6
13/14 00:00 320k 35,569k +4.08 Kxb7 Be5 Kxb6 Bh2 Kc6 Bg3 Kd5
14/22 00:00 390k 35,422k +4.02 Kxb7 Be5 Kxb6 Bc7+ Kc6 Bf4 b6
15/27 00:00 1,737k 44,536k +3.55 Kxb7 Be5 Kxb6 Bd6 Ka6 Bb8 b6 Bc7 b7 Bb8 Kb6 Bc7+ Kb5
16/32 00:00 1,947k 45,276k +3.51 Kxb7 Be5 Kxb6 Bc7+ Ka6 Be5 b6 Bc7
17/29 00:00 2,817k 46,954k +3.41 Kxb7 Bd4 Kxb6 Be5 Kc6 Bg3 b6 Bc7 b7 Bh2 Kb6 Bc7+ Ka6 Bg3
18/24 00:00 3,105k 47,769k +3.40 Kxb7 Bc3 Kxb6 Bf6 Ka7 Bc3 Ka6 Be5 b6 Bc7 b7 Bd6 g4
19/37 00:00 6,029k 47,101k +4.15 Ka8 Bd4 Kxb7 Be5 Kxb6 Bc7+ Kxc5 Bf4 Kc6 Bg3 c5 Be5 Kd7 Bg3 c6 Bh2
20/38 00:00 6,840k 46,848k +4.13 Ka8 Bd4 Kxb7 Be5 Kxb6 Bc7+ Kc6 Bg3 Kxc5 Bb8 Kd5 Bg3 c5 Bf4 Ke6 Bh2 c6 Bc7 g4
21/40 00:00 6,900k 46,938k +4.13 Ka8 Bd4 Kxb7 Be5 Kxb6 Bd6 Kc6 Be5 Kxc5 Bb8 Kd5 Bd6 c5 Be5 c6 Bb8 Ke6 Bc7 Kf7 Bd6
22/37 00:00 7,311k 46,864k +4.12 Ka8 Bd4 Kxb7 Be5 Kxb6 Bc7+ Kb7 Bh2 Kc6 Bd6 Kd5 Be5 Kxc5 Bh2 Kc6 Bg3 c5 Be5 Kb6 Bh2 Kb7 Bc7
23/31 00:00 7,632k 46,821k +4.12 Ka8 Be5 Kxb7 Bg3 Kxb6 Bd6 Kc6 Be5 Kxc5 Bg3 Kd5 Bd6 c5 Be5 c6 Bb8 Ke6 Bc7 Kf7
24/42 00:00 8,600k 46,996k +4.12 Ka8 Bd4 Kxb7 Be5 Kxb6 Bd6 Ka6 Bg3 Ka7 Bd6 Kb6 Bg3 Kb7 Be5 Kc6 Bg3 Kxc5 Bd6+ Kc6 Be5 c5 Bb8 Kd5
25/41 00:00 9,292k 46,930k +4.12 Ka8 Bd4 Kxb7 Be5 Kxb6 Bd6 Kc6 Bg3 Kxc5 Bd6+ Kd5 Bc7 c5 Be5 c6 Bb8 Ke6 Bc7 Kd7 Be5 b6 Bc7 c4
26/45 00:00 10,032k 47,097k +4.11 Ka8 Be5 Ka7 Bc7 Kxb7 Bg3 Kxb6 Bc7+ Kxc5 Bf4 Kc6 Bc7 Kd7 Bb8 c5 Be5 g4 Bh2 c6 Bb8 b6 Bg3 Ke6 Bc7 Kf7 Bb8 c4 Be5
3/20/2026 3:35:38 AM, Time for this analysis: 00:00:01, Rated time: 00:03
4 Rc2; id "TTT2.031";
Searching move: Rc5-c2
Best move (Stockfish_26031819_x64_avx2): Kb8-a8
Not found in: 00:01
Stockfish_26031819_x64_avx2 by the Stockfish developers (see AUTHORS file), Italy
3/20/2026 3:35:43 AM, Time for this analysis: 00:00:01, Rated time: 00:04
5 Nd7; id "TTT2.086";
Searching move: Nc5-d7
Best move (Stockfish_26031819_x64_avx2): Kb8-a8
Not found in: 00:01
Stockfish_26031819_x64_avx2 by the Stockfish developers (see AUTHORS file), Italy
3/20/2026 3:35:48 AM, Time for this analysis: 00:00:01, Rated time: 00:05
6 Qf3; id "ACT3.089";
Searching move: Qa3-f3
Best move (Stockfish_26031819_x64_avx2): Kb8-a8
Not found in: 00:01
Stockfish_26031819_x64_avx2 by the Stockfish developers (see AUTHORS file), Italy
3/20/2026 3:35:53 AM, Time for this analysis: 00:00:01, Rated time: 00:06
7 Re4; id "TTT1.050";
Searching move: Re1-e4
Best move (Stockfish_26031819_x64_avx2): Kb8-a8
Not found in: 00:01
Stockfish_26031819_x64_avx2 by the Stockfish developers (see AUTHORS file), Italy
3/20/2026 3:35:58 AM, Time for this analysis: 00:00:01, Rated time: 00:07
Now, the problem is exaggerated by using one second. If it were ten seconds, the disconnection is less probable, and by one minute it rarely happens, but does still happen on occasion. The big problem this creates is that I can't just stitch the problems set and the analysis together and use it. No matter what the time control, I have to analyze the pvs to ensure that they contain legal moves because sometimes the analysis is not just missing, it is connected to the prior problems.
I am often not very good at explaining myself, and I apologize for that.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.