Ordered candidate chain: first is the primary, the rest are failover.
Optional
All present conditions must hold (AND); each condition's list is an OR. Empty/absent = match-all.
Ordered candidate chain: first is the primary, the rest are failover.