Skip to content

Robust Scale-Safe Lifecycle Consolidation#26355

Merged
gundermanc merged 5 commits intomainfrom
bot/productivity-updates-20260501232926-25237319085
May 4, 2026
Merged

Robust Scale-Safe Lifecycle Consolidation#26355
gundermanc merged 5 commits intomainfrom
bot/productivity-updates-20260501232926-25237319085

Conversation

@gemini-cli-robot
Copy link
Copy Markdown
Collaborator

Robust Scale-Safe Lifecycle Consolidation

This PR consolidates fragmented repository maintenance workflows into a single, scale-safe lifecycle manager and optimizes existing triage queries.

Changes

1. Scale-Safe Lifecycle Management (gemini-lifecycle-manager.yml)

  • Refactored processItems to use github.rest.search.issuesAndPullRequests with a fixed per_page: 100 and no pagination.
  • This ensures that even with a large backlog (e.g., 5,000+ issues), the workflow only processes a manageable batch of items per daily run, preventing N+1 query failures and hitting GitHub API rate limits.
  • The consolidated manager now handles:
    • No-Response Closure: Closes items with status/need-information after 14 days of inactivity.
    • Actor-Aware Label Removal: Automatically removes status/need-information only when the contributor (author) responds, ignoring maintainer pings.
    • Stale Management: Marks items as stale after 60 days of inactivity and closes them after 14 additional days.
    • PR Contribution Policy: Implements a 2-stage policy for non-roadmap PRs (7-day nudge, 14-day closure).

2. Optimized Issue Triage (gemini-scheduled-issue-triage.yml)

  • Updated search queries to exclude status/bot-triaged labels.
  • This prevents redundant re-processing of issues that have already been analyzed by Gemini, saving API budget and compute time.

3. Workflow Consolidation

  • Deleted 5 redundant legacy workflows:
    • gemini-scheduled-stale-issue-closer.yml
    • gemini-scheduled-stale-pr-closer.yml
    • no-response.yml
    • stale.yml
    • pr-contribution-guidelines-notifier.yml

Impact

  • Stability: Prevents workflow timeouts and rate-limiting on repositories with large backlogs.
  • Maintainability: Centralizes lifecycle policies into a single, well-commented configuration.
  • Efficiency: Reduces redundant triage processing and API calls.
  • Contributor Experience: Provides clear, actor-aware feedback and graceful PR closure nudges.

This PR consolidates fragmented repository maintenance workflows into a single, scale-safe lifecycle manager and optimizes existing triage queries.

## Changes

### 1. Scale-Safe Lifecycle Management (`gemini-lifecycle-manager.yml`)
- Refactored `processItems` to use `github.rest.search.issuesAndPullRequests` with a fixed `per_page: 100` and **no pagination**.
- This ensures that even with a large backlog (e.g., 5,000+ issues), the workflow only processes a manageable batch of items per daily run, preventing N+1 query failures and hitting GitHub API rate limits.
- The consolidated manager now handles:
    - **No-Response Closure**: Closes items with `status/need-information` after 14 days of inactivity.
    - **Actor-Aware Label Removal**: Automatically removes `status/need-information` only when the contributor (author) responds, ignoring maintainer pings.
    - **Stale Management**: Marks items as stale after 60 days of inactivity and closes them after 14 additional days.
    - **PR Contribution Policy**: Implements a 2-stage policy for non-roadmap PRs (7-day nudge, 14-day closure).

### 2. Optimized Issue Triage (`gemini-scheduled-issue-triage.yml`)
- Updated search queries to exclude `status/bot-triaged` labels.
- This prevents redundant re-processing of issues that have already been analyzed by Gemini, saving API budget and compute time.

### 3. Workflow Consolidation
- Deleted 5 redundant legacy workflows:
    - `gemini-scheduled-stale-issue-closer.yml`
    - `gemini-scheduled-stale-pr-closer.yml`
    - `no-response.yml`
    - `stale.yml`
    - `pr-contribution-guidelines-notifier.yml`

## Impact
- **Stability**: Prevents workflow timeouts and rate-limiting on repositories with large backlogs.
- **Maintainability**: Centralizes lifecycle policies into a single, well-commented configuration.
- **Efficiency**: Reduces redundant triage processing and API calls.
- **Contributor Experience**: Provides clear, actor-aware feedback and graceful PR closure nudges.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

Size Change: -4 B (0%)

Total Size: 34 MB

