Don't Develop / Update Plug-ins on your live UCD Instance
The reason for this may not be immediately obvious, so let's look at what happens when you install a new plug-in version into a UCD server.
Apart from the obvious uploading of the new plug-in zip file, UCD unpacks it and then examines the plugin.xml and upgrade.xml files to determine what's changed.
Now there are a few possibilities here and we can exploit some of these to make updating plug-ins a bit simpler.
If we are only changing the scripts that constitute a plug-in, we can get away without updating the plug-ins version number until we're ready to install it on our live UCD instance. UCD will still upload the updated plug-in and it will replace the old plug-in. So I can more rapidly go through the change/build/test cycle. However, when I'm ready to release it, I must update the version number of the plug-in before installing in my live system.
If we're changing the interface we must update the plug-in version number anyway so that UCD processes the interface changes. So, what does UCD need to do?
In this case, UCD has a potentially much bigger task. It must update the plug-in reference(s) in every process that uses a step from the updated plug-in and secondly it must adjust the definition of every step that has an interface change described in the plugin.xml and upgrade.xml files that are bundled in every plug-in.
To avoid breaking processes that might be referenced in a locked snapshot which we don't want to change, UCD automatically makes a new version of the process with the required changes in it. Exactly when UCD does this isn't known except to say that processes will be updated before they are accessed or used. So for example, when I go to edit an affected process I will see a new process version. It's a bit like the Schrödinger's cat conundrum. Does the act of looking at the process cause it to change or did it happen sometime before? For our purposes, the outcome is the same.
Developing a new plug-in isn't such a big deal but upgrading a well-used plug-in can have severe consequences if you get it wrong. Also, remember that when you install or update a plugin, the steps the plugin provides will be immediately exposed in the process designer step palette for anyone to use.
Therefore, develop / update plug-ins in a separate instance of UCD where the consequences are contained. Test carefully to make sure your upgrade.xml is correct and that your changes actually do what you expect them to do.