The opening: Black has two moves to find

The forced part of the game is a chain of captures four or five plies long, with three forks on the main line. Two are Black’s, and both decide the game. One is Red’s, and does not. A fourth, after a losing move by Black, holds most of the tree. Red’s first move is a cannon taking a horse; the two choices are mirror images, so call it 1. Cxb10. In the boards below, the arrows are every capture the side to move has.

FORK A: BLACK TO MOVE楚 河 漢 界Mistboard
0 / 3

Fork A. Black must capture and has two ways: take the cannon back with the chariot, or fire the other cannon into Red’s back rank over Red’s own h3 cannon. 1...Rxb10 loses by force in 34 plies, and that is proven. 1...Cxh1 holds.

1 / 4
ForkCaptureWith best playEndings belowProven
Fork A1... Cxh1Draw8262
Fork A1... Rxb10Red wins11
Fork B2. Rxh1Draw10
Fork B2. Cxd10Draw8162
Fork C2... Cxf1Red wins8062
Fork C2... Kxd10Draw10
Fork D3. Kxf1Red wins10
Fork D3. Cxf10Black wins5844
Fork D3. Cxa10Draw2118
Every capture at the four forks, valued by backing the chain’s 83 endings up the tree: at each fork the side to move takes the capture that is best for it. Proven counts the endings below with a machine-checked proof.

One verdict on the main line rests on search alone. The engine found 2...Cxf1 losing at 100,000 nodes a move and again at a million, and the prover ran out of budget on it. If it does hold, Black has a second way to draw, and the game is still a draw.

Why the chariot recapture loses

A certificate is a tree: at every Red move it holds one move, and at every Black move it holds every legal reply. The one for 1...Rxb10 has 1,864 positions. Below is its main line. At Red’s first free move Black has 42 legal replies, and the certificate answers each of them.

楚 河 漢 界Mistboard
0 / 34
  1. 1
  2. The natural recapture. From here Red wins by force; the certificate covers 1,864 positions.

  3. 2
  4. 3
  5. 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.

  6. 3…
  7. 4
  8. The chariot to b2, with the b8 cannon now screened onto the b1 horse. Black has exactly one legal move.

  9. 4…
  10. 5
  11. Red must take the cannon.

  12. 5…
  13. Black must take the chariot: the whole b-file is open.

  14. 6
  15. A quiet move that leaves Black’s chariot exactly one capture, the elephant on c1.

  16. 6…
  17. 7
  18. The elephant steps to i3, into the chariot’s reach; two replies, both covered.

  19. 8
  20. 9
  21. 10
  22. 11
  23. 12
  24. 13
  25. 14
  26. 15
  27. 16
  28. 17
  29. Red has no pieces left and has won. Black could not decline a single capture along the way.

The main line of the proof that 1...Rxb10 loses, 34 plies, with notes on the plies that matter. The whole tree is in the evidence repository.

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. So Black’s only move is 1...Cxh1.

After the chain: what each side plays for

2. Rxh1 Rxb10: RED TO MOVE楚 河 漢 界Mistboard2. Cxd10 Kxd10 3. Rxh1: BLACK TO MOVE楚 河 漢 界Mistboard
The two endings that survive the chain. Fourteen pieces each, no capture on the board, and the game is open.

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. The engine’s games from here, at three budgets, show what the middlegame is about.

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.

A loose chariot is a liability. Put pieces in its path and it must take every one, which is how the chariot recapture loses. So both sides open by offering cannons. In the game at two million nodes a move, 3. Cb3 screens Black’s cannon onto the b1 horse, three captures follow, and both chariots are loose. Fourteen plies of compelled captures follow, with material coming off in step.

