PR #136 stops the double-delete from the backups page, but two other code paths remove backup archives with no awareness of the per-backup _deleting flag:
- The auto-prune loop in backup.ts (the backupsLimit enforcement) removes the oldest archive directly, and structurally cannot check the flag: BackupRecord carries only id, date and path. Start a manual delete of the oldest archive, navigate away (the handler keeps running), press Play with backupsAuto on, and the prune removes the same file, producing the same false-failure the PR set out to kill, this time as prune-failed.
- deleteInstallation with data deletion guards isBackingUp and isRestoringBackup at the installation level but no per-backup isDeleting, so the same interleaving lands a bogus entry in failedBackupPaths and a misleading "some backups survived" warning.
Neither is a regression from #136. Fix direction: add the deleting marker to BackupRecord so both paths can skip in-flight archives, or serialize archive removal per installation behind one gate. Surfaced during the #136 review.
PR #136 stops the double-delete from the backups page, but two other code paths remove backup archives with no awareness of the per-backup _deleting flag:
Neither is a regression from #136. Fix direction: add the deleting marker to BackupRecord so both paths can skip in-flight archives, or serialize archive removal per installation behind one gate. Surfaced during the #136 review.