mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #151] [MERGED] ci(bump-callers): switch every bump-* entrypoint to the shared preflight.sh (BE-6476) #160
Labels
No labels
cursor-review-catalog-drift
groom
groom
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/github-workflows#160
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/github-workflows/pull/151
Author: @mattmillerai
Created: 8/11/2026
Status: ✅ Merged
Merged: 8/13/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-6476-preflight-swap📝 Commits (6)
b09346aci(bump-callers): switch every bump-* entrypoint to the shared preflight.sh (BE-6476)0674540Merge remote-tracking branch 'origin/main' into matt/be-6476-preflight-swap9bf9b02ci(bump-callers): timeout, pre-token preflight, and a paths/WATCHED contract test (BE-6476)602f584ci(bump-callers): multi-asset WATCHED_ASSETS; watch scripts/check-pr-size in the cursor-review fleet (BE-7045) (#153)0de05acMerge origin/main into matt/be-6476-preflight-swap369ebe3Merge origin/main into matt/be-6476-preflight-swap (post-#137)📊 Changes
13 files changed (+1610 additions, -454 deletions)
View changed files
📝
.github/bump-callers/README.md(+132 -32)📝
.github/bump-callers/preflight.sh(+230 -76)➕
.github/bump-callers/tests/test_paths_contract.sh(+640 -0)📝
.github/bump-callers/tests/test_preflight.sh(+314 -1)📝
.github/workflows/bump-agents-md-callers.yml(+32 -35)📝
.github/workflows/bump-assign-reviewers-callers.yml(+31 -35)📝
.github/workflows/bump-auto-label-callers.yml(+29 -59)📝
.github/workflows/bump-cursor-review-callers.yml(+73 -35)📝
.github/workflows/bump-detect-unreviewed-merge-callers.yml(+26 -106)📝
.github/workflows/bump-groom-callers.yml(+33 -36)📝
.github/workflows/bump-pr-size-callers.yml(+59 -35)📝
.github/workflows/test-bump-callers.yml(+6 -1)📝
AGENTS.md(+5 -3)📄 Description
ELI-5
Every
bump-*-callers.ymlworkflow had its own hand-written copy of the same "should I actually bump the consumer repos right now?" check. Eight near-copies, and they had drifted apart — most of them threw away a legitimate bump whenever an unrelated commit happened to land onmainin the seconds between the trigger and the check. #136 extracted one tested implementation (.github/bump-callers/preflight.sh). This PR deletes the inline copies and wires seven entrypoints to that one script, as aPreflightstep whose output gates the bump step.What changed
Each of the seven entrypoints now carries two steps where it used to have one:
Preflight (staleness / decommission guard),id: preflight, withNEW_SHA: ${{ github.sha }}+ literalWATCHED(+WATCHED_ASSETSfor the four multi-path fleets), runningbash .github/bump-callers/preflight.sh.Bump SHA in caller reposstep, gatedif: steps.preflight.outputs.proceed == 'true', withNEW_SHA: ${{ steps.preflight.outputs.new_sha }}(nevergithub.sha— that would discard the preflight's stale-re-run re-point) and itsrun:reduced tobash .github/bump-callers/bump-callers.sh.Per-fleet inputs, taken from each file's own
paths:filter and its old decommission check: agents-md (agents-md-integrity.yml+.github/agents-md-integrity), assign-reviewers (single-path), auto-label (single-path), cursor-review (cursor-review.yml+.github/cursor-review), groom (groom.yml+.github/groom), pr-size (pr-size.yml+scripts/check-pr-size, the one asset dir outside.github/), detect-unreviewed-merge (single-path). Header comments, triggers, concurrency groups, theif: github.ref == 'refs/heads/main'job guard, token minting and the rest of each bump step'senv:are untouched; auto-label's log-exposure note and detect-unreviewed-merge's unseeded-roster commentary ride along unchanged.Deliberate behavior changes — this is a convergence, not a behavior-preserving refactor
mainbetween the trigger and the check. They previously skipped on a bare tip mismatch; they now skip only when the watched surface actually changed since.foo/refs/heads/maincan no longer poison thels-remoteparse) and the stale-re-runNEW_SHAre-point.bump-auto-label-callers.ymlgains the re-point (its own guard compared content but then proceeded pinned to the stalegithub.sha) and the$WATCHED-variable deletion guard (it re-tested a second literal copy of the path).FETCH_HEAD, aHEADthat is notGITHUB_SHA, or amainthat moved backwards is now a red run instead of a silent green no-op. That is the intended trade — none of those is evidence of staleness.Blast radius on merge: none
No fleet's
paths:filter watches its ownbump-*-callers.ymlentrypoint — each watches its REUSABLE workflow plus its asset dir. Re-verified against this branch's base (eb4b26c): the only workflow whose filter matchesbump-*-callers.yml(or.github/bump-callers/**, for the README edit) istest-bump-callers.yml. So merging this fires zero bump fleets and opens no consumer-repo SHA-bump PRs; the only workflow it triggers is the test one, which must be green here.Judgment call:
bump-pr-risk-callers.ymlis deliberately NOT swappedThe ticket's per-fleet table lists seven fleets and
pr-riskis not among them, and the mergedpreflight.shheader already settled why: pr-risk'spaths:filter carries:(exclude)entries (!scripts/pr-risk/tests/**,!scripts/pr-risk/README.md) that a singleWATCHED_ASSETSstring cannot express. PointingWATCHED_ASSETSat the wholescripts/pr-riskdirectory would make it wider than the filter, so a test-only or docs-only commit — which starts no run of its own — would change the tree OID, be read as "the watched surface changed since", and freeze the fleet waiting on a run that never comes. The script's own guidance for an excluding fleet is "narrow the inputs, or leave that fleet on its own guard"; there is no narrowing that expresses an exclusion, so it keeps its guard. Consequence for the acceptance criteria:grep -l 'ls_remote' .github/workflows/bump-*-callers.ymlreturnsbump-pr-risk-callers.ymlrather than nothing, and it retainsNEW_SHA: ${{ github.sha }}. Every other criterion is met for the seven in scope. I also documented the exception in.github/bump-callers/README.mdso the next reader does not "finish the job" by accident.Recommended follow-up (not done here — out of scope)
Five of the seven jobs (agents-md, assign-reviewers, cursor-review, groom, pr-size) have no
timeout-minutes; auto-label and detect-unreviewed-merge have20.preflight.sh's header names the caller job'stimeout-minutesas the backstop for an origin that hangs during its--unshallowfetch, so those five now lean on a backstop they do not declare — withcancel-in-progress: falsea hung fetch could hold the fleet for the 6h default. The pre-existing inline guards fetched unbounded too, so this is not a regression, but it is worth a one-line follow-up. I left it alone because the ticket says to keep each file's surrounding structure untouched.Verification
bash .github/bump-callers/tests/test_bump_callers.sh— 175 passed, 0 failedbash .github/bump-callers/tests/test_preflight.sh— 107 passed, 0 failedshellcheck -x .github/bump-callers/bump-callers.sh .github/bump-callers/preflight.sh .github/bump-callers/tests/test_bump_callers.sh .github/bump-callers/tests/test_preflight.sh— cleanactionlint— clean on all eight edited/adjacentbump-*workflows (the only findings repo-wide are pre-existinggithub.job_workflow_sha/job.workflow_shaexpression warnings ingroom.yml, untouched here).github/workflows/— OKref:override on any checkout (the preflight hard-errors ifHEAD != GITHUB_SHA, so this was verified rather than assumed),id: preflightpresent, bump step gated onproceed,NEW_SHAfromnew_sha.Self-review note on the negative-claim rule: this diff adds a skip path (
proceed == 'false') and new hard-error paths, but it denies no capability — for the five simple fleets the skip conditions are strictly narrower than what they replace, and the hard-error paths live in the already-merged, already-testedpreflight.shrather than being authored here.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.