Passes

Within each stage, Xoom deploys changes in up to three passes so as to handle circular dependencies.

For example, imagine you are deploying two new Districts, A and B, that reference one another. Xoom deploys items sequentially. On the first pass, B does not yet exist in the database when A is deployed, resulting in a bad reference from A to B. By contrast, A exists in the database when B is deployed, so the reference from B to A is sound.

At the end of each pass Xoom makes another analysis to see if there are further changes that require deployment. It does this up to two times. So, on the second pass A will be re-deployed and as B now exists in the database the bad reference will be made good. The third pass isn't strictly necessary but is there as a fail-safe.