UPDATE: The puppy shutdown process on systemd works however there is one problem, the file system of partition that host save files became dirty especially the linux partitions. Due to systemd parallel nature also undiscriminately unmounting mountpoints. I searched for workaround on how to exclude a mountpoints on systemd but no to avail because it was by design.
I stumbled on Slax distro, I noticed that it has debian version which also using systemd. I searched on slax documentation and blogs. It turns out that systemd has hard-coded special paths which ignored by systemd when unmounting during shutdown. So what I did was I imitate the slax's approach by moving /initrd to /run/initramfs. I modified the initrd init scripts and puppy core files that greps "/initrd" path and replace with "/run/initramfs". For compatibility, /initrd is now a symlink to /run/initramfs. 90% of homemade puppy still works unless the homemade apps use /initrd for grepping on mount command.
Upon testing on manjaropup loaded with save folder during reboot, the mountpoints on /run/initramfs was indeed ignored by systemd during unmount target then the puppy shutdown script was kicked in after shutdown and unmount target event before reaching the final target in systemd. When the manjaropup was reboot again, it no longer detects filesystem errors when the save folder is loaded.
Based on systemd documentations by /run/initramfs path. It /run/initramfs/shutdown script exists. It jumps automatically on initramfs, slax uses live linux script to disassemble the root filesystems make it shutdown process much cleaner. Maybe I try to use that scripts.
References:
https://www.slax.org/en/blog/24229-Clea ... stemd.html
https://www.freedesktop.org/wiki/Softwa ... dInterface