Fix issue triage and PR intake workflow behavior (#49924)

## Summary

- run AI issue triage only when an issue is opened or its original
title/body is edited
- do not run issue triage for comments or reopen events
- store deterministic issue evidence in the agent-visible runner temp
directory
- expose structured safe-output publication through the restricted CLI
proxy while keeping shell, edit, and GitHub API tools disabled
- skip PR intake jobs for draft pull requests and run intake when they
become ready for review
- replace the `Needs-Review` lifecycle label with `Ready for review`,
migrating the legacy label on subsequent intake runs

Closes #49917

## Validation

- `gh aw compile issue-triage`
- `python -m unittest discover .github\scripts\issue-triage\tests -v`
(46 tests)
- `node --test .github\scripts\pr-intake\tests\pr-intake.test.mjs` (32
tests)
- `git diff --check` on committed files

---------

Copilot-Session: 3067a641-aa79-4f96-8d9f-eaa1c6d9b3cf
This commit is contained in:
Niels Laute
2026-08-15 17:45:39 +02:00
committed by GitHub
parent f1548fcf8b
commit 3d0c3bdb29
8 changed files with 222 additions and 47 deletions

View File

@@ -1,8 +1,8 @@
# AI-assisted issue triage
The workflow in `.github/workflows/issue-triage.md` maintains one canonical
triage comment for newly opened, edited, or reopened issues. It combines
deterministic preprocessing with one bounded GitHub Copilot pass.
triage comment when an issue is opened or its original title/body is edited. It
combines deterministic preprocessing with one bounded GitHub Copilot pass.
## Rules
@@ -49,18 +49,22 @@ that retain `Needs-Author-Feedback` for seven days without activity.
- An author comment removes `Needs-Author-Feedback` and returns the item to
team triage.
- A PR push reruns PR intake, which recalculates `Needs-Author-Feedback`.
- A push to a non-draft PR reruns PR intake, which recalculates
`Needs-Author-Feedback`.
- Manual label removal immediately makes the item ineligible for scheduled
closure.
## Cost and safety controls
- The `small` model alias is limited to five turns and 10 AI credits per run.
- A content hash skips unchanged edits and unrelated comments.
- The workflow subscribes only to issue creation and edits to the original
issue; comments and reopen events do not trigger it.
- Per-user rate limits, daily AI-credit limits, and per-issue concurrency bound
repeated execution.
- The agent has no shell or GitHub API tools. It can only read the checked-out
repository and call the structured safe-output tool.
repeated issue creation or edits.
- The agent has no general shell or GitHub API tools. Its only shell command is
the structured safe-output CLI proxy, and Copilot's file-write tool is
explicitly denied to work around gh-aw v0.86.2 treating `edit: false` as
writable.
- Threat detection fails closed; publication requires an explicit successful
detection result.
- The publishing job rebuilds evidence from the current issue and accepts only