I'll write the bugs I found here in case I have to rebase:
Evaluate: when automatically drawing a long game, it counts as a win for one player! Really bad
ChessPlayer: doesn't reset MCTS nodes in between moves. It's like keeping the hash table of moves, except it messes up MCTS node statistics in a way I don't understand
Optimize: I just realized I was training everything on the starting position... ALWAYS VALIDATE INPUT DATA
I'll write the bugs I found here in case I have to rebase: