name is the discriminant and all config fields
(including scope fields like memberIds, dayOfWeek, etc.) sit at the
same level. This eliminates the { name, config: { ... } } nesting that
invited misplacement of scope fields.
Type Parameters
Registry
Registry extends CpsatRuleRegistry = BuiltInCpsatRuleRegistry