Misordered/unordered script loading that leaves old old code alive in strange ways. Never really nailed down, but suspected to be an artifact of java multithreading with jython's import machinery. Virtually impossible to reliably repeat, which is why I don't trust it.
It doesn't happen if you always refer to other project scripts' objects with full paths, at least for first use in a function.
Edit: New bold above. Now nailed down to be a bug in Ignition's script library auto-import, with a work-around: