I still don't think we should allow the engine to return half-baked results when interrupted during genmove. Either succeed or fail. Bill schubert's scheme is cleaner , IMO. wrt the ordering of commands and responses: there is nothing new here: if we treat abort like any other command, it's responses should come in the right order.
The reason I proposed the (optional) report_post_abortem_move is a previous post was to avoid the three valued logic that creeps in if we allow the genmove to produce half-baked moves.
My program falls in category 1a or 1b. It does not have a move generator yet, and it is pretty hard to maintain state even without asynchronous commands ... Since I am not concerned with portability, it would be relatively easy to get upto step 3.
Counter-question to gunnar: would it be easyer to implement te abort command in Gnugo, if it were allowed to use a SIGINT instead ? (my guess is: yes)
AvK