Antichess is chess with two rules changed. If you can capture, you must. You win by losing every piece you have. The king is an ordinary piece. Lichess plays it, and it was solved in 2016 (Mark Watkins showed 1. e3 wins by force for White).
I put those two rules on the xiangqi board and measured what came out. It is a draw: Black has two moves to find in the opening, Red cannot go wrong, and after that the pieces you must lose sit in the palace where nothing can reach them. Every other opening loses, 63 of them provably.
As far as I can find, this is the first analysis of antichess on the xiangqi board; the closest prior work is antichess on the mixed-army boards Synochess and Empire, and on 5x5 shogi.
Notation is chess-style, since this post is for chess players: R chariot, H horse, E elephant, A advisor, K general, C cannon, P soldier; files a to i from Red’s left, ranks 1 to 10 from Red’s side, so 1. Cxb10 is a cannon taking whatever stands on b10. A ply is one move by one side.
Every game this post rests on is in the viewer below: the engine against itself at one, two and five million nodes a move; a game from each of the 83 endings of the opening chain; the 20 ladder games where a strong engine met a weak one from random openings; and the main line of each of the 63 proofs. It opens on the 2M game, the one to step through first: the forced opening, both sides shedding material in step, Red giving its last mobile pieces away on purpose, and the board going dead at ply 35.
RedBlackRed winsBlack winsDraw%1 piecesply %1GameXiangqi boardStartBack one plyForward one plyEndBack to this positionForward one ply, best playTo the end of the lineBack to the arrayForward one ply along the main lineTo the end of the main lineby extinctionby stalemateby the progress clockby repetitionby a dead board, taking the general, taking the advisor, taking the elephant, taking the horse, taking the chariot, taking the cannon, taking the soldier. Only legal move.The start. Red to move; every legal move is a capture.Best play, engine against itselfEvery ending of the opening chain (%1), engine at 100kLadder: 100k against 10k nodes from eight random plies (20)Proof lines: the certificate’s main line (%1)%1M nodes a move, %2 pliesending at ply %1 #%2: %3 in %4ending at ply %1 #%2: stall, %3 at %4ending at ply %1 #%2: %3 in %4, provenpair %1, 100k as %2: %3 in %4ending at ply %1 #%2: %3, %4 positionsThe 2M game: the feast, then the lever, then a dead board (44 plies)The 5M game: a soldier war that goes nowhere (131 plies)%1 %2 after %3 plies, %4 million nodes a move for both sides.The engine opened 1. Cxh10; shown as its mirror image so the files match the boards in the post.%1 %2 after %3 plies. The chain ended at ply %4.%1 %2 after %3 plies. The chain ended at ply %4; the loss from there is proven.%1 %2 after %3 plies. The first eight plies were random; 100k nodes played %4, 10k the other side.%1 by force from the ending at ply %2: the certificate covers %3 positions, and this is its main line, every defender reply here being one the certificate answers.Fairy-Stockfish, %1M nodesFairy-Stockfish, 100k nodesFairy-Stockfish, 10k nodesthe proofTwo of the engine’s own games, opened at ply 4, where the forced part ends. The notes are on the plies that matter.Cannon takes the horse over Black’s cannon. Red’s only two legal moves are this and its mirror image.Black declines the chariot recapture, a proven loss, and fires the other cannon down the h-file with Red’s h3 cannon as the screen. The only move that holds.The chariot takes the cannon. Continuing with 2. Cxd10, the other cannon capture, would also hold.Black’s only legal move. The forced part is over: fourteen pieces each, Red to move, no capture on the board.The first free move of the game. Red puts its last cannon on b3, where it screens Black’s b8 cannon onto the b1 horse: an offer Black cannot refuse.Only legal move.The same exchange on the other wing: chariot takes cannon, and Rxb3 will be forced in reply.Both chariots are now loose on the back ranks with nothing but captures available. For the next fourteen plies each chariot has only captures to make, and the two sides shed material in step.The last capture of the feast. Five pieces each: general, two advisors, an elephant, one chariot.Red pulls the lever. The elephant steps to i3, on Black’s chariot’s file, where Black has no other capture: Rxi3 is compelled.The chariot itself: Ri2, and Black must take it. Red now has nothing that can leave the palace.The advisor steps into the chariot’s path. Black must take, and Red’s other advisor must take back.Red: general and one advisor. Black: general, two advisors, an elephant. Nothing on the board can ever capture anything again.Third occurrence of the position: draw by repetition. Red has fewer pieces and no way to lose them; Black has no way to make Red take anything.The same four forced plies as every game.The chariots take each other’s cannons and Red’s chariot is taken in turn: eleven pieces each, and the game becomes a soldier war.Red offers a soldier on i5. Black answers with a soldier on i6: now Red’s soldier must take it, and Black’s chariot must take back.Two soldiers off in two compelled captures. This is the trade the rest of the game is made of: a soldier steps into another’s path, the capture is compelled, and the capturer is taken in turn.A soldier taken by a soldier, then a soldier taken by an elephant. Material keeps coming off in pairs, and every capture is one the taker could not refuse.Black stepped an elephant into the path of Red’s last soldier, giving it up so the soldier lands on e8, where the chariot must take it. Red has no soldiers left.Red walks its general into the soldier’s path and Black must take it. Under these rules that is progress for Red; the elephant takes the soldier back, and no soldiers remain.From here nothing can be forced.Black’s chariot sits on the c-file behind its own elephant, on lines none of Red’s remaining pieces can reach; Red’s advisors and elephants cannot leave their half; and either chariot could be thrown away at will.Five pieces each, and the board is as dead as the palace-only one.Third occurrence of the position: draw by repetition, five pieces each, both sides shuffling an elephant and a chariot.The same four forced plies as every game.Third occurrence of the position: draw by repetition. Both sides kept a chariot and neither could make the other take it.
Black
Red
The opening: Black has two moves to find
The forced part of the game is a chain of captures four or five plies long, and there are three forks in it. Two are Black’s, and both decide the game. One is Red’s, and doesn’t. The boards below are all cut from one table: every position in the chain, every capture the side to move can choose from it, and what each capture leads to. The chip on a row is the value of the position after that capture if both sides then play the chain’s best captures; the small print is the evidence behind it, a proof where one closed and the engine’s verdict where none did. Hover a row to see the capture on the board; click it to follow it, and step forward past an ending to watch the game that came next.
RedBlackRed winsBlack winsDraw%1 piecesply %1GameXiangqi boardStartBack one plyForward one plyEndBack to this positionForward one ply, best playTo the end of the lineBack to the arrayForward one ply along the main lineTo the end of the main lineby extinctionby stalemateby the progress clockby repetitionby a dead board, taking the general, taking the advisor, taking the elephant, taking the horse, taking the chariot, taking the cannon, taking the soldier. Only legal move.StartThe arrayAfter %1%1 to move. One capture, and only captures are legal. Backing up every ending below: %2.%1 to move. %2 captures, and only captures are legal. Backing up every ending below: %3.%1 to move. No capture, so the chain of forced captures is over and the game is open.%1’s captures, best firstBest1 ending below, %1 proven%1 endings below, %2 provenengine: stalls at 100k; at 1M %1 at ply %2; not provenengine: stalls at 100k and at 1Mproven: over at ply %1, %2 positionsengine: over at ply %1 (100k), 1M agrees; not provenThe chain ends here%1 to move with no capture on the board.The engine’s game from here stalls %1 at ply %2 with 100,000 nodes a move, and %3 at ply %4 with a million. Under the rules as written a stall is a draw. Below is the 100k game.The engine’s game from here stalls %1 at ply %2 with 100,000 nodes a move, but with a million %3 wins %4 at ply %5: a verdict the prover could not close, so this ending is scored as the 100k sweep found it.Under the rules as written a stall is a draw. Below is the 100k game.Proven. The certificate holds %1 positions and its main line ends the game at ply %2; a checker that knows only the rules has replayed it.Below is that main line: at every %1 move, either it was the only legal move or the certificate answers each alternative.The engine’s verdict, not a proof: %1 wins %2 at ply %3 with 100,000 nodes a move, and at ply %4 with a million. The prover ran out of budget here. Below is the 100k game.Chip: the value from there with best play on both sides. Small print: the evidence for it. Forward steps into the top row.The moves marked ! were the only legal move. Forward steps along the main line; the games viewer at the top holds the same line.Fairy-Stockfish against itself from this ending, 100,000 nodes a move, the kernel refereeing. Forward steps through it.The array. Red’s two legal moves are both captures, and mirror images of each other.Holds: a draw with best play.%1 with best play.%1 with best play, proven.Proof main lineEngine game
Fork A. After 1. Cxb10, Black has two captures and one of them loses
Black
Red
Red’s first move is a cannon taking a horse. The two choices are mirror images, so call it 1. Cxb10. Black must capture, and has two ways: take the cannon back with the chariot, or fire the other cannon into Red’s back rank (a cannon captures by jumping exactly one piece; here Red’s own h3 cannon is the screen). The natural one, 1…Rxb10, loses by force in 34 plies, and that is proven. The other, 1…Cxh1, holds.
Why the chariot recapture loses
Here is the proof, all of it. A certificate is a tree: at every Red move it holds one move, and at every Black move it holds every legal reply. This one has 1,864 positions, and the widget holds them all. Step forward to follow the main line, with notes on the plies that matter; or at any Black move pick a different reply and follow that instead. Every row is a legal move, there are no others, and every line ends with Red out of pieces.
RedBlackRed winsBlack winsDraw%1 piecesply %1GameXiangqi boardStartBack one plyForward one plyEndBack to this positionForward one ply, best playTo the end of the lineBack to the arrayForward one ply along the main lineTo the end of the main lineby extinctionby stalemateby the progress clockby repetitionby a dead board, taking the general, taking the advisor, taking the elephant, taking the horse, taking the chariot, taking the cannon, taking the soldier. Only legal move.1...Rxb10: the whole proofBlack, any replyRed, the certificateRed has no pieces left. Extinction: Red wins.This is the end of the main line.A line of the certificate, %1 plies from the array.Every line of the certificate ends like this. Back steps up; the first button returns to the array.%1 to move. The opening: Black takes back with the chariot, the move the certificate refutes.%1 to move. The opening: the only capture.one of two mirror-image first movesthe certificate refutes it: %1 positionsthe only legal captureForward steps through the four opening plies to the position the proof starts from.Red to move. The certificate holds one move here, and it wins against every reply.≤%1 pliesmain line · wins against every reply · 1 position%1 positionsForward plays it.Black to move. One legal move, and the certificate answers it.Black to move. %1 legal moves, and the certificate answers each one. Pick any.Black’s replies, longest firstover withinOnly one legal move: Black must capture. Forward plays it.Every row is a legal Black move; there are no others. Forward follows the main line.The array. The proof refutes 1...Rxb10; step forward to reach it., off the main lineThe natural recapture. From here Red wins by force; the certificate covers 1,864 positions.Red’s first free move is quiet: the chariot steps to a2. Black has 42 legal replies and the certificate answers each one. This is the main line.The chariot to b2, with the b8 cannon now screened onto the b1 horse. Black has exactly one legal move.Red must take the cannon.Black must take the chariot: the whole b-file is open.A quiet move that leaves Black’s chariot exactly one capture, the elephant on c1.The elephant steps to i3, into the chariot’s reach; two replies, both covered.Red has no pieces left and has won. Black could not decline a single capture along the way.
1...Rxb10: the whole proof
Black, any reply
Red, the certificate
A quiet move that leaves your opponent exactly one capture is a move your opponent has to make. Red’s back-rank pieces become a queue, and Black’s chariot, forced to take whatever is put in front of it, empties the queue for Red. Thirty plies later Red has nothing left and has won. A checker that knows only the rules has replayed the whole tree; the widget is the same tree.
So Black’s only move is 1…Cxh1.
Fork B. After 1…Cxh1, Red has two replies and both hold
Black
Red
Red can take the cannon quietly, 2. Rxh1, and the exchange is over: 2…Rxb10 is Black’s only capture, and the chain ends at ply 4 with Red to move and no capture on the board. Or Red can keep firing, 2. Cxd10, which also holds and sets Black a second trap. This is the fork that does not matter. The engine’s own games from the array took 2. Rxh1 at every budget.
Fork C. After 2. Cxd10, Black must take with the general
Black
Red
Black again has two captures, and again the obvious one is the losing one. Taking the cannon with the general, 2…Kxd10, holds: 3. Rxh1 is then Red’s only capture, and the chain ends at ply 5 with Black to move, the same kind of position as the ending after 2. Rxh1 with the other side to move. Firing the cannon on, 2…Cxf1, loses: Red takes it with the general, 3. Kxf1, Black’s only capture is 3…Kxd10, and the chain ends at ply 6 with Red to move. From there Red wins by extinction in 38 plies at 100,000 nodes a move, and at a million.
That last one is the engine’s verdict, not a proof. The prover ran out of budget on it, and it is the one ending on the main line that rests on search. If 2…Cxf1 does hold, nothing above changes: Black has a second way to draw, and the game is still a draw.
After 2…Cxf1 Red has three captures, and this is where the rest of the tree lives:
Black
Red
The move that wins is 3. Kxf1. The other two keep the chain going, and 80 of its 83 endings sit below them: 3. Cxa10 leads into 21 and is a draw with best play; 3. Cxf10 leads into 58 and loses for Red with best play (Black answers 3…Kxf10, the general taking the cannon again, and the chain ends at ply 7 with Black to move). Both are captures Red never needs to make, so nobody can be made to reach those 80 endings; the viewer walks into them if you want to look.
After the chain: what each side plays for
The two endings that survive: left, four plies in, Red to move; right, five plies in, Black to move, the general having taken the cannon on d10. 14 pieces each, no capture on the board; the engine drew every game from here at three budgets.
These are the two endings that survive: left, after 1. Cxb10 Cxh1 2. Rxh1 Rxb10, Red to move; right, after 2. Cxd10 Kxd10 3. Rxh1, Black to move, the same material with the general on d10 and the a10 chariot still home. Fourteen pieces each, no capture available, and the game is open. What follows is what the engine’s games show, at three budgets.
You cannot lose a piece; you can only have it taken. So every move is an offer, and the ones that count are the offers the opponent cannot refuse: a quiet move that leaves them exactly one capture. The middlegame is a contest in those.
A loose chariot is a liability. Put pieces in its path and it must take every one; that is how the chariot recapture loses. So both sides open by offering cannons instead. In the 2M game, 3. Cb3 screens Black’s cannon onto the b1 horse, three captures follow, and both chariots are loose: fourteen plies of compelled captures, material off in step.
Or a slow war of soldiers. In the 5M game nobody finds a forcing offer early, and soldiers walk into each other for a hundred plies, taken in pairs, an elephant and a general thrown in on the way. The notes on it below follow the trades.
RedBlackRed winsBlack winsDraw%1 piecesply %1GameXiangqi boardStartBack one plyForward one plyEndBack to this positionForward one ply, best playTo the end of the lineBack to the arrayForward one ply along the main lineTo the end of the main lineby extinctionby stalemateby the progress clockby repetitionby a dead board, taking the general, taking the advisor, taking the elephant, taking the horse, taking the chariot, taking the cannon, taking the soldier. Only legal move.The start. Red to move; every legal move is a capture.Best play, engine against itselfEvery ending of the opening chain (%1), engine at 100kLadder: 100k against 10k nodes from eight random plies (20)Proof lines: the certificate’s main line (%1)%1M nodes a move, %2 pliesending at ply %1 #%2: %3 in %4ending at ply %1 #%2: stall, %3 at %4ending at ply %1 #%2: %3 in %4, provenpair %1, 100k as %2: %3 in %4ending at ply %1 #%2: %3, %4 positionsThe 2M game: the feast, then the lever, then a dead board (44 plies)The 5M game: a soldier war that goes nowhere (131 plies)%1 %2 after %3 plies, %4 million nodes a move for both sides.The engine opened 1. Cxh10; shown as its mirror image so the files match the boards in the post.%1 %2 after %3 plies. The chain ended at ply %4.%1 %2 after %3 plies. The chain ended at ply %4; the loss from there is proven.%1 %2 after %3 plies. The first eight plies were random; 100k nodes played %4, 10k the other side.%1 by force from the ending at ply %2: the certificate covers %3 positions, and this is its main line, every defender reply here being one the certificate answers.Fairy-Stockfish, %1M nodesFairy-Stockfish, 100k nodesFairy-Stockfish, 10k nodesthe proofTwo of the engine’s own games, opened at ply 4, where the forced part ends. The notes are on the plies that matter.Cannon takes the horse over Black’s cannon. Red’s only two legal moves are this and its mirror image.Black declines the chariot recapture, a proven loss, and fires the other cannon down the h-file with Red’s h3 cannon as the screen. The only move that holds.The chariot takes the cannon. Continuing with 2. Cxd10, the other cannon capture, would also hold.Black’s only legal move. The forced part is over: fourteen pieces each, Red to move, no capture on the board.The first free move of the game. Red puts its last cannon on b3, where it screens Black’s b8 cannon onto the b1 horse: an offer Black cannot refuse.Only legal move.The same exchange on the other wing: chariot takes cannon, and Rxb3 will be forced in reply.Both chariots are now loose on the back ranks with nothing but captures available. For the next fourteen plies each chariot has only captures to make, and the two sides shed material in step.The last capture of the feast. Five pieces each: general, two advisors, an elephant, one chariot.Red pulls the lever. The elephant steps to i3, on Black’s chariot’s file, where Black has no other capture: Rxi3 is compelled.The chariot itself: Ri2, and Black must take it. Red now has nothing that can leave the palace.The advisor steps into the chariot’s path. Black must take, and Red’s other advisor must take back.Red: general and one advisor. Black: general, two advisors, an elephant. Nothing on the board can ever capture anything again.Third occurrence of the position: draw by repetition. Red has fewer pieces and no way to lose them; Black has no way to make Red take anything.The same four forced plies as every game.The chariots take each other’s cannons and Red’s chariot is taken in turn: eleven pieces each, and the game becomes a soldier war.Red offers a soldier on i5. Black answers with a soldier on i6: now Red’s soldier must take it, and Black’s chariot must take back.Two soldiers off in two compelled captures. This is the trade the rest of the game is made of: a soldier steps into another’s path, the capture is compelled, and the capturer is taken in turn.A soldier taken by a soldier, then a soldier taken by an elephant. Material keeps coming off in pairs, and every capture is one the taker could not refuse.Black stepped an elephant into the path of Red’s last soldier, giving it up so the soldier lands on e8, where the chariot must take it. Red has no soldiers left.Red walks its general into the soldier’s path and Black must take it. Under these rules that is progress for Red; the elephant takes the soldier back, and no soldiers remain.From here nothing can be forced.Black’s chariot sits on the c-file behind its own elephant, on lines none of Red’s remaining pieces can reach; Red’s advisors and elephants cannot leave their half; and either chariot could be thrown away at will.Five pieces each, and the board is as dead as the palace-only one.Third occurrence of the position: draw by repetition, five pieces each, both sides shuffling an elephant and a chariot.
Black
Red
Two of the engine’s own games, opened at ply 4, where the forced part ends. The notes are on the plies that matter.
Why it draws, and what that rests on
Generals and advisors never leave the palace; elephants never cross the river. Under “lose everything” those five pieces a side can only be taken by an enemy piece that walks up to them, and both players are trying to get rid of exactly the pieces that could.
The dead board. Once neither side has a chariot, horse, cannon or soldier, no capture is possible again. The rules don’t know the game is over.
THE DEAD BOARD楚 河 漢 界
Ply 35 of the engine’s 2M game. Generals and advisors never leave the palace and elephants never cross the river, so no piece here can ever reach another; under the rules as written the game runs on to a repetition draw.
The 2M game reaches this at ply 35, Red feeding its last three mobile pieces to Black’s chariot, and repeats to a draw at ply 44.
The soldier war ends with a chariot and palace pieces each, and that is a draw you can check by hand. Nothing of Red’s can leave Red’s half, so nothing can reach Black’s chariot; the chariot has lines no Red piece can ever stand on, so it can never be made to capture; and with no capture on the board any move is legal, so whoever wants to wait shuffles an advisor until the progress clock ends it. Same with the colours swapped.
To win you need the opponent to keep enough mobile force to eat your whole palace and to be compelled to use it. They control that force: they can throw it away into captures you cannot refuse, park it, or wait. In every engine game one of the three was there when wanted; in random play a quarter of 3,000 games stall.
Evidence, not proof. Search to five million nodes a move found no win from either surviving position; I have not shown the way out exists from every position the chain can lead to, only that nobody found one where it didn’t. The title is that verdict and that geometry, not a theorem.
Could it be made a game?
The draw comes from one fact: five pieces a side can only be taken by pieces the opponent would rather throw away. A repair has to change that, change what you have to lose, or change what a stall is worth. I tried four, through the same gate, sweep, prover and self-play. None made a game.
Score every stall for the side with fewer pieces. FICS’s stalemate rule, applied wherever the game stops. Dumping your pieces to freeze the board now hands the game to whoever is lighter. Random play goes from 26% undecided to 4% with no tilt (Red 47.9%). Engine play didn’t change at all: the engine doesn’t know the rule, so the same games were simply scored differently, and that says nothing about the game the rule would create. Testing it properly needs a patch to Fairy-Stockfish so the engine plays for the count, and a day of games. I stopped there.
Lose the general instead of everything. Codrus, the 1844 ancestor. The target is always reachable down a file, but the lever survives: a side that sheds its mobile pieces can never be made to take the enemy general. It draws through the same two opening lines, faster (28 endings, 20 of 25 losses proven, three self-play draws).
Keep the general royal. Losers, ICC’s version: check and mate stay, and being mated or reduced to the bare general wins. Decisive, and the wrong way: Black wins at one, two and five million nodes, and backing up its 16-ending chain gives Black too (7 of 13 losses proven). A check suspends the obligation to capture, and that tempo lands with the second player in every line I looked at.
Let the palace pieces out. That removes the fortress by removing the confinement, and most of what makes the pieces xiangqi’s with it. I didn’t measure it; it is a different board.
The first is the only one that keeps the game recognisable and might work; the stall key is already in the kernel if anyone wants to try.
How I checked it
Three tools, then what they produced.
The referee, the player, and the prover
The referee is a xiangqi rule kernel with switches for the rules above. I checked its move generation against Fairy-Stockfish’s on 209 positions: zero disagreements. In every game the engine proposes and the kernel decides, applies, and ends the game, so an engine quietly playing different rules aborts the run instead of producing a record of a different game.
The player is Fairy-Stockfish, configured through a file. Its evaluation was never taught this objective, and it shows: ten times the search beats one times the search only 10-4 with 6 draws here, against 20-0 on normal xiangqi. That is why the opening rests on proofs and not on the engine.
The prover takes a position and a claim (“Red wins from here”) and builds a tree in which Red has one winning move at each of Red’s turns and Black loses with every reply at each of Black’s, down to positions the kernel says are over. If the tree closes, the claim is a fact about the rules, whatever any engine thinks. It is proof-number search, the standard method, with a 60-ply cutoff that counts as a loss for the attacker so that a proof can never lean on it. Every proof is saved as a certificate, a nested list of moves, and a separate checker replays certificates against the kernel and does nothing else.
The sweep: whoever moves first at the end of the chain wins
When I first wrote the rules down I had Black’s reply as forced and every game beginning with the same four captures. Wrong. Black’s other cannon can take the h1 horse through Red’s own h3 cannon, and that starts a chain: each cannon lands beside a screen with a target behind it, the other side’s cannon answers along its own back rank, and it stops only when a cannon lands where a chariot can reach it. I had the kernel walk every branch: 605 positions, 166 endings between 4 and 18 plies in, 72 of them at ply 14, and at 130 of them at least one general is already gone. Mirror images aside, 83 are distinct.
I had the engine play a game from each, 100,000 nodes a move for both sides. In 70 of the 83 the game was over within 14 to 36 more plies, one side giving pieces away and the other compelled to take them, and the winner was whoever had the first free move at the ending, 66 times out of 70. The other 13 stalled, a draw under the rules as written.
ending at ply
who moves first
endings
Red wins
Black wins
stall
4
Red
2
1
0
1
5
Black
1
0
0
1
6 to 12
alternating
14
8
6
0
14
Red
36
36
0
0
15
Black
5
0
4
1
16
Red
15
8
1
6
17
Black
6
0
6
0
18
Red
4
0
0
4
So inside the chain, every choice between captures is really a choice about who moves first when the chain ends. Repeated at a million nodes a move: eleven verdicts moved, six stalls became wins, two wins took longer, three stalls stayed stalls, and no win changed sides.
How much to trust that: 100,000 nodes is a cheap search and the engine is weak at this objective, so the sweep finds candidates; it does not settle anything on its own. Its wins held up: none changed sides at ten times the budget, and 63 of the 70 were then proven without the engine. Its stalls are weaker evidence: a stall means the engine found no win, and six of the thirteen turned into wins at a million. The two stalls that matter are the surviving endings, and those stayed stalls at a million and in every game from the array at up to five million nodes a move. That is where the doubt is concentrated, and the section on why it draws is about exactly that.
The proofs, and the table
From each of the 70 decisive endings, with a budget of a million positions: 63 closed, 7 ran out of budget, none was refuted. The median proof is 19 positions, a single line in which every defender reply is compelled; the largest is the 1,864 of the chariot recapture. The checker passes all 63.
Every ending then has a value, and the table in the opening section is those values backed up the chain: at each fork, the player to move picks the capture whose subtree is best for them. Two endings survive; every other one sits below a fork where the other side could have chosen a win instead. The table is scored from the 100k sweep; scoring it from the 1M sweep instead changes no value within eight plies of the array.
The evidence
Everything above is in one repository: the three Fairy-Stockfish stanzas, all 166 endings of the opening chain, one engine game from each ending at each budget, every proof certificate, the rule kernel, and the games in a viewer that opens from the folder. npm run verify replays every certificate against the rules and nothing else, in a few seconds, and reports 63, 63, 20 and 7 valid; the README has the four commands that reproduce the sweep and the proofs with a Fairy-Stockfish binary.
If you can show a third surviving opening, a defence in any certificate, or a win for either side from the position after the four forced plies, open an issue there. I want to see it, and this post will say so.