Monday, September 14, 2020

Season 19 premier division, after RR4

Crosstable after RR4

Stockfish and Leela lead the table, AllieStein is 2 points behind. It is still early, each engine has 28 more games to play, yet the current leaders will probably play in this season's superfinal.

There are 4 engines in danger of being relegated. Fire dropped to the bottom after it lost 3 games in this DRR. Komodo was a point behind after RR3 but pulled itself up and is still in the race.

Almost all the decisive games are between the top4 and the bottom4 engines. Stockfish is the only engine to beat another top4 engine (twice, AllieStein and Stoofvlees). There are two games in which a bottom4 engine beat Stoofvlees, in both cases the reverse was won by Stoofvlees.

So far the change in openings has not affected the draw rate which continues to be around 80%. There were fewer decisive games in the second DRR than in the first. This is not a complaint, I am fine with this draw rate.

Interesting games

Game 58, Leela - Fire: Leela had a better position with eval over 1, Fire had a defense line across the board that Leela could not penetrate. The engines started to shuffle on move 42, Leela avoided a 50-move draw by giving a rook for a bishop and creating a passer. The shuffling continued for 30 more moves and evals slowly came down, then Leela had enough support to push the passer forward and evals started to increase. Leela captured 2 pawns and exchanged queens, Fire was busy blocking the passer and Leela was able to capture a rook for a knight and reduce to a winning RN vs RN ending 2 pawns up. Did Fire blunder?

Game 60, Stoofvlees - Komodo: Komodo had a weak knight that was almost trapped on the queen side. Stoofvlees' eval was over 1.5, the engines shuffled and exchanged pieces slowly. On move 62 the black knight was fully trapped and protected by a bishop. Komodo gave a rook for a knight to save its knight, but the resulting RN vs BN ending was a win for Stoofvlees.

Game 65, Leela - ScorpioNN: ScorpioNN grabbed two pawns with a knight, while leaving its king alone and in danger. Leela increased the pressure on the king side, ScorpioNN gave the knight for a pawn and exchanged pieces. The game reached a RB vs R position, black 2 pawns up with connected passers. Leela exchanged rooks, the bishop blocked the black passers and Leela queened a pawn to win.

Game 66, AllieStein - Stockfish: AllieStein traded Q for RNN early, it thought it had an advantage but Stockfish was sure in its defense. The engines mostly shuffled until AllieStein's eval came down for the draw rule.

Game 68, Komodo - Ethereal: Komodo may have had a chance in a RB vs RB position, but once it allowed a rook exchange the game reached a drawn bishop ending. 

Game 71, Stockfish - Stoofvlees: See featured game below.

Game 73, AllieStein - ScorpioNN: AllieStein possibly missed a win around moves 35-40, ScorpioNN had its major pieces on the queen side and AllieStein could have opened the king side to attack the black king. Instead ScorpioNN sacrificed a rook to open the queen side and exposed the white king. AllieStein thought it was winning but it missed black's 43rd move which forced it to give back a knight. AllieStein's attack on the king side came too late and wasn't strong enough. The engines exchanged pieces and gave checks, the game ended in a tablebase draw.

Game 78, Stockfish - Ethereal: The king side was quiet and the kings were safe while the action was on the queen side. Stockfish's eval started to jump as the engines exchanged major pieces along open files, the game reached a BN vs BN position. Both engines had a passer on the queen side, Stockfish blocked the black pawn while pushing its own to the 7th rank. After forcing a bishop exchange Stockfish used two pawns and its knight to prevent the black king from approaching the passer, the white king was free to pick pawns on the other side for the win.

Game 79, Leela - Komodo: The engines shuffled from move 21, a few pawn moves extended the game past move 120 with low evals. It appeared that Komodo blundered, it captured a rook for a knight but its queen was trapped in the corner. Leela reduced to a rook ending and went two pawns up, enough for a win.

Scores after RR3: Stockfish +6, Leela +5, Stoofvlees AllieStein +1, Fire -2, Ethereal ScorpioNN -3, Komodo -5. Stockfish and Leela extend their lead, AllieStein and Stoofvlees are unable to keep up. Four engines fighting against relegation, Komodo is sinking.

