Skip to content

Commit 0497d6e

Browse files
CopilotRickWinter
authored andcommitted
Address feedback
1 parent 29ad146 commit 0497d6e

1 file changed

Lines changed: 66 additions & 66 deletions

File tree

.github/workflows/issue-triage.md

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,58 @@
11
---
22
description: |
3-
Intelligent issue triage assistant that processes new issues.
4-
Analyzes issue content, evaluates whether the author is an external customer,
5-
predicts category and service labels, looks up owners from CODEOWNERS, and
6-
posts an analysis comment. Implements the initial issue triage rules for the
7-
Azure SDK for Rust repository.
3+
Intelligent issue triage assistant that processes new issues.
4+
Analyzes issue content, evaluates whether the author is an external customer,
5+
predicts category and service labels, looks up owners from CODEOWNERS, and
6+
posts an analysis comment. Implements the initial issue triage rules for the
7+
Azure SDK for Rust repository.
88
99
on:
10-
issues:
11-
types: [opened]
12-
reaction: eyes
13-
roles: all
10+
issues:
11+
types: [opened]
12+
reaction: eyes
13+
roles: all
1414

1515
permissions:
16-
issues: read
17-
pull-requests: read
18-
contents: read
16+
issues: read
17+
pull-requests: read
18+
contents: read
1919

2020
network:
21-
allowed:
22-
- github
23-
- threat-detection
24-
blocked:
25-
- registry.npmjs.org
21+
allowed:
22+
- github
23+
- threat-detection
24+
blocked:
25+
- registry.npmjs.org
2626

2727
safe-outputs:
28-
report-failure-as-issue: false
29-
add-labels:
30-
max: 7
31-
target: "*"
32-
remove-labels:
33-
max: 7
34-
target: "*"
35-
add-comment:
36-
max: 2
37-
target: "*"
38-
assign-to-user:
39-
max: 1
40-
target: "*"
41-
noop:
42-
report-as-issue: false
28+
report-failure-as-issue: true
29+
add-labels:
30+
max: 7
31+
target: "*"
32+
remove-labels:
33+
max: 7
34+
target: "*"
35+
add-comment:
36+
max: 2
37+
target: "*"
38+
assign-to-user:
39+
max: 1
40+
target: "*"
41+
noop:
42+
report-as-issue: false
4343

4444
tools:
45-
bash: false
46-
github:
47-
toolsets: [issues, pull_requests]
48-
# If in a public repo, setting `lockdown: false` allows
49-
# reading issues, pull requests and comments from 3rd-parties.
50-
# If in a private repo this has no particular effect.
51-
lockdown: false
52-
# Allow the agent to read issue content from any author,
53-
# including external users with no repo affiliation.
54-
allowed-repos: [azure/azure-sdk-for-rust]
55-
min-integrity: none
45+
bash: false
46+
github:
47+
toolsets: [issues, pull_requests]
48+
# If in a public repo, setting `lockdown: false` allows
49+
# reading issues, pull requests and comments from 3rd-parties.
50+
# If in a private repo this has no particular effect.
51+
lockdown: false
52+
# Allow the agent to read issue content from any author,
53+
# including external users with no repo affiliation.
54+
allowed-repos: [azure/azure-sdk-for-rust]
55+
min-integrity: none
5656

5757
timeout-minutes: 10
5858
source: githubnext/agentics/workflows/issue-triage.md@8e6d7c86bba37371d2d0eee1a23563db3e561eb5
@@ -86,7 +86,7 @@ Note: The gh-aw runtime provides additional baseline defenses including the XPIA
8686

8787
## Step 1: Retrieve and Validate the Issue
8888

89-
The issue number is `${{ github.event.issue.number }}`. Pass it as `item_number` to `add-labels`, `remove-labels`, and `add-comment`, and as `issue_number` to `assign-to-user`.
89+
The issue number is `${{ github.event.issue.number }}`. Pass it as `item_number` to `add_labels`, `remove_labels`, and `add_comment`, and as `issue_number` to `assign_to_user`.
9090

9191
Retrieve the issue using `get_issue`.
9292

@@ -146,17 +146,17 @@ All issues reaching this step proceed through label prediction and ownership rou
146146
Labels are distinguished by color. Actively inspect label colors when examining repository labels and previous issues:
147147

