Skip to content

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

Description

@alekspetrov

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    pilotPilot AI will work on thispilot-donePilot completed this

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions