Why is NodeProxy outputting on the wrong bus if In.kr(\out.ir) is used inside its function?

NamedControl implements a private (of sorts) dictionary. Meaning it doesn’t know about any ControlNames it didn’t see pass through its interface. It’s probably hard to make it know about everything, unless you hook all the API calls for the lower layer stuff to ping back to NamedControl. And even then, it’s not totally clear deduplication is always desirable. See e.g. the case of the NodeProxy roles name mangler I wrote here when the names that go to ControlName may actually be duplicated, but they can be mangled differently at different times, depending on a global (context) setting.