For Increase / Decrease / Set budget / Duplicate and a few other types of actions you can define the frequency limit in the task - Once in a lifetime:
There is no such setting for other types of tasks such as Start and Pause. Say, you want to pause the ad sets if a particular Spend threshold is reached. There is a way to make such rules apply just once for each individual ad set by adding an additional task to the rule and using a filter in rule applies to setting:
"Ad set name doesn't contain tag" selection filter
Task 1. Pause ad set if Spend >= $X
Task 2. Add tag to ad set name if Spend >= $X
So as soon as the ad set is paused by this rule, it gets a special tag and won't be checked anymore again (either being turned off or active if you reactivate it later) which is our aim because the rule will look only at the ad sets that don't contain this tag. You can also modify the second task's condition to add the tag in a different scenario. For example if you want the rule to check each ad set just once and if it doesn't get paused, it'll never be checked again. The second task's condition in that scenario would be any condition that is always met so as soon as it is checked, it triggers. "Spend >= $0" condition would work like that.
If you hesitate on how to apply your approach feel free to reach out in the in-app chat. Our team will try to find the best solution for you :)