The header polled every 30s, so the live "syncing" state (now gated on a real running job) was usually missed between ticks. Poll every 8s while a job is running or channels are pending, easing back to 30s once everything's settled, via react-query's functional refetchInterval.