Sven Schüle wrote:- The OP wrote that the engine reports +mate in 1 ("white mates"). You write about "black mates" (after null move).
Of course, because the basic problem is that the engine reports mate in 1 and play Bd2. Then mate in 1 is Qxg2#.
- The null move is never tried at the root since you never try it at a PV node
You can well try a null move at root (if not being in check) for move ordering. Before trying a search at depth==3, you can try a null move search with depth==2 and use this as "threat move".
When going for the real depth==3 search, this threat move can be sorted to the top of the list at all nodes with depth-level==2. This gives a considerable number of cut-offs, especially in positions like this one. On average and at depth==3, I've been measuring something like 40% fewer QS node evaluations when feeding in the threat move from the null move search at root level.
- so the resulting score (checkmated) could never become a "best score" anywhere.
It shouldn't, but if the result is stored in hash tables AND there is only one hash table no matter what side is to move, then this could explain why the engine makes the stupid move Bd2.
And the question remains how null move search would lead the engine to play Bd2 with being mated in the next ply. The only mate in 1 after Bd2 is black's mate, and some unlucky combination of hash tables and null moves at least would give some mate in 1 - albeit for black, of course.