The background cleanup job operated on all rows including backups:
- clearOlderThanClearAt() deleted backup rows with expired clear_at,
destroying saved statuses before they could be restored
- clearStatusesOlderThan() overwrote backup statuses to OFFLINE,
corrupting saved DND/away states
Additionally, findAll() leaked backup rows into user-facing lists,
and findAllRecent() filtered backups via slow LIKE pattern instead
of the is_backup column.
Add is_backup=false filter to all four methods.
AI-Assisted-By: Claude Opus 4.6
Signed-off-by: Anna Larch <anna@nextcloud.com>