It looks all of the “Impossible board: game should have ended after the game was won” cases assume that both X and O have won. However, there are a couple of more cases:
XXX|O-O|-O-: O played after X won, but O doesn’t have a winX-X|OOO|X-X: X played after O won, but X doesn’t have a win
I’m willing to do a PR to fix this. If you’d like me to do that, please point me to the appropriate documentation on what I need to do.