# Configuration for probot-stale - https://github.com/probot/stale
# Configuration options apply to both Issues and Pull Requests.
# We configure those individually to match our workflow (see `pulls:` and `issues:`)

pulls:
  # Number of days of inactivity before a Pull Request becomes stale
  daysUntilStale: 60

  # Number of days of inactivity before a Pull Request with the stale label is closed.
  # Set to false to disable. If disabled, Pull Request still need to be closed manually, but will remain marked as stale.
  daysUntilClose: 21

  # Comment to post when marking as stale. Set to `false` to disable
  markComment: >
    This pull request has been automatically marked as stale because it has not had recent activity.
    Given the limited bandwidth of the team, it will be closed if no further activity occurs.
    If you intend to work on this pull request, please reopen the PR.
    Thank you for your contributions.
  # Comment to post when closing a stale Pull Request.
  closeComment: >
    This pull request has been automatically closed due to inactivity.
    If you are still interested in contributing this, please ensure that
    it is rebased against the latest branch (usually `main`), all review
    comments have been addressed and the build is passing.
issues:
  daysUntilStale: 365

  # Number of days of inactivity before an Issue with the stale label is closed.
  # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
  daysUntilClose: 21

  # Comment to post when marking as stale. Set to `false` to disable
  markComment: >
    This issue has been automatically marked as stale because it has not had recent activity.
    Given the limited bandwidth of the team, it will be automatically closed if no further
    activity occurs.
    Thank you for your contribution.
  # Comment to post when closing a stale Issue.
  closeComment: >
    This issue has been automatically closed due to inactivity. If you have a good use case for this
    feature, please feel free to reopen the issue.

# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
#onlyLabels: []

# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels: []

# Set to true to ignore issues in a project (defaults to false)
exemptProjects: false

# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: false

# Set to true to ignore issues with an assignee (defaults to false)
exemptAssignees: false

# Label to use when marking as stale
staleLabel: "status: stale"

# Comment to post when removing the stale label.
# unmarkComment: >
#   Your comment here.

# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 30

# Limit to only `issues` or `pulls`
# only: issues
