Uh oh!
There was an error while loading. Please reload this page.
feat(2284): give the Bugbot gate a caller here (advisory) - #139
Conversation
Step 2 of the reusable's three-step arming order, rolled from the claude-skills pilot (claude-skills#36) to the rest of the fleet. No branch protection is touched and `bugbot / review` is not required: Bugbot does not review Dependabot PRs, so a required context would park every one of them red with no route to green. Reported, not required. repo-inventory.yml is untouched -- caller first, entry after; the flip to `required` is the follow-up. Refs tracebloc/backend#2284 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
saadqbal
left a comment
There was a problem hiding this comment.
Checked this against the other four callers in the batch first: all five patches are byte-identical (same sha256), so this is one review, not five guesses.
Verified the claims that would hurt if wrong, rather than the prose:
bugbot-gate.ymlon.github'smainreally is blob936771bb, anddevelopis the same blob — so@mainisn't racing a divergent branch.- It declares all four inputs (
min-severity,wait-seconds,poll-seconds,quality-ref), so passing none can't die atstartup_failure. - Callee job id is
review, caller job id isbugbot—bugbot / reviewis the context name, which matches what's already reporting on claude-skills PRs from the pilot. - The dependabot measurement holds:
cli#574,cli#575andtracebloc-website#510have noCursor Bugbotcheck run at all, while human PRs do (passon e2e-test-agent#248,skippingon client#833). So a requiredbugbot / reviewreally would park every Dependabot PR at red with no route to green, and deferring step 3 is the right call rather than a missing one.
Advisory-only with no repo-inventory.yml change in the same PR is the correct order for the reason the header gives — a required row checked against a branch the caller isn't on yet can never go green. Worth being explicit that the stale-exemption window is real and the org audit will go red until the follow-up lands; the header says so, so nobody will be surprised.
ready_for_review in the trigger list, no paths: filter, no secrets: inherit, no workflow_dispatch, concurrency keyed on github.ref — all four of those are the ones that bite later, and all four are right here.
Uh oh!
There was an error while loading. Please reload this page.
What this is
One of 19 sibling PRs rolling
bugbot-gate.ymlout to the rest of the org — the fleet half of tracebloc/backend#2284, following theclaude-skillspilot (claude-skills#36).This is step 2 of the three-step arming order the reusable's own header sets out: (1) the reusable reaches
.github'smain— done in #305/#312; (2) callers, advisory; (3) thebugbot / reviewrequired context — not taken here.This is advice, not a gate — and that is deliberate
No branch protection is touched by this PR, and
bugbot / reviewis not added to any required-context list. One measurement is why step 3 is not taken:Bugbot re-runs only on a push or an explicit
bugbot runcomment, so a requiredbugbot / reviewwould park every Dependabot PR at a red check with no route to green. Until that is answered the verdict is reported and nothing is required.Why it is safe to arm here
cursorGitHub App is installed on the org withrepository_selection: all, and a per-repo sample of the last 15 PRs found a terminalCursor Bugbotcheck on every non-draft, non-Dependabot head. A repo where Bugbot never runs would only ever measure the gate's own 900s timeout.claude-skills#36put the gate on real PRs on one low-traffic private repo before this went fleet-wide — CLAUDE.md rule 4 (arm while green), in the order that lets a misbehaviour be attributed to one repo rather than twenty.repo-inventory.ymlis not touched here — the flip is the required follow-upCaller first, inventory entry after.
.github's caller state is read from its audit branch over the API, so a caller and itsrequiredrow cannot land in one PR: the row would be checked against a branch the caller is not on yet. Same two-stepblocked-gateand backend#2396 were forced into.Between the two, a caller against an
exemptrow is the stale-exemption finding and the org audit is red. That window is the accepted cost of this order — the alternative is a PR that can never go green — and flipping every row torequiredis the required follow-up, one PR againsttracebloc/.githubcovering all 20 repos.Verification
actionlint1.7.12 — the version pinned as a required check intracebloc/.github— clean on this file.python3 -c "import yaml; yaml.safe_load(...)"clean.uses:target resolves:bugbot-gate.ymlis blob936771bbon.github'smainanddevelopalike, and really declares all four inputs this caller declines to pass.paths:filter ·ready_for_reviewpresent · nosecrets: inherit· noworkflow_dispatch· no inputs passed (all four defaulted,min-severity: highincluded — restating the callee's default in 20 files is CLAUDE.md rule 1 in reverse).What to watch on this PR
This PR is its own first observation: the caller is on the head, so the gate runs against it. Expected —
bugbot / reviewreports, having readCursor Bugbot's terminal verdict on the head, and passes with no findings open at or abovehigh.Refs tracebloc/backend#2284
Note
Low Risk
Adds a non-blocking CI workflow with minimal read permissions; merge policy and branch protection are untouched.
Overview
Adds
bugbot-gate-caller.yml, a thin GitHub Actions caller that invokes the org reusabletracebloc/.githubbugbot-gate.yml@mainon pull requests (opened,reopened,synchronize,ready_for_review). The job surfaces check contextbugbot / reviewby polling Bugbot and open review threads (defaults: 900s wait,min-severity: high).This is step 2 of the backend#2284 rollout: advisory only — no branch protection changes and
bugbot / reviewis not required, partly because Dependabot PRs often never get a Cursor Bugbot run.repo-inventory.ymlis unchanged; flipping rows torequiredis a separate follow-up.The caller sets concurrency (cancel superseded runs), read-only
contents/checks/pull-requestspermissions, nopaths:filter, nosecrets: inherit, and no custom inputs (fleet defaults stay on the reusable).Reviewed by Cursor Bugbot for commit 0b94633. Bugbot is set up for automated code reviews on this repo. Configure here.