You mated him, and the attack was the real thing — but the same winning-position leak surfaced three times inside a won game, and against a defender who holds, that is the difference between a mate and a grind.
The pawn you won with 8.Nxd5 was clean, and the bishop sacrifice on b7 was exactly right — this is not a lesson about the attack. It is about the moves in between, where "useful" kept beating "forcing."
10.Be2 — the safe square after the free pawn
You had just won a clean pawn and sat at +2.2, comfortable. Then you spent 72 seconds and played 10.Be2 — the safe developing square — when Bb5 was the move: Bb5 Nh6 d5 a6 Ba4 b5, keeping the bishop active and the pressure on c6. Be2 let David back to +0.2, nearly the whole edge gone in one move. A 72-second think that lands on a passive move is the same warning it is for anyone — the search found "a move," not "the move." After you win material, the job is to keep the initiative, not to tuck the pieces onto quiet squares.
17.Rfe1 — Qxf7 was screaming
David had just grabbed a pawn with 16...Qxe5, and you were +4.9 with his king stripped bare on a8. The move that finished it was Qxf7: Qxf7 h5 Rad1 Rdf8 Qxg7, and the attack crashes through. Instead 17.Rfe1 developed the rook with a hit on the queen — useful, natural, and it dropped you to +1.7. You found it one move later — 18.Qxf7 was the engine's first choice — which is exactly the point: the move was there the whole time. This is the scan that keeps costing you. At +4.9 the question is never "what improves my position," it is "what ends the game."
19.Qxe7 — the pawn over the finish
Same pattern, one move on. At +7.4 after 18...Qxb2, the cleanest path was Qc4: Qc4 Rb8 Rab1 Qxb1 Rxb1 Rxb1+, trading down into a trivially won game. You took the e7 pawn instead — 19.Qxe7 — and it slipped to +3.8. Still winning, and you did convert, but this is the third time in one game the pawn won over the forcing move. When you are this far ahead, grabbing material is usually the slow road; the fast one is the line that forces the trades or the mate.
Profile check
Same miss as the games before? Yes — this is the winning-position scan from the Dutch and yesterday's Caro-Kann, three more times over. The good news sits right beside it: you were not timid anywhere. You sacrificed a bishop on b7, marched the queen into the attack, and mated — the old habit of underrating your own position and backing off never showed up. So it is not nerve that goes missing over +4. It is the reflex to stop and ask "what is the forcing move?" before playing the natural one.
What to drill next
- This position — convert from move 17 as White, and play Qxf7, not Rfe1. Beat the engine from here three times running.
- Convert a winning position — the whole file points here: when you are already winning, find the move that ends it, not the one that tidies up.
- Attacking f2/f7 — the f7 break you delayed was the heart of this attack; these drill the pattern until Qxf7 is the first thing you see.
When the eval is over +4, stop and name the most forcing move — check, capture, or mate threat — before you play anything that merely improves.