The shadow model was building WHERE predicates by manually nesting
Expr::Binary nodes, which caused AND/OR expressions to be evaluated
left-to-right instead of using SQLite’s precedence rules. Mixed
expressions like `a OR b AND c` were effectively generated as
`(a OR b) AND c`.
Update the predicate generator to use Predicate::and / Predicate::or
to combine context predicates, letting those helpers insert the
appropriate parentheses. This ensures that AND groups are formed
before OR and that the resulting Expr tree matches SQLite’s logical
evaluation order.