Skip to content

fix(sidecar): resume Gmail history past page cap when pages are deduped - #691

Closed
cursor[bot] wants to merge 2 commits into
mainfrom
cursor/critical-bug-investigation-51d2
Closed

cursor[bot] wants to merge 2 commits into
mainfrom
cursor/critical-bug-investigation-51d2

Conversation

@cursor

@cursor cursor Bot commented Aug 22, 2026

Copy link
Copy Markdown

Summary

  • Persist history_page_token in sidecar_state (migration 32) when Gmail history listing is truncated by the 3-page cap
  • Resume listNewMessageIds from the dangling pageToken on the next poll instead of re-fetching already-deduped pages
  • Clear the resume token when the listing completes or on history-gap re-anchor

Why

When Gmail history spans more than MAX_HISTORY_PAGES (3) and pages 1–3 contain only already-ingested messages (all deduped), truncated=true freezes the cursor forever. The poller re-fetches the same 3 pages every minute and never reaches page 4+, causing silent mail loss for sidecar mailboxes during bursts.

Test plan

  • npm test passes locally (60 tests: workspace-poll, gmail-client, sidecar-state)
  • New regression: two-poll convergence when pages 1–3 are fully deduped and page 4 has fresh mail
  • listNewMessageIds resumes from resumePageToken instead of re-fetching first pages
  • Truncated-history poll test asserts history_page_token is persisted

Notes for reviewer

Cherry-pick of validated fix from cursor/critical-bug-investigation-1317 (#667). Same fix has been identified in prior automation runs but not yet merged to main.

Open in Web View Automation 

cursoragent and others added 2 commits August 22, 2026 11:09
…ed (#667)

When Gmail history spans more than MAX_HISTORY_PAGES (3) and pages 1–3 are
fully deduped, truncated=true froze the cursor forever and page 4+ messages
were never ingested — silent data loss during mail bursts.

Persist history_page_token in sidecar_state (migration 32) and pass it to
listNewMessageIds so the next poll resumes from the dangling pageToken
instead of re-fetching already-deduped pages.

Co-authored-by: schmug <schmug@users.noreply.github.com>
…nit test

Complements #667 cherry-pick: first truncated-history poll test now checks
the persisted page token, and gmail-client gets a resumePageToken test.

Co-authored-by: schmug <schmug@users.noreply.github.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
ais-hub afb1d84 Commit Preview URL

Branch Preview URL
Aug 22 2026, 11:10 AM

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
agentic-inbox afb1d84 Aug 22 2026, 11:12 AM

@schmug

schmug commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Closing as superseded by #686.

This is one of 24 near-identical PRs re-filed daily by an automation that has since been fixed. #686 carries the same Gmail history page-token change and is the one kept open, so no work is lost here.

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.

2 participants