Summary
A cursor copied between filters or tenants can skip records or reveal ordering information.
Why this matters
This closes a correctness, security, or operability gap in the Liquifact backend and makes the behavior explicit, observable, and safe under failure.
Requirements
- Repository scope: Liquifact/Liquifact-backend only.
- Encode the tenant, normalized query, sort, and position in an integrity-protected cursor; reject mismatches with a safe client error.
- Preserve tenant isolation, structured errors, and existing API compatibility unless the issue explicitly requires a contract change.
- Add focused unit and integration coverage for the new behavior.
Technical guidance
- Follow the repository's existing middleware, service, persistence, logging, and error-envelope conventions.
- Keep side effects bounded and make retries, authorization, and failure handling explicit.
- Document non-obvious tradeoffs and include security notes in the PR.
Edge cases — each must have a test
Acceptance criteria
Out of scope
- switching pagination frameworks
Summary
A cursor copied between filters or tenants can skip records or reveal ordering information.
Why this matters
This closes a correctness, security, or operability gap in the Liquifact backend and makes the behavior explicit, observable, and safe under failure.
Requirements
Technical guidance
Edge cases — each must have a test
Acceptance criteria
Out of scope