148148
- **Category label** (color #ffeb77): exactly one of `Client`, `Mgmt`, or `Service`.
149-
- `Client` — crates that do NOT start with `azure_resourcemanager_` (e.g., `azure_core`, `azure_identity`, `azure_security_keyvault_secrets`, `azure_storage_blob`).
150-
- `Mgmt` — crates that start with `azure_resourcemanager_`, or any mention of ARM or Azure Resource Manager.
151-
- `Service` — issues with the REST API or Azure service behavior outside SDK control.
149+
- `Client` — crates that do NOT start with `azure_resourcemanager_` (e.g., `azure_core`, `azure_identity`, `azure_security_keyvault_secrets`, `azure_storage_blob`).
150+
- `Mgmt` — crates that start with `azure_resourcemanager_`, or any mention of ARM or Azure Resource Manager.
151+
- `Service` — issues with the REST API or Azure service behavior outside SDK control.
152152
- **Service label** (color #e99695): exactly one label identifying the Azure service. Match the service directory name under `sdk/<service>/`, for example:
153-
- `sdk/storage/...``Storage`.
154-
- `sdk/identity/...``Azure.Identity`.
155-
- `sdk/core/...``Azure.Core`.
156-
- `sdk/keyvault/...``KeyVault`.
157-
- `sdk/cosmos/...``Cosmos`.
158-
- `sdk/eventhubs/...``Event Hubs`.
159-
- Engineering-system issues (scripts, workflows, pipelines under `/eng` but NOT under `/eng/common`) → service `EngSys`.
153+
- `sdk/storage/...``Storage`.
154+
- `sdk/identity/...``Azure.Identity`.
155+
- `sdk/core/...``Azure.Core`.
156+
- `sdk/keyvault/...``KeyVault`.
157+
- `sdk/cosmos/...``Cosmos`.
158+
- `sdk/eventhubs/...``Event Hubs`.
159+
- Engineering-system issues (scripts, workflows, pipelines under `/eng` but NOT under `/eng/common`) → service `EngSys`.
160160

161161
### Excluded Category Labels
162162

@@ -215,16 +215,15 @@ CODEOWNERS contains `# ServiceLabel: %<Label>` entries that associate one or mor
215215
# ServiceOwners: @svcowner1 @svcowner2
216216
```
217217

218-
**Matching uses bottom-to-top scanning with first-match-wins semantics:**
218+
**Matching uses last-match-wins semantics:**
219219

220-
1. Start from the END of CODEOWNERS and scan upward.
221-
2. For each `# ServiceLabel:` entry, check if ALL labels listed in it (after each `%`) are present in the issue's predicted labels.
222-
3. STOP at the first entry where all its labels match — this is the matching entry.
223-
4. Use the AzureSDKOwners and/or ServiceOwners from that entry and any adjacent owner lines.
220+
1. For each `# ServiceLabel:` entry, check if ALL labels listed in it (after each `%`) are present in the issue's predicted labels.
221+
2. If multiple entries match, the last (bottom-most) matching entry in the file is selected.
222+
3. Use the AzureSDKOwners and/or ServiceOwners from that entry and any adjacent owner lines.
224223

225224
Notes specific to this repository:
226225

227-
- Owner lines may use either `# AzureSdkOwners:` or `# AzureSDKOwners:` (capital "SDK") — treat both identically.
226+
- Comment labels like `AzureSDKOwners` are case-insensitive.
228227
- `# PRLabel:` entries apply to pull request labeling; for issue triage rely on `# ServiceLabel:` entries only.
229228
- Owners may be individual users (`@username`) or GitHub teams (`@Azure/team-name`); strip the leading `@` when passing values to safe-outputs that prepend it themselves.
230229

@@ -291,26 +290,27 @@ The format depends on whether triage was confident (Standard) or fell back to ma
291290
- **Affected API:** `<type, function, or component if identifiable>`
292291
- **Scenario:** <what the user was trying to do>
293292
- **Root ask:** <what the author needs>
294-
</details>
293+
</details>
295294

296295
<details>
297296
<summary>🔎 Debugging / Reproduction Notes</summary>
298297

299298
<diagnostic observations about the issue>
300299

301300
**Suggested investigation steps:**
301+
302302
1. <step 1>
303303
2. <step 2>
304304
3. <step 3>
305-
</details>
305+
</details>
306306

307307
<details>
308308
<summary>🏷️ Label Confidence</summary>
309309

310310
- **Category:** `<label>` — <reasoning>
311311
- **Service:** `<label>` — <reasoning>
312312
- **Confidence:** <High|Medium|Low> — <justification>
313-
</details>
313+
</details>
314314

315315
<details>
316316
<summary>👥 Owner Routing</summary>
@@ -319,7 +319,7 @@ The format depends on whether triage was confident (Standard) or fell back to ma
319319
- **AzureSDKOwners:** <owners or "none listed">
320320
- **ServiceOwners:** <owners or "none listed">
321321
- **Routing action:** <what was done>
322-
</details>
322+
</details>
323323
```
324324

325325
### Fallback Comment Format
@@ -335,7 +335,7 @@ Used when `needs-triage` (label prediction failed) or `needs-team-triage` (owner
335335
- **Candidate labels considered:** <list each candidate category+service label pair evaluated and why each was or wasn't viable>
336336
- **Confidence blockers:** <which Confidence Criteria were not met>
337337
- **Outcome:** <"Applied needs-triage — could not confidently predict labels" or similar>
338-
</details>
338+
</details>
339339

340340
<details>
341341
<summary>👥 Owner Routing</summary>
@@ -344,7 +344,7 @@ Used when `needs-triage` (label prediction failed) or `needs-team-triage` (owner
344344
- **Matched entry:** <the entry that matched, or "no match found">
345345
- **Owners found:** <AzureSDKOwners and ServiceOwners from the matched entry, or "none listed">
346346
- **Outcome:** <routing action taken>
347-
</details>
347+
</details>
348348
```
349349

350350
Rules for both formats:

0 commit comments

Comments
 (0)