How Koga decides

Definition Capture the piece that was doing the guarding
  • The move played is a capture. The piece it takes was, before it was removed, defending one or more of its own pieces or squares.
  • Once that guard is gone, a piece it used to protect is left with fewer defenders than before — and is now either hanging or out-attacked.
  • We never count the king as a defender that can be removed this way, and we ignore the square our capturing piece is leaving (that was never a square the captured piece guarded for the enemy).
Immediate win When the weakened piece falls at once
  • If, right after the capture, a piece the guard had been protecting is left completely undefended and we already attack it, that is a clean annihilation — the protected piece can simply be taken next.
  • It also counts when we now have more attackers than defenders on a piece worth at least a minor piece, even if one guard remains.
  • There is one refusal here: if our capturing piece is the only thing attacking the weakened piece and that piece can just recapture us, it is a plain trade, not a real removal — so we hold that aside.
Filters Even trades do not count
  • Removing a defender only matters if it actually wins something. We check the capture with a full exchange evaluation: if the capturing piece survives with a net gain, the win is real and immediate.
  • If the capture is a wash — we take a piece and get taken back for equal value — it is not annihilation on its own. It only resurfaces if a later move in the line cashes in the weakened piece for real material.
  • When we look ahead, a follow-up capture on the weakened square counts only if it, too, wins material; a recapture that just trades back is ignored.
Follow-up & priority Deeper lines, mates, and what outranks it
  • If removing the guard does not win on the spot, we follow the main line: a later capture of the weakened piece, or a checkmate that the removal made possible, both confirm the annihilation.
  • But if the captured guard was itself pinned, the position is reported as capturing a pinned defender instead, and this plain annihilation label is set aside.

Test positions (the examples that guard against regressions)

A recapture is not annihilation

Lichess 06cqX. Black has just played Bxf3, and that bishop on f3 is the only piece guarding the rook stranded on a8. White wins with Qxf3, which incidentally removes that guard — but Qxf3 is a recapture of the bishop, not a thematic removal of the defender. The same move both takes the guard and creates the attack on a8 (the queen was not bearing on a8 before), so a coach reads it as 'recapture, then the rook is trapped', not annihilation. We report it as Trapped Piece instead. The board is shown just before Qxf3, so the f3 bishop is still on its square.

✗ not detectedRejected — recapture♟ Lichess 06cqXtest_detects_trapped_rook_with_no_legal_moves
r n . q . r k .
p . . . . p p p
. N . . p . . .
. . . . . . . .
. . . P . . . .
. . . B . b . .
P P . b . P P P
R . . Q . R K .
Attacking piece
Defender (removed or overloaded)
Targeted / won piece

An even trade is not annihilation

A constructed continuation we deliberately reject. Nxc6 takes one of the two pieces guarding the d8 queen, and later Qxd8+ lands on the weakened square — but Kxd8 simply takes the queen back for equal value. Because nothing is actually won, this is a straight trade, not a removal of the defender. The board is shown just before Nxc6, so the captured c6 knight is still visible.

✗ not detectedRejected — even tradetest_skips_pv_exploit_that_is_just_an_even_trade
r . b q k . n r
p p p p . p p p
. . n . . . . .
b . . . . . . .
. . . N . . . .
. . P . . . . .
P P . . . P P P
R N B Q K B . R
Attacking piece
Defender (removed or overloaded)
Targeted / won piece

A shield-pawn sacrifice is not annihilation

