Maybe thoose who have UCI implemented in their engine can give me an advice. I can't find anything in the descpription of UCI if the moves received from the GUI after "position startpos moves <move1> .... <movei>" are necessarily legal or if the engine should check the legality by itself.
I tend to send an info string in case I detect an illegal move, but this takes time the more moves has been played and I don't know if there is something like a common practise. The undefined situation may lead to strange program behaviour. The following test illustrates that. Engine: Fruit_2.1 (playing black), GUI; Arena_1.1.
Open the debug window and start a new game. After getting "readyok" from the engine send "position startpos moves e2e5" and "go wtime 132000 btime 132000 winc 12000 binc 12000" (of course other times will work too) to it.
The engine accepted the illegal move, starts calculating and after a while replied with "d6". In this situation Arena adjudicated the game as won for White due to an illegal move.
I neither want to critizise the GUI or the engine. I think it is just an open question.
Volker