Use stable, typed values
Prefer explicit comparisons and normalized fields over fragile text matching or assumptions about display labels. Decide how null, empty, malformed, and case-variant values behave before production.
When rules grow, name intermediate decisions and separate unrelated checks. A single long expression is hard to review, troubleshoot, and update; small named conditions make the intent easier to verify.
Test every branch and boundary
Create examples for true and false outcomes plus edge cases at thresholds, date boundaries, and missing-field situations. Confirm that the fallback branch is intentional rather than an accidental route for data the workflow did not understand.
Record decision inputs and the selected branch in a trace where appropriate. This gives operators evidence for why an action ran and helps distinguish a logic error from unexpected source data.