What problem does it solve? List and report screens need filters (period, reference picker, select, checkbox, free text) wired consistently across three places: the TypeBox schema annotation, the generated SQL, and the screen markup. Doing this by hand causes silent failures — filters that are set but never applied, badge counts that are wrong, and Reset buttons that leave stale values behind. ## Core Features & Use Cases - Schema-driven filter generation: Declare x-filter on a model field and regenerate SQL with deno task sql:gen; the parsing, WHERE clauses, and mirrored response are produced automatically. - Reference filter contract: Enforces the one-key-object rule ({"counterparty": {"id": "4", "name": "Fierst"}}) so the badge count and clearing behavior stay correct. - Period handling: Distinguishes range filters (dateFrom/dateTo) from whole-unit periods (month, quarter, year) using <ui-period>, and covers the < to + 1 upper-bound rule for timestamp columns. - Use Case: Add a counterparty picker, a posted-state select, and a period filter to an invoice list screen by annotating the schema, regenerating SQL, and writing one renderFilters() method. ## Quick Start Ask the AI to add a period filter and a counterparty reference filter to the invoice list screen, wiring the schema annotation, generated SQL, and renderFilters markup together.