With regard to (3) we can't really check for REBOOT vs REBOOT_HARD because those states are ephemeral.
With regard to (3) we can't really check for REBOOT vs REBOOT_HARD because those states are ephemeral.