refactor(pagination): define each list query once, call it from both pages master
Page 1 and load-more are separate server entry points by necessity: a route load() that has url/params, and a remote command that has only an opaque cursor. Each hand-wrote the same filter bag, and a keyset cursor is specific to the query that produced it — so page 2 is adjacent to page 1 only while every filter, sort, bound and limit agrees between two call sites nothing forces to agree. Define each list once in contrail/queries.ts and have both entry points call it. Sort, order, limit, time bounds, any post-filter and the next-page envelope now live in one place. The resumer registry keeps its real job — validating decoded args at the trust boundary and naming which query to continue — and no longer restates the query itself. Two consequences worth naming. The past-events narrowing (its upper time bound admits an event that is still running) moves inside the query, so every page inherits it rather than applying it twice. And because that narrowing runs after pagination, a page can come back short or even empty while a cursor remains — so the "load more" affordance keys on the cursor, not on the page having events. That rule was previously implicit in one Svelte guard; it is now stated where callers will find it. Search keeps its page-1-only Meili->D1 fallback: a continuation must not switch backends, or it restarts page 1 with a keyset the other backend cannot read. Behaviour-preserving — the page-1/load-more continuity tests pass through it unchanged. README's pagination section is updated to match and trimmed to the model a reader needs.