Game 88, Komodo - Stoofvlees: Stoofvlees gave a pawn and attacked the king side. Komodo captured a second pawn and exposed the black king, Stoofvlees continued to make threats on the king side but Komodo was confident its king was safe. Komodo's eval jumped when its queen came forward and captured two more pawns using checks. Stoofvlees' attack became irrelevant when Komodo pushed a passer to the 7th rank, the game ended in mate on the board. Two white wins in this opening.

Game 90, Stoofvlees - Ethereal: A 13 move miniature, a 3-fold almost immediately after book.

Game 91, AllieStein - Fire: AllieStein's eval increased after the start, the game reached a RBB vs RBN position and its eval was over 2. AllieStein gave two pawns and created a king side passer. The black king was too far away to help, Fire had to block with its rook. The white bishop pair was very strong, AllieStein created a second passer in the center and pushed it forward to win.

Game 92, Leela - Stockfish: The game reached a RRB vs RBB position with black 2 pawns up. Leela'a eval was close to 1 but it couldn't break through the black pawn wall. After a lot of shuffling and a rook exchange the position opened and the game ended in a tablebase draw.

Game 107, Komodo - Leela: Leela traded Q for RBB, then used the exposed white king to force a draw.

Game 111, Leela - Ethereal: Ethereal traded a rook for a bishop and pawn early. Evals remained be around 1 for many moves, the engines exchanged pieces and the game reached a RBN vs BBN position. On move 62 the engines exchanged a pair of bishops and evals started to increase. Leela was down to one pawn, but with patient and accurate play it managed to convert the win.

Game 112, Stockfish - Fire: Stockfish started the game with an eval of 1, it pushed pawns on the queen side and got as far as a5 and b6. After a few exchanges Stockfish captured a pawn and created a pawn majority on the queen side, its eval was over 6 by then. There were a few shuffling moves and then Stockfish used a queen exchange to get a pawn to the 7th rank. Fire had to give a rook to stop the passer and the game was over.

Featured game: Stockfish - Stoofvlees
Premier division, game 71
Link to game on TCEC

Stockfish's eval steadily increased after the opening, it jumped over 3 after a file on the king side was opened. Most of the black pieces were far on the queen side and the black king was not safe. Stoofvlees chose to fight back, it traded RN for Q to stop Stockfish's threats and started a king side attack on the white king.

Stoofvlees continued to give material to open the king side and keep the attack going at all cost, it sacrificed a knight to remove a pawn and then gave a rook to remove one of the defending bishops. Stockfish kept calm even though it seemed its king was totally exposed with very few pieces defending it.

However, the white king always had a way to escape, Stoofvlees could not ignore the material difference and its eval increased as well. The game was adjudicated with Stockfish a full queen up and about to capture another piece.


Monday, September 7, 2020

Season 19 premier division, after RR2

Crosstable after RR2

Stockfish leads with a 1 point gap. It started with 7 draws but had 4 wins in RR2. Leela, AllieStein and Stoofvlees are in the chase group. The top 4 engines appear to be a class of their own as in last season. This season Stockfish is using a NN for evaluation, the results show that this is the best evaluation currently available.

The bottom 4 engines are also close together. Komodo is currently last, this may be the first time it drops out of the top league since season 4.

The first RR was very drawish with only 4 decisive games. The organizers discovered that many of the openings were not supposed to be used in the premier division. The decision was to finish the DRR without change, fix the openings for the following games and add a 4th DRR to compensate for the initial drawishness. 

Interesting games

Game 4, Stoofvlees - Komodo: Evals started to climb after Stoofvlees gave a pawn and created a pawn majority on the queen side. The engines exchanged queens, and Stoofvlees regained the pawn and created a pawn majority on the king side in a RRB vs RRB position. Stoofvlees exchanged a pair of rooks and captured a pawn, the game was adjudicated before Komodo lost more material.

Game 6, Ethereal - Stoofvlees: Ethereal gave a rook for a bishop and pawn yet had a small eval advantage. Stoofvlees chose to give the material back, leading to a QRB vs QRB position with white a pawn up and evals over 2. Stoofvlees focused on the queen side pawns and neglected its king, it created connected passers and thought it was relatively safe. Ethereal saw further ahead and realized it was winning, it used the exposed black king to reduce to a queen ending with a passer on the 7th rank and the game was adjudicated.