Filename Size Change
./bundle/chunk-AVGTCSY2.js 0 B -19.5 kB (removed) 🏆
./bundle/chunk-GWJQ3RIM.js 0 B -2.73 MB (removed) 🏆
./bundle/chunk-I24DKMDM.js 0 B -12.5 kB (removed) 🏆
./bundle/chunk-OJ2M5TAC.js 0 B -49.2 kB (removed) 🏆
./bundle/chunk-QNFQDGDN.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-USX46WTP.js 0 B -14.7 MB (removed) 🏆
./bundle/chunk-V5SLDKQM.js 0 B -658 kB (removed) 🏆
./bundle/chunk-YKKWDSJT.js 0 B -3.43 kB (removed) 🏆
./bundle/core-FSM4AE7H.js 0 B -48.7 kB (removed) 🏆
./bundle/devtoolsService-E2YFPI6J.js 0 B -28 kB (removed) 🏆
./bundle/gemini-AITUEH3O.js 0 B -583 kB (removed) 🏆
./bundle/interactiveCli-OO5UL335.js 0 B -1.33 MB (removed) 🏆
./bundle/liteRtServerManager-Z5RUR5BB.js 0 B -2.11 kB (removed) 🏆
./bundle/oauth2-provider-JN7EZBM3.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-5KYYYNYD.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-7KEABG4Y.js 658 kB +658 kB (new file) 🆕
./bundle/chunk-7NNFDP5C.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/chunk-BPBNVAB6.js 14.7 MB +14.7 MB (new file) 🆕
./bundle/chunk-D2PEAREI.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-H3ZW6FZE.js 19.5 kB +19.5 kB (new file) 🆕
./bundle/chunk-LBBBMTXB.js 2.73 MB +2.73 MB (new file) 🆕
./bundle/chunk-VNACLGXS.js 12.5 kB +12.5 kB (new file) 🆕
./bundle/core-6NYR46NO.js 48.7 kB +48.7 kB (new file) 🆕
./bundle/devtoolsService-XIZM3VB2.js 28 kB +28 kB (new file) 🆕
./bundle/gemini-UMQRMVOD.js 583 kB +583 kB (new file) 🆕
./bundle/interactiveCli-R27MFPST.js 1.33 MB +1.33 MB (new file) 🆕
./bundle/liteRtServerManager-B7VZK5GB.js 2.11 kB +2.11 kB (new file) 🆕
./bundle/oauth2-provider-CMRJUB5P.js 9.16 kB +9.16 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
./bundle/bundled/third_party/index.js 8 MB 0 B
./bundle/chunk-34MYV7JD.js 2.45 kB 0 B
./bundle/chunk-5AUYMPVF.js 858 B 0 B
./bundle/chunk-5PS3AYFU.js 1.18 kB 0 B
./bundle/chunk-664ZODQF.js 124 kB 0 B
./bundle/chunk-DAHVX5MI.js 206 kB 0 B
./bundle/chunk-ECNYAST2.js 1.97 MB 0 B
./bundle/chunk-IUUIT4SU.js 56.5 kB 0 B
./bundle/chunk-RJTRUG2J.js 39.8 kB 0 B
./bundle/cleanup-MAIXLQJK.js 0 B -932 B (removed) 🏆
./bundle/devtools-36NN55EP.js 696 kB 0 B
./bundle/dist-T73EYRDX.js 356 B 0 B
./bundle/events-XB7DADIJ.js 418 B 0 B
./bundle/examples/hooks/scripts/on-start.js 188 B 0 B
./bundle/examples/mcp-server/example.js 1.43 kB 0 B
./bundle/gemini.js 5.1 kB 0 B
./bundle/getMachineId-bsd-TXG52NKR.js 1.55 kB 0 B
./bundle/getMachineId-darwin-7OE4DDZ6.js 1.55 kB 0 B
./bundle/getMachineId-linux-SHIFKOOX.js 1.34 kB 0 B
./bundle/getMachineId-unsupported-5U5DOEYY.js 1.06 kB 0 B
./bundle/getMachineId-win-6KLLGOI4.js 1.72 kB 0 B
./bundle/memoryDiscovery-FB7MMKTA.js 980 B 0 B
./bundle/multipart-parser-KPBZEGQU.js 11.7 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 222 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 229 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 13.4 kB 0 B
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/types.js 132 B 0 B
./bundle/sandbox-macos-permissive-open.sb 890 B 0 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB 0 B
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB 0 B
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB 0 B
./bundle/sandbox-macos-strict-open.sb 4.82 kB 0 B
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB 0 B
./bundle/src-QVCVGIUX.js 47 kB 0 B
./bundle/start-Y7KFX3MT.js 0 B -652 B (removed) 🏆
./bundle/tree-sitter-7U6MW5PS.js 274 kB 0 B
./bundle/tree-sitter-bash-34ZGLXVX.js 1.84 MB 0 B
./bundle/cleanup-O6RWEVIS.js 932 B +932 B (new file) 🆕
./bundle/start-AR2RNHL4.js 652 B +652 B (new file) 🆕

compressed-size-action

@gundermanc
Copy link
Copy Markdown
Member

@gemini-cli please fix the linter issues. Do not make any other changes.

@gemini-cli
Copy link
Copy Markdown
Contributor

gemini-cli Bot commented May 4, 2026

I've fixed the linter issues in .github/workflows/gemini-lifecycle-manager.yml as requested.

Changes:

  • Quoted the if and runs-on fields to satisfy yamllint's quoted-strings rule.
  • Removed trailing spaces in the lifecycle management script block.
  • Verified all linting checks pass by running npm run lint:all.

No other changes were made to the PR.

@gundermanc gundermanc marked this pull request as ready for review May 4, 2026 21:12
@gundermanc gundermanc requested review from a team as code owners May 4, 2026 21:12
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request streamlines repository maintenance by consolidating multiple disparate workflows into a single, robust lifecycle manager. By implementing scale-safe batch processing and optimizing triage queries, the changes improve overall system stability and reduce unnecessary API consumption, while providing a more consistent experience for contributors.

Highlights

  • Consolidated Lifecycle Management: Introduced a unified lifecycle manager script that replaces five fragmented legacy workflows, centralizing stale issue handling, no-response closure, and PR contribution policies.
  • Scale-Safe Processing: Refactored processing logic to use non-paginated, batch-limited searches, preventing API rate limits and N+1 query failures in repositories with large backlogs.
  • Optimized Triage: Updated triage queries to ignore items already labeled as 'status/bot-triaged', reducing redundant API calls and compute overhead.
Ignored Files
  • Ignored by pattern: .github/workflows/** (7)
    • .github/workflows/gemini-lifecycle-manager.yml
    • .github/workflows/gemini-scheduled-issue-triage.yml
    • .github/workflows/gemini-scheduled-stale-issue-closer.yml
    • .github/workflows/gemini-scheduled-stale-pr-closer.yml
    • .github/workflows/no-response.yml
    • .github/workflows/pr-contribution-guidelines-notifier.yml
    • .github/workflows/stale.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a lifecycle management script for issues and pull requests, automating tasks such as marking stale items and enforcing contribution policies. The review feedback points out potential runtime errors when handling deleted user accounts and suggests refining the PR nudge logic to prevent overlapping notifications.

Comment thread .github/scripts/gemini-lifecycle-manager.cjs Outdated
Comment thread .github/scripts/gemini-lifecycle-manager.cjs Outdated
Comment thread .github/scripts/gemini-lifecycle-manager.cjs Outdated
Comment thread .github/scripts/gemini-lifecycle-manager.cjs Outdated
Comment thread .github/workflows/gemini-lifecycle-manager.yml
Comment thread .github/scripts/gemini-lifecycle-manager.cjs
Comment thread .github/scripts/gemini-lifecycle-manager.cjs
@gemini-cli gemini-cli Bot added the status/need-issue Pull requests that need to have an associated issue. label May 4, 2026
- Added optional chaining to `user.type` checks to prevent errors when accounts are deleted.
- Restricted the PR nudge query time range to prevent overlap with the closure query.
- Added `sort: 'updated'` and `order: 'asc'` to the search API call to properly iterate through backlogs.
- Added missing `actions/checkout` step to the workflow.
@gundermanc
Copy link
Copy Markdown
Member

I have pushed a commit that addresses all the feedback:

  • Used optional chaining for nullable user objects.
  • Restructured the nudge query time range to prevent overlapping notifications.
  • Added missing actions/checkout step to the workflow.
  • Added explicit sort order to the GitHub search query.

Please let me know if there's anything else needed!

@gundermanc gundermanc changed the title # Robust Scale-Safe Lifecycle Consolidation Robust Scale-Safe Lifecycle Consolidation May 4, 2026
@gundermanc gundermanc enabled auto-merge May 4, 2026 22:07
@gundermanc gundermanc added this pull request to the merge queue May 4, 2026
Merged via the queue into main with commit a79da4f May 4, 2026
27 checks passed
@gundermanc gundermanc deleted the bot/productivity-updates-20260501232926-25237319085 branch May 4, 2026 22:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status/need-issue Pull requests that need to have an associated issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants