Thanks for the detailed report and analysis! You're using Prodigy 1.9+, right? And have you tried the "instant_submit": true
setting? This will immediately send an answer back when you hit accept/reject/ignore, before requesting the next batch. It does mean you can't undo, but it should resolve some of the saving issues.
The "No tasks available" message is shown if the next batch returned by the stream is an empty list. Typically, this means that there's nothing left – but there are some edge cases where that's not necessarily true. In 1.9, we also switched over to FastAPI and async, which is great, but also makes some parts of the server behave slightly differently. This issue came up the other day and my current theory is that maybe the batching logic is executed in parallel, so while batch A is still loading, batch B finishes with an empty list, which makes Prodigy think that it's over. We're currently trying to come up with a solution for this.