Skip to content

fix(poll): add adaptive PR backfill splitting, enrichment cache, and 3-tier error surfacing - #173

Merged
wgordon17 merged 24 commits into
gordon-code:mainfrom
wgordon17:fix/poll-backfill-resilience
Oct 30, 2026
Merged

wgordon17 merged 24 commits into
gordon-code:mainfrom
wgordon17:fix/poll-backfill-resilience

Conversation

@wgordon17

@wgordon17 wgordon17 commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Add 25-node adaptive binary splitting with a light-query fallback for PR enrichment and dependency/Renovate Dashboard body fetches (including CORS-masked Failed to fetch gateway timeouts, with split suppression during broad outages), query PullRequest.statusCheckRollup directly with partial-node recovery, carry checkStatus forward only when the PR's revision is unchanged, hot-poll in 25-node batches (reading fork head-commit CI for fork-only-CI PRs), and cache settled-PR enrichment for the refresh interval plus one minute.
  • Harden Octokit requests with per-attempt 15s timeouts (with an AbortSignal.any fallback), aborted-signal checks for queued requests, and a 15s inline rate-limit retry cap, plus post-wake/offline poll guards and 3-tier error surfacing (silentToast drawer warnings, 3-failure hysteresis, 15m toast cooldown, and a Partial sync indicator that clears once no PR is degraded), and require a 7-day minimumReleaseAge for pnpm resolution.
  • Treat unverified CI status (checkStatusStale) as unknown in the UI by hiding Approve, excluding the PR from Mergeable, and showing a Checking status badge; exclude archived repositories from dashboard and MCP searches; and persist parsed Renovate Dependency Dashboard bodies to localStorage with Zod validation and cross-identity cleanup.

@wgordon17
wgordon17 force-pushed the fix/poll-backfill-resilience branch from 4670c64 to da53403 Compare October 29, 2026 13:45
Compose the caller's signal with the per-attempt timeout via manual
listener wiring on browsers without AbortSignal.any (Safari < 17.4,
Chrome < 116, Firefox < 124) instead of throwing a TypeError on every
signalled request.
Add archived:false to the repo-scoped PR, issue, and summary searches so
MCP lists and counts match the dashboard once a selected repository is
archived.
…che, and UI

- Bound backfill split amplification with a per-call suppression breaker
  (splits still cover CORS-masked "Failed to fetch" gateway timeouts),
  salvage partial hot-poll nodes, and hot-poll in 25-node batches
- Derive the settled-PR enrichment cache TTL from the refresh interval
  (interval + 60s, min 3m) and fold fetchIssuesAndPullRequests' optional
  parameters into an options object
- Exclude archived repositories from repo-scoped searches
- Hide Approve while CI check status is unverified (checkStatusStale),
  suppress the Checking status flash while enrichment is pending, keep the
  degraded-enrichment warning only while PRs are degraded, and make the
  Partial sync tooltip keyboard-focusable
- Validate the persisted dashboard-body cache with Zod, extract shared
  revision/degraded-enrichment helpers, drop the dead commits{} rollup
  fallback, and update USER_GUIDE.md and tests
@wgordon17
wgordon17 force-pushed the fix/poll-backfill-resilience branch from b631554 to 12a1335 Compare October 30, 2026 00:10
@wgordon17 wgordon17 changed the title fix(poll): add adaptive PR backfill splitting, 3m cache, and 3-tier error surfacing fix(poll): add adaptive PR backfill splitting, enrichment cache, and 3-tier error surfacing Oct 30, 2026
Fork PRs whose CI runs only in the fork report a null PR-level
statusCheckRollup, so the hot poll overwrote their pending or stale
status with null ("no CI"), re-showing Approve and counting them as
Mergeable until the next full refresh. HOT_PR_STATUS_QUERY now also
reads isCrossRepository and the head ref commit's rollup, and uses it
when the PR-level rollup is null on a cross-repository PR.
Set minimumReleaseAge to 7 days so lockfile maintenance cannot pin
versions newer than local supply-chain cooldowns allow, and regenerate
the lockfile under that policy (12 packages step back one patch/minor;
security floors for qs, hono, and ip-address still hold).
@wgordon17
wgordon17 marked this pull request as ready for review October 30, 2026 19:24
@wgordon17
wgordon17 requested a review from a team October 30, 2026 19:24
@wgordon17
wgordon17 merged commit 4e5666f into gordon-code:main Oct 30, 2026
1 check passed
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.

1 participant