You may have misunderstood the algorithm I was describing. Imagine that we have 5 AIs.
1) Spawn five threads, each AI is handed no data about the other AIs, and is asked what it'd like to do.
2) Collect the five answers and pass those into an iteration of "okay, what would you do if you expected the other AIs to do this".
3) Repeat 2 as many times as you like.
The idea is that you take the recursivity out of the process. How great or small a refactor from a recursive to an iterative strategy would be in this case I cannot say, having no first-hand knowledge of the code. My meta-point was that while there are potential solutions, the problem is probably not as simple as "well, stop letting it loop infinitely"; really, that's a misnomer given the current description of the problem, because it's a recursion stack-overflow from the sounds of it, not an infinite loop.
Er, yes! You're exactly right.
My main concern with that approach is that the results might be less-than-optimal. Sure, the AI will act with knowledge of the other AIs, but they'll be acting with what the other AIs would have done last-pass through the system. If AI actions change drastically from pass n-1 to pass n, and AI A is reacting to AI B's plans, then A could decide to do something on pass n, using B's plans on pass n-1, while B changes its plans entirely on pass n to something A wouldn't react to.
I'm not sure how much of an issue it'd be in practice, and any notably-weird actions could be handwaved as "Well, A expected B to do something completely different", but that was the first potential problem I saw.
That aside, I fundamentally agree with your meta-point, and I've been arguing the exact same point in the Backers forum.