LeelaChessZero / lc0

The rewritten engine, originally for tensorflow. Now all other backends have been ported here.
GNU General Public License v3.0
2.47k stars 534 forks source link

Time piggybank wasn't used when max Q move wasn't max N move. #1583

Closed mooskagh closed 3 years ago

mooskagh commented 3 years ago

It probably works, but worth looking deeper what happened there.

In TCEC 2021 DivP game 10 (vs Stockfish), on move 39, Lc0 stopped searching in a situation when the move with maximum Q was different from the move with maximum N. According to SF eval, that potentially made Lc0 miss win.

It's expected that time piggybank activates in this situation and the engine continues to think.

Log snippet:

>> isready
<< readyok
>> go wtime 2022712 btime 899188 winc 7000 binc 7000
TMGR: Updating tree reuse. last_move_nodes=70976154, this_move_nodes=70637847 (tree_reuse=0.995234). avg_tree_reuse=0.730000, update_rate=0.016795 (avg_move_time=105625.101562ms, actual_move_time=1774ms)
TMGR: MOVE TIME: allocated()=326035.2ms, expected(brutto)=148513.6ms, expected(netto)=130692.0ms, timeuse=0.40085
TMGR: MOVE NODES: avg_total_with_reuse(brutto)=111671960.0, avg_total_without_reuse(brutto)=30151426.0, reused=70637847, expected_new(brutto)=41034112.0, tree_reuse=0.73000
TMGR: PIGGYBANK: total=857744ms, increment=17821.6ms, longthink=789527ms, max=6648182.0ms
TMGR: REMAINING GAME: nodes=346841120.0, moves=11.5, time=1255312.1ms, nps=276298.7
RAM limit 48000MB. Cache takes 14800MB. Remaining memory is enough for 166000000 nodes.
Timer started at 0622 22:34:47.831505
Start a watchdog thread.
Search started. 0ms already passed.
Started search thread.
Started search thread.
<< info depth 44 seldepth 64 time 10 nodes 70639278 score cp 66 wdl 431 544 25 movesleft 63 tbhits 11 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1 g6g1 c1d2 g1g2 f6d4>
<< info depth 44 seldepth 67 time 15 nodes 70640009 score cp 66 wdl 431 544 25 movesleft 63 nps 432400 tbhits 18 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1 g6g1 c1d>
<< info depth 43 seldepth 67 time 29 nodes 70642923 score cp 66 wdl 431 544 25 movesleft 63 nps 267157 tbhits 36 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1 g6g1 c1d>
<< info depth 42 seldepth 67 time 70 nodes 70651957 score cp 66 wdl 431 544 25 movesleft 63 nps 231311 tbhits 87 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1 g6g1 c1d>
<< info depth 42 seldepth 68 time 91 nodes 70656308 score cp 66 wdl 431 544 25 movesleft 63 nps 227913 tbhits 108 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1 g6g1 c1>
<< info depth 42 seldepth 72 time 112 nodes 70660560 score cp 66 wdl 431 544 25 movesleft 63 nps 222676 tbhits 135 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1 g6g1 c>

[snip]

