Well I just want to understand your definition.You're confusing the protocol with the engine. The result from the protocol commands (the engine starts searching on a given position) should be the same. The result from the engine (bestmove and score) could be anything, and certainly isn't defined by the communication protocol.
If only the syntactic form of the reply is relevant why do you say that setoption commands constitute a deviation of statelessness?
EDIT: Just read your last post
"It is clear" has no place in a definition....and it's clear that this includes respecting the setoption commands, but provides no guarantee for reproducible output or for any specific implementation of finding the best move (such as return movelist[random() % num_moves]) Smile
But I guess I understand what you are trying to say. The protocol description should include a description of engine state and how the protocol manipulates it. But the engine is free to maintain other state which is not part of the protocol.
Whether a command is legal or not is independent of the state of the engine or prior history.
The protocol should also specify certain formats for the engine reply leaving certain parts free for the engine to fill in (but imposing certain requirements such as legality).
