Wednesday, August 31, 2022

Season 23 league 2

Final standings


Minic, Arasan, Fritz and Nemorino advance to league 1. Minic led the league with at least one game pair win against all the other engines, together with 2 game pair losses. Arasan and Fritz were also at the top, together they had only 3 game pair losses in the league. There were many engines in the race for 4th place, after RR3 Halogen was 4th and Nemorino was 0.5 points behind. In the last RR Halogen lost three games and dropped, while BlackMarlin won 4 games and took over 4th place. Then in the last round Nemorino beat BlackMarlin and tied their scores. The same win also ensured a head to head tiebreak advantage, Nemorino finished 4th to advance to league 1.

The advancing engines will play 2DDR in league 1 together with the following 8 engines:

played in season 22 premier division: ScorpioNN, Igel
played in season 22 league 1: Koivisto, RubiChess, Revenge, Ethereal
played in season 22 league 2: Seer
played in season 22 league 3: Berserk

Only two engines will advance to the premier division.

Interesting games

game 2, Nemorino - Weiss: The game started with a 21-ply book in the Benoni defense. The engines reduced to a QRB vs QRB position with black a pawn up. Nemorino had an eval advantage and Weiss played defensively, Nemorino walked its king to the queen side and then attacked. It captured two pawns and exchanged queens, it used passers to capture pieces and win. 

game 3, Arasan - BlackMarlin: The book favored black but Arasan equalized quickly, though black was two pawns up. Arasan got a pawn back and created a central passer, BlackMarlin gave a piece for the passer and the game reached a RBB vs RB position. All the white pawns were captured, Arasan trapped the black rook and forced a bishop for rook trade, resulting in a tablebase win. 

game 6, Marvin - Halogen: Halogen was tempted to capture a pawn in the opening, and as a result it was behind in developing its pieces. Marvin recovered the pawn and exchanged pieces, the game reached a RN vs RN position. Marvin used a passer on the 7th rank to gain material and win.

game 8, Wasp - Marvin: Wasp had an eval advantage that steadily increased. The black king remained in the center and Marvin had problems in development, it gave a knight for a pawn to get some space for its pieces. Wasp gained more material and was close to winning when it crashed, giving Marvin the point.

game 9, Velvet - Minic: Velvet had an advantage from the opening but Minic equalized quickly. Velvet gave a knight for 3 pawns to open the king side, then Minic took over and reduced to a R vs NN ending. Velvet was two pawns up but the black knights acted together effectively to capture white pawns. Minic gave a knight for the last white pawn and secured a tablebase win.

game 10, BlackMarlin - Fritz: BlackMarlin reduced to a RB vs RN position, each engine had 7 pawns and BlackMarlin had a 4-3 pawn majority on the queen side. After exchanging rooks BlackMarlin gave its bishop for two pawns, the white king came forward and captured two more pawns. Fritz couldn't prevent a queening, game over.

game 16, Minic - BlackMarlin: BlackMarlin moved its queen forward and evals jumped despite black being a pawn up. Minic had a central passer and BlackMarlin gave a rook for a knight to capture it. The game reached a RBN vs BNN position, Minic exchanged pieces and pawns and the game ended in a tablebase win. 

game 18, Halogen - Wasp: The game reached a pawnless RR vs RRB 7-man ending, Wasp won though it could have been a cursed win if Halogen was more accurate. 

game 21, BlackMarlin - Marvin: BlackMarlin had an eval advantage in a closed position, it may have won if it tried to open the king side. However it kept the position closed and after a lot of shuffling the game ended by the 50 move rule.

game 22, Weiss - Minic: Weiss was a pawn up from the opening, after a series of exchanges it was two pawns up. After some preparation Weiss attacked the black king, gained material and won.

game 26, Fritz - Nemorino: Fritz had an eval advantage from the start, it developed its pieces faster and it had more space. Fritz captured two pawns and then reduced to a winning B vs N ending. 

game 38, Minic - Arasan: Minic had an eval advantage and was a pawn up in a RN vs RB position. Arasan could have held perhaps, but it blundered and allowed Minic to reduce to a winning rook ending. 

game 47, Arasan - Marvin: Arasan outplayed Marvin in a position where the board was mostly blocked by pawns. After some shuffling the engines exchanged queens, then Marvin gave a bishop to capture two connected white passers. In a RRN vs RR position Arasan managed to capture almost all the black pawns, and eventually win material and mate.

