Forward Error Correction over Unidirectional Serial Link
You will never, ever get the probability of an error occurring down to zero.  Moreover, in this sort of link, the errors that you do stand to get are going to interrupt one or more entire packets.

It's a much better idea to design your protocol with some sort of reliable error detection (i.e., a CRC, with a length of your choice), and with an information content in the messages so that the receiver is robust to missed messages -- basically, so it can get itself into the correct state even after missing one or more messages.

In the extreme, you just continually send the receiver an entire frame that contains every bit of its desired state, all the time.  "Commands" just consist of changing the receivers desired state in the transmitter, and waiting for that entire frame to be transmitted.

If that causes speed problems, then set up a scheme where the transmitter fills any dead time in the link with the desired receiver state, but will interrupt with new commands.

If that's just not going to work, then you either need a two-way link, or you need to accept that every once in a while your system will start misbehaving, and a human being will have to reset it.