A single condition within a rule matcher. Value shape is operator-dependent
so callers can't construct a nonsensical between with one bound, or
is_set with a value. Scalars allow the JSON primitives that round-trip
cleanly through jsonb (string | number | boolean); comparison operators
stay on the numeric-coercible subset. Set-membership operators take
string[] so b2b.rule_match can compare via jsonb containment without
losing type fidelity — callers stringify booleans/numbers at write time
(e.g. ["true", "false"], ["100", "200"]).
A single condition within a rule matcher. Value shape is operator-dependent so callers can't construct a nonsensical
betweenwith one bound, oris_setwith a value. Scalars allow the JSON primitives that round-trip cleanly through jsonb (string | number | boolean); comparison operators stay on the numeric-coercible subset. Set-membership operators takestring[]sob2b.rule_matchcan compare via jsonb containment without losing type fidelity — callers stringify booleans/numbers at write time (e.g.["true", "false"],["100", "200"]).