Re "revert to a last known good working system state": some distributions provides this capability. For example, in NixOS, your system is similar to a git repository in the sense that every package is identified by a unique hash. You can choose to boot any version of your system configuration until you decide to have it garbage collected.
If you're not interested in the "declarative, reliable, DevOps-friendly"[1] approach of Nix, you may 'emulate' this behavior a bit with the bulkier approach of snapshotting.
If you're into LISPs and FOSS-only systems, you may prefer Guix instead of Nix.
Re "revert to a last known good working system state": some distributions provides this capability. For example, in NixOS, your system is similar to a git repository in the sense that every package is identified by a unique hash. You can choose to boot any version of your system configuration until you decide to have it garbage collected.
If you're not interested in the "declarative, reliable, DevOps-friendly"[1] approach of Nix, you may 'emulate' this behavior a bit with the bulkier approach of snapshotting.
If you're into LISPs and FOSS-only systems, you may prefer Guix instead of Nix.
[1]: https://nixos.org