<< info depth 41 seldepth 93 time 285090 nodes 139750025 score cp 65 wdl 429 544 27 movesleft 63 nps 242430 tbhits 200402 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info depth 41 seldepth 94 time 285261 nodes 139798084 score cp 65 wdl 429 544 27 movesleft 63 nps 242453 tbhits 200504 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info depth 41 seldepth 95 time 285305 nodes 139808502 score cp 65 wdl 429 544 27 movesleft 63 nps 242453 tbhits 200564 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info depth 41 seldepth 95 time 290309 nodes 141178295 score cp 65 wdl 429 544 27 movesleft 63 nps 242992 tbhits 202764 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info depth 41 seldepth 95 time 295310 nodes 142396959 score cp 65 wdl 429 544 27 movesleft 63 nps 243003 tbhits 203335 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info depth 41 seldepth 95 time 300311 nodes 143435274 score cp 65 wdl 429 544 27 movesleft 63 nps 242414 tbhits 206022 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info depth 41 seldepth 95 time 305312 nodes 144608035 score cp 65 wdl 429 544 27 movesleft 63 nps 242285 tbhits 211634 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
3.72112e+06 playouts remaining. Best move has 75735453 visits, second best -- 67411886. Difference is 8323567, so stopping the search after 61509 batches.
<< info depth 41 seldepth 95 time 305613 nodes 144676675 score cp 65 wdl 429 544 27 movesleft 63 nps 242271 tbhits 211980 pv g7e5 c8d7 c3c4 d5c4 a4c4 d7e8 c4e6 h5g6 e5f6 g6f7 d4d5 c6d5 e6d6 f7g6 d6d5 e8c6 d5e5 c6a4 e5c3 a4e8 c3f3 e8c6 f3f4 c6e8 b2c1>
<< info string a4c4  (661 ) N:     972 (+ 0) (P:  0.42%) (WL: -0.95730) (D: 0.004) (M: 24.9) (Q: -0.95771) (U: 1.75783) (S:  0.70434) (V: -0.9936)
<< info string a4a7  (673 ) N:     977 (+ 0) (P:  0.44%) (WL: -0.99867) (D: 0.001) (M: 25.3) (Q: -0.99879) (U: 1.81385) (S:  0.71517) (V: -0.8195)
<< info string a4b5  (668 ) N:    1006 (+ 0) (P:  0.44%) (WL: -0.97782) (D: 0.003) (M: 25.3) (Q: -0.97818) (U: 1.78625) (S:  0.71024) (V: -0.9729)
<< info string a4a6  (670 ) N:    1014 (+ 0) (P:  0.45%) (WL: -0.99516) (D: 0.001) (M: 23.3) (Q: -0.99523) (U: 1.80960) (S:  0.71484) (V: -0.7434)
<< info string a4a5  (667 ) N:    1031 (+ 0) (P:  0.45%) (WL: -0.97016) (D: 0.004) (M: 25.2) (Q: -0.97060) (U: 1.77528) (S:  0.70763) (V: -0.9819)
<< info string a4c6  (672 ) N:    1045 (+ 0) (P:  0.46%) (WL: -0.98902) (D: 0.002) (M: 24.3) (Q: -0.98921) (U: 1.80044) (S:  0.71231) (V:  0.3633)
<< info string a4a8  (675 ) N:    1117 (+ 0) (P:  0.50%) (WL: -0.99559) (D: 0.001) (M: 27.1) (Q: -0.99575) (U: 1.81001) (S:  0.71469) (V:  0.4445)
<< info string g7h8  (1573) N:    1703 (+ 0) (P:  0.46%) (WL: -0.42680) (D: 0.468) (M: 102.8) (Q: -0.47825) (U: 1.09428) (S:  0.56820) (V:  0.2769)
<< info string e7e8r (1829) N:    2845 (+ 0) (P:  0.37%) (WL:  0.02178) (D: 0.927) (M: 187.6) (Q: -0.08022) (U: 0.52387) (S:  0.45168) (V:  0.1230)
<< info string e7e8b (1830) N:    3148 (+ 0) (P:  0.41%) (WL:  0.02103) (D: 0.928) (M: 187.8) (Q: -0.08108) (U: 0.52493) (S:  0.45196) (V:  0.2828)
<< info string e7e8q (1828) N:    3170 (+ 0) (P:  0.41%) (WL:  0.02092) (D: 0.928) (M: 187.7) (Q: -0.08120) (U: 0.52495) (S:  0.45187) (V:  0.2728)
<< info string e7e8n (1515) N:    3583 (+ 0) (P:  0.46%) (WL:  0.02070) (D: 0.929) (M: 188.0) (Q: -0.08153) (U: 0.52546) (S:  0.45209) (V:  0.1648)
<< info string b2c1  (220 ) N:    3832 (+ 0) (P:  0.48%) (WL:  0.03055) (D: 0.891) (M: 178.1) (Q: -0.06749) (U: 0.50953) (S:  0.44879) (V: -0.3415)
<< info string b2a3  (229 ) N:    4978 (+ 0) (P:  0.50%) (WL:  0.11010) (D: 0.819) (M: 151.5) (Q:  0.01996) (U: 0.41047) (S:  0.42844) (V:  0.4268)
<< info string b2a1  (218 ) N:    5173 (+ 0) (P:  0.46%) (WL:  0.15066) (D: 0.787) (M: 148.9) (Q:  0.06411) (U: 0.36039) (S:  0.41809) (V:  0.3110)
<< info string b2a2  (222 ) N:    5334 (+ 0) (P:  0.44%) (WL:  0.16648) (D: 0.758) (M: 147.2) (Q:  0.08311) (U: 0.33905) (S:  0.41385) (V:  0.3874)
<< info string g7f8  (1571) N:    8578 (+ 0) (P:  0.88%) (WL:  0.10603) (D: 0.836) (M: 155.8) (Q:  0.01411) (U: 0.41717) (S:  0.42987) (V:  0.5406)
<< info string b2b1  (219 ) N:   10416 (+ 0) (P:  0.48%) (WL:  0.29295) (D: 0.682) (M: 146.2) (Q:  0.21792) (U: 0.18644) (S:  0.38257) (V:  0.4000)
<< info string b2b3  (230 ) N:   16643 (+ 0) (P:  0.49%) (WL:  0.33999) (D: 0.620) (M: 134.7) (Q:  0.27176) (U: 0.11986) (S:  0.36883) (V:  0.4895)
<< info string g7h6  (1562) N:   22250 (+ 0) (P:  1.26%) (WL:  0.25587) (D: 0.698) (M: 140.2) (Q:  0.17914) (U: 0.23032) (S:  0.39155) (V:  0.6683)
<< info string a4a2  (654 ) N:   23758 (+ 0) (P:  0.88%) (WL:  0.32159) (D: 0.660) (M: 157.3) (Q:  0.24896) (U: 0.15129) (S:  0.37535) (V:  0.6249)
<< info string a4a1  (652 ) N:   36276 (+ 0) (P:  4.35%) (WL:  0.05998) (D: 0.903) (M: 100.9) (Q: -0.03932) (U: 0.48746) (S:  0.44421) (V:  0.6885)
<< info string g7f6  (1560) N:   52522 (+ 0) (P:  2.01%) (WL:  0.31712) (D: 0.654) (M: 145.5) (Q:  0.24518) (U: 0.15553) (S:  0.37619) (V:  0.7753)
<< info string a4b3  (658 ) N:   59227 (+ 0) (P:  2.25%) (WL:  0.31873) (D: 0.657) (M: 149.0) (Q:  0.24643) (U: 0.15410) (S:  0.37589) (V:  0.6494)
<< info string f2f4  (351 ) N:   87988 (+ 0) (P:  1.68%) (WL:  0.37738) (D: 0.600) (M: 135.7) (Q:  0.31137) (U: 0.07747) (S:  0.36017) (V:  0.7225)
<< info string f2f3  (346 ) N:  185110 (+ 0) (P:  0.98%) (WL:  0.38291) (D: 0.573) (M: 122.6) (Q:  0.31983) (U: 0.02144) (S:  0.34866) (V:  0.6552)
<< info string a4a3  (657 ) N:  438844 (+ 0) (P: 25.42%) (WL:  0.25421) (D: 0.726) (M: 162.3) (Q:  0.17437) (U: 0.23541) (S:  0.39234) (V:  0.8675)
<< info string a4b4  (660 ) N:  546795 (+ 0) (P: 28.81%) (WL:  0.27064) (D: 0.705) (M: 151.0) (Q:  0.19308) (U: 0.21417) (S:  0.38794) (V:  0.8546)
<< info string c3c4  (485 ) N: 67411886 (+ 0) (P:  9.99%) (WL:  0.40219) (D: 0.546) (M: 125.9) (Q:  0.34213) (U: 0.00060) (S:  0.34063) (V:  0.7337)
<< info string g7e5  (1555) N: 75735453 (+160) (P: 13.38%) (WL:  0.40182) (D: 0.544) (M: 125.8) (Q:  0.34202) (U: 0.00072) (S:  0.34102) (V:  0.8722)
<< info string node  (  30) N: 144676675 (+160) (P: 100.0%) (WL:  0.40064) (D: 0.535) (M: 125.2) (Q:  0.34179) (V:  0.8699)
--- Opponent moves after: g7e5
h5h2  (893 ) N:      94 (+ 0) (P:  0.00%) (WL: -1.00000) (D: 0.000) (M:  7.0) (Q: -1.00000) (U: 0.00000) (S: -1.10000) (V: -1.0000) (T)
h5h1  (895 ) N:     370 (+ 0) (P:  0.00%) (WL: -1.00000) (D: 0.000) (M:  9.0) (Q: -1.00000) (U: 0.00000) (S: -1.10000) (V: -1.0000) (T)
h5f3  (889 ) N:     441 (+ 0) (P:  0.00%) (WL: -1.00000) (D: 0.000) (M:  9.0) (Q: -1.00000) (U: 0.00000) (S: -1.10000) (V: -1.0000) (T)
h5h4  (888 ) N:     456 (+ 0) (P:  0.00%) (WL: -1.00000) (D: 0.000) (M:  9.0) (Q: -1.00000) (U: 0.00000) (S: -1.10000) (V: -1.0000) (T)
h5g5  (885 ) N:     574 (+ 0) (P:  0.00%) (WL: -1.00000) (D: 0.000) (M:  9.0) (Q: -1.00000) (U: 0.00000) (S: -1.10000) (V: -1.0000) (T)
h5d1  (894 ) N:     707 (+ 0) (P:  0.00%) (WL: -1.00000) (D: 0.000) (M:  9.0) (Q: -1.00000) (U: 0.00000) (S: -1.10000) (V: -1.0000) (T)
h5h6  (878 ) N:    1870 (+ 0) (P:  0.49%) (WL: -0.98224) (D: 0.014) (M: 19.5) (Q: -0.98152) (U: 0.70740) (S: -0.37227) (V: -0.9991)
h5h3  (891 ) N:    1957 (+ 0) (P:  0.51%) (WL: -0.98559) (D: 0.013) (M: 20.4) (Q: -0.98496) (U: 0.71149) (S: -0.37197) (V: -0.9992)
h5h8  (872 ) N:    2089 (+ 0) (P:  0.55%) (WL: -0.98482) (D: 0.015) (M: 20.6) (Q: -0.98408) (U: 0.71026) (S: -0.37223) (V: -0.9990)
h5g4  (887 ) N:    2103 (+ 0) (P:  0.55%) (WL: -0.98575) (D: 0.013) (M: 20.3) (Q: -0.98512) (U: 0.71145) (S: -0.37217) (V: -0.9992)
c6c5  (485 ) N:    2114 (+ 0) (P:  0.56%) (WL: -0.98837) (D: 0.002) (M: 17.9) (Q: -0.98825) (U: 0.71487) (S: -0.37221) (V: -0.9990)
h5h7  (875 ) N:    2128 (+ 0) (P:  0.55%) (WL: -0.97595) (D: 0.021) (M: 21.4) (Q: -0.97488) (U: 0.70017) (S: -0.37220) (V: -0.9989)
h5e5  (883 ) N:    2268 (+ 0) (P:  0.58%) (WL: -0.97394) (D: 0.006) (M: 24.0) (Q: -0.97363) (U: 0.69883) (S: -0.37215) (V: -0.9993)
h5f5  (884 ) N:    2271 (+ 0) (P:  0.59%) (WL: -0.98557) (D: 0.013) (M: 20.3) (Q: -0.98493) (U: 0.71139) (S: -0.37204) (V: -0.9993)
b6b5  (453 ) N:    2759 (+ 0) (P:  0.71%) (WL: -0.97489) (D: 0.007) (M: 24.5) (Q: -0.97455) (U: 0.69995) (S: -0.37205) (V: -0.9900)
h5e2  (892 ) N:    3581 (+ 0) (P:  0.94%) (WL: -0.98817) (D: 0.010) (M: 17.0) (Q: -0.98765) (U: 0.71436) (S: -0.37205) (V: -0.9984)
c8h3  (69  ) N:    7025 (+ 0) (P:  1.77%) (WL: -0.96234) (D: 0.019) (M: 35.6) (Q: -0.96140) (U: 0.68555) (S: -0.37199) (V: -0.8926)
c8g4  (67  ) N:   11175 (+ 0) (P:  2.83%) (WL: -0.96560) (D: 0.017) (M: 35.6) (Q: -0.96473) (U: 0.68920) (S: -0.37201) (V: -0.8905)
c8e6  (63  ) N:   16241 (+ 0) (P:  3.79%) (WL: -0.91858) (D: 0.072) (M: 63.0) (Q: -0.91498) (U: 0.63453) (S: -0.37196) (V: -0.9088)
h5f7  (873 ) N:   37572 (+ 1) (P:  9.05%) (WL: -0.93662) (D: 0.055) (M: 55.9) (Q: -0.93389) (U: 0.65532) (S: -0.37196) (V: -0.9304)
h5g6  (877 ) N:   46166 (+ 0) (P:  9.58%) (WL: -0.85764) (D: 0.127) (M: 71.6) (Q: -0.85129) (U: 0.56447) (S: -0.37195) (V: -0.8755)
h5e8  (871 ) N:   70009 (+ 0) (P: 16.13%) (WL: -0.91185) (D: 0.078) (M: 64.1) (Q: -0.90794) (U: 0.62679) (S: -0.37195) (V: -0.9324)
c8f5  (65  ) N:   82997 (+ 2) (P: 15.92%) (WL: -0.82053) (D: 0.155) (M: 67.7) (Q: -0.81276) (U: 0.52209) (S: -0.37195) (V: -0.8223)
c8d7  (57  ) N: 75438485 (+157) (P: 31.75%) (WL: -0.39989) (D: 0.547) (M: 125.6) (Q: -0.37253) (U: 0.00115) (S: -0.37195) (V: -0.9264)
node  (  24) N: 75735453 (+160) (P: 100.0%) (WL: -0.40182) (D: 0.544) (M: 125.8) (Q: -0.37464) (V: -0.8722)
<< bestmove g7e5 ponder c8d7
TMGR: Updating endmove stats. actual_move_time=305613ms, allocated_move_time=326035.250000ms (ratio=0.937362), expected_move_time=130691.945312ms. New time_use=0.560160, update_rate=2.800547 (avg_move_time=109126.195312ms). piggybank_used=0ms
End a watchdog thread.
>> position startpos moves e2e4 e7e6 d2d4 d7d5 b1c3 f8b4 e4e5 d8d7 a2a3 b4c3 b2c3 b7b6 d1g4 f7f5 g4g3 b8c6 h2h4 c8b7 a3a4 e8c8 c1a3 g8h6 f1b5 a7a6 b5e2 h6f7 g1h3 h8g8 a3b4 a6a5 b4a3 c8b8 h3f4 c6a7 a3b2 d7c6 g3f3 f7h8 f3h5 h8g6 f4g6 h7g6 h5g6 c6d7 g2>
Aborting search, if it is still active.
Search destroyed.
>> isready
<< readyok
>> go wtime 1724098 btime 883842 winc 7000 binc 7000
TMGR: Updating tree reuse. last_move_nodes=144676675, this_move_nodes=75438642 (tree_reuse=0.521429). avg_tree_reuse=0.639075, update_rate=2.800455 (avg_move_time=109126.195312ms, actual_move_time=305603ms)
TMGR: MOVE TIME: allocated()=0.0ms, expected(brutto)=0.0ms, expected(netto)=0.0ms, timeuse=0.56016
TMGR: MOVE NODES: avg_total_with_reuse(brutto)=56778352.0, avg_total_without_reuse(brutto)=20492752.0, reused=75438642, expected_new(brutto)=0.0, tree_reuse=0.63907
TMGR: PIGGYBANK: total=857744ms, increment=0.0ms, longthink=806279ms, max=5915483.5ms
TMGR: REMAINING GAME: nodes=226788000.0, moves=11.1, time=935821.2ms, nps=242341.2
RAM limit 48000MB. Cache takes 14800MB. Remaining memory is enough for 166000000 nodes.
Naphthalin commented 3 years ago

