Read my last comment.
Until based pagination breaks down when you introduce stuff like Bostr.
I don't think this really makes pagination easier or simpler. as things are right now pagination is pretty simple
Example relay pagination in typescript https://gist.github.com/hzrd149/19f824060de778c71a7b09965442448d
With the exception of the "cursor" extension everything in this NIP can be done using the "until" filter field and watching how many events are returned in the REQ
Read my last comment.
Until based pagination breaks down when you introduce stuff like Bostr.
What is Bostr? I have not seen anything about it
A relay that reads from multiple relays (without an indexer)
assuming the lowest created_at is the one you should use here is dumb, because it assumes the lowest created_at of any relay read from, and that misses events from other relays
This also breaks many other potential relay optimizations unrelated to this
Also cursors are really easy to implement without persistent state. Added that to the PR.