Skip to content

Commit e05de7e

Browse files
committed
use OpenAI API for issue classification
1 parent fd37ac5 commit e05de7e

9 files changed

Lines changed: 1058 additions & 986 deletions

File tree

‎.github/agents/issue-classifier.agent.md‎

Lines changed: 0 additions & 18 deletions
This file was deleted.

‎.github/issue-classifier/README.md‎

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Issue classifier
22

3-
The issue classifier uses GitHub Copilot CLI to apply the repository's existing
4-
labels to new and updated issues. It is disabled until the repository variable
5-
`ISSUE_CLASSIFIER_ENABLED` is set to `true`.
3+
The issue classifier uses the OpenAI Responses API to apply the repository's
4+
existing labels to new and updated issues. It is disabled until the repository
5+
variable `ISSUE_CLASSIFIER_ENABLED` is set to `true`.
66

77
## Behavior
88

@@ -12,17 +12,17 @@ labels to new and updated issues. It is disabled until the repository variable
1212
`COLLABORATOR`. Pull request comments are ignored.
1313
- Model context contains the current issue followed by trusted comments,
1414
newest first. Content and comment counts are capped by `config.json`.
15-
- Copilot uses automatic model selection with its minimum supported 30-credit
16-
session cap. A custom agent exposes no tools, and the workflow disables
17-
built-in MCP servers and repository instructions before sending untrusted
18-
issue text. A normal classification is a single model response; the cap is a
19-
backstop, not an expected cost.
15+
- The classifier uses `gpt-5.6-luna` with reasoning disabled, strict structured
16+
output, no tools, and response storage disabled. Untrusted issue text is kept
17+
separate from the fixed classifier instructions. A normal classification is
18+
one Responses API request.
2019
- A decision must meet the configured confidence threshold before it changes a
2120
label. Low-confidence decisions leave the current state unchanged.
2221
- The workflow may remove only labels most recently applied by
2322
`github-actions[bot]`. Human additions are preserved, and a human removal is
2423
a sticky override.
25-
- The workflow never comments on an issue, closes it, or creates labels.
24+
- The workflow never gives the model tools, comments on an issue, closes it, or
25+
creates labels.
2626

2727
## Managed labels
2828

@@ -47,19 +47,20 @@ The workflow's manual dispatch supports two modes:
4747

4848
Manual dispatches bypass the automatic per-issue quota. Set `dry_run` to false
4949
only when intentionally reconciling the selected issue. The evaluation makes
50-
40 Copilot requests and consumes organization-billed AI credits.
50+
40 Responses API requests and consumes OpenAI API usage.
5151

5252
## Rollout
5353

54-
1. An organization owner enables Copilot CLI and selects **Allow use of
55-
Copilot CLI billed to the organization**. No long-lived secret is needed;
56-
the workflow uses its scoped `GITHUB_TOKEN`.
57-
2. Merge this workflow while `ISSUE_CLASSIFIER_ENABLED` is absent or false.
58-
3. Run the unit-test workflow, the historical evaluation, and a manual dry run.
59-
4. Set `ISSUE_CLASSIFIER_ENABLED` to `true` in repository Actions variables.
60-
5. After verifying a live maintainer-created issue, enable public issue
54+
1. Create a dedicated OpenAI service account in a project with an appropriate
55+
budget and rate limits.
56+
2. Add its key as an organization Actions secret named `OPENAI_API_KEY`, with
57+
access limited to `vala-lang/vala-language-server`. The pull-request test job
58+
does not receive this secret.
59+
3. Merge this workflow while `ISSUE_CLASSIFIER_ENABLED` is absent or false.
60+
4. Run the unit-test workflow, the historical evaluation, and a manual dry run.
61+
5. Set `ISSUE_CLASSIFIER_ENABLED` to `true` in repository Actions variables.
62+
6. After verifying a live maintainer-created issue, enable public issue
6163
creation in the repository's Issues settings.
6264

63-
Configure an organization cost center and budget before enabling automatic
64-
runs. Set `ISSUE_CLASSIFIER_ENABLED` to `false` as the kill switch if accuracy,
65-
credit use, or label churn is unacceptable.
65+
Set `ISSUE_CLASSIFIER_ENABLED` to `false` as the kill switch if accuracy, API
66+
usage, or label churn is unacceptable.

0 commit comments

Comments
 (0)