- Route both row-GET endpoints (internal + v1) and the copilot tool through
the single service.queryRows instead of three inline query copies; add a
withExecutions option so the public v1 route still omits executions.
- Run COUNT(*) and the page fetch concurrently in queryRows.
- Move CSV-import transaction ownership out of the API route into
importAppendRows / importReplaceRows so routes never hold a trx.
- Extract row position mechanics (reserve / shift / compact) into named
private helpers in service.ts; no separate table-wrapper module.