Mate-in-10 that Stockfish missed! Stockfish 10+ at depth 19 evaluated this position as a draw:

[Title "White to play and mate in 10"]
[FEN "r1b2r2/5pk1/pq2p3/1p5Q/3p1P2/P2Rn1NP/1P4P1/7K w - - 0 28"]


However, it is actually checkmate in 10! I understand that Stockfish prunes the search tree heavily, which can (in theory) result in such errors in evaluation. But this is the first time (in practice) that I have seen a non-contrived position (it came from a variant line of an actual game that I was exploring with Stockfish) with a completely wrong evaluation. Can anyone who is very familiar with the Stockfish code provide an explanation of the main factors here? Is it simply that there were too many quiescent moves? I count only 5 moves that are not a check or a forced move (i.e. the only move that does not result in mate-in-3) or a capture, and these 5 are the moves that I as a human player would consider as quiescent (even if I ignore the great king danger). Am I missing some other reason here?

The principal variation is:

[Title "White checkmates in 10"]
[FEN "r1b2r2/5pk1/pq2p3/1p5Q/3p1P2/P2Rn1NP/1P4P1/7K w - - 0 0"]

1. Qg5+ Kh7 2. Nh5 Nf5 3. Nf6+ Kh8 4. Kh2 e5
5. Rg3 Qxf6 6. Qxf6+ Kh7 7. Rg5 d3 8. Rh5+ Nh6
9. Qxh6+ Kg8 10. Qh8#


Stockfish 10+ at depth 19 evaluates it as draw until 29. Nh5. After the next move Nf5, Stockfish thought it was +7.5. After the next move Nf6+ Stockfish knew it was game over.
Depth 19 refers to 19 plies, not 19 moves (which would be 2 plies each). So it's reasonable that Stockfish would only find the mate shortly after depth 19, since 10.Qh8# is the 19th ply from the starting position you posted.