From f6f2751abd8c8b526594e2039e32d59b3b862d01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amaury=20Lev=C3=A9?= Date: Thu, 27 Aug 2026 16:41:18 +0200 Subject: [PATCH] Clarify evaluation progress PR label (#1082) * Clarify evaluation progress label Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d35e7696-f69c-4898-ad3e-c75fb02b993d * Distinguish queued and running evaluations Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: d35e7696-f69c-4898-ad3e-c75fb02b993d --------- Copilot-Session: d35e7696-f69c-4898-ad3e-c75fb02b993d --- .github/scripts/pr-triage-act.sh | 10 +++++++++- docs/design/pr-triage-workflows.md | 6 ++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/scripts/pr-triage-act.sh b/.github/scripts/pr-triage-act.sh index 9e50a027..9720e920 100644 --- a/.github/scripts/pr-triage-act.sh +++ b/.github/scripts/pr-triage-act.sh @@ -35,6 +35,7 @@ BOT_LOGIN="github-actions[bot]" MERGE_APPROVERS_TEAM="@dotnet/skills-merge-approvers" STATE_LABELS=( + "pr-state/evals-in-progress" "pr-state/ready-for-eval" "waiting-on-review" "ready-to-merge" @@ -339,8 +340,10 @@ if [ -z "$STATE" ]; then else STATE="in-review" fi + elif [ "$EVAL_STATE" = "pending" ] && eval_run_exists_for_head; then + STATE="evals-in-progress" else - # eval has not succeeded yet + # No evaluation is running for this head, or the last one failed. STATE="ready-for-eval" fi fi @@ -357,6 +360,7 @@ case "$STATE" in : ;; # do not reconcile labels for skip/scan-only states needs-author-attention) reconcile_state_label "waiting-on-author" ;; ready-for-eval) reconcile_state_label "pr-state/ready-for-eval" ;; + evals-in-progress) reconcile_state_label "pr-state/evals-in-progress" ;; ready-for-review) reconcile_state_label "waiting-on-review" ;; ready-for-merge) reconcile_state_label "ready-to-merge" ;; in-review) reconcile_state_label "pr-state/in-review" ;; @@ -409,6 +413,7 @@ do_eval_trigger() { if gh workflow run evaluation.yml --repo "$REPO" \ -f pr_number="$PR_NUMBER" \ -f head_sha="$HEAD_SHA_SHORT" >/dev/null; then + reconcile_state_label "pr-state/evals-in-progress" log "eval-trigger: dispatched evaluation.yml for PR #$PR_NUMBER @ $HEAD_SHA_SHORT" summary " - action: eval-trigger (dispatched evaluation.yml)" else @@ -539,6 +544,9 @@ case "$STATE" in ready-for-eval) do_eval_trigger ;; + evals-in-progress) + log "no action for state=evals-in-progress" + ;; ready-for-review|ready-for-merge) do_maintainer_ping ;; diff --git a/docs/design/pr-triage-workflows.md b/docs/design/pr-triage-workflows.md index 1e7d7bc3..3310caf5 100644 --- a/docs/design/pr-triage-workflows.md +++ b/docs/design/pr-triage-workflows.md @@ -73,7 +73,8 @@ Order of evaluation; first match wins: | 4 | eval == success && `APPROVED` | `ready-for-merge` | `ready-to-merge` | maintainer-ping/C | | 5 | eval == success && `REVIEW_REQUIRED`/none | `ready-for-review` | `waiting-on-review` | maintainer-ping/A | | 6 | eval == success && other decision | `in-review` | `pr-state/in-review` | reconcile only | -| 7 | otherwise | `ready-for-eval` | `pr-state/ready-for-eval` | eval-trigger | +| 7 | eval == pending && run exists for head | `evals-in-progress` | `pr-state/evals-in-progress` | reconcile only | +| 8 | otherwise | `ready-for-eval` | `pr-state/ready-for-eval` | eval-trigger | Trusted = `OWNER` / `MEMBER` / `COLLABORATOR`. Bots are short-circuited as trusted. @@ -99,7 +100,8 @@ State labels (exactly one is reconciled at a time). Where the existing label taxonomy already covered a state, the workflow reuses it rather than introducing a duplicate `pr-state/*` name: -- `pr-state/ready-for-eval` *(new)* +- `pr-state/ready-for-eval` *(existing — queued, missing, or failed evaluation)* +- `pr-state/evals-in-progress` *(new — evaluation pending for the current head)* - `waiting-on-review` *(existing — reused for `ready-for-review`)* - `ready-to-merge` *(existing — reused for `ready-for-merge`)* - `waiting-on-author` *(existing — reused for `needs-author-attention`)*