Was a relatively easy thing to implement, running a crude version now. In effect the main puppy.sfs is (sort of) all moved over into the savefile, so there is no main read only sfs. rsync (backup) is used to accommodate not saving, where that backup is also in the 'savefile', using hard links, so takes up very little space (relatively speaking) and is very quick. So at bootup, three choices are presented during the boot process, make the prior session the stable copy (save changes), restore the stable version (no save), or just boot into where you left off at the last shutdown. Again each/any of those is relatively quick (again just rsync of hard links).
What are hard links? Well they're just different file (or folder) names that point to the same data, so just inodes (pointers). You can for instance have a file containing the text 'this is my file', saved with a filename of my-file.txt, and also create a hard link with a filename of 'mikes-file', that also points to the same content. Delete my-file.txt and the data content will still remain flagged as "used" as filename 'mikes-file' hasn't been deleted, you have to delete both filenames for the data content to be released (flagged as being available as part of free-space). So rsync to duplicate the entire system is quick, as its just setting up filename pointers, not actually copying any data.
Working really well. Like a full install, but also like a frugal install. Just three files, initrd, vmlinuz and main 'savefile'. I've also just loaded a sfs into that (chrome). I didn't, but had I created another rsync of hardlinks, then that could be 'unloaded' simply by rsync'ing back to the copy prior to having loaded the chrome sfs.
The downside for me is that this laptop has a slow HDD, more usually I run with the main system all loaded into ram, so its quicker in that respect. However once a program has been run once, more often it remains in memory/ram (cached), so subsequent runs are little different in startup speed.