Offline experiment · 32 decodechess.com pages fetched with Playwright, catalogued by Codex inside the research jail · fact generator ai-workspace/game-story-prod-review/regen/decode-facts.mjs on the production rules · chess.js only, no engine call · round 2, 2026-09-04
What DecodeChess explains, and which of our 58 pending moments its fact types can explain better than the story does today
1. How DecodeChess works, in its own words
- “AI algorithms that mimic high-level human cognitive functions.”
- “auto-explains the moves of a chess engine (Stockfish) in rich, intuitive language.”
- “cognitive computing approaches to emulate human abstract thinking.”
- “Unlike chess engines which search for good moves, DecodeChess looks for chess concepts.”
- “Every suggested chess concept is verified to being relevant and important to the decoded position.”
- “an open file is suggested as a factor…only if it can be proved to affect the future course of the game.”
- “bases its conclusions on vast searching abilities of the search engine (Stockfish in our case)”
- “auto-generates chess explanations that are similar to those of a human chess master”
- “combination of human thinking and computer calculation”
- “These annotated variations are a pure result of our algorithm’s work. They are not provided by the chess engine whatsoever!”
- “our algorithms use Stockfish hundreds of times in various depths”
- “allocate substantial CPU efforts to finding the best move.”
- “Decode Game uses a more shallow engine depth”
- “Deep Decode…uses more engine and AI resources”
- “relies on a proprietary algorithm which requires significant CPU resources” and is server-only.
- “Stockfish 12 NNUE…is running on our servers.”
- Stockfish has “a Search Function” for continuations and “an Evaluation Function” for positional factors.
- With NNUE, Stockfish's programmed chess concepts “are integrated into the neural network, which weighs them by itself.”
- Algorithm updates name improved identification of concepts, terminology, player plans/attacks, and causal relations in piece functionality.
Short version: it is not a language model. It is a rule and concept engine that runs Stockfish 12 NNUE hundreds of times per position at several depths, lists every fact it can prove from those runs (attack, defence, intention, prevented move, plan), and shows them all with an importance bar. One position takes 15 to 30 seconds (Decode Game) or up to 70 seconds (Deep Decode) on their servers. Our story has a 6-ply line per move and a few seconds.
2. The 59 explanation types it names
| id | type | example wording | inputs it needs |
|---|---|---|---|
E1 | Why the engine's recommended next move is good | “the reasoning behind the next best move” | Position, side to move, Stockfish recommendation and continuation |
E2 | Reasons and concepts behind every move in the recommended best line | “explanations for the best next moves, up to seven plies” | Position and multi-ply Stockfish principal variation |
E3 | Advantages, benefits, or strengths of a move | “benefits of the move in hand” | Candidate move, before/after positions, continuations |
E4 | Disadvantages or weaknesses caused by a move | “the weaknesses of playing that move” | Candidate move, before/after positions, continuations |
E5 | Why the played move is a mistake or blunder | “Explaining why a move is a mistake” | Played move, engine-best move, evaluations and continuations |
E6 | Why the played move is a good alternative despite not being first choice | “an alternative move is good, although it’s not the first choice” | Played move, engine alternatives, close evaluations and continuations |
E7 | Other good moves and each move's best continuation | “The ‘Good Moves’ tab now shows the best continuation for each good move.” | Ranked candidate moves and principal variation for each |
E8 | A player's or piece's intention | “Opponent intentions” | Position, side, legal continuations and threats |
E9 | Attacking plan | “attacking plans” | Position, candidate continuations, targets and attack relations |
E10 | The Idea in the Idea-Problem-Solution framework | “an instructional framework to guide you on how to find the best move” | Position, strategic/tactical goal and best line |
E11 | The Problem obstructing an idea | “Playing (xx) before (xx) solves the problem” | Intended move, obstacle or threat, move order |
E12 | The Solution or preparatory move that permits the plan | “and now white can execute their plan” | Idea, obstacle, preparatory move and resulting continuation |
E13 | Move-order requirement: play one move before another | “has to play (xx)s first in order to remove a supporter” | Intended move, prerequisite move, defender/support map |
E14 | Why a plan fails | “Black can play (xx) and now White’s plan fails” | Plan line and opponent's refutation |
E15 | Threats for both players | “Identifying and Decoding the attacks of both players” | Position, both sides' forcing continuations and attack maps |
E16 | Per-piece threat and the different ways it can be carried out | “different ways in which it poses a threat” | Threatening piece, targets and legal continuations |
E17 | Damage a threatening piece can cause, verbally and as variations | “analysis of the type of damage this piece can cause” | Threatening piece, target, evaluation and execution lines |
E18 | How a threat undermines otherwise good moves | “how the threats imposed by this piece undermine your good moves” | Threat line and candidate good moves |
E19 | Threat status before and after the recommended move | “Analyzing threats before and after playing the recommended move” | Position, best move, threat set and post-move evaluation |
E20 | How the best move diminishes or solves a threat | “shows you how the best move has diminished the threat” | Threat, best move, before/after lines and evaluations |
E21 | Prophylaxis: what a move prevents | “prevents playing Bb5+ by guarding square b5” | Opponent possibility, preventing move and controlled squares |
E22 | Checkmate threat | “As for the checkmate threat” | Forcing line, king position and mate detection |
E23 | Threatens or attacks a piece or pawn | “preparing it for an attack on the unsupported b5 pawn” | Attack map, target and defender/support status |
E24 | Activates a piece | “also activates the Knight” | Piece mobility and intended route |
E25 | Defends or supports a piece or pawn | “supports the d5 pawn” | Defender/support relations before and after the move |
E26 | Guards or controls a square | “the f8 rook protects its king by guarding square f7” | Square-control map, king and tactical continuations |
E27 | Protects the king | “protects its king” | King location, attack map and guarded squares |
E28 | Avoids an exchange | “avoid the knights’ exchange” | Capture/exchange lines after the move |
E29 | Creates pressure on a target | “creates pressure on the b5 pawn” | Attackers, defenders, target and continuation |
E30 | Uses, gains, or denies control of a file | “Black uses the open a file” | File openness, rook access, exchanges and control |
E31 | Enables a pawn push or pawn break | “White can play e5” | Pawn legality, support duties and continuation |
E32 | Releases a piece from a defensive duty | “releasing the e4 pawn from this duty” | Piece/pawn function map before and after the move |
E33 | Exposes or weakens the king | “allow the exposure of the king” | King shelter, captures and forcing continuation |
E34 | Enables a check | “the checking with the queen at h5” | Checking move and enabling sequence |
E35 | Piece functionality: the role of every piece | “maps the role of each piece on the board” | Full board, attacks, defenses, square control and king relations |
E36 | Deflection | “Deflection” | Position, defender, target and forcing line |
E37 | Fork | “Fork” | Position and one piece's simultaneous attacks |
E38 | Lure/Decoy | “Lure/Decoy” | Position, induced destination and tactical continuation |
E39 | Mate | “Mates” | Legal moves, king state and forcing lines |
E40 | Draw | “Draws” | Legal moves, repetition/material state and terminal-state detection |
E41 | Stalemate | “Stalemates” | Side to move, legal moves and check state |
E42 | Pin | “Pin” | Aligned pieces, attacker and protected target behind |
E43 | Remove a defender | “Remove a defender” | Target, defender/support map and forcing move |
E44 | Sacrifice | “Sacrifice” | Material change, compensation and continuation |
E45 | Shield | “Shield” | Interposing/protecting piece, target and attack line |
E46 | Skewer | “Skewer” | Aligned targets, attacker and forced movement |
E47 | X-ray | “x-ray” | Line-piece geometry and intervening pieces |
E48 | Tempo | “Identification of terms like decoy, deflection, tempo” | Move sequence and gain/loss of time |
E49 | Positional use or control of ranks, files, and diagonals | “Using Ranks/Files/Diagonals” | Board geometry, piece mobility and control maps |
E50 | Pawn structure | “Pawn Structure” | Pawn locations, chains, weaknesses and mobility |
E51 | Tactical and strategic motifs or position concepts | “tactical and strategic motifs” | Position, recognized chess-concept patterns and continuations |
E52 | Causal relations between piece functions | “Identification of causation relations in piece functionality” | Function map across a move sequence |
E53 | Annotated variation showing the chain of events behind an explanation | “sequence of moves that represent the concept in hand” | Explanation concept and generated move sequence |
E54 | Multiple variations that produce the same explanatory outcome | “more than one sequence of moves can usually bring the same outcome” | Alternative continuations and shared outcome/concept |
E55 | Counterfactual or “What if?” explanation | “Had the (piece) still been on (XX)” | Hypothetical board change and recalculated continuation |
E56 | Numerical side advantage or equality | “White’s decisive advantage in numerical and graphical representations” | Engine evaluation by move and side |
E57 | Move-quality label: good move, inaccuracy, mistake, or blunder | “information per move (mistake, inaccuracy, good move, blunder)” | Played move and centipawn loss from engine best |
E58 | Opening variation identification and opening-move logic | “information about the opening variations” | Game move sequence and opening classification |
E59 | Identification of notable positions and advantage swings | “shows you exactly where each side dropped or picked an advantage” | Whole game and evaluations after each move |
3. Which of those we can produce from what we already have
| fact type | can we make it? |
|---|---|
| gives check / mates | yes, 1 ply |
| wins or takes a piece | yes, 1 ply |
| escapes capture | yes, 1 ply, pin-aware |
| threatens a piece | yes, 1 ply; DecodeChess also proves the threat is real |
| defends a piece | yes, 1 ply |
| makes way for a later move | yes, from the 6-ply line |
| intends (next own moves) | yes, from the 6-ply line; DecodeChess adds why those moves are good |
| prevents an opponent move | yes, when the move is illegal after the better move |
| offers a piece the capture of which fails | yes, only as a flag; the why needs a deeper line |
| Idea-Problem-Solution plan | no; needs many engine runs |
| prophylaxis by square control | partly; we can say which squares the move guards |
| activates a piece / uses a file / releases from duty | no; these are the DecodeChess concept checks |
| fork, pin, skewer, deflection, decoy, remove defender, x-ray | pin and fork are cheap; the rest need a verified line |
| counterfactual 'had the piece still been on' | no |
4. The numbers over the 58 pending moments
Round 2 (copy revision 32): the facts come from the production module libs/api/src/domain/zapp/game-story/board-facts.ts, ranked (pawn on the seventh > passed pawn > exchange count > threat > offered piece > escapes/defends > open file > undermines > prepares > queen trade under fire) and cut to one fact when the top fact is decisive, otherwise at most two of different kinds. In the live story a fact is added only when the line-based text has no material sentence, so the columns show what the rules produce, not always what the story prints. Check moves get no fact. The played-move column allows only: enemy passed pawn, enemy pawn on the seventh, gives up an open file, queen trade under fire.
Reading of the result: for the 14 green cases DecodeChess would say the same facts we can already compute, plus a proof that each threat is real. For the 29 amber cases it would add the reason behind the "intends" move, which we cannot prove from one line. For the 15 red cases neither side has a board fact; these are the plan, king-walk and pawn-race cases where DecodeChess's plan and counterfactual types (E10 to E14, E55) are the only thing that could explain them, and even those need its many-run verification.
5. Every pending moment with its DecodeChess-style facts
Paste the FEN into DecodeChess to compare. "fails" after a capture means the engine line does not play that capture, so the capture is refuted.
| Case | Side | Played | Better | Drop | Facts for the better move | Facts for the played move | Verdict |
|---|---|---|---|---|---|---|---|
1b858313 m31positional-gives-material 8/6pk/5p1p/3Q4/8/7P/6PK/4q3 w - - 8 45 | w | Qd4 | Qc4 | 520 | - | - | none |
43b0c5fa m16positional-no-material 6r1/4Q3/5pqk/pp6/3PR3/2P5/5P2/5K2 b - - 1 48 | b | a4 | Rg7 | 130 | It also attacks your queen on e7. | - | thin |
43b0c5fa m27lines-too-short 6r1/4Q3/3P1p1k/1p3q2/p2KR3/2P5/5P2/8 w - - 3 54 | w | d7 | Qe6 | 100 | It lets their f-pawn become a passed pawn. It also attacks their rook on g8, which they cannot hold. | - | facts |
43b0c5fa m30positional-gives-material 6r1/3PQ3/5p1k/1p6/p3R3/2PK4/5q2/8 b - - 1 55 | b | Qf3+ | Rg3+ | 114 | - | - | none |
1ee86237 m9positional-gives-material 5k2/3Q1p1p/5p2/2p5/r7/5N2/1P4PP/3R2K1 w - - 0 26 | w | Qxa4 | Ng5 | - | It also attacks their pawn on h7, which they cannot hold. It also attacks their pawn on f7, which nothing defends. | - | facts |
ce5469b0 m2positional-no-material 1r2r3/5pkp/3Q2p1/q2P4/8/7P/P1R3PK/2R5 b - - 0 34 | b | Rb5 | Rbd8 | 113 | It also attacks their queen on d6, which nothing defends. It gives up the open b-file. | - | facts |
aaf8f107 m4last-move-no-reply 2r2rk1/5p1p/p5p1/q7/8/4R1P1/P4PBP/Q5K1 b - - 0 25 | b | Rc7 | Rfe8 | 109 | It also puts their rook on the open e-file. | - | thin |
8d0b0f46 m7last-move-no-reply 2b2rnk/2r4p/3q4/3P1p2/RpP1p2Q/4B1NP/1b1N2P1/5B1K w - - 0 39 | w | Bf4 | Nh5 | 187 | It also takes the sting out of (f4). | - | thin |
67088156 m6positional-no-material r2r2k1/5pp1/7p/1B1q4/P2p4/5PPn/3Q2RP/5R1K b - - 4 33 | b | d3 | Rac8 | 140 | It also puts your rook on the open c-file. | - | thin |
67088156 m12positional-gives-material 3r2k1/5ppB/7p/8/r7/5qPn/3Q2RP/3R3K b - - 1 36 | b | Kh8 | Kxh7 | 248 | It also makes (g6) possible next. | - | thin |
9f68fbe5 m1positional-gives-material 5rk1/1b1q2b1/6p1/5p2/1Np1p1P1/2P1B2P/1P3Q2/5RK1 w - - 0 36 | w | Qh4 | Qg3 | 226 | It also clears the way for (Rxf8+). | It lets their f-pawn become a passed pawn. | thin |
9f68fbe5 m7last-move-no-reply 5k2/1b1q2bQ/6p1/8/1Np1p3/2P1B2p/1P6/6K1 w - - 0 39 | w | Bh6 | Kf2 | 485 | It also takes the sting out of (h2+). It also makes (Kg1) possible next. | - | facts |
4661effb m14positional-no-material 4k3/p2r2bN/6P1/3q4/3P4/6NP/7K/3Q4 b - - 3 31 | b | Bxd4 | Qa2+ | 140 | It also clears the way for (Rxd4). | - | thin |
4661effb m46positional-gives-material 8/p1k1r3/1q1b2P1/3Q4/4N3/6NP/7K/8 b - - 31 47 | b | Qb2+ | Bxg3+ | 211 | - | - | none |
4661effb m49positional-no-material 8/p1k1r3/6P1/3Q4/4N3/6bP/1q6/7K w - - 0 49 | w | Qc5+ | Qc4+ | 317 | It also clears the way for (Qg8+). | - | thin |
4661effb m50last-move-no-reply 8/p1k1r3/6P1/2Q5/4N3/6bP/1q6/7K b - - 1 49 | b | Kd8 | Kb8 | 251 | - | - | none |
60a3b89d m2positional-gives-material 1b3rk1/3qr3/2p1p3/2Pp2P1/3Pbp2/1Q3B2/1B1R1P2/2R3K1 b - - 0 33 | b | Bxf3 | e5 | 103 | It also clears the way for (Qg4+). | - | thin |
b8eb8d2e m4positional-gives-material 5r1r/6pk/5p2/5P2/p1QP2P1/4q2p/5R1P/5RK1 b - - 2 34 | b | g5 | Rb8 | 129 | It also puts your rook on the open b-file. | - | thin |
1eb7a1d5 m10positional-no-material r6k/2R3p1/5p1p/1B2n3/P7/4P2P/6PK/8 b - - 0 37 | b | Rd8 | Kg8 | 122 | It also makes (Kf8) possible next. | - | thin |
1eb7a1d5 m12positional-no-material 3r3k/2R3p1/5p1p/PB2n3/8/4P2P/6PK/8 b - - 0 38 | b | Ra8 | Rb8 | 103 | It also attacks your bishop on b5, which nothing defends. It also puts their rook on the open b-file. | It gives up the open d-file. | facts |
1eb7a1d5 m15positional-gives-material r6k/2R5/P4p1p/1B2n1p1/8/4P2P/6PK/8 w - - 0 40 | w | Re7 | a7 | 121 | It puts your a-pawn on a7, one step from queening, so their rook must stay on a8. | It gives up the open c-file. | thin |
bead1460 m5positional-no-material 1r3rk1/5ppp/4p3/7B/1q2P2n/5Q1P/5RP1/3R3K w - - 1 31 | w | Qf4 | Bxf7+ | 208 | It also attacks your pawn on e6, which nothing defends. It also protects their queen on f3. | - | facts |
bead1460 m11positional-gives-material 1r3r1k/5p1p/4p3/6Qp/1q2P3/7P/5RP1/3R3K w - - 2 34 | w | Qxh5 | Qe5+ | 300 | It also clears the way for (Qg5+). | It lets your e-pawn become a passed pawn. | thin |
7cda97b2 m1positional-no-material 5rk1/5rpp/8/2q5/1pp5/7P/1PQ1RPP1/4R1K1 w - - 0 32 | w | b3 | Re4 | 180 | It also attacks their pawn on c4, which they cannot hold. | It lets their c-pawn become a passed pawn. | thin |
f55d277e m23last-move-no-reply 5R2/7p/b1p5/p5p1/8/4k1PP/PP4K1/8 w - - 0 40 | w | Kg1 | Re8+ | 133 | It also puts your rook on the open e-file. | - | thin |
94a9fa9c m1positional-no-material r3r3/5kb1/2N5/1p3p2/p1pP1q2/P1P5/1P4Q1/R3R1K1 w - - 0 37 | w | Ne5+ | Qd5+ | 194 | It also attacks your pawn on b5, which nothing defends. | - | thin |
32f1cb86 m1positional-no-material 1kr4r/ppp1n2p/8/8/3P1Q2/q3B3/P5PP/1RR3K1 w - - 4 24 | w | Rc2 | Qe4 | 175 | It also attacks your pawn on b7, which nothing defends. | - | thin |
32f1cb86 m5last-move-no-reply 1kr4r/ppp4p/8/4Q3/3P4/q3n3/P1R3PP/1R4K1 w - - 0 26 | w | Rcb2 | Rxb7+ | 329 | It also attacks your pawn on c7, which nothing defends. It also protects their rook on c2. | - | facts |
bd4f3950 m13positional-no-material 8/7p/4Q1pk/4P3/8/p5P1/1q3PKP/8 w - - 1 42 | w | Qh3+ | Qe7 | 141 | - | - | none |
fd99145d m19positional-gives-material 7k/8/3bp3/6p1/5p2/5BNP/5K2/8 w - - 0 54 | w | Nh5 | Ne4 | 152 | It also attacks your pawn on g5, which you cannot hold. It also attacks your bishop on d6, which nothing defends. | - | facts |
1962fb77 m4positional-gives-material 1r4k1/6p1/8/RPqn4/2pp3p/5P1P/1Q2B1P1/6K1 b - - 0 32 | b | c3 | d3+ | 125 | It also attacks their bishop on e2, which nothing defends. | - | thin |
272bfb10 m2positional-gives-material 3k4/1pp3r1/3b1p2/q3pQ2/P5r1/1P1P2B1/7P/2R1R2K b - - 2 36 | b | R7g5 | Qd5+ | 294 | It also attacks their pawn on b3, which nothing defends. | - | thin |
a3bbe4cb m25positional-gives-material 3r4/3k2p1/1P5p/2P5/8/8/2R2K1P/8 w - - 3 40 | w | Rd2+ | c6+ | 127 | - | - | none |
a3bbe4cb m33positional-gives-material 8/1k4p1/1P5p/2P5/5K2/8/7P/8 w - - 4 44 | w | h4 | Kg3 | 103 | It also takes the sting out of (g5+). | - | thin |
22d12591 m9positional-no-material 4b1k1/5p2/6pp/2p5/3N4/2Q1KP1P/q5P1/8 w - - 0 34 | w | Nc2 | Qxc5 | 110 | It also protects your knight on d4. | - | thin |
22d12591 m14positional-no-material 6k1/5p2/4q1pp/1bp5/8/2Q2P1P/2NK2P1/8 b - - 5 36 | b | Qd7+ | Qe2+ | 213 | It also attacks your pawn on g2, which nothing defends. | - | thin |
6f76c4ae m26positional-no-material 8/6qk/Q4p2/8/8/P7/7P/7K b - - 0 52 | b | Qg5 | Qd7 | 623 | - | - | none |
6f76c4ae m27positional-no-material 8/7k/Q4p2/6q1/8/P7/7P/7K w - - 1 53 | w | Qa7+ | Qd3+ | 426 | - | - | none |
6f76c4ae m28positional-no-material 8/Q6k/5p2/6q1/8/P7/7P/7K b - - 2 53 | b | Kg6 | Kh6 | 621 | - | - | none |
6f76c4ae m32last-move-no-reply 8/8/3Q2k1/5pq1/8/P7/7P/7K b - - 1 55 | b | Qf6 | Kh5 | 609 | - | - | none |
db8a2113 m15positional-no-material 8/7k/1pQ5/7p/P4p2/6PP/1q1n1PK1/8 w - - 0 43 | w | gxf4 | Qc7+ | 292 | - | - | none |
43af0bc8 m6last-move-no-reply 8/1r4k1/4p2Q/p2b4/2pPp3/2P5/Pr1B3P/4N1K1 b - - 1 41 | b | Kf7 | Kg8 | 102 | - | - | none |
977851fe m11positional-no-material 7k/5pp1/1pr5/1R6/3b1PP1/7P/4r3/5R1K w - - 0 35 | w | Rh5+ | Re5 | 100 | It also attacks their rook on e2, which nothing defends. It also puts your rook on the open e-file. | - | facts |
c41cdcae m6last-move-no-reply 4r1k1/5pp1/4p2p/1B2P3/7q/8/5PPP/3R2K1 b - - 0 30 | b | Re7 | Rf8 | 194 | It also gets your rook out of the way of (Bxe8). | - | thin |
2a899703 m4positional-gives-material 1k3r2/1b4Q1/2p2rBp/p1Pp4/5P2/P3q3/6R1/3R3K b - - 1 38 | b | Qh3+ | Rxf4 | 126 | - | - | none |
4fd0f10c m5positional-no-material 3r4/5pkp/p5p1/2N5/3r4/3n3P/P2R1PP1/3R2K1 w - - 1 30 | w | Nxd3 | Rxd3 | 112 | It also attacks their rook on d4, which they cannot hold. It also protects your knight on c5. | - | facts |
f1bb4037 m5positional-gives-material 1r2q1k1/2Q2p1p/1P4p1/6N1/3bp3/7P/5PP1/1R4K1 w - - 4 31 | w | b7 | Nxf7 | 128 | It lets your e-pawn become a passed pawn. | - | thin |
9744412f m18positional-no-material 5b2/6k1/6q1/3Q4/2B2P2/p4K2/6P1/8 b - - 4 49 | b | Kh6 | Qd6 | 238 | It offers a queen trade while their king is under fire, which helps them. | - | thin |
c7dbddd0 m9last-move-no-reply 8/3b2pk/1Q5p/3pr3/4p2P/4P1P1/5PB1/6K1 w - - 0 56 | w | Qc7 | Qd6 | 107 | It also attacks their bishop on d7, which they cannot hold. It also attacks their rook on e5, which nothing defends. | - | facts |
35b8cf0e m2positional-gives-material r3k1r1/1q6/p3P3/Pp3p2/1Qp2P2/3b2N1/5R1P/3R2K1 b q - 2 32 | b | Qh7 | Qc6 | 221 | It also attacks their pawn on e6, which nothing defends. | - | thin |
a76b4a7b m7positional-no-material 4r3/5pk1/p1n3pp/8/6Q1/5P2/P4P1P/6K1 w - - 2 30 | w | Qd7 | Qa4 | 247 | It also attacks your pawn on a6, which you cannot hold. It also attacks your knight on c6, which nothing defends. | - | facts |
a76b4a7b m11positional-no-material 8/3Q1pk1/p5pp/4n3/8/5P2/P4PKP/4r3 w - - 6 32 | w | Qd2 | Qd4 | 351 | It also gets their queen out of the way of (Nxd7). | - | thin |
e8fe4db8 m23positional-no-material 7Q/1p2k3/6p1/3P1p2/5q1P/8/8/3R2K1 w - - 0 50 | w | Qg7+ | Re1+ | 144 | It also puts their rook on the open e-file. | - | thin |
f2a38c62 m6positional-gives-material 2r3rk/4q1pn/5p2/pB1Nn3/3Q4/4R2P/PPP4K/6R1 b - - 1 27 | b | Qf7 | Qd6 | 236 | It also gets their queen out of the way of (Nxe7). | - | thin |
da9088aa m2positional-no-material 8/Q5kp/3qppp1/3n4/3P4/P2b2P1/B5PK/2B5 b - - 2 32 | b | Ne7 | Qc7 | 253 | It also attacks your bishop on c1, which you cannot hold. It also attacks your queen on a7, which nothing defends. | - | facts |
da9088aa m10last-move-no-reply 8/4Q1kp/2q2p2/P3p1p1/3P4/3b2P1/B5PK/2B5 b - - 0 36 | b | Kg6 | Kh6 | 112 | - | - | none |
ac42ef5a m6positional-gives-material 2r2rk1/p4pp1/7p/8/4R2b/6NR/PPP2PK1/8 b - - 0 28 | b | Bf6 | Bxg3 | 110 | - | - | none |
ac42ef5a m12positional-no-material 5rk1/p4pp1/5b1R/8/6R1/1P4N1/r4PK1/8 b - - 0 31 | b | g6 | Bd4 | 151 | It also attacks your pawn on f2, which nothing defends. It also clears the way for (f5). | - | facts |
6. What I would do
- Add the cheap DecodeChess fact types to the story's fact set: escapes capture, threatens (with pin-aware defenders), defends, makes way, prevents. They are board-only, cost no engine time, and give a sentence for 43 of the 58 pending moments.
- Keep "intends" only when a later fact backs it (the intended move captures, checks, or threatens). A bare "intends Kg1" says nothing.
- Do not try to copy the plan, activation and counterfactual types. They need hundreds of engine runs per position. That is the part of DecodeChess that costs 15 to 70 seconds.
Catalogue: /root/santha/common/research/decodechess-explanations/out/decodechess-explanations.md. Injection report: none.