Brummel 11bbeeaefb feat(watch): startup cleanup for stale markers and orphan audio
Two retention sweeps run once on app launch before the sync worker
spawns. Mirrors doctate-client-core::startup + ::pending_cleanup.

- Marker sweep: synced markers older than 72h are dropped via
  caseStore.cleanupStale; unsynced markers (guarding pending uploads)
  are preserved indefinitely.
- Orphan audio sweep: m4a without sidecar (or vice versa) older than
  24h goes; tmp leftovers go unconditionally. Paired files survive
  regardless of age — the upload worker owns deletion of valid pairs.

Best-effort: failures are logged but never thrown. A hostile filesystem
must not stop the watch from starting.

9 new tests (PendingCleanupTest 6, StartupCleanupTest 3) covering the
window, sibling, and tmp-leftover edges. 52 tests green total.
2026-04-26 23:39:54 +02:00
2026-04-26 14:36:22 +02:00
2026-04-18 10:03:40 +02:00
S
Description
No description provided
7.4 MiB
Languages
Rust 74%
Kotlin 12.7%
HTML 4.9%
Python 4.1%
Shell 3.8%
Other 0.5%