Personal thoughts from my experience building software.
Almost every serious mess I have had to clean up traces back to the same violation: two places in the system claiming to know the same fact.