internal/filter/MAINTENANCE.md
The engine is memo-specific; any future field or behavior changes must stay consistent with the memo schema and store implementations. Use this guide when extending or debugging the package.
schema.go.Column), JSON path (if applicable), type, and
allowed operators.EnvOptions.parser.go or extend the renderer helpers.store/db/{sqlite,mysql,postgres}/memo_filter_test.go with a case that
exercises the new field.go test ./... to ensure the SQL output matches expectations across
all dialects.render.go. If a new dialect-specific behavior
emerges (e.g., JSON operators), add the logic there rather than leaking it
into store code.jsonExtractExpr, jsonArrayExpr, etc.) rather than
sprinkling ad-hoc SQL strings.addArg so that argument numbering stays in
sync with store queries.buildCondition or schema validation.
Enable logging around parser.go when diagnosing unknown identifier/operator
messages.renderCondition help
identify which IR node produced unexpected SQL.filter.DefaultEngine() exactly once
per process; the singleton caches the parsed CEL environment.go test ./store/... ensures all dialect tests consume the engine correctly.