The core query. Must satisfy the brief: search on single terms, case-insensitive, and no wasted requests. - [ ] `websearch_to_tsquery('simple', …)` against the GIN-indexed `search_vector` - [ ] facet counts (`genreFacets`, `decadeFacets`) computed with that dimension removed from the filter - [ ] keyset cursors in `search/search.ts` (pure, unit-tested) - [ ] per-request DataLoaders in `loaders/index.ts` **Acceptance:** the curl smoke suite in `docs/VM-setup.md` passes against the running API.