It definitely seems like a bug to me.
It’s bothered me a lot, but there are just so many more pressing issues that I never bothered reporting it.
It happens because the research ships are all different ships. When one finishes and another is in the queue it should be scheduling the next available one for production.
I don’t believe, though, that the API exposes a function that says HOW MANY of a type of ship are being constructed, just whether one is. So it can’t check to see that 3 are queued after one finishes, and that it should build 2 more of the next one, for example.
Not in Lua, that is. The API that’s exposed needs improvements in many areas.
I could be wrong in this example since I’m speaking off the top of my head, but yeah.