Files
gemini-cli/tools/gemini-cli-bot/lessons-learned.md
T
2026-04-25 01:18:28 +00:00

45 lines
3.5 KiB
Markdown

# Lessons Learned: Gemini CLI Bot
## Repository Health Analysis (April 25, 2026)
### Metrics Baseline
- **Open Issues**: 1000
- **Open PRs**: 490
- **Community PR Latency**: 50.18h
- **Maintainer PR Latency**: 17.50h
- **Community Issue Latency**: 46.87h
- **Time to First Response**: 1.43h (Overall), 0.17h (Maintainers)
### Key Findings
1. **Backlog Management Conflict**: The repository currently has three overlapping stale-handling workflows. Specifically, `gemini-scheduled-stale-issue-closer.yml` is an aggressive, immediate-close script that violates the **Graceful Closures** policy. It closes issues that are >3 months old and >10 days idle without any prior nudge or warning.
2. **Community Bottleneck**: There is a significant gap (32.68h) between community and maintainer PR latency. While initial triage is fast (0.17h), the path to merge for community members is 3x slower than for maintainers.
3. **Process Redundancy**: `stale.yml` (using `actions/stale`) is already configured to handle stale items gracefully (60 days idle -> 14 days grace). The existence of a secondary, aggressive closer suggests a past attempt to clear the backlog that bypassed standard quality policies.
### Formulated Hypotheses
- **Hypothesis 1**: Consolidating stale-handling into the graceful `stale.yml` workflow will improve contributor sentiment without significantly increasing the backlog, as `stale.yml` is already active.
- **Hypothesis 2**: Introducing a targeted nudge for community PRs that exceed 48 hours of maintainer inactivity will reduce `latency_pr_community_hours` by ensuring these contributions don't "fall through the cracks" after initial triage.
### Actions Taken / Proposed
- **Action 1 (Policy Alignment)**: Remove the aggressive `gemini-scheduled-stale-issue-closer.yml` workflow. This ensures all issue closures follow the "Nudge then Close" principle.
- **Action 2 (Metric Improvement)**: [Future] Implement a 48h maintainer nudge for community PRs to address the latency gap.
## Future Investigations
- Investigate why 1000 issues remain open despite multiple stale closers. It's possible many have the `exempt-issue-labels` (e.g., `help wanted`).
- Analyze the impact of "linked issue" policy on community PR throughput.
## Critique Phase Analysis (April 25, 2026)
### Technical Audit
1. **PR Nudge Script (`pr-nudge.ts`)**:
- **Initial State**: Had a hardcoded limit of 100 PRs (insufficient for the ~490 open PRs). Event filtering was brittle, relying on `author_association` which is not always present on all timeline events (e.g., labeling).
- **Fixes Applied**:
- Increased `MAX_PRS_TO_CHECK` to 500 to ensure full coverage of the open backlog.
- Hardened `maintainerEvents` filtering to include more engagement types (`review_requested`, `milestoned`, etc.) and added bot-filtering.
- Improved date parsing robustness for mixed event types (`created_at` vs `submitted_at`).
- **Performance**: Confirmed concurrency batching (5) is appropriate for preventing rate limit spikes while maintaining speed.
2. **Workflow Deletion**:
- **Validation**: Confirmed that `.github/workflows/stale.yml` is active and follows the required grace period policies (60d + 14d). The deleted aggressive closer was indeed redundant and policy-violating.
### Final Verdict: [APPROVED]
The combined changes successfully remove non-compliant aggressive automation and replace it with targeted, metric-driven engagement tools. The `pr-nudge.ts` script is now technically robust and correctly wired into the `Pulse` reflex layer.