Skip to content

Commit 6adb09f

Browse files
committed
chore: add AI issue triage workflow and structured-field label rules (#4915)
- Add AI triage workflow that flags low-quality issues and requests missing info - Add sync-game-labels script and workflow to maintain game labels from serverlist - Add structured label rules for severity, reproducibility, priority, and scope - Update labeler workflow to support both issues and PRs with dedicated config - Add PR review guidance instructions for maintainers chore: update issue templates, PR template, and CoC (#4914) - bug_report: add expected/actual behavior fields, script name, pre-check checkbox, required steps to reproduce, and AI triage metadata (severity, reproducibility, regression, affects-latest) - feature_request: add priority field, problem statement, scope/impact, alternatives considered; make command optional; remove irrelevant bug-specific triage fields - server_request: add dedicated server checkbox, official docs and Linux binary proof fields; fix CoC placeholder URL; remove irrelevant bug/feature triage fields - config.yml: add private security reporting contact link - pull_request_template: add testing, risk/rollback, breaking changes, and documentation impact sections - CODE_OF_CONDUCT: upgrade from Contributor Covenant v2.1 to v3.0; fill reporting placeholders with GitHub advisory and Discord links fix: use is-sponsor-label-action v2 (v3 does not exist) The v3 release does not exist for JasonEtco/is-sponsor-label-action. Use v2 which is the latest stable release. The Node.js 24 compatibility is handled by the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 environment variable. fix: remove AI triage workflow The GitHub Models API requires specialized authentication that is not available through secrets.GITHUB_TOKEN. The workflow consistently fails with 401 Unauthorized. The rule-based label automation (labeler.yml) continues to function correctly and provides automated labeling based on structured template fields. Revert "fix: remove AI triage workflow" This reverts commit a183369. docs: clarify GitHub Models availability in AI triage workflow Add comments explaining that GitHub Models access may not be available in all environments and that 401 (Unauthorized) errors are expected and handled gracefully. The workflow will skip AI triage silently but continue processing the issue through other automation. fix(ai-triage): grant models permission to GITHUB_TOKEN fix(ai-triage): use GitHub Models REST inference endpoint chore(actions): tidy workflows and script layout chore(workflows): unify issue labeling and AI triage automation The standalone `ai-triage.yml` workflow has been removed and its capabilities integrated into a new `unified-labeling.yml` workflow. This consolidates issue and PR labeling, form-based label reconciliation, and AI triage into a single, more robust automation. The `labeler.yml` configuration is updated to: * Remove static `game:` labels, as game detection is now handled programmatically by the script and AI inference. * Refine regex patterns for `command:` and `distro:` labels for better accuracy. * Expand and clarify labels for `type:`, `severity:`, `reproducible:`, `regression:`, `priority:`, and `scope:`.
1 parent d05992d commit 6adb09f

19 files changed

Lines changed: 985 additions & 279 deletions

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,51 @@ body:
88
attributes:
99
value: |
1010
Thanks for taking the time to fill out this bug report!
11+
- type: dropdown
12+
id: severity
13+
attributes:
14+
label: Severity
15+
description: Triage metadata used for prioritization.
16+
options:
17+
- "severity: low"
18+
- "severity: medium"
19+
- "severity: high"
20+
- "severity: critical"
21+
validations:
22+
required: true
23+
- type: dropdown
24+
id: reproducibility
25+
attributes:
26+
label: Reproducibility
27+
description: Triage metadata used for prioritization.
28+
options:
29+
- "reproducible: always"
30+
- "reproducible: sometimes"
31+
- "reproducible: unable"
32+
validations:
33+
required: true
34+
- type: dropdown
35+
id: regression
36+
attributes:
37+
label: Regression
38+
description: Triage metadata used for prioritization.
39+
options:
40+
- "regression: yes"
41+
- "regression: no"
42+
- "regression: unknown"
43+
validations:
44+
required: true
45+
- type: dropdown
46+
id: affects-latest
47+
attributes:
48+
label: Affects latest release
49+
description: Triage metadata used for prioritization.
50+
options:
51+
- "latest-release: yes"
52+
- "latest-release: no"
53+
- "latest-release: unknown"
54+
validations:
55+
required: true
1156
- type: input
1257
id: user-story
1358
attributes:
@@ -16,6 +61,14 @@ body:
1661
placeholder: As a [user description], I want [desired action] so that [desired outcome].
1762
validations:
1863
required: true
64+
- type: input
65+
id: script-name
66+
attributes:
67+
label: Script name
68+
description: LinuxGSM script name in use.
69+
placeholder: vhserver
70+
validations:
71+
required: true
1972
- type: input
2073
id: game
2174
attributes:
@@ -66,6 +119,22 @@ body:
66119
- "command: send"
67120
validations:
68121
required: true
122+
- type: textarea
123+
id: expected-behavior
124+
attributes:
125+
label: Expected behavior
126+
description: What should happen?
127+
placeholder: Describe the expected result.
128+
validations:
129+
required: true
130+
- type: textarea
131+
id: actual-behavior
132+
attributes:
133+
label: Actual behavior
134+
description: What actually happens?
135+
placeholder: Describe the observed result.
136+
validations:
137+
required: true
69138
- type: textarea
70139
id: further-info
71140
attributes:
@@ -74,11 +143,19 @@ body:
74143
placeholder: Tell us what you see!
75144
validations:
76145
required: true
146+
- type: checkboxes
147+
id: prechecks
148+
attributes:
149+
label: Pre-checks
150+
description: Confirm standard troubleshooting has been completed.
151+
options:
152+
- label: I ran update and validate before reporting this issue.
153+
required: true
77154
- type: textarea
78155
id: logs
79156
attributes:
80157
label: Relevant log output
81-
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
158+
description: Include the exact command used and the full related output (debug/details if available). This will be automatically formatted into code.
82159
render: shell
83160
- type: textarea
84161
id: steps
@@ -90,3 +167,5 @@ body:
90167
2. Click on '....'
91168
3. Scroll down to '....'
92169
4. See error
170+
validations:
171+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ contact_links:
66
- name: Discord Server
77
about: Join the LinuxGSM Discord community server. Discuss your LinuxGSM setup, get help and advice
88
url: https://linuxgsm.com/discord
9+
- name: Report a security vulnerability
10+
about: Please report security vulnerabilities privately, not in public issues.
11+
url: https://github.com/GameServerManagers/LinuxGSM/security/advisories/new

.github/ISSUE_TEMPLATE/feature_request.yml

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@ body:
88
attributes:
99
value: |
1010
Thanks for taking the time to fill out this feature request!
11+
- type: dropdown
12+
id: priority
13+
attributes:
14+
label: Priority
15+
description: How important is this feature to you?
16+
options:
17+
- "priority: low"
18+
- "priority: medium"
19+
- "priority: high"
20+
validations:
21+
required: true
1122
- type: input
1223
id: user-story
1324
attributes:
@@ -64,12 +75,41 @@ body:
6475
- "command: update-lgsm"
6576
- "command: wipe"
6677
- "command: send"
78+
validations:
79+
required: false
80+
- type: textarea
81+
id: problem-statement
82+
attributes:
83+
label: Problem statement
84+
description: What is painful today, and why is this needed?
85+
placeholder: Describe the current limitation or pain point.
86+
validations:
87+
required: true
88+
- type: dropdown
89+
id: scope-impact
90+
attributes:
91+
label: Scope and impact
92+
description: Which area would this change impact?
93+
options:
94+
- "scope: single game"
95+
- "scope: multiple games"
96+
- "scope: all servers"
97+
- "scope: documentation only"
98+
- "scope: ci/cd or automation"
99+
- "scope: other"
67100
validations:
68101
required: true
69102
- type: textarea
70103
id: further-info
71104
attributes:
72105
label: Further information
73-
description: A clear description of what the feature is and any ideas on how to achieve this.
106+
description: A clear description of the proposed solution and any implementation ideas.
74107
validations:
75108
required: true
109+
- type: textarea
110+
id: alternatives
111+
attributes:
112+
label: Alternatives considered
113+
description: Describe alternatives or workarounds you considered.
114+
validations:
115+
required: false

.github/ISSUE_TEMPLATE/server_request.yml

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,27 @@ body:
77
- type: markdown
88
attributes:
99
value: |
10-
Thanks for taking the time to fill out this game server!
10+
Thanks for taking the time to fill out this game server request!
1111
- type: input
1212
id: game-server
1313
attributes:
1414
label: Game server
1515
description: What game server would you like to add?
1616
validations:
1717
required: true
18+
- type: checkboxes
19+
id: dedicated-server
20+
attributes:
21+
label: Dedicated server
22+
description: Confirm this is a dedicated server request and not client hosting.
23+
options:
24+
- label: "Yes, this is a dedicated server (not client hosting)."
25+
required: true
1826
- type: checkboxes
1927
id: on-linux
2028
attributes:
2129
label: Linux support
22-
description: Does this game server have Linux support? (not wine)
30+
description: Does this game server have native Linux server support? (not wine)
2331
options:
2432
- label: "Yes"
2533
validations:
@@ -38,20 +46,40 @@ body:
3846
id: steam-id
3947
attributes:
4048
label: Steam appid
41-
description: What is the Steam appid of the game server? Use SteamDB to get the appid. (https://steamdb.info).
49+
description: What is the Steam appid of the dedicated server? Required when Steam is Yes. Use SteamDB to get the appid (https://steamdb.info).
4250
placeholder: "892970"
4351
validations:
4452
required: false
53+
- type: textarea
54+
id: official-docs
55+
attributes:
56+
label: Official dedicated server documentation
57+
description: Provide official documentation links for installing/running the dedicated server.
58+
placeholder: |
59+
https://example.com/docs/server-setup
60+
https://example.com/docs/dedicated-server
61+
validations:
62+
required: true
63+
- type: textarea
64+
id: linux-binary-proof
65+
attributes:
66+
label: Linux binary proof
67+
description: Provide evidence that Linux server binaries are available (official docs/download links/version notes).
68+
placeholder: |
69+
https://example.com/downloads/linux-dedicated-server
70+
https://example.com/release-notes/linux-server
71+
validations:
72+
required: true
4573
- type: textarea
4674
id: guides
4775
attributes:
4876
label: Guides
49-
description: Links to guides on how to install the game server
77+
description: Links to community or third-party guides on how to install the game server.
5078
- type: checkboxes
5179
id: terms
5280
attributes:
5381
label: Code of Conduct
54-
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
82+
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/GameServerManagers/LinuxGSM/blob/master/CODE_OF_CONDUCT.md)
5583
options:
5684
- label: I agree to follow this project's Code of Conduct
5785
required: true
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
title: "LinuxGSM PR Review Guidance"
3+
applyTo: "**"
4+
description: "Use when reviewing pull requests in LinuxGSM; prioritize regressions, behavior changes, shell safety, and missing tests over style-only feedback."
5+
---
6+
7+
Focus review effort on correctness and operational safety first.
8+
9+
Primary priorities:
10+
11+
- Identify behavior regressions and compatibility risks.
12+
- Flag unsafe shell patterns (`rm -rf`, unquoted vars, unchecked command failures).
13+
- Verify workflow changes do not weaken permissions or secret handling.
14+
- Check for missing tests/validation when logic changes.
15+
- Confirm labels, templates, and automation rules stay internally consistent.
16+
17+
Feedback expectations:
18+
19+
- Give concrete, actionable findings with file and reason.
20+
- Prefer high-signal issues over style nits.
21+
- If no defects are found, state that clearly and mention residual risk areas.
22+
- Suggest minimal, low-risk fixes before proposing broad refactors.
23+
24+
LinuxGSM-specific checks:
25+
26+
- Shell scripts should preserve robust defaults (`set -euo pipefail` where appropriate).
27+
- Label/workflow updates should avoid duplicate or stale taxonomy.
28+
- Automation should fail safe (log and continue for advisory AI; block on true CI errors).
29+
- Keep issue/PR automation rules aligned with templates and existing labels.

0 commit comments

Comments
 (0)