My guess is that at the moment a workflow with a cyclic dependency fails by causing an infinite recursion in the rank method. We should check during or after parsing whether the workflow has cycles and throw a nice supportive exception.