> There is a default limit of 100 results, and the default offset should be zero, right?

No, a default list query does not have an offset. It generates this:

```sql
select xt.get($${
  "nameSpace":"XM",
  "type":"XdrupleCommerceProduct",
  "query":{"parameters":[],"orderBy":[],"rowLimit":100},
  "username":"admin"
}$$);
```

> There's nothing wrong with desiring uniqueness on a field we don't search, sort, or join on.

I don't follow you. A primary key should be unique (which requires an index) and it will most likely need to be searched, sorted and joined on.  If we don't have an index on this column, we should.  We use it all the time here:
https://github.com/xtuple/xtuple/blob/cda12b58de41e318d9c477352340a4af526e8090/lib/orm/source/xt/javascript/data.sql#L1886

```
where %3$I in ({ids})
```

I don't see how cursors could work over a REST API. You would have to store some state on the server or in the client to link back to an open cursor.  That is not a restful design.

> This is preferable to cramming a fix into the core framework that affects all clients everywhere

I thought having a core framework that affects all client that actually returns consistent data would be a desired feature.  I guess not.