the runtime checks in regards of the tetain variables the name of the application.
In case the name (maybe included version number) changed, the runtime will reset the retain variables.
--> In this case you'll get a warning that a warm restart won't be possible.
As solution you can keep always the name of the application and add the version in a top level folder or in a commentfield of a POE.
An other alternative could be to store retain (mostly recipe values) inside of a csv file inside of the flash.
Just feel free to call the Hotline for any further questions.