Game 9, Leela - ScorpioNN: ScorpioNN grabbed a pawn with its bishop and Leela trapped the bishop. ScorpioNN gave a rook for a bishop before the trapped bishop could be saved, the game reached a RR vs RB position. Evals stayed around 1 for a while, then started to increase after Leela had only one pawn left, a passer supported by the rooks. Leela slowly pushed the passer forward, the black king was also pushed back. In the end the rooks were enough for a mate without queening the pawn.

Game 27, Ethereal - Leela: Ethereal gave a knight for 2 pawns, evals were close to 0 and the draw rule was a few moves away when Leela's (negative) eval started to increase. The white king was exposed and Leela found a way to exploit this fact, including an knight sacrifice that Ethereal refused. It was difficult for me to follow Leela's threats or understand Ethereal's choice of moves, evals rose quickly until Ethereal lost more material in a series of exchanges. Leela was a rook up and the game was adjudicated.

Scores after RR1: Leela +2, Ethereal Stockfish Stoofvlees AllieStein Fire +0, ScorpioNN Komodo -1. Only 4/28 decisive games. Leela leads with two wins, 7 draws for Stockfish, AllieStein and Fire.

Game 34, Stoofvlees - Ethereal: Stoofvlees had a space advantage, the center was blocked, a bishop and a knight on the 5th rank restricted Ethereal's movement. Evals increased while Ethereal tried to open the position and exchange pieces, Stoofvlees captured a rook for a bishop and only RRN vs RBN were left. Stoofvlees pushed a passer to the 7th rank and eventually Ethereal lost the knight to stop it. Two white wins in this opening.

Game 38, Stockfish - AllieStein: See featured game below.

Game 45, ScorpioNN - AllieStein: ScorpioNN was a pawn up with doubled queen side passers, but its pawn structure was weak. AllieStein stopped one passer on the 7th rank, went a pawn up and reduced to a RB vs RB ending. AllieStein played with a lot of patience, it managed to capture another pawn after 20 moves, then exchanged rooks 10 moves later. The bishops were of opposite color, but ScorpioNN couldn't block the 3 connected black passers supported by the black king.

Game 47, Stockfish - Komodo: Stockfish's eval started at 1 and gradually increased. Stockfish pushed pawns on the queen side and Komodo had difficulties developing its pieces. For a while the black queen was almost trapped on the king side, then the game redcued to a QRB vs QRB position. The black king was exposed, after exchanging rooks Stockfish used checks to capture 2 pawns and reach a winning same color bishop ending.

Game 50, Ethereal - Stockfish: Stockfish's (negative) eval jumped over 2 early, it eliminated the white king side pawns and Ethereal hid its king behind a black pawn. Ethereal exchanged pieces to make its king safe, the game reached a RN vs RB position with Stockfish 2 pawns up. The white knight blocked two passers on the king side, after some shuffling and a rook exchange Stockfish shifted its king to the queen side and captured another pawn. The game was adjudicated shortly afterwards.

Game 52, Stoofvlees - AllieStein: Evals were low all through the game, despite an early knight sacrifice by Stoofvlees. Stoofvlees attacked on the king side and traded RB for Q, AllieStein found a perpetual check draw. 

Game 54, AllieStein - Komodo: AllieStein was two pawns down but it trapped a black bishop in the corner. Within a few moves AllieStein's eval climbed to double digits, it exchanged queens and it had an extra piece to use. AllieStein created a queen side passer, Komodo finally sacrificed a knight for pawns to free its bishop, then it gave the bishop to stop the passer. AllieStein was up two bishops for 4 pawns, it continued to win material before the game was adjudicated. 

Game 56, Stockfish - Fire: There were only a few exchanges and the engines mostly shuffled for a long time. On move 58 Stockfish's eval started to jump quickly, in a long series of exchanges Stockfish created connected passers on the king side and reduced to a B vs N ending. Fire had to focus on the advancing passers, this allowed Stockfish to go 2 pawns up and win.

