mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #117] [MERGED] ci(bump-callers): add detect-unreviewed-merge caller fleet (BE-6294) #128
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#128
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/117
Author: @mattmillerai
Created: 8/4/2026
Status: ✅ Merged
Merged: 8/4/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-6294-detect-unreviewed-merge-fleet📝 Commits (7)
9afca0aci(bump-callers): add detect-unreviewed-merge caller fleet (BE-6294)577b1c8ci(bump-callers): harden the detect-unreviewed-merge entrypoint (BE-6294)1d81fe9ci(bump-callers): seed the detect-unreviewed-merge roster and fix the caller-pattern doc (BE-6294)72d5d79ci(bump-callers): ship the detect-unreviewed-merge roster unseeded, not leaking (BE-6294)9b93a60ci(bump-callers): stop the header contradicting itself on seeding (BE-6294)a8ef9a8ci(bump-callers): stop the ALLOW_EMPTY note contradicting the pre-seed header (BE-6294)bdd99d9Merge remote-tracking branch 'origin/main' into matt/be-6294-detect-unreviewed-merge-fleet📊 Changes
4 files changed (+309 additions, -14 deletions)
View changed files
📝
.github/bump-callers/README.md(+21 -1)➕
.github/workflows/bump-detect-unreviewed-merge-callers.yml(+270 -0)📝
.github/workflows/test-bump-callers.yml(+4 -2)📝
AGENTS.md(+14 -11)📄 Description
ELI-5
Every reusable workflow in this repo has a little robot whose job is: "when I change, go open a PR in each repo that uses me so their pinned SHA moves forward."
detect-unreviewed-merge.yml— the SOC 2 workflow that flags PRs merged without approval — never got one, so its ~12 consumers were pinned by hand and quietly drifted onto an old commit. This adds that robot.What changed
.github/workflows/bump-detect-unreviewed-merge-callers.yml— a thin entrypoint over the shared.github/bump-callers/bump-callers.sh, copied frombump-pr-size-callers.yml(the cleanest current template: it carries both the stale-run guard and the decommission check) and reparameterised:VAR_NAME: DETECT_UNREVIEWED_MERGE_CALLERS,TAG: detect-unreviewed-merge,WORKFLOW_FILE: detect-unreviewed-merge.yml. Every SHA-pinned action is preserved verbatim (actions/checkoutv7.0.1,actions/create-github-app-tokenv1.12.0 with its dependabot-ignore comment).test-bump-callers.yml— the new entrypoint added to both thepull_requestandpushpath filters..github/bump-callers/README.md— fleet row added;detect-unreviewed-merge.ymlremoved from "Reusables with no fleet", which now lists only the genuinely caller-less reusables.AGENTS.md— the wrapper added to the catalog bullet (replacing the "known, deferred gap … pins move by hand" clause), andDETECT_UNREVIEWED_MERGE_CALLERSadded to the fleet-variable list. Still 145 lines, inside the standard's 200-line gate.Two deliberate differences from the pr-size template
Single-entry path filter and decommission check.
detect-unreviewed-merge.ymlloads nothing at run time — noworkflows_ref:input, no prompt/script directory (grepforworkflows_ref/scripts/in it returns nothing). So the workflow file is the entire surface a caller pins: the push filter lists only.github/workflows/detect-unreviewed-merge.yml, and the guard drops pr-size's second-d scripts/check-pr-sizecondition.ALLOW_EMPTYis deliberately not set, so it defaults tofalseand an empty/missing roster is a hard error (bump-callers.sh:69-83). This fleet has a known, non-empty caller set — per that script's own contract, a fleet that always has callers must never silently no-op, because that leaves every consumer un-bumped with nobody noticing. Roster seeding is a separate human step, so a run in the window before the variable exists will fail red on purpose: that is intentional nagging, not a bug, and the header comment says so explicitly to stop a future reader "fixing" it by flippingALLOW_EMPTYon. The failure is inert — the script exits before any caller-repo write, so nothing can be mis-pinned.Verification
shellcheck -x .github/bump-callers/bump-callers.sh .github/bump-callers/tests/test_bump_callers.sh— clean.bash .github/bump-callers/tests/test_bump_callers.sh— 123 passed, 0 failed (no script changes expected or made).actionlinton the new workflow and ontest-bump-callers.yml— clean.python3 .github/agents-md-integrity/check_agents_md.py --root .— passed (the one warning, no CODEOWNERS, is pre-existing onmain).on:/concurrency:/ stepenv:blocks match the spec above.Judgment calls and follow-ups
… (BE-6293); BE-6293 is the spike that found this gap, so I used(BE-6294)— the implementation ticket — in the title and commit so the Linear autolink points at the work being reviewed, and named BE-6293 in the commit body as the origin.test-bump-callers.yml's header comment enumerates the fleets the shared script drives; I added this one to that sentence rather than leave the list stale next to my own edit.docs/callers/**is untouched (it does not exist onmainyet), and no caller repo name appears anywhere in this diff.DETECT_UNREVIEWED_MERGE_CALLERS, thenworkflow_dispatchthe new entrypoint once — landing a fleet touches no path filter, so its own merge fires no run and existing stale pins stay stale until the reusable next changes. When seeding, note that this repo's ownci-detect-unreviewed-merge.ymlis a caller and belongs in the roster: omitting a repo's own caller is the exact trap AGENTS.md records the groom fleet falling into withci-groom.yml.STOPstring, no new throw/deny dead-end, no test flipped to assert one. The twoexit 0paths (stale run, decommissioned workflow) are copied verbatim from the template, and the hard-fail-on-empty is the shared script's pre-existing documented default rather than a new dead-end.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.