Files
docker-docs/.github
Craig Osterhout 01baa63ca6 add stale workflow (#24681)
<!--Delete sections as needed -->

## Description

This PR adds a GitHub Actions workflow to automatically mark and close
stale issues and PRs, helping maintainers focus on active items. The old
app/bot stopped working around mid 2025 and was disabled. This
reimplements it using a GitHub Action with additional slash command
functionality.

### Timeframes

- **Mark as stale**: After **180 days** (6 months) of inactivity
- **Close stale issues**: After **14 additional days** of no activity
- **Close stale PRs**: After **30 additional days** of no activity

### Exempt Labels

Issues and PRs with any of these labels will never be marked as stale:
- `kind/help-wanted`
- `status/need-more-info`
- `status/needs-analysis`
- `lifecycle/frozen`

### How to Keep Issues/PRs Active

To prevent an issue or PR from being marked as stale or closed:

**Anyone can:**
1. **Add a comment** - any comment resets the inactivity timer
2. **Use `/lifecycle active`** - removes the stale label via slash
command

**Maintainers can also:**
3. **Use `/lifecycle frozen`** - prevents the issue/PR from ever being
marked stale
4. **Add exempt labels** - manually apply one of the labels listed above
5. **Make any update** - editing the description, adding labels, or any
activity resets the timer

### Slash Commands

The workflow supports these lifecycle commands (comment them on any
issue/PR):

| Command | Access | Description |
|---------|--------|-------------|
| `/lifecycle active` | Anyone | Removes the stale label |
| `/lifecycle frozen` | Write access required | Prevents stale marking |
| `/lifecycle stale` | Write access required | Manually marks as stale |
| `/remove-lifecycle frozen` | Write access required | Removes frozen
label |
| `/remove-lifecycle stale` | Anyone | Removes stale label |

Commands respond with a 👍 reaction when successful, 👎 when permission is
denied.

### Messages

When marked as stale, issues and PRs receive a friendly comment
explaining:
- The situation and timeline for closure (14-30 days)
- How to remove the stale label using `/lifecycle active`
- How maintainers can freeze with `/lifecycle frozen`

### Debug Mode

The workflow is currently set to **debug mode** for both components:

**Stale action** (`debug-only: true`):
-  Runs and logs what actions it would take
-  No actual changes will be made (no labels, comments, or closures)

**Lifecycle commands** (`DEBUG_ONLY: 'true'`):
-  Logs what would happen when slash commands are used
-  No labels added, removed, or permission checks enforced

## Related issues

- #19050

---------

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
2026-04-21 11:23:24 -07:00
..
2025-08-05 13:38:35 +02:00
2026-04-21 11:23:24 -07:00
2025-10-24 11:04:23 +02:00