Skip to content

Commit 29e7f26

Browse files
dgibbs64Copilot
andcommitted
feat(labeler): enhance Linux support detection logic
* Added handling for dedicated server tool AppIDs in Steam API checks. * Introduced a checkbox confirmation mechanism for Linux support, improving evidence assessment. * Updated verdict messaging to clarify Linux support status based on new checks. Co-authored-by: Copilot <copilot@github.com>
1 parent 5e964fa commit 29e7f26

1 file changed

Lines changed: 37 additions & 3 deletions

File tree

.github/workflows/labeler.yml

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,10 @@ jobs:
808808
const hasLinuxEvidence = linuxEvidencePatterns.some((re) => re.test(supportEvidenceText));
809809
810810
// Steam API check: platforms.linux for the given AppID.
811-
let steamLinuxSupport = null;
811+
// Note: dedicated server tool AppIDs (e.g. 403240, 869800) return success:false
812+
// because they have no store page. This is NOT evidence of no Linux support.
813+
let steamLinuxSupport = null; // true=yes, false=no, null=unknown/inconclusive
814+
let steamAppIsServerTool = false; // success:false from store API
812815
if (steamAppId) {
813816
try {
814817
const steamRes = await fetch(
@@ -821,6 +824,10 @@ jobs:
821824
if (appData?.success && appData?.data?.platforms) {
822825
steamLinuxSupport = appData.data.platforms.linux === true;
823826
console.log(`Steam AppID ${steamAppId} linux=${steamLinuxSupport}`);
827+
} else if (appData?.success === false) {
828+
// Dedicated server tool AppIDs have no store page — inconclusive, not negative.
829+
steamAppIsServerTool = true;
830+
console.log(`Steam AppID ${steamAppId} has no store page (likely a server-tool AppID)`);
824831
}
825832
}
826833
} catch (err) {
@@ -874,6 +881,11 @@ jobs:
874881
}
875882
}
876883
884+
// Linux checkbox — used as soft positive evidence only when no negative signals exist.
885+
// We don't fully trust it (users tick it without checking) but it matters when
886+
// Steam API is inconclusive (server-tool AppID) and no negative patterns were found.
887+
const linuxCheckboxChecked = /\[x\]/i.test(extractSection('Linux support'));
888+
877889
// Determine verdict: confirmed = deterministic evidence; suggested = AI advisory.
878890
const noLinuxFromDeterministicText =
879891
deterministicWindowsOnly ||
@@ -890,6 +902,14 @@ jobs:
890902
const linuxYesFromAi =
891903
aiLinuxAssessment?.linux_support === 'yes' &&
892904
(aiLinuxAssessment?.confidence === 'high' || aiLinuxAssessment?.confidence === 'medium');
905+
// Soft positive: checkbox checked with no negative signals and no definitive Steam yes.
906+
// Covers the common case of server-tool AppIDs where Steam API is inconclusive.
907+
const likelySupportedByCheckbox =
908+
linuxCheckboxChecked &&
909+
!confirmedNoLinux &&
910+
!suggestsNoLinux &&
911+
!confirmedLinuxFromSteam &&
912+
!linuxYesFromAi;
893913
894914
const NO_LINUX_LABEL = 'status: no linux support';
895915
const LINUX_MARKER = '<!-- linux-support-check -->';
@@ -927,26 +947,40 @@ jobs:
927947
if (isSteamNo) reasons.push('request is marked as non-Steam, so Steam platform checks were intentionally skipped');
928948
if (noLinuxFromSteam) reasons.push(`Steam API reports no Linux platform support for AppID ${steamAppId}`);
929949
if (confirmedLinuxFromSteam) reasons.push(`Steam API reports Linux platform support for AppID ${steamAppId}`);
950+
if (steamAppIsServerTool) reasons.push(`AppID ${steamAppId} has no Steam store page (common for dedicated server tools) — Steam platform check inconclusive`);
930951
if (noLinuxFromAi && aiLinuxAssessment?.reason) reasons.push(`AI analysis of provided documentation: ${aiLinuxAssessment.reason}`);
931952
if (linuxYesFromAi && aiLinuxAssessment?.reason) reasons.push(`AI analysis indicates Linux support: ${aiLinuxAssessment.reason}`);
953+
if (likelySupportedByCheckbox) reasons.push('requester confirmed Linux support via the form checkbox; no contradicting evidence found');
932954
933955
let verdictLine = 'Linux support could not be confirmed automatically from the submitted details.';
934956
if (confirmedNoLinux) {
935957
verdictLine = 'This server request does **not** appear to have native Linux support, which is required for LinuxGSM.';
936958
} else if (suggestsNoLinux) {
937959
verdictLine = 'This server request **may not** have native Linux support based on submitted evidence.';
938960
} else if (confirmedLinuxFromSteam) {
939-
verdictLine = 'Steam metadata indicates this server supports Linux.';
961+
verdictLine = 'Steam metadata confirms this server has Linux platform support.';
940962
} else if (linuxYesFromAi) {
941963
verdictLine = 'Submitted documentation appears to indicate Linux server support.';
964+
} else if (likelySupportedByCheckbox) {
965+
verdictLine = 'Linux support is **likely** — the requester confirmed it and no contradicting evidence was found. A maintainer should verify before accepting.';
942966
}
943967
968+
const steamApiStatus = isSteamNo
969+
? 'Not applicable'
970+
: steamLinuxSupport === true
971+
? 'Linux supported'
972+
: steamLinuxSupport === false
973+
? 'Linux not supported'
974+
: steamAppIsServerTool
975+
? 'Inconclusive — AppID has no store page (typical for dedicated server tools)'
976+
: 'No definitive platform response';
977+
944978
const steamBlock = isSteamNo
945979
? '**Steam:** No (non-Steam request)\n**Steam API:** Not applicable\n\n'
946980
: steamAppId
947981
? `**Steam:** ${isSteamYes ? 'Yes' : 'Unspecified'}\n` +
948982
`**Steam AppID:** ${steamAppId}\n` +
949-
`**Steam API:** ${steamLinuxSupport === null ? 'No definitive platform response' : steamLinuxSupport ? 'Linux supported' : 'Linux not supported'}\n` +
983+
`**Steam API:** ${steamApiStatus}\n` +
950984
`**SteamDB:** ${steamDbLink}\n\n`
951985
: `**Steam:** ${isSteamYes ? 'Yes' : 'Unspecified'}\n` +
952986
'**Steam AppID:** Not provided in the issue form.\n' +

0 commit comments

Comments
 (0)