Skip to content

GH-85: fix(linear): follow GraphQL cursors past first:50 + add updatedAt delta filter#89

Merged
alekspetrov merged 1 commit into
mainfrom
pilot/GH-85
Jul 13, 2026
Merged

GH-85: fix(linear): follow GraphQL cursors past first:50 + add updatedAt delta filter#89
alekspetrov merged 1 commit into
mainfrom
pilot/GH-85

Conversation

@alekspetrov

Copy link
Copy Markdown
Contributor

Summary

Automated PR created by Pilot for task GH-85.

Closes #85

Changes

GitHub Issue GH-85: fix(linear): follow GraphQL cursors past first:50 + add updatedAt delta filter

Context

SaaS pre-work S0.4. The Linear client lists issues with first: 50 and does not follow GraphQL page cursors — any project with more than ~50 issues is silently truncated. It also lacks an updatedAt delta filter, forcing full refetches. Both block the SaaS board-sync ingest (delta polling with watermark cursors) and are latent bugs for today's poller on large Linear projects.

Implementation

In sdk/integrations/linear:

  1. Cursor-follow all issue list queries: loop pageInfo { hasNextPage endCursor } until exhausted (page size 50–100), preserving current return shape.
  2. Add an updatedAt-filtered list method (GraphQL issues(filter: { updatedAt: { gt: $since } }, orderBy: updatedAt)) with the same cursor-following, for delta polling.
  3. Keep existing exported method signatures backward-compatible; new capability may be a new method rather than changing an existing signature.

Acceptance

  • List queries return >50 issues completely (test with mocked paged GraphQL responses: 3 pages, assert union)
  • Delta method returns only issues with updatedAt > since, cursor-followed
  • No behavioral change for projects under one page
  • Existing linear connector tests green

Refs

  • Verified defect: qf-studio/pilot .agent/system/saas-asset-research.md § studio-sdk (Linear first:50 no-cursor bug)
  • Consumer design: .agent/system/saas-kanban-sync-design.md §2 (per-provider delta mechanics table)

…ta filter

ListIssues silently truncated any project with more than 50 issues since it
never followed pageInfo.hasNextPage/endCursor. Loop the cursor until
exhausted (page size 100) and add ListIssuesSince for updatedAt-filtered
delta polling with the same cursor-following, needed for SaaS board-sync
watermark polling.
@alekspetrov
alekspetrov merged commit ee8b454 into main Jul 13, 2026
3 checks passed
@alekspetrov
alekspetrov deleted the pilot/GH-85 branch July 13, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(linear): follow GraphQL cursors past first:50 + add updatedAt delta filter

1 participant