Lichess 0459E. Rxg3+ throws a rook onto the g3 pawn, but that pawn guards no piece — it only controls the empty squares f4 and h4. The line ends in a mate threat (Qf2-g2#), yet g2 is a square the g3 pawn never defended, so removing it annihilated no guard. This is a shield-demolition sacrifice (reported as Destroying), not annihilation. The board is shown just before Rxg3+, so the g3 pawn is still on its square.

✗ not detectedRejected — shield-pawn sac♟ Lichess 0459Etest_shield_pawn_sac_into_mate_is_not_capturing_defender
. . k . . . r .
p . p . . p r p
. . p . . . . .
. . q . . . . .
. . Q . . . . .
. . . . . . P b
P P P N . P . P
R . . . R . K .
Sacrificed piece
Defender (removed or overloaded)
Piece that moves

Golden puzzles — every real Lichess puzzle Koga is tested against for this tactic (10)

Lichess 07NOA

Lichess 07NOA (rating 1672). Solution: Rxc4 dxc4 Nxd2.

✓ detectedrating 1672♟ Lichess 07NOA
. . r r . k . .
. p . . b . p p
p . . . . n . .
. . . . R . . .
P . N p . . . .
. n . P . . P .
. P . B . P B P
. . . . . R K .

Lichess 04Svx

Lichess 04Svx (rating 1219). Solution: Nxd2 Bxd2 Bxf3.

✓ detectedrating 1219♟ Lichess 04Svx
r n . q . . k .
p b p p . . p p
. p . b p . . r
. . . . . p . .
. . . P n . . .
P . P B P N P .
. P Q N . P . P
R . B . . R K .

Lichess 06qRA

Lichess 06qRA (rating 1516). Solution: Qxd2 Rxd2 Bxe3+.

✓ detectedrating 1516♟ Lichess 06qRA
. . . q . . k .
. . . . . . . p
p . . . . . p b
. p . . P p . .
. . r . . . . .
. . N . P . . P
P P . Q . . P .
. . . R . . K .

Lichess 03HWv

Lichess 03HWv (rating 1739). Solution: Nxd4 Nxd4 Qxg7+ Rf7 Qxd4.

✓ detectedrating 1739♟ Lichess 03HWv
r . . q . r . .
. . p . k . p .
p . n . p . Q p
. . . p . . P .
. . . b . . . P
P P . B . N . .
. . . . . P . .
R . . . . R K .

Lichess 04JEF

Lichess 04JEF (rating 2047). Solution: Nxc3 Qxc5 Rxd1+ Qg1 Rxg1+.

✓ detectedrating 2047♟ Lichess 04JEF
. . . r . b k .
p p p . p . p .
. . . . . . . .
. . q n . . . Q
. . . . . P . B
. . N . . . . .
P P P . . . P P
. . . R . . . K

Lichess 09FRI

Lichess 09FRI (rating 1132). Solution: Bxf6 Qxf6 Qxd7.

✓ detectedrating 1132♟ Lichess 09FRI
r . . . . r k .
p p . b q p p .
. . p . . n . p
. . . . . . B .
. . . . . . . .
. . P Q . . P .
P . . . P P B P
R . . R . . K .

Lichess 022C8

Lichess 022C8 (rating 1768). Solution: Qxf5 Bxf5 Bxe5 Be6+ Kh8.

✓ detectedrating 1768♟ Lichess 022C8
r . q . . r k .
. b . . . . p p
p . . b . n . .
. . p p N Q . .
. . P . . . . .
P . N B P . . P
. . . . . P P .
. R . . R . K .

Lichess 09ORz

Lichess 09ORz (rating 1537). Solution: Nxe5 dxe5 Qxc6.

✓ detectedrating 1537♟ Lichess 09ORz
r r . . . . k .
. . . n . . p p
. . R q p . . .
. . . p N p . .
. . . P . . . .
. . . . P . P .
. P . Q . P . P
. . . . . R K .

Lichess 0Bnpn

Lichess 0Bnpn (rating 1207). Solution: Nxc4 Qc5 Qxd3. Koga intentionally does not flag Annihilation here — Koga reports the more specific pinned-defender motif (a pinned recapture), which subsumes capturing-the-defender.

✗ not detectedKnown boundary♟ Lichess 0Bnpn
. . . . . . k .
. . . . . p p p
. q b . . n . .
. p . . p . . .
. . p . P . . .
. . P r . . P .
. . Q N . P B P
. R . . . . K .

Lichess 08MjH

Lichess 08MjH (rating 1667). Solution: Qxf6 Rxf6 Rxd8+.

✓ detectedrating 1667♟ Lichess 08MjH
. . . r . . k .
p . . R . . p .
. p . . p q r p
. . . b . p . .
P . B Q . P . .
. P . . . . P .
. . . . . . . P
. . . . . R K .