Skip to content

Commit da33db7

Browse files
committed
ci: scope the refresh lane's concurrency group by ref
One global group would have two PRs touching this lane cancel each other's dry run and report the cancellation as though the lane were busy. Two SCHEDULED refreshes still cannot overlap, which is the race the group exists for. Also corrects a comment that described a `continue-on-error` the step does not use: the AFTER leg's exit is captured with `set +e` and read before any pipe. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019RfFHiRCSs3JXLK4cwcfox
1 parent c98830a commit da33db7

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

.github/workflows/shard-timings-refresh.yml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,12 @@ permissions:
104104
# the same bot branch; the newer inputs are the better ones, so the in-flight run
105105
# yields.
106106
concurrency:
107-
group: shard-timings-refresh
107+
# Scoped BY REF, not one global group. Two scheduled refreshes cannot overlap
108+
# (they would race on the same bot branch, and the newer inputs are the better
109+
# ones, so the in-flight run yields) — but two PRs touching this lane are
110+
# unrelated runs, and a single global group would have each cancel the other's
111+
# dry run and report a cancellation as though the lane were busy.
112+
group: shard-timings-refresh-${{ github.ref }}
108113
cancel-in-progress: true
109114

110115
jobs:
@@ -310,11 +315,13 @@ jobs:
310315
# verdict line rather than recomputed here — a second implementation of the
311316
# binning would be a second answer to grade against.
312317
#
313-
# ⛔ `continue-on-error` on the AFTER leg only, and it is not leniency: a
314-
# red here is the partitioner refusing an honest measurement, which is
315-
# information the PR must carry, not a reason to withhold the PR. The
316-
# verdict text goes into the body either way and the PR's own lint job
317-
# grades it again.
318+
# ⛔ The AFTER leg's non-zero exit is CAPTURED, not propagated, and that is
319+
# not leniency: a red there is the partitioner refusing an honest
320+
# measurement, which is information the PR must carry rather than a reason
321+
# to withhold the PR. `set +e` around that one command, with `$?` read
322+
# immediately and before any pipe, is what keeps the verdict readable
323+
# without letting the step's own status swallow it; the text goes into the
324+
# body either way and the PR's own lint job grades it again.
318325
- name: Predicted bins, before and after
319326
id: bins
320327
if: steps.compare.outputs.changed == 'true'

0 commit comments

Comments
 (0)