When nesting Shiny modules the UI functions for a sub-module must use the NS() function from the containing Shiny module. This makes more sense to me now that I've realized this, but before I realized this I was confused why my submodule wasn't communicating properly with it's server (I should've suspected namespacing sooner, and I did; in fact I tried using session$NS to namespace the sub-module first [which didn't work]).
I know I am rambling; I might not make sense yet.
In short, how are sub-modules (modules within modules) namespaced, other than the id argument passed to their module server-returning function?
In the UI case an explicit NS() is necessary. histogramUI(NS(id, "nested")) inside of outerUI will result in every object of histogramUI getting the prefix main-nested-"name of variable".
In the server case an explicit sessions$ns is NOT necessary to call. The moduleServer will prepend the necessary id to the nested module and the name spacing will match what you expect.
In the example above i call outerServer("main") which contains histogramServer("nested"). There is no explicit call to session$ns in neither module. outerServer("main") + histogramServer("nested") will end up prepending main-nested to every object of histogramServer. So the output$hist inside the histogramServer will be name spaced as main-nested-hist matching the ui object main-nested-hist.