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.

Before Rc20.0level
After Rc2 Nd5+1.5better for you
After Qe4, if you passmateQxb7#
After Qe4, best reply Nd5-0.5about 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 4Qa4
    Your queen steps away and keeps the queens on.
  6. 5Qd2+1.5
    Their queen leaves the fork. Nothing fell. But their pieces went backwards and you stand better, about +1.5 for you.
  7. 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.
  8. 7If you pass...
    Pretend you do nothing. Watch b7.
  9. 8Qxb7#mate
    Their queen takes on b7. Checkmate.
  10. 9— Back to after Qe4 —
    You do not pass. 3 replies stop the mate. Here they are.
  11. 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
  12. 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
  13. 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+
  14. 13— A miss: a6 —
    Every other reply loses. Example: a6.
  15. 14a6
    Your pawn moves (a6). It does not stop the mate.
  16. 15Qxb7#mate
    Their queen takes on b7. Checkmate.

3. What the story says now

Scene 1 (their move):

Here your opponent moved their rook (Rc2). It hands you a chance. Let's find it.

Scene 2 (your reply):

They don't lose a piece right away, but after your reply (Nd5), attacking their queen and bishop, you end up with the better position. And (Nd5) is exactly what you played. Well done.

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.

ReplyScore for youHolds?Line
Nd5-0.46holdsNd5 Bf4 Rhd8 Rc2 Qa6 Be5 Qg6 Qxg6
b6-1.25holdsb6 Bf4 Ng6 Bg3 Qe7 Qc6 Qe3+ Kh1
c6-1.97holdsc6 Bg5 Nd5 Rxc6 Qxa2 Rxc8+ Rxc8 Bf4+
Qa6-5.04losesQa6 Qxe7 Rhe8 Qg5 Qd3 Rb3 Qe4 Qf4
Qxc1+-5.64losesQxc1+ Bxc1 b6 d5 Rcd8 Qxe7 Rhe8 Qxh7
Qxe3+-6.12losesQxe3+ Qxe3 Rhe8 Qf3 b6 a4 Rcd8 a5
Nc6-6.70losesNc6 Rxb7+ Ka8 Rb3 Qd6 Rxc6 Rce8 Qc2
Qb2-8.75losesQb2 Rxb2 b6 Qxe7 Rhe8 Qxe8 Rxe8 Bf4
Qb3-8.85losesQb3 Rxb3 b6 Qxe7 Rhf8 Qxh7 c6 Qg7
Qb4-10.75losesQb4 Rxb4 b6 Qxe7 Rhe8 Rxc7 Rxe7 Rxe7
a6matedmateda6 Qxb7#
h6matedmatedh6 Qxb7#
a5matedmateda5 Qxb7#
b5matedmatedb5 Rxb5#
... and 21 more replies, all mate in one (Qxb7#).

5. Why every rule stays silent here

RuleWhat it needsWhat it finds here
Forced line after the mistakeYour 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 upThe 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:

Their move (Rc2) was a mistake. Before it, (Qe4) threatened checkmate on b7. Only (Nd5), (b6) or (c6) stops it. Any other move and it is mate in one. After (Rc2) that chance is gone. Your reply (Nd5) hits their queen and bishop and leaves you better.

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:

Your reply (Nd5) hits their queen and bishop at once. They escape only because (Bc1) hits your queen back. Even so, their pieces go backwards and you come out ahead.

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.