Unrelated to whether this behaviour is intended or not, this is a very interesting situation where the depth dependence of evals does strange things to our logic. Basically, if we assume that we're in a situation where the "real eval" is a draw, but it is overevaluated at low nodes. Higher node count will then mean more drawish and therefore lower Q; and if we're now dealing with a transposition, this means that the move with the lower policy will have lower N at the same Q, but as Q(N) is decreasing, we will always have highest N and best Q on different moves. Therefore, if we fix the behaviour of piggybank, transpositions like this would simply drain the time left.

Tilps commented 3 years ago

piggybank logic is Q+M_score (not Q+M or just Q). The puct is Q+M_score based, so it seems sensible that it should be done this way.

Adding M_score (not M) to the verbose move stats might be good - lack of precision in showing M value makes it hard to know exactly what the threshold is here.

Tilps commented 3 years ago

Actually I think the S column is Q+M_score now that I think about it. And it shows max_n had max_s.

mooskagh commented 3 years ago

It feels a bit excessive for such a tiny difference at such high distance (125.9 vs 125.8) to contribute relatively large score difference of 0.00050.

But I think it was mostly bad luck due to Q being very close too (diff being 0.00011).

Possibly in such cases we can activate piggybank too, but to have some logic so it doesn't drain entire thing.

mooskagh commented 3 years ago

Closing as the bug is explained and possibly will be resolved when #1582 is implemented.