There were a couple of issues with some of the -STABLE updates.
First, a typo on my part. (Specifically the result of missing a git cherry-pick.) This caused the next update to fail, because it tried to execute "umount mount -t zfs blahblahblah" instead of "umount -f /boot/grub". Changing "arts =" to "args =" in /usr/local/lib/freenasOS/Update.py fixes that; otherwise, you can do an ISO install, or revert to a prior boot environment and update again.
The second one was that some /dev directory entries somehow got into the package file. And the new code mounts devfs in the target environment and the new install code attempts to do things to those, and then it fails because devfs doesn't let it. We've taken steps to ensure that none of the contents of /dev get in the package file again. (In this case, the update would not work, so things will Just Work when the next -STABLE update happens. Also, when the upgrade fails, it cleans up after itself.)
There are also multiple reports of "failed upgrade" after the reboot, which mostly appear to happen when doing what works out to be a downgrade.