game 48, Fritz - Minic: Fritz had an eval advantage from the start, it went a pawn up but Minic equalized. Then Fritz captured a pawn, ignoring the danger to its king. Minic attacked with most of its pieces, Fritz exchanged to protect its king but lost a piece. The game reached a winning pawns vs bishop ending.

Standings after RR1: Minic +7, Fritz +3, Arasan +2, Marvin Nemorino +1, BlackMarlin Velvet 0, Wasp -1, Halogen -2, Weiss Tucano -3, Winter -5. Minic is leading comfortably with 8 wins and one loss in the first RR, it appears to be on its way to advance to league 1. It is too early for any more predictions about the results of this league, the scores are too close and it is still not known how much effect the book sequences have. Note that if Wasp hadn't crashed it would have swapped places with Marvin.

game 70, Velvet - Fritz: Velvet was up 4 pawns for a bishop from the opening, Fritz had an eval advantage though its king was completely exposed. The game reached a RR vs RRB position, Velvet pushed a pair of connected pawns in the center which was probably a mistake. Fritz captured pawns and then gave its bishop and reduced to a winning rook ending a pawn up. 

game 72, Halogen - Marvin: Halogen may have had a chance to win in a closed double rook ending. It chose to shuffle and not try to break through, eventually the engines exchanged all rooks and the game ended in a draw.

game 86, Halogen - Velvet: The game reached a RRB vs QB position quickly. Halogen was a pawn up, it played more accurately and had an eval advantage. Progress was very slow with a lot of shuffling and a few pawn moves. Eventually Halogen created connected passers, Velvet gave the bishop to capture one of them after 20 more moves. It took Halogen another 15 moves to reduce to a winning bishop vs pawns ending.

game 95, BlackMarlin - Halogen: BlackMarlin had an eval advantage from the start. Halogen traded RR for Q and equalized, for a long while the engines shuffled and traded pieces until only QB vs RRN remained. Something went wrong for BlackMarlin after move 65, Halogen found safety for its king and the black rooks moved forward and attacked. Eventually Halogen traded everything and reduced to a winning king and pawns ending.

game 99, Halogen - Weiss: Weiss had an eval advantage from the start, it went up a pawn and then created an advanced passer. Halogen gave a rook for a bishop to get rid of the passer, Weiss used two more passers to gain material and win. There were two black wins in this opening.

game 104, Arasan - Minic: The game reached a RRB vs RRN position with white a pawn up, Arasan had an eval advantage but the engines shuffled and the position looked drawn. Arasan found a way to improve after move 55, it gave a pawn and moved a rook forward. Then Arasan captured a pawn and created two passers, eventually it gave a rook to queen one passer, the win was a matter of time. There were two white wins in this opening.

game 105, Nemorino - Marvin: Marvin was up a pawn from the start, it had an eval advantage but Nemorino seemed to have equalized. The game reached a RRB vs RBN position with black 3 pawns up. Nemorino was almost out of time when it lost control of the black passers, Marvin reduced to a winning rook ending. 

game 111, Wasp - Tucano: Wasp was a pawn up from the start but Tucano had the eval advantage. Tucano regained the pawn then it went a pawn up and slowly reduced to a BN vs BN position. Wasp gave a bishop to stop a passer, a second passer on the 2nd rank gave Tucano the win. 

game 116, Fritz - Marvin: Fritz had an eval advantage that gradually increased in a closed position. When the position opened Fritz captured a pawn and threatened the black king side. Marvin gave a bishop for a pawn, Fritz exchanged pieces and gained more material until it won. 

game 118, Nemorino - Wasp: Nemorino captured a rook for a knight early, but Wasp had a strong attack on the white king. Nemorino captured a second rook but couldn't prevent being mated on the board. 

game 122, BlackMarlin - Tucano: BlackMarlin had an eval advantage from the start, it tried to attack and traded RBN for Q, nothing came out of it and Tucano equalized. The black king found safety and then Tucano took over, it reduced to a Q vs RBB position. The black pieces worked in coordination, Tucano kept one pawn on the 2nd rank and reduced to a tablebase win. 

game 128, Minic - Halogen: Halogen was up a pawn from the start, it created connected passers and Minic gave a knight for two pawns to capture them. The engines exchanged pieces gradually, Halogen gave a knight to attack the white king. As a result the game reached a winning R vs RN ending. 

Standings after RR2: Minic Fritz Arasan +5, Marvin Halogen +1, Nemorino Velvet Wasp 0, BlackMarlin Tucano -1, Weiss -3, Winter -12. At the halfway point Fritz and Arasan join Minic in the lead, Arasan is the only engine with no game pair loss so far. All the other engines are still in the race for 4th place, except Winter and perhaps Weiss.

game 137, Minic - Wasp: Minic had an eval advantage from the start, it captured a pawn but the engines mostly shuffled. Perhaps Wasp should have tried harder to keep pieces on the board, the game reached a rook ending that Minic converted.

game 138, Marvin - Halogen: Halogen was a pawn up from the start, the engines gradually exchanged pieces until reaching a BN vs BN position. Halogen then captured two more pawns, it used the threat of passers to gain more material and win.

game 148, Minic - BlackMarlin: The game started with a 23-ply book in the Sicilian Dragon, Yugoslav attack. BlackMarlin was a bit slow, Minic gave two pawns and threatened the king side. BlackMarlin reacted on the queen side, the result was a RB vs B position with black 4 pawns up. The white rook was strong enough to stop the pawns, the game ended in a tablebase win. 

game 149, Marvin - Velvet: After the position opened up both engines had a passer but Marvin played better, the white passer was a bigger threat. Velvet gave material and the game reduced to a RR vs RB position, Marvin had more pawns and that was enough to win. 

game 152, Velvet - Halogen: Halogen was a pawn up with an eval advantage from the start. For a long time the engines mostly shuffled, there were a few exchanges and the game reached a RRB vs RRN position. Halogen opened the king side after move 100, then it managed to reduce to a winning double rook ending. 

game 153, BlackMarlin - Marvin: On the king side BlackMarlin threatened the black king, while on the queen side BlackMarlin worked slowly until it had an advanced passer on the 7th rank. The engines exchanged pieces until only RN vs RB were left. BlackMarlin gave a knight for a pawn and then Marvin lost both its pieces to stop passers, game over. 

game 164, BlackMarlin - Wasp: BlackMarlin was up a pawn from the start, the engines mainly shuffled until move 40. The position opened and Wasp created an advanced passer in the center. Wasp tried to attack but miscalculated, BlackMarlin was able to force exchanges while controlling the black passer. The game reached a RBN vs RBN position, the passer was gone and BlackMarlin was 3 pawns up, enough to win.

game 165, Weiss - Halogen: Halogen blundered in an apparently drawn QR vs QR position. Weiss exchanged rooks and moved its queen forward. Halogen's queen was deflected to capture a dangerous passer, this allowed the white king to move forward and capture two pawns. Halogen could only delay the white pawns with checks, eventually it lost its queen and the game.

game 166, Tucano - Marvin: The black queen came forward and captured a pawn, as a result Marvin's development was slow. Tucano created an advanced passer, and trapped Marvin's queen side rook and bishop. Tucano gave a rook for a bishop and pushed more pawns on the queen side, Marvin gave a bishop to free its rook and get rid of the passer. In a BBN vs RN position the white bishops were strong, it took a while but Tucano converted in the end. 

game 175, Winter - BlackMarlin: Winter captured a pawn early, opening files for BlackMarlin to threaten the white king. BlackMarlin gave two more pawns, then later regained them, its attack was not effective. Then in a QRN vs QRB position and with seconds on the clock BlackMarlin blundered, it captured a passer on the 7th rank and lost its bishop. Winter reduced to a RN vs R ending and used its last pawn to win, only its second win in this league.

game 192, Minic - Marvin: Marvin had an eval advantage from the start, and it steadily increased. The position opened and Minic created a passer, then it went a pawn up and reduced to a BNN vs BNN position. After a while Minic captured another pawn and added more passers, the win was just a matter of time. 

Standings after RR3: Minic +9, Arasan +8, Fritz +7, Halogen +2, Nemorino +1, Tucano 0, BlackMarlin -1, Marvin Velvet -2, Wasp -3, Weiss -4, Winter -15. It is very likely that Minic, Arasan and Fritz will advance. The 4th place is still open, Nemorino and Halogen are leading that race but more engines still have a chance. Marvin, Velvet and Wasp drifted down after negative scores in in RR3, it will be difficult for them to close the gap. 

