On a related note, may I assume from what you said that now the
standard contract for a module can be (incompletely) summarized as
in the following lines?
1. when loaded and called, a module's chunk should return a table
containing its "exported" symbols
2. a module should not create any global
3. ? any more items in the contract?
Roughly it is only rule 1. (We should not say what it should not do: a
module should not create any global; it also should not erase your hard
disk; it should not send emails to your friends; etc.)