Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/claude-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,10 @@ jobs:

5. Add the `triaged` label using `gh label create triaged --color 0e8a16 --force` then
`gh issue edit ${{ github.event.issue.number }} --add-label triaged`.
Remove the triggering label using `gh issue edit ${{ github.event.issue.number }} --remove-label "${{ github.event.label.name }}"`.
If the triggering label is `claude-triage`, remove it using
`gh issue edit ${{ github.event.issue.number }} --remove-label "claude-triage"`.
Do not remove `from-website`; it is a persistent provenance label used by
downstream notification and reporting workflows.

6. Write a concise markdown summary of your triage decision to /tmp/triage-summary.md.
Include: verdict (feasible/not feasible), reasoning, and action taken.
Expand Down Expand Up @@ -208,7 +211,7 @@ jobs:
fi

- name: Remove triggering label
if: always()
if: always() && github.event.label.name == 'claude-triage'
env:
GH_TOKEN: ${{ github.token }}
run: gh issue edit ${{ github.event.issue.number }} --remove-label "${{ github.event.label.name }}" --repo "${{ github.repository }}" || true
run: gh issue edit ${{ github.event.issue.number }} --remove-label "claude-triage" --repo "${{ github.repository }}" || true
12 changes: 2 additions & 10 deletions functions/feedback/IssueWebhookFunction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,22 +67,14 @@ public async Task<HttpResponseData> Run(
if (payload?.Issue is null)
return req.CreateResponse(HttpStatusCode.OK);

// ── Filter: only closed issues with the from-website label ────────────
var label = Environment.GetEnvironmentVariable("GITHUB_ISSUE_LABEL") ?? "from-website";

if (payload.Action != "closed")
{
logger.LogInformation("Ignoring action '{Action}' for issue #{Number}", payload.Action, payload.Issue.Number);
return req.CreateResponse(HttpStatusCode.OK);
}

if (!payload.Issue.Labels.Any(l => l.Name == label))
{
logger.LogInformation("Issue #{Number} missing label '{Label}' — skipping", payload.Issue.Number, label);
return req.CreateResponse(HttpStatusCode.OK);
}

// ── Look up submitter email ───────────────────────────────────────────
// The persisted mapping is authoritative: it is created only for issues
// submitted through the website and is not affected by mutable labels.
var mapping = await issueEmailStore.GetAsync(payload.Issue.Number);
if (mapping is null)
{
Expand Down
Loading