96b9489d49
CreateSuggestedJob ran one AnyAsync per message in the thread to decide imported-vs-skip — an N+1 that scales with thread length. Replace it with a single query that loads the already-imported ExternalMessageIds for the job, then check in memory (identical skip/import behaviour), mirroring the batched pattern RelinkThread already uses. Build clean; backend suite 135/135 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>