Skip to content

Conversation

@dmitriyastapov
Copy link

@dmitriyastapov dmitriyastapov commented Dec 12, 2025


Description of Change

This PR introduces a GitHub Action workflow that helps manage stale issues in the repository.
The bot runs daily and performs the following tasks:

  • Skips pull requests and issues labeled as to-be-discussed
  • Automatically closes issues labeled awaiting-response or those without assignees after 90+ days of inactivity
  • Sends a reminder comment on assigned issues that have been inactive for over 90 days (without re-sending it more than once a week)
  • Avoids duplicate comments and respects special labels
  • Marks type 'question' issues as 'Move to Discussion'

Added a dry-run mode that lets you preview all actions without making any changes, to run it write "1" in the "Run workflow" input filed

Test Scenarios

The script and workflow were tested on GitHub Issues in my own fork.

Related links

Testing forked repo

(eg. Closes #number of issue)

@CLAassistant
Copy link

CLAassistant commented Dec 12, 2025

CLA assistant check
All committers have signed the CLA.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 12, 2025

Messages
📖 🎉 Good Job! All checks are passing!

👋 Hello dmitriyastapov, we appreciate your contribution to this project!


📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more.

🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project.

Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests.

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. Once the GitHub PR is approved we do the final review, collect approvals from core owners and make sure all the automated tests are passing.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
4. If the change is approved and passes the tests it is merged into the default branch.

Generated by 🚫 dangerJS against b8e3c9b

@lucasssvaz lucasssvaz added Type: CI & Testing Related to continuous integration, automated testing, or test infrastructure. Status: Review needed Issue or PR is awaiting review labels Dec 12, 2025
@lucasssvaz lucasssvaz requested a review from Copilot December 12, 2025 17:00
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces an automated GitHub Actions workflow to manage stale issues in the repository. The bot runs daily at 4 AM UTC and can also be triggered manually with an optional dry-run mode for testing. It processes open issues based on inactivity (90+ days) and applies different actions depending on issue status, labels, and assignment.

Key changes:

  • Automated closure of unassigned or "awaiting-response" issues after 90+ days of inactivity
  • Friendly reminder comments to assignees on inactive but assigned issues
  • Automatic labeling of question-type issues for migration to GitHub Discussions

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 8 comments.

File Description
.github/workflows/backlog-bot.yml GitHub Actions workflow that schedules daily runs at 4 AM UTC with manual trigger support and dry-run capability
.github/scripts/backlog-cleanup.js Core logic implementing issue triage, closure, reminder, and discussion migration behaviors with pagination support

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 95 to 124
const thresholdDays = 90;
const exemptLabels = ['Status: Community help needed', 'Status: Needs investigation', 'Move to Discussion'];
const closeLabels = ['Status: Awaiting Response'];
Copy link

Copilot AI Dec 12, 2025

Choose a reason for hiding this comment

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

The threshold of 90 days and the list of exempt/close labels are hardcoded. Consider making these configurable through environment variables or workflow inputs to allow easier adjustment without modifying the script. This would improve maintainability and flexibility for different repository needs.

Suggested change
const thresholdDays = 90;
const exemptLabels = ['Status: Community help needed', 'Status: Needs investigation', 'Move to Discussion'];
const closeLabels = ['Status: Awaiting Response'];
// Allow configuration via environment variables, fallback to defaults
const thresholdDays = process.env.BACKLOG_CLEANUP_THRESHOLD_DAYS
? parseInt(process.env.BACKLOG_CLEANUP_THRESHOLD_DAYS, 10)
: 90;
const exemptLabels = process.env.BACKLOG_CLEANUP_EXEMPT_LABELS
? process.env.BACKLOG_CLEANUP_EXEMPT_LABELS.split(',').map(l => l.trim())
: ['Status: Community help needed', 'Status: Needs investigation', 'Move to Discussion'];
const closeLabels = process.env.BACKLOG_CLEANUP_CLOSE_LABELS
? process.env.BACKLOG_CLEANUP_CLOSE_LABELS.split(',').map(l => l.trim())
: ['Status: Awaiting Response'];

Copilot uses AI. Check for mistakes.
Copy link
Author

Choose a reason for hiding this comment

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

@lucasssvaz should I implement this suggestion?

@dmitriyastapov dmitriyastapov force-pushed the master branch 2 times, most recently from 3471a58 to 9dd9b95 Compare December 15, 2025 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Status: Review needed Issue or PR is awaiting review Type: CI & Testing Related to continuous integration, automated testing, or test infrastructure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants