Please allow objects to run more than one script
This is the main source of (non-semantic) mod incompatibility and it could be easily solved with a bit of a refactor that slightly changes script semantics and some records.
Make every 'SCRI' pointer subrecord allow a list of \0 separated elements.
CLOT->SCRI
REPA->SCRI
ACTI->SCRI
APPA->SCRI
LOCK->SCRI
PROB->SCRI
BOOK->SCRI
ALCH->SCRI
INGR->SCRI
These are all unlimited size strings as far as i can tell from mw_esm.txt
At runtime every script would get run every frame as usual, except system variables would be script local (like GetButtonPressed, PCSkipEquip etc), so that scripts can't interfere with eachother. This by itself would prevent bugs.
Instead of appending to the SCRI, if you want the capability for this to be used in the CS, maybe the programmatic 'MERG' record could be introduced.
MERG
TYPE: type of the object
NAME: id/name of the object
SCRI: additional script to run on the object
As for original behavior.... well the original will never run omwaddons so it's not really a problem but even if it could it'd probably ignore the 'extra' scripts because of the \0 or if the MERG record idea is used, because it doesn't know what it is (assuming it doesn't crash).