A filter rule as saved, exactly as the node holds it (never normalized): a comparison {column, operator, value?}, a group {op: 'and' | 'or', rules}, a negation {op: 'not', rule}, or the JSON of a rule this version couldn't read.
{column, operator, value?}
{op: 'and' | 'or', rules}
{op: 'not', rule}
A filter rule as saved, exactly as the node holds it (never normalized): a comparison
{column, operator, value?}, a group{op: 'and' | 'or', rules}, a negation{op: 'not', rule}, or the JSON of a rule this version couldn't read.