pub async fn search_ids(index: &str, query: &str, limit: usize) -> Vec<String>
Search an index, returning matching ids in rank order. Returns empty (never errors to the caller) so a list page renders even when the backend is down.