楚 河 漢 界Mistboard
0 / 44
  1. 1
  2. Cannon takes the horse over Black’s cannon. Red’s only two legal moves are this and its mirror image.

  3. 1…
  4. 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.

  5. 2
  6. The chariot takes the cannon. Continuing with 2. Cxd10, the other cannon capture, would also hold.

  7. 2…
  8. Black’s only legal move. The forced part is over: fourteen pieces each, Red to move, no capture on the board.

  9. 3
  10. 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.

  11. 3…
  12. Only legal move.

  13. 4
  14. The same exchange on the other wing: chariot takes cannon, and Rxb3 will be forced in reply.

  15. 4…
  16. 5
  17. 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.

  18. 5…
  19. 6
  20. 7
  21. 8
  22. 9
  23. 10
  24. 11
  25. 12
  26. The last capture of the feast. Five pieces each: general, two advisors, an elephant, one chariot.

  27. 12…
  28. 13
  29. 14
  30. Red pulls the lever. The elephant steps to i3, on Black’s chariot’s file, where Black has no other capture: Rxi3 is compelled.

  31. 14…
  32. 15
  33. 16
  34. The chariot itself: Ri2, and Black must take it. Red now has nothing that can leave the palace.

  35. 16…
  36. 17
  37. The advisor steps into the chariot’s path. Black must take, and Red’s other advisor must take back.

  38. 17…
  39. 18
  40. Red: general and one advisor. Black: general, two advisors, an elephant. Nothing on the board can ever capture anything again.

  41. 18…
  42. 19
  43. 20
  44. 21
  45. 22
  46. 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 engine against itself at two million nodes a move, 44 plies. It opened on the other wing; the game is shown mirrored so its files match the boards above.

Or a slow war of soldiers. At five million nodes nobody finds a forcing offer early, and soldiers walk into each other for a hundred plies, taken in pairs, with an elephant and a general thrown in on the way.

楚 河 漢 界Mistboard
0 / 131
  1. 1
  2. 2
  3. The same four forced plies as every game.

  4. 3
  5. 4
  6. 5
  7. 6
  8. 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.

  9. 6…
  10. 7
  11. 8
  12. 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.

  13. 8…
  14. 9
  15. 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.

  16. 10
  17. 11
  18. 12
  19. 13
  20. 14
  21. 15
  22. 16
  23. 17
  24. 18
  25. 19
  26. 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.

  27. 20
  28. 21
  29. 22
  30. 23
  31. 24
  32. 25
  33. 26
  34. 27
  35. 28
  36. 29
  37. 30
  38. 31
  39. 32
  40. 33
  41. 34
  42. 35
  43. 36
  44. 37
  45. 38
  46. 39
  47. 40
  48. 41
  49. 42
  50. 43
  51. 44
  52. 45
  53. 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.

  54. 45…
  55. 46
  56. 47
  57. 48
  58. 49
  59. 50
  60. 51
  61. 52
  62. 53
  63. 54
  64. 55
  65. 56
  66. 57
  67. 58
  68. 59
  69. 60
  70. 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.

  71. 61
  72. 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.

  73. 62
  74. 63
  75. 64
  76. 65
  77. 66
  78. Third occurrence of the position: draw by repetition, five pieces each, both sides shuffling an elephant and a chariot.

The engine against itself at five million nodes a move, 131 plies, mirrored the same way. The notes follow the trades.

Then the palace makes it a draw

To win you must lose your general, both advisors and both elephants, and none of them can leave home. Each can only be taken by an enemy piece that comes to it, and both players are trying to get rid of exactly those pieces. Once neither side has a chariot, horse, cannon or soldier left, no capture is possible ever again, and the rules score that a draw.

PLY 35 OF THE 2M GAME: A DEAD BOARD楚 河 漢 界Mistboard
The engine’s own game at two million nodes a move, ply 35. Nothing on the board can ever capture anything again.

The two-million-node game gets there at ply 35, Red feeding its last mobile pieces to Black’s chariot, and repeats to a draw at ply 44. The soldier war ends with a chariot and the palace pieces each, and that draw can be checked by hand. Black’s chariot sits on lines none of Red’s pieces can reach, so it can never be made to capture; either chariot can be thrown away at will; and with no capture on the board any move is legal, so whoever wants to wait shuffles an advisor until the progress clock ends the game.

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 into captures you cannot refuse, park it, or wait. In every engine game one of the three was there when wanted, and in random play a quarter of 3,000 games stall.

This is evidence for a draw, short of a proof. Search to five million nodes a move found no win from either surviving position. We have not shown that a way out exists from every position the chain can lead to, only that no search found a position without one. The title is that verdict and that geometry.

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. We tried four, through the same referee, sweep, prover and self-play. None made a game.

Score every stall for the side with fewer pieces. This is FICS’s stalemate rule applied wherever the game stops, and it hands a frozen board to whoever is lighter. Random play goes from 26% undecided to 4% with no tilt (Red 47.9%). Engine play did not change at all: the engine does not know the rule, so the same games were simply scored differently, which says nothing about the game the rule would create. Testing it properly needs a Fairy-Stockfish patch so the engine plays for the count. It is the only repair that keeps the game recognisable and might work, and the stall key is already in the kernel if anyone wants to try.

Lose the general instead of everything. Codrus, the 1844 ancestor, puts the target in reach down a file, but a side that sheds its mobile pieces can still 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, keeps check and mate, and being mated or reduced to the bare general wins. It is decisive the wrong way: Black wins at one, two and five million nodes, and backing up its 16-ending chain gives Black too, with 7 of 13 losses proven. A check suspends the obligation to capture, and that tempo lands with the second player in every line we looked at.

Let the palace pieces out. That removes the fortress by removing the confinement, and most of what makes the pieces xiangqi’s goes with it. We did not measure it; it is a different board.

How we checked it

The referee is a xiangqi rule kernel with switches for the rules above. Its move generation matches Fairy-Stockfish’s on 209 positions, with 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.

The player is Fairy-Stockfish, configured through a variants 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.

The prover takes a position and a claim, such as “Red wins from here”, and builds a tree with one winning move at each of the winner’s turns and every legal reply at each of the loser’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 with a 60-ply cutoff that counts as a loss for the side trying to win, so a proof can never lean on it. Every proof is saved as a certificate, 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

The kernel walked every branch of the opening chain, 605 positions and 166 endings between 4 and 18 plies in, 72 of them at ply 14, and in 130 of them at least one general is already gone. Mirror images aside, 83 are distinct. The engine played a game from each at 100,000 nodes a move. In 70 of the 83 the game was over within 14 to 36 more plies, 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 plyMoves firstEndingsRed winsBlack winsStalls
4Red2101
5Black1001
6 to 12Alternating14860
14Red363600
15Black5041
16Red15816
17Black6060
18Red4004
One engine game from each of the 83 distinct endings, 100,000 nodes a move for both sides.

So inside the chain, every choice between captures is a choice about who moves first when the chain ends. Rerun 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.

The sweep finds candidates and settles nothing 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, since six of the 13 became wins at a million. The two stalls that matter are the surviving endings, and they stayed stalls at a million and in every game from the array at up to five million nodes a move.

The proofs

From each of the 70 decisive endings, with a budget of a million positions, 63 proofs closed, 7 ran out of budget, and none was refuted. The median proof is 19 positions, a single line in which every defending reply is compelled; the largest is the 1,864 of the chariot recapture. The checker passes all 63. The fork table is those values backed up the chain from the 100,000-node sweep, and scoring it from the million-node sweep changes no value within eight plies of the array.

Every game, to step through

Every game this article 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. Pick any other from the list.

All 169 games, each replayed through the rule kernel. The arrow keys step through the one on the board.

What we are publishing instead of a play page

Everything above is in one repository: the rule kernel, the three Fairy-Stockfish stanzas, all 166 endings of the opening chain, one engine game from each ending at each budget, every proof certificate, and the games in a viewer that opens from the folder. npm run verify replays every certificate against the rules in a few seconds and reports 63, 63, 20 and 7 valid, and 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 positions above, open an issue there. This page will say so.

Check the proofs yourselfLearn xiangqi