Some checks could be done if you had a way to tell the compiler you weren't going to do something like this.
__PACKAGE__->no_monkey_business; # no new methods/method signatures c
+an happen now.
# or perhaps
use static_methods qw( MyClass ); #compile this class with only expli
+citly declared methods allowed.
Where the declaration says that only the methods that exist for the class at that time, or perhaps those that have been explicitly declared are available.
Even better if you could turn it off from outside the class file, so you could do some monkey patching if needed:
# in main:
no static_methods MyClass; # uses MyClass with static_methods turned