I got the "can't finish the mission because Kate and Anton are endlessly circling" bug at Gunsan in 1.2.19/1.9a1. There are a couple of reports of this scattered around.

The Gunsan screen desc is the "InProgress " text. It remains as this throughout, even after all the hostiles have been destroyed.

msnData 'targetCount was still 7 after all the chimeras had been destroyed.
Running the mission again using the "Revert" feature showed that as each chimera is destroyed the 'targetCount data is not being decremented.
EDIT: Although the code checks against the decremented targetCount data, it looks like it doesn't save that value maybe?

The highlighted target does not change to the second and subsequent chimeras as each is destroyed either. I think this is meant to happen but the code is too complex for me.

After all the hostiles had been destroyed, setting the target count to zero in the debug console and destroying an uninfected shipyard caused the mission to succeed and Kate and Anton docked and yacked on for a while.

If that doesn't help, I have a sav.

Also, the mission summary always shows "Destroy all the infected shipyards."

It was late when I saw this so I may have been confused, but the Summary text code appears to be the reverse of what is stated in the comments. If the target count is zero then the shipyards should be mentioned in the Summary as there are no ships left. Otherwise the chimeras should be mentioned.

Feedback.
Also the ability to enter the mission chain at any stage is really good. Well done.

george moromisato 16 Jul 2019:

Thank you! This turned out to be a regression in 1.8. The target count was not being decremented because objMatches was returning Nil (meaning it didn't think the destroyed ship was a chimera).

In 1.8, I changed objMatches and sysFindObject to never return destroyed objects unless explicitly requested. I did this because 99% of the time you don't want to find destroyed objects.

But using objMatches inside <OnObjDestroyed> means that you're often dealing with destroyed objects.

In 1.9 I changed it so that objMatches still works on destroyed objects (but sysFindObject does not).