has_pending listed the same four predicates as pending_fingerprint (dirty notes, dirty labels, pending deletes, unsent uploads) in a second query. It is now pending_fingerprint(..)?.is_some(). Counting where LIMIT 1 would do costs nothing on a local store. DRY pass #2, batch 2, F7 (#5372). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>