Where isit specified that you are allowed to send "(none)"? This certainly is a violation of the protocol. The protocol defines only long-algebraicmoves or "0000", sending anything else is non-compliant.mcostalba wrote:In this case we send MOVE_NONE that is different from MOVE_NULL.
Namely we send "bestmove (none)" to the GUI. Where is documented that in case of no legal move we should send "bestmove 0000" instead ?
As a null move means you are not moving, it seems to me you have to send a null move when you can't move.
Nowhere it is documented that you cannot. It is documented that you can send null moves, though:Nowhere in UCI is documented the possibility for the engine to "express refusal" or similar behaviours. Could you please point me to that part in case I've missed ?
"A nullmove from the Engine to the GUI should be send as 0000."
So sending "bestmove 0000" is valid UCI. Now if that does not express refusal to play a move, what exactly would it express?
You are right, the specs only define 0000 as valid engine to GUI move, not in the other direction. I would expect the engine to play a null move. But WinBoard+Polyglot never send null moves anyway.This is another undocumented feature. Where is written that a GUI can send a line with "0000" and what a correctly behaving engine is supposed to do upon receiving "0000" ?