Files
crewAI/.github/ISSUE_GATE.md

59 lines
2.4 KiB
Markdown

# Issue Gate Pilot
The issue gate checks whether a pull request references exactly one open issue
with the `state:ready` or `state:in-progress` label. It runs on
`pull_request_target`, checks out only the trusted default branch, and never
fetches or executes pull request code.
## Repository setup
Create these labels before activating the pilot:
- Issue lifecycle: `state:inbox`, `state:design`, `state:ready`,
`state:in-progress`, and `state:verification`
- Gate results: `issue-gate:passed`, `issue-gate:exempt`, and
`needs-ready-issue`
- Maintainer exceptions: `issue-gate:override` and `policy:legacy`
Configure these repository variables:
| Variable | Required | Value |
| --- | --- | --- |
| `ISSUE_GATE_MODE` | No | `observe` (default), `block`, or `close` |
| `ISSUE_GATE_CUTOFF` | Yes to activate | ISO 8601 timestamp for the first PR covered by the pilot |
| `ISSUE_GATE_READY_LABEL` | No | Defaults to `state:ready` |
Without `ISSUE_GATE_CUTOFF`, observe mode uses a future cutoff and treats every
pull request as legacy. Block and close modes refuse to run without an explicit
cutoff. This makes the workflow inert until maintainers choose the activation
time and prevents accidental enforcement against the existing backlog.
## Modes
- `observe`: Invalid pull requests receive a successful `Issue gate` status,
an explanatory comment, and the `needs-ready-issue` label.
- `block`: Invalid pull requests receive a failing status. Add `Issue gate` to
the `main` ruleset's required checks only after observation is complete.
- `close`: Invalid pull requests receive a failing status and are closed after
the comment is posted.
The script refuses to enter `block` or `close` mode without a configured cutoff.
Pull requests created by supported dependency automation, or labeled
`issue-gate:override` or `policy:legacy`, remain exempt.
## Testing the pilot
Run the `Issue Gate` workflow manually with a pull request number, or edit a
pull request description to trigger it again. Test at least these cases before
changing modes:
1. No implementation issue
2. A nonexistent, closed, or non-ready issue
3. More than one implementation issue
4. One open issue labeled `state:ready` or `state:in-progress`
5. A pull request before the cutoff
6. A pull request with `issue-gate:override`
Keep the gate in `observe` mode until the sample contains at least 20 new pull
requests with no false positives.