Hi Marina,
Oh, perhaps when I say "so an individual module visibility state only matters if the section is visible", then should it be true?
Where is the visibility statement of user intent fully determined from? If a section is invisible then surely the intent is for all items within that section to be invisible? And thus invisible everywhere.
I do see however with 'There are always issues in tracker saying "why can I make module visible when the section is invisible? Fix this bug". And even more votes on the issue "allow modules to be accessible but not displayed on the course view page"' that there are two contradictory issues and only one can be implemented at the expense of the other.
So, perhaps its time to define, implement and document a finite policy, that visibility set at module level is overridden at section. That a module remembers its visibility state as set for when a section becomes visible again. When a section / module is then visible after applying the latter then availability kicks in with the same hierarchy, so if a section is available, then the module is individually tested to see if it is available. If a section is unavailable, then so are the contained modules everywhere.
The section should be considered to be the container point of origin for all modules. And thus the key decider.
Cheers,
Gareth