game 204, Halogen - Marvin: Marvin was up  a pawn from the start, Halogen developed faster and evals became positive. One black bishop was trapped, Halogen had more space, the engines mostly shuffled but Halogen seemed to have a substantial advantage. However it chose to stay passive and didn't try to attack, the game ended in a 50 move draw.

game 210, Nemorino - Tucano: Tucano gave a rook for a knight without sufficient compensation, Nemorino reduced to a RB vs BN position. The endgame was slow, eventually Tucano gave a piece for the last white pawn and the game ended in a tablebase win.

game 227, BlackMarlin - Halogen: The engines shuffled from move 33 until both were playing on increment. BlackMarlin gave a pawn and Halogen moved a pawn, the shuffle extended to move 83. By then BlackMarlin had a big eval advantage, Halogen was forced to give a bishop to stop a mate threat, BlackMarlin reduced to a winning BB vs B ending. 

game 233, Minic - Nemorino: Minic had an eval advantage from the start, the black king was under pressure and then Minic added an advanced passer on the queen side. In the end Minic reduced to a R vs N ending with a pawn up and won.

Standings with 5 rounds to go: Minic +13, Arasan +10, Fritz +8, Halogen Nemorino +1, BlackMarlin 0, Marvin -1, Tucano Velvet -3, Wasp -4, Weiss -6, Winter -16. Halogen and Nemorino are tied in 4th place, BlackMarlin beat Halogen and is only 0.5 points behind. Marvin is also not too far behind. 

game 236, Arasan - Minic: Minic was up a pawn from the start, both engines had an advanced passer but the black passer had more support. After a while Minic managed to capture another pawn, and two more pawns became passers, all connected. Arasan tried to counter with an attack on the black king, after a series of exchanges the game reached a queen ending with Minic 3 pawns up, game over. This was the first game pair loss for Arasan in the league.

game 240, BlackMarlin - Velvet: Velvet blundered late in a RB vs RN position, it let the white king move forward and that was enough for BlackMarlin to reduce to a winning rook ending two pawns up.

game 249, Arasan - Halogen: In a RRB vs RRB position Halogen chose a line that led to a B for R exchange. The game reached a R vs B ending, Halogen had an advanced passer but it was not strong enough. Arasan was able to reduce to a tablebase win.

Standings with 2 rounds to go: Minic +14, Arasan +10, Fritz +9, BlackMarlin +2, Nemorino +1,  Halogen 0, Marvin -2, Tucano Wasp Velvet -4, Weiss -5, Winter -17. Halogen lost one game and Nemorino only drew, BlackMarlin won twice and is now in 4th place. Halogen has strong opponents in its last two games, it probably can't catch up. BlackMarlin and Nemorino will play each other in the last round, this may be the deciding game.

game 254, BlackMarlin - Tucano: Tucano pushed its king side pawns and left its king open to attack. BlackMarlin slowly increased the pressure while keeping its own king safe. In the end the game reached a B vs R ending, BlackMarlin was 3 pawns up with connected passers that ensured the win. 

All other games were drawn in the round, BlackMarlin is in 4th place and only Nemorino has a chance of catching up if it beats BlackMarlin in the last round.

game 263, Nemorino - BlackMarlin: The game reached a RB vs R position, BlackMarlin was a pawn up with an advanced passer as compensation for the piece. Evals were close to 0 when BlackMarlin blundered, it captured a pawn and created 3 connected passers but this allowed Nemorino to trap the black rook in front of the pawns. Nemorino gave its bishop to capture the black pawns and reduced to a winning rook endgame 2 pawns up.

With this win Nemorino and BlackMarlin are tied, and the win also means that Nemorino beats BlackMarlin on the head to head tiebreak.


Tuesday, August 30, 2022

Season 23 qualification league statistics

A summary statistics table of previous stages and seasons. 

The season 23 qualification league was a bookless event. Therefore the game pairing is not relevant and statistics related to it are not shown.

Draw rate, wins

Final draw rate was 48.1%.

Game termination

The three most common game termination causes were:
35.8% - SyzygyTB
32.1% - TCEC draw rule
22.2% - Mate

There were no actual crashes in the stage, but ClassicAra lost one game on time just before it was mated.

