Hi William,
A few things, none of these are big deals but would be nice ...
There is one thing that's a bit of a nuisance to me, there is no graceful exit strategy. The problem is that I sometimes want to bring the client down, but it is playing a game. Out of courtesy I like to let the game finish, but sometimes another game starts before I have a chance to kill the server.
I also noticed that once in a while my process does not go away although that is a minor nuisance. (That could be because of the way I kill it.) If the client could respond to some signal that says, finish up the game you're playing and exit, that would be helpful but not a big deal. Is there a prefered way to stop the client?
I have had a few players suggest that the program should make comments during the game, such as evaluation or something. Some chess programs do this on chess servers. GTP is not a very natural protocol for things (and it's not very important to me) but I would use it if you had it. The KSG client could prompt for comments after it moves.
One thing I would really like to see is for the client to log any talking going on. Then I would ask players for useful comments during the game and I would study the comments.
As far as game ending, I think what you seem to planning is good.
I thought about suggesting tromp/talyor rules which have no ambiguities whatsoever at the end of the game. In tromp/taylor the game is scores after 2 consecutive passes, no matter what. Any dead stones are considered alive if you were foolish enough to pass before capturing them. I don't think this is a good protocol for a server where lots of humans play unless some kind of agreement protocol was worked out, and this is no better than what you are planning.
By the way, my program supports undo, but I have disabled it on the server because my program takes some advantage of game history. If I allow undo or you simulate it, you cripple my program, so hopefully there will be an option to decline undo.
Thanks,
Don