name: 'Mark stale issues and pull requests' # Run as a daily cron at 00:30 UTC (Beijing time 08:30). # Avoid the top of the hour to dodge GitHub's high-contention window, # and stay 30 minutes after release.yml (00:00 UTC) to reduce overlap. on: schedule: - cron: '30 0 * * *' workflow_dispatch: jobs: stale: runs-on: 'ubuntu-latest' permissions: issues: 'write' pull-requests: 'write' concurrency: group: '${{ github.workflow }}-stale' cancel-in-progress: true steps: - uses: 'actions/stale@5bef64f19d7facfb25b37b414482c7164d639639' # ratchet:actions/stale@v9 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' # Issues are intentionally disabled here; a separate policy will # be introduced once issue triage labels are in place. days-before-issue-stale: -1 days-before-issue-close: -1 # Pull requests: 60 days to stale + 30 days to close. days-before-pr-stale: 60 days-before-pr-close: 30 stale-pr-label: 'status/stale' stale-pr-message: >- This pull request has had no activity for 60 days and is being marked as stale. It will be closed in another 30 days if no further activity occurs. To keep it open, push a new commit or leave a comment. Maintainers may apply `pinned`, `status/blocked`, `status/on-hold`, or `status/ready-for-merge` to exempt it from auto-close. close-pr-message: >- This pull request has been closed after 30 additional days of inactivity. You are welcome to reopen it or submit a new pull request if the change is still relevant. Thanks for contributing! exempt-pr-labels: 'pinned,security,status/blocked,status/on-hold,status/ready-for-merge' remove-stale-when-updated: true ascending: true # Cap per-run API operations to stay well under GitHub's hourly rate limit # and give the current PR backlog (~150) enough headroom across a few runs. operations-per-run: 100