Featured game: Stockfish - AllieStein
Premier division, game 38
Link to game on TCEC

Stockfish created connected passers on the queen side early, its eval was over 1 for a while and then dropped down. AllieStein pushed pawns on the king side facing the white king, Stockfish had to be careful to keep its king safe and it seemed AllieStein had enough compensation for the white passers.

Stockfish captured a pawn on the queen side, AllieStein threatened to open the king side with a knight sacrifice. Stockfish refused to take and instead gave a rook for a knight, its king still in danger. Evals suddenly jumped over 2 on move 35, AllieStein did not expect Stockfish's move and immediately saw it was in trouble. Stockfish equalized the material and reduced to a RBN vs RBN position.

The white king was out of danger and the passers on the queen side became very strong. The black bishop was almost trapped, after a few moves Stockfish captured it and the game was adjudicated.

 

Monday, August 31, 2020

Season 19 league 1

Final crosstable

 

Fire and ScorpioNN promote to the premier division. The promotion race was very close and was decided only in the last rounds.

Arasan and Fritz relegate to league 1. Arasan lost half its games and was last throughout the league. Fritz had some hope of survival after it managed to win a game and catch up with Defenchess, but it dropped back down in the last rounds.

SlowChess and Igel made it to league 1 and stopped there. SlowChess started in qualification and promoted 3 times this season. Igel started in league 3 and promoted by tiebreak, then it got a boost by the NNUE technology and was much stronger in league 2. However it was not strong enough for the engines in league 1.

The premier league is the main TCEC event, the best 8 engines playing 3 DRRs with a long time control. Fire and ScorpioNN will join: Stockfish (new version using NNUE), Leela, AllieStein, Stoofvlees, Komodo and Ethereal.

Interesting games

Game 6, RubiChess - ScorpioNN: ScorpioNN was a pawn up with a queen side passer, and it neglected the danger to its king. The black queen was too far to help, RubiChess captured the passer and patienly arranged its pieces for attack. The game ended with mate on the board.

Game 7, Arasan - Xiphos: Arasan had a promising RR vs RB position, then it grabbed a pawn which let Xiphos create connected passers and force a draw.

Game 24, ScorpioNN - SlowChess: SlowChess was passive in a RBN vs RBN position, ScorpioNN opened a file and after some shuffling gave a rook for a knight and pawns to create a passer. The game was adjudicated with a second passer on the 7th rank.

Game 32, Xiphos - Defenchess: Defenchess was outplayed in an opposite color bishop ending, only one pawn down. A combination of a queen side passer and a king side pawn majority gave Xiphos the win.

Game 41, Xiphos - RubiChess: RubiChess pushed pawns on the king side while most of its pieces were on the queen side, its king became vulnerable. Xiphos opened the king side, it gave a rook for a bishop and created a passer. The game was adjudicated before RubiChess lost material.

Scores after 9 rounds: Fire +4, ScorpioNN Xiphos +2, SlowChess Igel +1, RubiChess rofChade Defenchess -1, Fritz -3, Arasan -4. Fire has a 1 point lead over the rest, there are 4 engines in the race for 2nd place. SlowChess and Igel will not easily promote this time. At the bottom Arasan and Fritz, they lost about half of the decisive games.

Game 50, ScorpioNN - Xiphos: ScorpioNN placed a protected bishop on e6 early, then added a rook on c6. Xiphos countered with a passer on the queen side, ScorpioNN stopped it on the 2nd rank. In a RBB vs RBN position ScorpioNN traded a passer for a knight, then reduced to a winning RB vs R ending. First loss for Xiphos in the league.

Game 55, rofChade - Fire: rofChade was a pawn up in a RN vs RB position, with all pawns on the king side. The white rook kept the black king away from the pawns, rofChade pushed its pawns forward slowly with support from its king. At the right moment rofChade exchanged rooks and reduced to a winning ending. First loss for Fire in the league.

Game 62, ScorpioNN - Igel: Igel gave a rook for a knight to stop a dangerous passer. ScorpioNN stopped a black passer on the 2nd rank and reduced to a winning R vs B ending. ScorpioNN takes the lead after round 13.

