Skip to content

ci(bump-callers): add cursor-review-auto-label caller fleet (BE-4005)#60

Open
mattmillerai wants to merge 3 commits into
mainfrom
matt/be-4005-bump-cursor-review-auto-label-callers
Open

ci(bump-callers): add cursor-review-auto-label caller fleet (BE-4005)#60
mattmillerai wants to merge 3 commits into
mainfrom
matt/be-4005-bump-cursor-review-auto-label-callers

Conversation

@mattmillerai

Copy link
Copy Markdown
Contributor

ELI-5

This repo auto-opens "update your pin" PRs in consumer repos whenever one of its reusable workflows changes — one little bumper workflow per reusable. cursor-review-auto-label.yml never got a bumper, so every repo using it slowly fell behind (while its sibling ci-cursor-review.yml caller stayed current, leaving the two cursor-review callers in a repo pinned to different commits of this repo). This PR adds the missing bumper.

What

  • New .github/workflows/bump-cursor-review-auto-label-callers.yml — thin entrypoint over the shared bump-callers.sh, mirroring bump-cursor-review-callers.yml: triggers on push-to-main touching .github/workflows/cursor-review-auto-label.yml (plus workflow_dispatch for on-demand re-bumps), reads vars.CURSOR_REVIEW_AUTO_LABEL_CALLERS, opens one SHA-bump PR per consumer as Cloud Code Bot. Own concurrency group + stable branch (ci/bump-cursor-review-auto-label), per the BE-3882 serialization pattern.
  • .github/bump-callers/README.md — new fleet row in the table.
  • .github/workflows/test-bump-callers.yml — new entrypoint added to both path filters so wrapper changes run the suite.
  • .github/bump-callers/tests/test_bump_callers.sh — two new cases driving the fleet's exact entrypoint parameters (VAR_NAME/TAG/WORKFLOW_FILE/ALLOW_EMPTY): (1) two callers — mirroring the two real consumers — each get a SHA-bump PR with the pin rewritten, comment normalized, and repo names masked; (2) an unseeded/empty variable is a clean no-op. 100/100 checks pass locally, shellcheck clean, actionlint clean.
  • AGENTS.md catalog + two already-stale header comments synced (the shared script's header now points at the README fleet table instead of enumerating fleets, so it can't drift again).

⚠️ Manual follow-up required (repo variables are not in-repo files — this PR cannot create them)

After merge, seed the variable with the current consumers:

gh variable set CURSOR_REVIEW_AUTO_LABEL_CALLERS --repo Comfy-Org/github-workflows --body \
  '[{"repo":"Comfy-Org/cloud","file":".github/workflows/cursor-review-auto-label.yml","label":""},{"repo":"Comfy-Org/website","file":".github/workflows/cursor-review-auto-label.yml","label":""}]'

(Then optionally gh workflow run bump-cursor-review-auto-label-callers.yml to catch both consumers up immediately.) Also add the entries to the canonical callers.json in the private ops repo.

Judgment calls

  • ALLOW_EMPTY: "true" — deviates from the mirror target (CURSOR_REVIEW_CALLERS hard-fails when empty). Deliberate: the variable is repo config the merge itself cannot create, so hard-fail semantics would guarantee a red run for any reusable change landing in the merge→seed window. This matches the bump-assign-reviewers-callers.yml precedent (variable created out-of-band, seeded empty). Trade-off: if seeding is forgotten, the fleet no-ops silently — hence the loud follow-up above.
  • No WIRE_BOT_SCRIPT — the bot-identity injection (BE-1814) is cursor-review-specific by design (bump-cursor-review-callers.yml says it is "set only here"); auto-label callers already pass their own app creds per the reusable's contract.
  • actions/checkout@v6 (tag, not SHA) — byte-identical to all four sibling bumpers; kept consistent rather than diverging in one file.

Testing

  • 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 — 100 passed, 0 failed (12 new checks)
  • actionlint on both touched workflows — clean
  • python3 .github/agents-md-integrity/check_agents_md.py --root . — passed (pre-existing CODEOWNERS warning only)

The auto-bump system covered cursor-review, agents-md, pr-size, and
assign-reviewers, but not cursor-review-auto-label.yml — so every
consumer's auto-label caller silently drifted behind the reusable it
pins while its sibling ci-cursor-review.yml stayed current. Add the
missing thin entrypoint (reads vars.CURSOR_REVIEW_AUTO_LABEL_CALLERS,
runs the shared bump-callers.sh), register it in the fleet table +
test path filters, and cover its exact parameters in the functional
suite.
@mattmillerai mattmillerai added cursor-review Multi-model cursor review agent-coded Authored by the agent-work loop labels Jul 22, 2026
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b2cfa5c6-26a7-4cc0-aeee-20b3244542f6

📥 Commits

Reviewing files that changed from the base of the PR and between 50ad29c and 1513c4a.

