To explain Donato's score corruption.
Basically, there was a shadow variable that got changed by the variable listener to another value and during the undo changed to a state different from the original one. This affected the score calculation later down the line (not immediatly).
That happened in the move thread, and never in the solver thread as that move wasn't picked.
Check it when the move threads retrieve a step operation from the solver thread.
-> This is too late, in the donato bug it already crashed the solver thread upon finishing the step.
Check it when the solver threads applies a winning step received from a move thread
-> this would mean that all moves need to send a planning clone of their solution state (too costly)