Bug Fixes
Photo uploads are now significantly faster. The contents-state poll was dispatching the analyzer orchestrator every 15 seconds to detect stale photo analyses — but that interval exceeded the orchestrator's debounce window, causing a fresh run on nearly every poll tick. During large uploads, this ballooned to 40+ concurrent runs, clogging the pipeline.
The fix removes the redundant frontend self-heal. Analyzer liveness is now owned by the server-side analyze-watchdog, which runs every 2 minutes and re-dispatches stuck work areas even with no page open. The projection and packout self-heals remain — they're database-state-gated and can't accumulate.
Result: single-digit orchestrator runs, reliable worker and projection completion, and correct deduplication counts.