Will the parameters be shared correctly?

Yes, parameters should be shared across module’s methods.
In this test 1, for example, conv.weight is shared by both forward and weighted_kernel_sum.

Finally, since the submodules are hierarchical, will parameters() on the module return all parameters touched by the traces

Yes, that should work as well, unless I’ve misunderstood the question.