First mechanism - to go into production you have to pass unit tests (race to the egg). It's only 1 cell, so either it works or not, and if you were the fastest you probably didn't have most of the really bad mutations.
Then after you are in production you run million copies of the code, and to be safe against mutations there's sth like erlang exception handling - if sth's wrong kill the process, start a new one.
The problem is - sometimes the process gets so wrong it doesn't respond to kill signal.