I’ve taken to naming proc inputs with an underscore prefix to make sure I never attach anything externally to that input, as they are used entirely internally for recursion.
eg. _i
for an iterator that would definitely break things if connected or even set to something other than an internally defined default.
This mostly works for me, but I wonder about the benefits of something like a checkbox on proc inputs along with the other ‘Options’, that would hide that input externally for safety reasons.