Game 69, SlowChess - ScorpioNN: ScorpioNN failed to see the danger to its king after the opening, it captured a knight while SlowChess chased the black king. The game ended in mate on move 34. 

Game 75, Fritz - Defenchess: The engines had long shuffle periods, evals started to jump after Fritz opened the king side on move 122. Fritz used the exposed black king to reduce to a winning QR vs QR ending two pawns up. First win for Fritz in the league.

Scores after 15 rounds: ScorpioNN Fire +3, Xiphos SlowChess +2, Igel rofChade RubiChess +0, Defenchess Fritz -2, Arasan -6. Four engines are very close at the top of the table. At the bottom Arasan will be last but the second relegation spot is not decided yet. Only 3 rounds remain.

In round 16 Fire beat Arasan, it is back in the lead. Fritz lost to RubiChess, it is in 9th place.

In round 17 Arasan lost again, the other games were drawn. The scores before the last round are: Fire +4, ScorpioNN +3, Xiphos SlowChess +2, rofChade RubiChess +1, Igel +0, Defenchess -2, Fritz -3, Arasan -8.  

In the last round Defenchess beat Arasan and survived. All other games were drawn, no change at the top, Fire and ScorpioNN promote, Fritz and Arasan relegate.


Saturday, August 29, 2020

Season 19 league 1 statistics

 A summary statistics table of previous stages and seasons. 

Draw rate, wins

Final draw rate was 71.1%.

Game termination

The three most common game termination causes were:

43.3% - TCEC draw rule
22.2% - TCEC win rule
21.1% - SyzygyTB

There were no crashes in the stage.

Moves per game

Median= 53.3
Average= 60.9

There were 8 games longer than 100 moves, the longest was 161 moves (SlowChess - RubiChess, game 81, draw).

Time per game (hours)

Median= 1:25
Average= 1:24

Openings

There were 8-move book openings in this stage chosen by Cato. The first letter of the ECO codes was distributed as follows:

The engines had almost no freedom to choose the opening variant, all the game pairs but one repeated the same ECO code and the same opening variant twice. All game pairs had the same ECO first letter.

Reverse pairs, wins


Reverse pairs, same moves 

Pairs of reverse games diverged very quickly, 44.4% diverged immediately out of book, 80% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 14 plys (Igel - ScorpioNN, games 17 and 62, Philidor exchange variation, ScorpioNN won as white)

 

Tuesday, August 25, 2020

Season 19 league 2

Final crosstable

 

