bad_cursor
Cursors are opaque base64 blobs returned in
pagination.next_cursor. We
emit bad_cursor when:
- The cursor isn’t valid base64 / doesn’t decode.
- The cursor’s encoded shape is wrong (we evolve the format occasionally; older clients holding a stale cursor across a deploy may see this).
- The cursor’s
(createdAt, id)keyset references a row that no longer exists in the filtered result set (e.g. the row was deleted, or you changedprojectId/dateFrom/dateTomid-loop).
(createdAt DESC, id DESC), so re-paginating will
just re-emit the rows you already have. Dedupe by id if you can’t
afford duplicates.
See conventions.md §pagination for the
full pagination model.