So imagine the scene... We're in ProcessSample() and after checking a jack IsConnected(), GetValue() is returning zero.
Except... We know the thing that's connected hasn't actually made a call to SetValue(), so first stupid question is, where's that zero coming from? Some kind of socket timeout?
I guess if we're emulating the real modular world, in theory, that should never happen as there's no such thing as "nothing volts", so you should always be sending "something" to anything that's connected.
I found this in the documentation, which tends to confirm that as good practice, or at least, that's my interpretation, although I'm not really sure what "stuck" on a cable means here:
You will always want to write a value of 0 to any outputs, even if you’re skipping DSP processing, so that values do not get “stuck” on a cable when a module’s inputs are disconnected.
I must admit, I'd fallen into the trap of skipping a SetValue() on a connected output to infer "no change" whereas it seems to me that's not what you're supposed to do. i.e., if there's no change, you just keep blasting out the current value regardless, which kinda feels odd (even expensive?) to me, but I guess that's how actual hardware modules would do it with control voltages.
So, if a jack is connected, regardless of whether it's audio or CV, do you always feed it something with SetValue() every time ProcessSample() gets invoked?
And to complicate things a little, how about if your UI has the ability to enable / disable outputs, now what do you send on those disabled (albeit connected) outputs, if anything? The value last sent before the output was disabled? Things are starting to get messy now, right?
And now I'm confused as to what's best practice here.

Any thoughts on this would be much appreciated! Thanks, -Rob