As I learned (re-learned) this is where you are suppose to set a Private Boolean to avoid re-triggering the rule as described here:
Even still, from what I've experienced with a much simpler app than yours'... I'd be scared-to-death to trust fail-safe outcomes dealing with the systems you've built your rule for!