Skip to content

### Backlog Health & Stale Policy Optimization#26304

Draft
gemini-cli-robot wants to merge 1 commit intomainfrom
bot/productivity-updates-20260501001412-25195541649
Draft

### Backlog Health & Stale Policy Optimization#26304
gemini-cli-robot wants to merge 1 commit intomainfrom
bot/productivity-updates-20260501001412-25195541649

Conversation

@gemini-cli-robot
Copy link
Copy Markdown
Collaborator

Backlog Health & Stale Policy Optimization

Problem Statement

Current repository metrics (latency, throughput) suffer from survivorship bias: they only sample the last 100 closed items, making the repository appear healthier than it is. Meanwhile, a stable backlog of 2342 open issues and 442 open PRs persists, largely due to "staleness immunity" for help wanted items and throttling in the standard stale workflow.

Changes

  1. New Metric: Backlog Age: Added tools/gemini-cli-bot/metrics/scripts/backlog_age.ts to measure the median age of the oldest 100 open issues and PRs. This exposes the "Slow Path" bottleneck that was previously invisible.
  2. Stale Policy Throttling Fix: Increased operations-per-run from 30 (default) to 200 in .github/workflows/stale.yml to allow the daily cron to actually make progress on the large backlog.
  3. Help-Wanted Expiration: Updated gemini-scheduled-stale-issue-closer.yml to remove the infinite exemption for help wanted issues. They are now eligible for stale closure if they are older than 180 days and have no recent human activity.

Expected Impact

  • Visibility: The new backlog_age metrics will likely show high values initially, providing a baseline for backlog reduction efforts.
  • Efficiency: Throttling fix will increase the rate of stale item closure.
  • Backlog Reduction: The 6-month expiration for help wanted will finally address legacy "immortal" issues that have been bloating the backlog for years.

This is a surgical PR focused on repository health and metric accuracy.

#### Problem Statement
Current repository metrics (`latency`, `throughput`) suffer from **survivorship bias**: they only sample the last 100 *closed* items, making the repository appear healthier than it is. Meanwhile, a stable backlog of **2342 open issues** and **442 open PRs** persists, largely due to "staleness immunity" for `help wanted` items and throttling in the standard stale workflow.

#### Changes
1.  **New Metric: Backlog Age**: Added `tools/gemini-cli-bot/metrics/scripts/backlog_age.ts` to measure the median age of the oldest 100 open issues and PRs. This exposes the "Slow Path" bottleneck that was previously invisible.
2.  **Stale Policy Throttling Fix**: Increased `operations-per-run` from 30 (default) to 200 in `.github/workflows/stale.yml` to allow the daily cron to actually make progress on the large backlog.
3.  **Help-Wanted Expiration**: Updated `gemini-scheduled-stale-issue-closer.yml` to remove the infinite exemption for `help wanted` issues. They are now eligible for stale closure if they are older than 180 days and have no recent human activity.

#### Expected Impact
- **Visibility**: The new `backlog_age` metrics will likely show high values initially, providing a baseline for backlog reduction efforts.
- **Efficiency**: Throttling fix will increase the rate of stale item closure.
- **Backlog Reduction**: The 6-month expiration for `help wanted` will finally address legacy "immortal" issues that have been bloating the backlog for years.

This is a surgical PR focused on repository health and metric accuracy.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

Size Change: -4 B (0%)

Total Size: 33.9 MB

Filename Size Change
./bundle/chunk-6T7LODRD.js 0 B -12.5 kB (removed) 🏆
./bundle/chunk-JKKHUHFA.js 0 B -3.8 kB (removed) 🏆
./bundle/chunk-MWHJZNC5.js 0 B -2.72 MB (removed) 🏆
./bundle/chunk-OM6PKJAW.js 0 B -3.43 kB (removed) 🏆
./bundle/chunk-QUZ45LFB.js 0 B -14.7 MB (removed) 🏆
./bundle/chunk-RPWGWKL2.js 0 B -657 kB (removed) 🏆
./bundle/chunk-SQOJE6BH.js 0 B -19.5 kB (removed) 🏆
./bundle/chunk-WEBZVAAD.js 0 B -49.2 kB (removed) 🏆
./bundle/core-LT6732JI.js 0 B -48.2 kB (removed) 🏆
./bundle/devtoolsService-MSSLNJIW.js 0 B -28 kB (removed) 🏆
./bundle/gemini-EZJRMIUT.js 0 B -582 kB (removed) 🏆
./bundle/interactiveCli-J7VSCHNV.js 0 B -1.32 MB (removed) 🏆
./bundle/liteRtServerManager-S6K35VP4.js 0 B -2.11 kB (removed) 🏆
./bundle/oauth2-provider-AIKDFEYV.js 0 B -9.16 kB (removed) 🏆
./bundle/chunk-4ELOZUIJ.js 3.8 kB +3.8 kB (new file) 🆕
./bundle/chunk-663EZMYV.js 2.72 MB +2.72 MB (new file) 🆕
./bundle/chunk-H5KXA4LK.js 14.7 MB +14.7 MB (new file) 🆕
./bundle/chunk-IQH2QSIC.js 657 kB +657 kB (new file) 🆕
./bundle/chunk-L74FHSPV.js 3.43 kB +3.43 kB (new file) 🆕
./bundle/chunk-P3ASCBA2.js 19.5 kB +19.5 kB (new file) 🆕
./bundle/chunk-Q42PTRBX.js 12.5 kB +12.5 kB (new file) 🆕
./bundle/chunk-Y357B5WE.js 49.2 kB +49.2 kB (new file) 🆕
./bundle/core-DM3X7L4A.js 48.2 kB +48.2 kB (new file) 🆕
./bundle/devtoolsService-AYVPGNJS.js 28 kB +28 kB (new file) 🆕
./bundle/gemini-X73VWBWJ.js 582 kB +582 kB (new file) 🆕
./bundle/interactiveCli-MW2QDTJ5.js 1.32 MB +1.32 MB (new file) 🆕
./bundle/liteRtServerManager-UKO6CM4N.js 2.11 kB +2.11 kB (new file) 🆕
./bundle/oauth2-provider-EC3663WT.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-533APETE.js 1.97 MB 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-IUUIT4SU.js 56.5 kB 0 B
./bundle/chunk-RJTRUG2J.js 39.8 kB 0 B
./bundle/cleanup-L5DUC55V.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.14 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-LIJKMASE.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-ZJQDOAYH.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-LTFCUSPF.js 932 B +932 B (new file) 🆕
./bundle/start-4C6LQB3L.js 652 B +652 B (new file) 🆕

compressed-size-action

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