Allow marking a base as bad so it's not used in future backups #4487
Description
We've occasionally encountered situations where we've had bad state in the repo and weren't able to make progress unless a full backup was manually requested. We should have a more streamlined approach to this so that it requires less user intervention
One way to accomplish this is to run the backup and if it fails, mark the base backup(s) as unable to participate in future incremental backups. This is a bit of a big hammer solution, but determining which backups are safe to keep and which are not is difficult to do in general as it requires knowing why the base was bad to start with
One way to exclude backups from being future bases would be to add an additional tag to them so the logic for selecting bases ignores them (after checking for said tag). This would still allow the selection of bases, assuming there's older backups than the one marked as bad
One thing to look out for when implementing this is to make sure that all checks for backup time are switched to the CreationTime field in the backup instead of mod time. There's likely places where the kopia manifest mod time is being used since it was a reasonable proxy at the time