Igel and SlowChess promote to league 1. As a result of Booot dropping out of season 19 it was decided that there will be a 3rd engine promoting, so RubiChess will also play in league 1. Igel was updated before the league started, it now uses the rising NNUE system (for evaluation? using GPU? I'm not clear about this). In this league the new version was much stronger than the previous one. SlowChess continues to rise, this is its third promotion of the season. RubiChess joined the leaders after a strong second half with a +4 score.

Nemorino and Wasp relegate to league 3. The race at the bottom of the table was close, there were 5 engines within one point with 3 rounds left. Then Wasp crashed in round 17, it relegated in a 3-way tiebreak situation. Nemorino was last just half a point below.

This league used variable length openings by Eduardo Sauceda (cookie_monster_71 in the chat) for the first time. I think the experiment was successful, the draw rate was lower than usual for this stage, the games were interesting and had a lot of variation, and it didn't feel like the openings were a major factor in determining the game results.

Igel, SlowChess and RubiChess will play in League 1 together with:
Fire, rofChade, Defenchess, Fritz, Xiphos, ScorpioNN, Arasan (all played in league 1 in season 18).

Interesting games

Game 1, Igel - Pedone: Igel reduced to a NN vs BN position. The white knights were strong with most pawns on the board, Igel created a passer and exchanged a knight for a bishop, the game was adjudicated before Pedone lost its knight.

Game 8, Demolito - Winter: Winter blundered in a N vs R endgame, it allowed the white king to move forward and support two advanced passers, Demolito converted the win.

Game 12, SlowChess - Igel: Igel went a pawn up and then very slowly improved its position. On move 58 only QRN vs QRB remained and Igel created a central passer, then abandoned it for a queen side passer. The game was adjudicated after the passer reached the 2nd rank and Igel captured another pawn.

Game 28, Igel - RubiChess: The black king was forced to move early and RubiChess castled by walking. Igel created an advanced passer in a RBN vs RNN position, and very slowly increased the pressure until RubiChess' defense collapsed. Igel reduced to a winning RN vs R endgame.

Scores after 9 rounds: Igel +7, SlowChess +3, Pedone +1, RubiChess Winter +0, Vajolet Chiron -1, Wasp -2, Demolito -3, Nemorino -4. Igel with a remarkable 7 wins in 9 games, nothing can stop it from promoting. SlowChess has a good chance of promoting for the 3rd time this season. Demolito and Nemorino close the table but the relegation race is still open.

Game 46, Pedone - Igel: Igel gave a rook for a knight on the queen side and attacked on the king side. Igel used an advanced passer and an attack on the white king to reduce to a RRB vs RBB position, Pedone couldn't stop all the advancing passers. Igel gets a double win against Pedone.

Game 51, RubiChess - Pedone: In a QBN vs QBN position RubiChess used the exposed black king to capture the bishop for pawns. After exchanging queens the extra piece was enough to win.

Game 73, RubiChess - Igel: The game reached a RBN vs Q position, the white king was exposed and Igel gave checks with its queen until it ran out. RubiChess went after the two black pawns, it finally managed to capture them on move 109. The last white pawn gave RubiChess the win. This is the first loss for Igel in the league.

Scores after 15 rounds: Igel +8, SlowChess +6, RubiChess +4, Pedone Vajolet +0, Winter Wasp Demolito -3, Chiron -4, Nemorino -5. Apparently 3 engines promote from league 2. RubiChess joins the leader group with 4 wins in 6 games, one against Igel. It seems the promotion race is almost over. Chiron and Winter drop after 3 losses each. There are 5 engines close to relegation and anything can happen in the last 3 rounds.

In round 16 Chiron beat Demolito and Wasp lost to SlowChess. The scores at the bottom: Winter Chiron -3, Wasp Demolito -4, Nemorino -5.

Game 85, Wasp - Winter: Wasp crashes unexpectedly in a drawn position with evals at 0.

All remaining games were drawn in round 17. The scores at the bottom: Winter -2, Chiron -3, Demolito -4, Wasp Nemorino -5. Winter is safe. The crash means that Wasp loses tiebreaks automatically.

Game 86: Pedone - Wasp: Wasp had a pawn majority on the queen side. It used an open file to apply pressure on the king side, and created a passer on the queen side while the white pieces were busy defending their king. The game was adjudicated with the passer on the 2nd rank.

Wasp won its last game, Chiron lost, Nemorino and Demolito drew their game. Chiron, Demolito and Wasp are tied at -4, Wasp's crash means it relegates together with Nemorino.

 

Monday, August 24, 2020

Season 19 league 2 statistics

 A summary statistics table of previous stages and seasons. 

Draw rate, wins

 Final draw rate was 51.1%.

Game termination

The three most common game termination causes were:

44.4% - TCEC win rule
28.9% - TCEC draw rule
14.4% - SyzygyTB

There was one crash in the stage by Wasp.

Moves per game 

Median= 58
Average= 63.9

There were 7 games longer than 100 moves, the longest was 196 moves (Igel - SlowChess, game 57, draw).

Time per game (hours) 

 Median= 1:00
Average= 1:01

Openings

There were variable length book openings in this stage chosen for the first time by Eduardo Sauceda (cookie_monster_71 in the chat). The first letter of the ECO codes was distributed as follows:

The engines had almost no freedom to choose the opening variant, all of the game pairs repeated the same ECO code and opening variant twice.

Reverse pairs, wins

 Reverse pairs, same moves 

Pairs of reverse games diverged very quickly, 46.7% diverged immediately out of book, 84.4% of the pairs diverged at most after 1 move. The longest repeated sequence of moves was 9 plys (Wasp - Igel, games 23 and 68, Sicilian dragon, Yugoslav attack, Igel wins as black)  

 

Wednesday, August 19, 2020

Season 19 league 3

Final crosstable

 

SlowChess and Igel promote to league 2. This is the second promotion for SlowChess this season. Igel and Minic competed for 2nd place and were tied in the end, Igel promotes on a tiebreak since it won one of their head-to-head games.

Counter and iCE relegate to qualification. Counter was at the bottom of the table from the start, it was also weak last season in league 3. iCE relegated after a weak 2nd half with 5 losses, last season it had a much better score. Roc survives after promoting from qualification.

SlowChess and Igel will join the following engines in League 2:
relegated from league 1 in season 18: RubiChess
played in league 2 in season 18: Pedone, Winter, Vajolet, Chiron, Wasp, Nemorino, Demolito

ChessBrain also played in season 18 league 2 but will not participate this season.

Interesting games 

Game 7, Pirarucu - Marvin: Marvin blundered in what appeared to be a drawn N vs B ending. Pirarucu blocked the black bishop and captured pawns with its knight to win.

Game 15, Topple - Pirarucu: In a RRB vs RBN position Topple created a queen side passer while most of the black pieces protected their king on the king side. Topple used the passer to reduce to a winning rook vs pawns ending.

Game 20, Igel - Minic: Minic gave a bishop for pawns to remove a white passer. Igel kept its last pawn safe in a RRB vs RR position, cleared a path for it and pushed it slowly forward to win.

Game 22, iCE - Igel: Igel was close to a win in a N vs R ending with a pawn on the 2nd rank, but a wrong pawn move allowed iCE to draw.

Game 27, SlowChess - Pirarucu: SlowChess reduced to a B vs N ending. The bishop had many pawn targets and Pirarucu couldn't protect all of them. A crucial queen side passer gave SlowChess the win.

Game 41, Marvin - Roc: A miniature, over on move 12 in a 3-fold repetition.

Scores after 9 rounds: SlowChess +3, Igel Minic +2, Pirarucu +1, Marvin Roc +0, Gogobello -1, Topple iCE -2, Counter -3. At the half point the promotion and relegation races are wide open. SlowChess is in the lead with a good chance to promote again, 3 more engines have positive scores and are not far behind. There are 4 engines with negative scores, all are candidates for relegation.

Game 46, Roc - Gogobello: Roc moved its queen into a trap in the corner, Gogobello reduced to a Q vs BN position 4 pawns up. By the time the queen got out of the trap there were too many black passers moving forward and Gogobello kept its king safe from checks. The game was adjudicated before Gogobello queened a pawn.

Game 48, Counter - Minic: Counter was 2 pawns up, but due to lack of tablebase support allowed Minic to reduce to a drawn rook ending with f+h pawns.

Scores after 15 rounds: SlowChess +6, Igel +4, Minic +3, Pirarucu +1, Topple Gogobello Roc -1, Marvin -2, Counter -4, iCE -5. The table is clearer with 3 rounds left. SlowChess continues to lead, probably Igel or Minic will also promote. At the bottom iCE lost 3 games and dropped to last, it will probably relegate with Counter.

In round 16 Minic beat Marvin, Igel drew against Topple and they are tied with two games to go. iCE and Counter lost again, Marvin is only 1 point away and is still in danger.

Game 85, Marvin - iCE: The engines shuffled in a closed position with Marvin up a rook for a bishop. After most pieces were exchanged the game reached a R vs N ending, iCE was 2 pawns up but Marvin kept its last pawn and secured the win. 

Round 17: Counter lost again, Marvin is safe, iCE and Counter relegate. Igel and Minic drew their games, they are still tied before the last round.

Game 88, Minic - Pirarucu: Minic opened the position starting with a knight sacrifice on move 102, that resulted in a R vs BB imbalance. All the white major pieces came forward, Minic created a passer and reduced to a R vs BB ending. The rook was strong enough to clear a path for the passer, giving Minic the win.

Igel needed a win in its last game against Counter, it played better than Counter and was a piece up when the game was adjudicated after only 36 moves. Igel and Minic have the same +5 score, Igel has a better tiebreak since it beat Minic in their direct mini-match.