4) Supports Mobile Safe Mode
If the package injects any code what-so-ever into SpringBoard it must be loaded by MobileSubstrate so that, in case of instability, Mobile Safe Mode can unload the extension and return the device to a usable state.
This particular requirement may be lifted, but only if it is a requirement of the fundamental functionality of the application: that it couldn't possibly be implemented in a way that didn't (this is very rare: typically supporting Mobile Safe Mode takes 5 minutes, even if you weren't previously using MobileSubstrate at all for anything).