"Dumb strict relays, smart strict clients."
Bad implementations are unavoidable given that it's always a work-in-progress. What we should do, is be extremely strict, report/log errors, and at every instance sort things out and fix the error at the root.
Being too lenient makes control flow obnoxious and complicated where it doesn't have/need to be.