When a module can be passed a reference to some sort of configuration object, the module should not modify the configuration as an undocumented side-effect of calling it.
Sounds reasonable, yes?
Rationale: The caller is quite likely to want to use the same configuration object for several modules.
Not exactly rocket science, right? ⊗