Operation Rule Execution
Operator guide: Operation Rules.
Resolution and execution
The task manager resolves an explicit rule_id first, then a rack association, then a global operation default, and finally the built-in fallback. Failure to load an explicit rule returns an error without trying lower-priority sources. The resolved definition travels in workflow input rather than being reloaded from the database during execution.
The parent executes stages in ascending order. executeGenericStageParallel launches one GenericComponentStepWorkflow per component-type step with targets and waits for the stage. Missing target types are skipped. A stage failure stops the task without rolling back earlier hardware actions.
Each child runs pre-operation actions, the main action, and post-operation actions in sequence. Its target contains all selected component IDs of that type. Action executors perform component batching and external activities. Cross-component verification receives the complete target map.
Timeouts and retries
buildActivityOptions uses the step timeout as the activity start-to-close timeout, defaulting to 20 minutes. The step retry policy supplies activity retry defaults. Without it, defaults are three attempts, a one-second initial interval, twofold backoff, and a one-minute maximum interval. Individual action executors may override activity options.
childWorkflowExecutionTimeout derives a separate execution budget: a base of the step timeout (30 minutes when zero), multiplied by configured attempts, plus configured backoff, declared pre/post action timeouts, and a two-minute buffer. When retry is omitted, this calculation uses one attempt and no backoff, even though activities default to three attempts. With all timeouts omitted, the child budget is 32 minutes versus 20 minutes per activity attempt, so the child deadline can cut off the default retries.
See workflow helpers, child orchestration, and action executors for the execution paths. The action validator defines accepted user-rule actions; internal executor registration alone does not make an action accepted by that validator.