mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #159] [MERGED] ci(bump-callers): swap bump-pr-risk-callers.yml onto the shared preflight (BE-6677) #167
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#167
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/159
Author: @mattmillerai
Created: 8/12/2026
Status: ✅ Merged
Merged: 8/12/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-6677-pr-risk-preflight📝 Commits (2)
614677dci(bump-callers): swap bump-pr-risk-callers.yml onto the shared preflight (BE-6677)f9558b4ci(bump-callers): widen pr-risk's preflight inputs to what a caller runs (BE-6677)📊 Changes
3 files changed (+134 additions, -141 deletions)
View changed files
📝
.github/bump-callers/README.md(+31 -9)📝
.github/bump-callers/preflight.sh(+23 -13)📝
.github/workflows/bump-pr-risk-callers.yml(+80 -119)📄 Description
ELI-5
bump-pr-risk-callers.ymlhad its own hand-written copy of the "should this run bump anything at all?" guard — is this run stale, and has the thing it watches been deleted? That guard now lives in one shared, tested script (.github/bump-callers/preflight.sh), so this entrypoint just calls it and does what it says. pr-risk is the first fleet swapped over, and deliberately so: it is the only one whose path filter has exclusions and whose decommission check is per-executed-file, so the two list inputs added in BE-6676 (WATCHED_PATHSPECS,WATCHED_EXEC) finally have a real consumer instead of only tests.What changed
.github/workflows/bump-pr-risk-callers.yml: the inlinels-remote→ fetch → per-filerev-parse→rev-list→[[ ! -f ]]block (~115 lines) is replaced by the two-step consumption documented in.github/bump-callers/README.md— aPreflight (staleness / decommission guard)step passingWATCHED/WATCHED_PATHSPECS/WATCHED_EXEC/NEW_SHA, and the bump step gated onsteps.preflight.outputs.proceed == 'true'withNEW_SHA: ${{ steps.preflight.outputs.new_sha }}. Everything else is untouched: thepaths:filter, the concurrency group,timeout-minutes, the main-onlyif:, the app-token step and its permission trio, and every other env key (GH_TOKEN,VAR_NAME,TAG,WORKFLOW_FILE,ALLOW_EMPTY,CALLERS_JSON), plus all the header documentation about the roster secret and the 300-filepaths:-filter recovery note..github/bump-callers/README.md: the "the entrypoints still carry their inline copies" note now records pr-risk as swapped (and why it went first), and the tag-shadow fix below..github/bump-callers/preflight.sh: header-comment only — it no longer says "nothing consumes it yet".The two list inputs were verified against the current filter and reusable rather than copied on faith:
WATCHED_PATHSPECSmirrors thepaths:filter line for line, exclusions included, andWATCHED_EXECmirrors the four files the retired inline probe checked (pr-risk.ymlplus the three graders it executes, directly or viagrade-targets.sh).Deliberate behaviour changes (decided in spike BE-6670)
github.shathat is no longer current. Safe by construction (every watched object was just proved identical at both commits) and it self-heals the 300-filepaths:-filter gap the header describes.rev-list"did a later COMMIT touch a watched path" test is retired, superseded by re-point-to-tip plus the pathspec-accurate diff. The case it existed for — a land-then-revert — now ends pinned at the tip instead of no-opped: same end state, one less failure mode, and never backwards. Verified empirically, see below.ls-remotetip must be an ancestor of the fetched one, and the fetched one a descendant of this run's commit). It also fixes a latent hazard the inline copy carried: it fetched a baremain, which resolvesrefs/tags/mainbeforerefs/heads/main, in a repo that routinely force-moves major tags. preflight fetchesrefs/heads/main.Verification
actionlint .github/workflows/bump-pr-risk-callers.yml— clean. (Repo-wideactionlintreports only the pre-existinggithub.job_workflow_shawarnings ingroom.yml.)shellcheck -xon the four bump-callers shell files — clean.bash .github/bump-callers/tests/test_preflight.sh— 199 passed, 0 failed;bash .github/bump-callers/tests/test_bump_callers.sh— 368 passed, 0 failed.python3 .github/workflow-pins/check_workflow_pins.py— OK. (check_agents_md.pyfails onAGENTS.mdbeing 227 lines — pre-existing onmain, untouched here.)github.sha→proceed=true; (b) a later commit touching onlyscripts/pr-risk/tests/**→ not stale, re-points to the tip and proceeds (the false-stale freeze an over-broad input would cause); (c) a later commit changing a grader →proceed=false, stale; (d)grade-targets.shdeleted at the tip →::warning::decommission,proceed=false; (e) land-then-revert re-run →proceed=truepinned at the revert commit, where the retiredrev-listtest reported "2 commits touched a watched path" and would have skipped entirely.Judgment calls / criteria not met as written
git grep -n 'merge-base --is-ancestor' .github/workflows/"should return nothing" does not hold, and should not.pr-risk.ymlitself usesmerge-base --is-ancestorfor its ownworkflows_refpin-ancestry check — unrelated to the bumper's inline guard. The check I actually ran is the one the criterion meant: nobump-*-callers.ymlentrypoint matchesmerge-base --is-ancestor/rev-list --count/ls-remoteany more for pr-risk (the other seven fleets still carry their inline copies by design; swapping them is a separate change each).WATCHED_EXECkeeps exact parity with the retired inline list, which is narrower than "every file a caller executes."grade-targets.shalso invokesapply-risk-label.sh(hard-required — itdies if absent) andpublish-risk-surfaces.sh(only under the opt-incheck_run:/sticky_comment:surfaces), and the graders readrisk-map.v0.json/runbook-registry.v0.json. A commit deletingapply-risk-label.shalone would therefore still bump the fleet onto a SHA where a required script is gone. That gap predates this PR, and widening the decommission surface here would be a fourth behaviour change on a swap meant to be behaviour-preserving apart from the three above — so it is flagged rather than silently fixed. Worth a follow-up ticket if reviewers agree.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
**/.claude/**from the extra_generated_globs default (BE-7633) #177