Files
gemini-cli/tools/gemini-cli-bot
gemini-cli[bot] 3a06655ec5 ### 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.
2026-05-01 00:14:12 +00:00
..

Gemini CLI Bot (Cognitive Repository)

This directory contains the foundational architecture for the gemini-cli-bot, transforming the repository into a proactive, evolutionary system.

It implements a dual-layer approach to balance immediate responsiveness with long-term strategic optimization.

Layered Execution Model

1. System 1: The Pulse (Reflex Layer)

  • Purpose: High-frequency, deterministic maintenance.
  • Frequency: 30-minute cron (.github/workflows/gemini-cli-bot-pulse.yml).
  • Implementation: Pure TypeScript/JavaScript scripts.
  • Classification: Optionally utilizes Gemini CLI for high-confidence semantic classification (e.g., triage, labeling, sentiment) while preferring deterministic logic for equivalent tasks.
  • Phases:
    • Reflex Execution: Runs triage, routing, and automated maintenance scripts in reflexes/scripts/.
  • Output: Real-time action execution.

2. System 2: The Brain (Reasoning Layer)

  • Purpose: Strategic investigation, policy refinement, and proactive self-optimization.
  • Frequency: 24-hour cron (.github/workflows/gemini-cli-bot-brain.yml).
  • Implementation: Agentic Gemini CLI phases.
  • Phases:
    • Metrics Collection: Executes scripts in metrics/scripts/ to track repository health (Open issues, PR latency, throughput, etc.).
    • Phase 1: Reasoning (Metrics & Root-Cause Analysis): Analyzes time-series metric trends and repository state to identify bottlenecks or productivity gaps, tests hypotheses, and proposes script or configuration changes to improve repository health and maintainability.
    • Phase 2: Critique: A technical and logical validation layer that reviews proposed changes for robustness, actor-awareness, and anti-spam protocols.
    • Phase 3: Publish: Automatically promotes approved changes to Pull Requests, handles branch management, and responds to maintainer feedback.

Directory Structure

  • metrics/: Deterministic runner (index.ts) and scripts for tracking repository metrics via GitHub CLI.
  • reflexes/scripts/: Deterministic triage and routing scripts executed by the Pulse.
  • brain/: Prompt templates and logic for strategic root-cause analysis (Phase 1: metrics.md) and technical validation (Phase 2: critique.md).
  • history/: Persistent storage for time-series metrics artifacts.
  • lessons-learned.md: The bot's structured memory, containing the Task Ledger, Hypothesis Ledger, and Decision Log.

Usage

Local Metrics Collection

To manually collect repository metrics locally, run the following command from the workspace root:

npx tsx tools/gemini-cli-bot/metrics/index.ts

This will execute all scripts within metrics/scripts/ and output the results to tools/gemini-cli-bot/history/metrics-before.csv.

Development

When modifying the bot's logic:

  1. Reflexes: Add or update scripts in reflexes/scripts/.
  2. Reasoning: Update the prompts in brain/ to refine how the bot identifies bottlenecks.
  3. Critique: Update the prompts in critique/ to strengthen the validation of proposed changes.