A pending moment where the stronger move threatens mate in one, but three replies stop it · story 32f1cb86-9328-448a-9ccb-5c4abbb5d015 · room 1f4f58e2-1d4c-46d1-a18d-8832abb7e3e2 · move 1 · the board is shown from white's side, you play black
Their move (Rc2) gave up a mate threat. The stronger move (Qe4) threatens Qxb7 mate, but three replies stop it. Why no rule can tell this today, and what can tell it without the engine.
1. The game in plain words
You play black. Their queen is on f4 and their bishop on e3. Your queen sits on a3, deep in their camp. The game is level.
They played (Rc2). The rook guards their second rank. It does two bad things at once. It wastes a move, and it leaves the queen and the bishop on squares your knight can hit from d5.
You played (Nd5). It hits the queen and the bishop. They do not lose a piece, because (Bc1) hits your queen back and they get out. But their pieces go backwards and you stand better, about +1.5.
The stronger move was (Qe4). The queen looks down the long diagonal at b7, next to your king. If you do nothing, (Qxb7) is mate. Only three replies stop it: (Nd5), (b6) and (c6). After each of them the game stays about level.
In the real game they then played (Qe5) and lost the bishop to (Nxe3). That is a separate moment in the story.
2. Step through it
First the game (Rc2, Nd5, and their best way out). Then the stronger move (Qe4), the mate if you pass, the three doors, and one miss.
- 0Before their move0.0
You play black. Their queen stands on f4, their bishop on e3. Your queen sits deep on a3. The game is level, about 0.0. - 1Rc2 (played)+1.4
Their rook goes to c2. It guards their second rank. It does nothing near your king, and it leaves their queen and bishop on squares a knight can hit at once. - 2Nd5 (your reply)+1.5
Your knight hits their queen on f4 and their bishop on e3 at the same time. This is the reply you found in the game. - 3Bc1 (their best)
Their only way out. The bishop steps back and hits your queen on a3. If you now take their queen, they take yours. - 4Qa4
Your queen steps away and keeps the queens on. - 5Qd2+1.5
Their queen leaves the fork. Nothing fell. But their pieces went backwards and you stand better, about +1.5 for you. - 6— Instead: Qe4 —-0.3
The stronger move. Their queen looks down the long diagonal at b7, next to your king. Threat: Qxb7 mate. It also moves the queen off the fork square. - 7If you pass...
Pretend you do nothing. Watch b7. - 8Qxb7#mate
Their queen takes on b7. Checkmate. - 9— Back to after Qe4 —
You do not pass. 3 replies stop the mate. Here they are. - 10Door 1: Nd5-0.46
Your knight jumps to d5 and blocks the long diagonal. Their queen no longer sees b7. Score for you -0.46. Line: Bf4 Rhd8 Rc2 Qa6 Be5 - 11Door 2: b6-1.25
Your pawn steps to b6. The b7 square is empty, so there is nothing to take. Score for you -1.25. Line: Bf4 Ng6 Bg3 Qe7 Qc6 - 12Door 3: c6-1.97
Your pawn steps to c6 and blocks the diagonal. Score for you -1.97. Line: Bg5 Nd5 Rxc6 Qxa2 Rxc8+ - 13— A miss: a6 —
Every other reply loses. Example: a6. - 14a6
Your pawn moves (a6). It does not stop the mate. - 15Qxb7#mate
Their queen takes on b7. Checkmate.
3. What the story says now
Scene 1 (their move):
Scene 2 (your reply):
The story sees the fork ("attacking their queen and bishop"). It cannot say why (Rc2) was worse than (Qe4), because nothing falls in any line. "You end up with the better position" is all it has.
4. The replies after Qe4, scored
Every reply after (Qe4), scored from your side. A reply holds when there is no mate and it stays within three pawns of the best reply. Everything else is mate in one.
| Reply | Score for you | Holds? | Line |
|---|---|---|---|
| Nd5 | -0.46 | holds | Nd5 Bf4 Rhd8 Rc2 Qa6 Be5 Qg6 Qxg6 |
| b6 | -1.25 | holds | b6 Bf4 Ng6 Bg3 Qe7 Qc6 Qe3+ Kh1 |
| c6 | -1.97 | holds | c6 Bg5 Nd5 Rxc6 Qxa2 Rxc8+ Rxc8 Bf4+ |
| Qa6 | -5.04 | loses | Qa6 Qxe7 Rhe8 Qg5 Qd3 Rb3 Qe4 Qf4 |
| Qxc1+ | -5.64 | loses | Qxc1+ Bxc1 b6 d5 Rcd8 Qxe7 Rhe8 Qxh7 |
| Qxe3+ | -6.12 | loses | Qxe3+ Qxe3 Rhe8 Qf3 b6 a4 Rcd8 a5 |
| Nc6 | -6.70 | loses | Nc6 Rxb7+ Ka8 Rb3 Qd6 Rxc6 Rce8 Qc2 |
| Qb2 | -8.75 | loses | Qb2 Rxb2 b6 Qxe7 Rhe8 Qxe8 Rxe8 Bf4 |
| Qb3 | -8.85 | loses | Qb3 Rxb3 b6 Qxe7 Rhf8 Qxh7 c6 Qg7 |
| Qb4 | -10.75 | loses | Qb4 Rxb4 b6 Qxe7 Rhe8 Rxc7 Rxe7 Rxe7 |
| a6 | mated | mated | a6 Qxb7# |
| h6 | mated | mated | h6 Qxb7# |
| a5 | mated | mated | a5 Qxb7# |
| b5 | mated | mated | b5 Rxb5# |
| ... and 21 more replies, all mate in one (Qxb7#). | |||
5. Why every rule stays silent here
| Rule | What it needs | What it finds here |
|---|---|---|
| Forced line after the mistake | Your reply wins two pawns or more, or mates, in a short forced line. | (Nd5) forks, but (Bc1) hits back and nothing falls. Gain 0 in 23 plies. |
| Line they gave up | The stronger move leads to a capture line. | (Qe4 Nd5 Bf4 Rhd8 Be5 Rd7) is quiet. Gain 0. |
| Threat with one or two defenses (built, then reverted) | A real threat after the stronger move, at most two replies hold. | The threat is real (mate in one), but three replies hold: Nd5, b6, c6. And the rule cost up to 7 seconds of engine time per moment, so it was reverted. |
So the story falls back to the score sentence. The reader learns "better position" and nothing else.
6. Ways to tell it, without the Python servers
Fix A. A mate-in-one threat check in Node (Recommended)
The threat here is mate in one. That is cheap to find with chess.js, the library the story code already uses. After the stronger move, flip the side to move (allowed when the defender is not in check) and look for a move that gives checkmate. If there is one, the stronger move threatens mate. Then try every defender reply and check again whether a mate in one still exists. The replies where it does not exist are the defenses.
Cost: about 30 replies times about 30 attacker moves, under a thousand positions. That runs in a few milliseconds inside the story build. No engine call, no queue, no waiting.
What it cannot do: mate in two or more (chess.js is far too slow for that), and threats to win material. Of the 58 pending moments, 3 have a pass-mate in one (this one, room 9081a143 move 50 with two defenses, room 84cb9e39 move 9). The other five mate threats are mate in 3 to 18 and stay out.
Fix B. Allow three defenses when the threat is mate in one
The two-defense limit exists because a list of six moves says nothing. A mate threat is different. The sentence stays short and every reader understands it:
This is a copy rule, one number in the story code. With Fix A it needs no engine fact at all.
Fix C. Name the fork that wins nothing
The story already sees that (Nd5) attacks the queen and the bishop. It does not say why nothing falls. The engine line has the answer: the first reply (Bc1) attacks your queen. chess.js can check that from the existing line: does the first move of their reply attack our queen? If yes, add one sentence:
This uses only the facts the story already has. It fits every fork-with-a-counter-hit moment. I have not counted how many of the 58 pending moments it covers.
Together, A and B tell this moment fully with zero extra engine time. C adds the second half of the story (why the fork wins nothing) and works on its own too.