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
4848Manual dispatches bypass the automatic per-issue quota. Set ` dry_run ` to false
4949only 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