You can't really talk about 492 bytes versus 472 bytes or whatever unless you precisely define the platform the code runs on, and the features required. To my mind castling and enpassant should be required, they are a fundamental part of the game. Also underpromotion and stalemate (if they don't implement castling, I'm guessing they take some other shortcuts). On the other hand, alphanumeric labels for ranks and files just mess up the rudimentary text console display and should be omitted. I would require rejection of all illegal move attempts by the human opponent. But I wouldn't require implementing 3 fold repetition, insufficient material or 50 move draws.