I don't think I've thought about this as much as you have :) The queues on my application are basically always empty apart from specific under-load times, so it would be unlikely (but never impossible) that a queued job could get dropped. To solve the problem you describe I think I'd want to do a 2-step deploy, one step to start creating the new job type and introduce worker functionality to handle it, and a second deploy to remove the old worker functionality once we're sure the queue is cleared of any of those old jobs - which is basically what I think you're describing. Thanks for the comment!