Moves per game 

Median= 66
Average= 70.7

There were 19 games longer than 100 moves, the longest was 193 moves (Winter - Velvet, game 107, draw).

Time per game (hours) 

Median= 1:02
Average= 1:00

Openings

Books were not used in this stage. The first letter of the ECO codes was distributed as follows: 


Wednesday, August 24, 2022

Season 23 qualification league

Season 23 started with a qualification league. It has been 4 months since the season 22 superfinal ended, during this time TCEC ran a cup, a swiss tournament, an FRC championship, a DFRC championship and other bonus events. 

The format of season 23 has changed a little, as change is one of TCEC's constants. This season there will not be leagues 3 and 4, after qualification there will be league 2 directly. Leagues 1 and 2 will each have 12 engines playing 2 DRRs, 4 engines are planned to advance to leagues 1 and 2 from lower leagues. The qualification league will be a swiss tournament with 18 engines and 9 double rounds. The engine placement in lower leagues is determined by their results in the swiss event of season 22, abandoning the league results. I assume this is due to the fact that some engines are rated above their league result, in season 22 there were only 2 engines advancing between leagues and some were left behind (Berserk is the most obvious example).

There are 18 engines in the qualification league trying to win one of 4 spots that move on to the next stage. The participating engines are:

played in season 22 league 2: ClassicAra, Winter
played in season 22 league 3: Weiss, Drofa, 
played in season 22 league 4: Zahak, Stash, MrBob, Amoeba, 
played in season 22 qualification league: BlackMarlin, Mantissa, Counter, Velvet, ChessFighter, Asymptote, Cheese, Bagatur, tomitankChess
new: Expositor 

Final standings


Velvet, BlackMarlin, Weiss and Winter advance to league 2. Velvet started strong including a double win against BlackMarlin, it kept the lead from the start to qualify. BlackMarlin recovered from its early losses, it won games at a steady pace to secure 2nd place. Many engines fought for the two remaining spots, luck was a significant factor. Winter and ChessFighter used the swiss system to get a double win in the last round against weak opponents, they joined Weiss in a 3-way tie. The other contestants had tougher opponents in the last round and stayed behind. For example ClassicAra lost a game in the last round against Velvet. Winter and Weiss qualified on a tiebreak, they had stronger opponents than the ones ChessFighter faced.

The qualifiers will play 2DDR in league 2 together with the following 8 engines:

played in season 22 league 1: Nemorino, Minic
played in season 22 league 2: Fritz, Halogen
played in season 22 league 3: Tucano, Arasan, Marvin, Wasp

Interesting games

games 3-4, ChessFighter - ClassicAra: Both engines won in white, which is unusual for engines with similar ratings and with no opening books. ClassicAra played weak moves as black in a Najdorf Sicilian, ChessFighter went 3 pawns up to win. In the reverse the engines left theory early in a QGD exchange variation, a late blunder by ChessFighter led to a winning queen ending with white a pawn up.

games 11-12, Velvet - MrBob: Velvet beat MrBob in both games, an unexpected result that perhaps hints that the actual rating difference is much higher than 2 (in favor of MrBob !), the official TCEC rating difference of these engines. The first game reached a RB vs BN ending which Velvet managed to convert despite being 3 pawns down. In the reverse MrBob chose a weak variant in a Giuoco Pianissimo opening, Velvet attacked the white king and traded Q for RB to win.

game 17, BlackMarlin - Winter: Winter was not accurate in the opening, BlackMarlin used its advantage to capture two pawns. The game reached an opposite color bishop ending, BlackMarlin captured another pawn and that was enough to win.

game 26, Weiss - ClassicAra: ClassicAra again was weak in the opening, it moved its queen forward and captured pawns, eventually it gave a knight for 3 pawns. Weiss attacked the black king and used its extra piece to force mate. 

game 28, Counter - Drofa: The game reached a B vs N ending, Counter was a pawn up but it seemed Drofa was holding. However something went wrong, Counter was able to give back the pawn and promote a passer to win. Drofa supposedly has a rating advantage of 100.

game 30, Mantissa - Stash: An attack on the black king resulted in a double rook ending with white 3 pawns up, a win for the lower rated Mantissa.

game 41, Stash - Winter: Stash may have missed a win in a RB vs RB ending up a pawn, Winter was able to hold the draw.

