Thanks for encouraging me to do further experiments:
After changing configuration, flows remains unchanged functional wise. Of course as long as we can trust that what is exported (using NR export feature) is being executed.
however if I change anything in the node (ie its name), which raise requirement to save it, the code changes. Here is comparison of what changed in node source after node name changed:
left side: values after saving node at time following config was active:
contextStorage: {
inFile: { module: "localfilesystem"},
default: { module: "memory" }
},
right side: original code (see source code below)
Here is a source I made this test for:
[{"id":"6e2ad02c.aa90e","type":"tab","label":"Flow 5","disabled":false,"info":""},{"id":"6ad61007.8e9aa8","type":"inject","z":"6e2ad02c.aa90e","name":"","repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":80,"wires":[["d8328be9.16e2f8"]]},{"id":"d8328be9.16e2f8","type":"change","z":"6e2ad02c.aa90e","name":"Config & init setup","rules":[{"t":"set","p":"message_content","pt":"flow","to":"{\"data\":{\"message\":\"Washing mashine has just finished after %s\",\"title\":\"Washing Mashine\",\"data\":{\"attachment\":{\"url\":\"https://www.freepnglogos.com/uploads/washing-machine-png/washing-machine-icon-download-png-and-ico-icon-easy-4.png\",\"content-type\":\"png\",\"hide-thumbnail\":false},\"apns_headers\":{\"apns-collapse-id\":\"WASHING_MACHINE\"},\"push\":{\"badge\":0,\"category\":\"WASHING_MACHINE\",\"sound\":{\"name\":\"default\",\"critical\":1,\"volume\":0.3}}}}}","tot":"json"},{"t":"set","p":"min_working_power","pt":"flow","to":"3","tot":"num"},{"t":"set","p":"max_idle_power","pt":"flow","to":"1.6","tot":"num"},{"t":"set","p":"idle_timeout","pt":"flow","to":"5000","tot":"num"},{"t":"set","p":"data","pt":"flow","to":"{\"date_start\":null,\"date_end\":null,\"work_time\":null,\"work_time_str\":null}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":80,"wires":[[]]}]
I think the root cause of whole issue is, name of default contextStorage is never stored into the code. It requires additional effort to cover this condition (missing explicit value of contextStorage) and in turn is sensitive on issues like this one which is likely GUI related only.
BTW you can find the issue in GitHub at: Default contextStorage suddenly changed in nodes to another one · Issue #2954 · node-red/node-red · GitHub