@monad
Errors are handled by resetting to the last valid board and showing a notification. We store failed boards and pick the lowest-scoring one to resume.
We allow to player to re-sync their board and resume their game by fetching the latest board from the smart contract.