games 51-52, Amoeba - Mantissa: Mantissa missed a win as black in a N vs B ending and a pawn advantage. As white Mantissa had an early pawn advantage, after slowly exchanging most pieces Mantissa used a passer to gain material and win.

games 53-54, Velvet - BlackMarlin: Another double win for Velvet, this time against one of the stronger engines in the league. Velvet appears much stronger than its opponents in qualification. BlackMarlin chose to trade pieces as black that resulted in a RRB vs Q imbalance with black 3 pawns up. Velvet's rooks and bishops were strong, it managed to control the black pawns and reduce to a winning ending. As white BlackMarlin was a pawn up with a small advantage in a closed position. Late in the game the white queen came forward and captured 2 pawns, Velvet reacted with a deadly attack on the white king that resulted in material gain and mate.

Standings after 3 double rounds: Velvet +5, Expositor Weiss Zahak Mantissa +2, BlackMarlin +1, Counter MrBob Amoeba 0, Cheese ClassicAra Stash Drofa Bagatur Asymptote ChessFighter Winter -1, tomitankChess -6.

game 66, Amoeba - MrBob: MrBob missed a win in a QB vs QN position, it chose to capture a pawn and allowed Amoeba to exchange queens and reduce to a drawn ending.

games 67-68, BlackMarlin - Expositor: As white BlackMarlin trapped a black knight early and captured it for 2 pawns. The engines exchanged pieces until only R vs B remained, a won ending for white. The reverse game reached a QB vs QB position. At some point it seemed Expositor was winning, but it exchanged queens leaving a drawn opposite color bishop ending. 

game 69, Weiss - Mantissa: Mantissa captured a knight for a pawn, this opened a file through which Weiss attacked the black king. Weiss gained material and created an advanced passer to win. 

games 71-72, Zahak - Velvet: Another double win for Velvet. As black Velvet gave a knight for a pawn and opened a file in the center, the white king remained in the center and Zahak couldn't develop pieces on the king side. Eventually Velvet gained material and reduced to a winning RN vs R ending. In the reverse game Zahak moved its queen forward and couldn't find a way back. Velvet gave a rook for a bishop and attacked the black king, by the time the black queen made its way back the game reached a winning QB vs Q ending.

games 79-80, MrBob - Zahak: Both engines won as black, which is borderline weird. Zahak as black was a pawn down but the white king moved without castling. Zahak reduced to a RN vs RB position and captured two pawns, it used a passer to capture a piece and win. As white Zahak had an early R for N advantage with an advanced passer. Then it blundered when MrBob offered a rook, Zahak missed the deadly attack on its king that followed. The game reached a queen ending with black two pawns up, enough to win. 

games 85-86, Drofa - Winter: Both engines won as white. The first game reached a RN vs RB position, Drofa as white was two pawns up and Winter had a potential advanced passer as compensation. For a while it seemed Winter was holding but it made a mistake. Drofa exchanged rooks and controlled the black passer, Winter couldn't block all the white pawns supported by the king. In the second game Drofa ignored the danger to its king, the result of the attack was an opposite color bishop ending. Winter was only a pawn up but it had connected passers supported by the king, enough for a win.

game 88, BlackMarlin - Mantissa: Mantissa blundered in a B vs N ending. It captured the bishop for two pawns, then had to give the knight to stop a passer. BlackMarlin had enough pawns remaining to win. 

game 99, Zahak - ChessFighter: Zahak had an eval advantage, eventually ChessFighter cracked. The engines exchanged pieces until reaching a rook ending, material was equal but the white king and pawns were better placed. Zahak captured a pawn and created a passer to win.

game 102, ClassicAra - Expositor: The engines shuffled in a RBN vs RNN position, black had a passer on the 2nd rank but the game seemed to be heading for a draw. Then ClassicAra blundered and lost a pawn, this was enough for Expositor to create a second passer on the 2nd rank. Eventually Expositor queened a passer and won.

game 104Stash - Drofa: Stash had a passer on the 7th rank. For a while Drofa held on, then it gave a rook for a knight to capture the passer. Stash reduced to a RB vs NN position, it left one last pawn to ensure a win. 

Standings after 6 double rounds: Velvet +7, BlackMarlin Weiss +3, Expositor Stash +2, Winter Zahak Amoeba +1, ChessFighter Asymptote Mantissa Drofa MrBob ClassicAra 0, Counter -1, Bagatur -3, Cheese -5, tomitankChess -11. Velvet was slowed down but is still leading with a large margin. The other 3 qualification spots are still open, all engines but the 3 at the bottom still have a chance. Any encounter with a weak engine may result in a double win, part of the instability of the swiss system. 

game 121, Expositor - Weiss: The game reached a Q vs RB position, Expositor slowly captured black pawns until there was only one left. There were 3 white pawns, the advantage should have been sufficient. However Expositor could not convert, I couldn't say why exactly but apparently one wrong pawn move had deep consequences. Expositor bought time with checks but in the end it couldn't stop Weiss from queening first and this was enough for a draw.

game 124, BlackMarlin - Zahak: BlackMarlin had an eval advantage that gradually increased as the engines exchanged pieces. The game reached a rook ending with white a pawn up, BlackMarlin captured two more pawns and the white passers secured a win.

game 125, Stash - Velvet: The game reached a RN vs RB position and seemed drawn. After move 45 evals increased, Stash managed to capture a pawn and get an advantage. Stash created a passer and pushed it to the 7th rank, Velvet blocked it and held for a long time. Stash captured the bishop for the passer and then Stash blundered by capturing a white pawn. Stash kept its last pawn and exchanged rooks to get a tablebase win. 

Top engines with 2 double rounds to go: Velvet +6, BlackMarlin +4, Weiss Stash +3, Expositor ClassicAra Mantissa +2. Velvet lost a game for the first time in the league, but it will surely qualify. ClassicAra and Mantissa got double wins as gifts from the swiss system and are back in the race for now.  

games 135-136, Counter - Expositor: Both engines won as white. In the first game Counter was up a rook for a bishop, the game reached a RR vs RB position. Expositor captured a pawn without considering Counter's next moves, Counter gave the exchange back and reduced to a winning rook ending two pawns up. In the second game Expositor had an eval advantage that started to increase after move 44, Expositor gained material and reduced to a QR vs QN position. The black king was exposed to attacks, Expositor moved its queen across the board to capture a pawn and reduce to a winning R vs N ending. 

game 137, Amoeba - ClassicAra: ClassicAra played the opening better and it had an eval advantage. The game reached a RB vs RB position, ClassicAra had a better pawn structure. After a long shuffle ClassicAra captured 3 pawns, then used passers to gain material and win.

game 142, BlackMarlin - Stash: Stash moved its king without castling, giving BlackMarlin the advantage. BlackMarlin attacked the black king and the game reached a QRB vs QNN position. Stash had to give its queen to stop a passer, game over.

game 144, Velvet - Mantissa: The engines mainly shuffled in a QRR vs QRR position, Mantissa was a pawn up but evals were close to 0. Mantissa blundered when it captured a pawn and left the 7th rank unguarded. Velvet moved its rooks forward, captured a pawn and created an advanced passer. Mantissa had no defense, it lost a rook for the passer, giving Velvet the win.

Top engines before last round: Velvet +7, BlackMarlin +5, Weiss ClassicAra +3, Stash Expositor MrBob Zahak Drofa +2. Velvet and BlackMarlin will advance, the race for the other 2 spots will be fierce. Three more engines have a +1 score and are scheduled to play weak opponents, with a chance of a double win. It is quite possible that +3 will be enough to qualify and tiebreaks will be needed.

Winter and ChessFighter won twice against their opponents to end with +3, Counter failed to win even once and stayed on +1. Drofa, Expositor, Stash, Zahak, drew their games and stayed on +2. Weiss - which played against Zahak - stayed on +3. 

game 160, BlackMarlin - MrBob: BlackMarlin slowly increased the pressure on the black king, eventually the attack started and the result was a rook ending with white two pawns up. BlackMarlin used passers to win.

game 162, Velvet - ClassicAra: The black queen moved forward and captured a pawn, Velvet used this to develop its pieces faster. ClassicAra had a trapped rook and its king was exposed to attack, Velvet gained material and mated.

MrBob and ClassicAra lost a game each and their scores are under +3. Weiss and Winter join Velvet and BlackMarlin, ChessFighter is in 5th place on a tiebreak. This seems justified since Weiss and Winter faced the two leaders while ChessFighter did not.