Sorting must apply to the **whole** result set, not to whatever is loaded in the client. - [ ] `AlbumSort`: RELEVANCE, TITLE_ASC/DESC, YEAR_ASC/DESC, RATING_ASC/DESC - [ ] `RATING_*` sorts on `AVG(review.rating)` - the community rating, computed in SQL - [ ] every sort has matching keyset cursor columns so paging stays stable - [ ] sort control in the toolbar, value in the URL **Acceptance:** with more albums loaded than fit on screen, switching sort re-queries and the order is correct across page boundaries.