📒 Files selected for processing (6)
  • .github/bump-callers/README.md
  • .github/bump-callers/bump-callers.sh
  • .github/bump-callers/tests/test_bump_callers.sh
  • .github/workflows/bump-cursor-review-auto-label-callers.yml
  • .github/workflows/test-bump-callers.yml
  • AGENTS.md

📝 Walkthrough

Walkthrough

Changes

The pull request adds a cursor-review-auto-label caller-bumping workflow, registers its fleet variable and entrypoint, updates shared documentation, and adds end-to-end coverage for populated and empty caller lists.

Cursor review auto-label fleet

Layer / File(s) Summary
Fleet entrypoint and registration
.github/workflows/bump-cursor-review-auto-label-callers.yml, .github/bump-callers/README.md, .github/bump-callers/bump-callers.sh, AGENTS.md
Defines triggers, concurrency, token creation, deletion handling, and shared-script invocation for the new fleet; documents its caller variable and wrapper entrypoint.
Fleet validation and test wiring
.github/bump-callers/tests/test_bump_callers.sh, .github/workflows/test-bump-callers.yml
Tests populated and empty caller lists, and makes the test workflow run when the new caller-bumping workflow changes.

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant CloudCodeBotToken
  participant BumpCallers
  participant TargetRepositories
  GitHubActions->>GitHubActions: Trigger on dispatch or main workflow change
  CloudCodeBotToken->>GitHubActions: Provide GitHub App token
  GitHubActions->>BumpCallers: Invoke with fleet configuration and new SHA
  BumpCallers->>TargetRepositories: Create SHA-bump pull requests
Loading
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch matt/be-4005-bump-cursor-review-auto-label-callers
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch matt/be-4005-bump-cursor-review-auto-label-callers

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Cursor Review — Consolidated panel

Triggered by @mattmillerai.

Found 4 finding(s).

Severity Count
🟠 High 1
🟡 Medium 1
🟢 Low 2

Panel: 8/8 reviewers contributed findings.

Comment thread .github/workflows/bump-cursor-review-auto-label-callers.yml Outdated
Comment thread .github/workflows/bump-cursor-review-auto-label-callers.yml
Comment thread .github/workflows/bump-cursor-review-auto-label-callers.yml
Comment thread .github/workflows/bump-cursor-review-auto-label-callers.yml
…ut, main-only guard, deletion no-op) (BE-4005)

- Pin actions/checkout to df4cb1c0 # v6.0.3 (repo SHA-pin policy; matches
  pr-size.yml)
- Guard the bump job with 'if: github.ref == refs/heads/main' so a manual
  workflow_dispatch from a non-main ref cannot pin callers to a stale SHA
  or run the bumper from an unreviewed commit with the App token
- No-op cleanly when cursor-review-auto-label.yml is absent at the
  triggering SHA (the push path filter also matches deletion)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mattmillerai

Copy link
Copy Markdown
Contributor Author

🤖 The reviews loop filed Linear follow-up ticket(s) for review thread(s) deferred as out of scope for this PR:

  • BE-4058 — Bring sibling bump-*-callers entrypoints to parity with the hardened auto-label bumper

mattmillerai added a commit that referenced this pull request Jul 26, 2026
…uto-label bumper (BE-4058) (#62)

* ci(bump-callers): bring sibling entrypoints to parity with hardened auto-label bumper (BE-4058)

Mirror the three hardenings from 89e3110 (bump-cursor-review-auto-label-callers.yml,
PR #60) onto the four pre-existing bump-*-callers entrypoints:

- SHA-pin actions/checkout (v6.0.3) per the repo's pin-everything policy
- main-only job guard: skip workflow_dispatch runs from non-main refs, which
  would pin every caller to a stale SHA and run bump-callers.sh from an
  unreviewed commit with the freshly minted App token
- deletion no-op guard: a push that DELETES the reusable workflow matches the
  path filter; exit 0 instead of opening caller PRs pinned to a SHA where the
  referenced file no longer exists

* ci(bump-callers): skip stale re-runs + treat asset-dir deletion as decommission (BE-4058)

Review follow-ups from the cursor-review panel on PR #62:

- A manual re-run of an older main run passes the `github.ref ==
  'refs/heads/main'` guard but executes with that run's stale github.sha,
  force-repinning every caller backwards. Verify github.sha is still the
  tip of main (git ls-remote) before bumping; a newer push always has its
  own queued run that does the bump.
- The decommission guard only checked the reusable .yml, but the push
  path filter also fires on the run-time asset dir callers load from the
  pinned SHA (.github/cursor-review/**, .github/agents-md-integrity/**,
  scripts/check-pr-size/**). Deleting that dir while leaving the yml
  would repin callers to a SHA whose scripts are gone — check both.
  assign-reviewers has no asset dir; noted inline.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…allers

Resolves conflicts in AGENTS.md and test-bump-callers.yml where main
added the groom caller fleet (BE-4523/BE-4003) alongside this branch's
cursor-review-auto-label caller fleet — merged both intents.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-coded Authored by the agent-work loop cursor-review Multi-model cursor review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants