Report the Provider schema check on merge-queue refs - #5928
Open
Divyansh-db wants to merge 1 commit into
Open
Conversation
Required status checks are enforced against the merge-queue ref as well as the PR head. The `status` job of this workflow is about to become a required check, but the workflow only triggers on `pull_request`, so nothing would report the `status` context on `gh-readonly-queue/*`. Every queued entry would wait out the queue's status-check timeout and be dequeued, blocking all merges rather than just the ones with breaking schema changes. Add a `merge_group` trigger and a `merge-queue-status` job that posts a synthetic `status` success on the queue commit, mirroring the auto-approve job that integration-tests.yml already uses for the same reason. The classifier itself deliberately does not run in the queue: * It is a double provider build, and it already ran at the tip of the branch. The queue only squashes commits that each passed it. * The bypass directive is read from `github.event.pull_request.body`, which does not exist on the merge_group payload. A PR legitimately carrying ALLOW_SCHEMA_BREAKING_CHANGE=true would pass on the PR and then fail in the queue with no way to unblock it. Tightening `classify`'s gate to an explicit event allowlist is required for this: its previous `github.event_name != 'pull_request'` clause was true on `merge_group`, so adding the trigger alone would have rebuilt the provider on both sides inside the queue for no new signal. NO_CHANGELOG=true Co-authored-by: Isaac
Divyansh-db
requested review from
renaudhartert-db
and removed request for
a team
August 5, 2026 23:38
Divyansh-db
temporarily deployed
to
test-trigger-is
August 5, 2026 23:38 — with
GitHub Actions
Inactive
Contributor
Unit testsIf this PR is from a fork, the If this PR changes Actions -> Warm Go Cache -> Run workflow -> pr_number = 5928 Re-run the failed check once the cache warming completes. Integration testsIntegration tests don't run automatically for external contributors; an authorized user can run them manually by following the instructions below: Trigger: Inputs:
Checks will be approved automatically on success. |
Divyansh-db
temporarily deployed
to
test-trigger-is
August 5, 2026 23:40 — with
GitHub Actions
Inactive
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The
statusjob of the Provider schema workflow is about to be made a required status check, so that breaking provider-schema changes block merging instead of just warning.That change is not safe on its own. Required status checks are enforced against the merge-queue ref as well as the PR head, and this workflow only triggers on
pull_request. Nothing would report thestatuscontext ongh-readonly-queue/*, so every queued entry would sit until the queue's status-check timeout expires and then be dequeued — blocking all merges, not just the ones with breaking schema changes.Worth stressing that a required check which never reports is not treated as skipped or neutral; it stays pending. So the context has to report something on the queue commit.
What
Add a
merge_grouptrigger and amerge-queue-statusjob that posts a syntheticstatussuccess on the queue commit. This mirrors theauto-approvejob inintegration-tests.yml, which exists for the same reason.The classifier itself deliberately does not run in the queue:
github.event.pull_request.body, and themerge_grouppayload has nopull_requestobject. A PR legitimately carryingALLOW_SCHEMA_BREAKING_CHANGE=truewould pass at the PR level and then fail in the queue, with no way to unblock it.Tightening
classify's gate to an explicit event allowlist is a required part of this, not a drive-by cleanup: its previousgithub.event_name != 'pull_request'clause evaluates to true onmerge_group, so adding the trigger alone would have rebuilt the provider on both sides inside the queue for no new signal.The
statusjob needed no change — it is already gated topull_request.Tradeoff
The schema is verified at PR head, not at the squashed queue commit, so two PRs that each pass alone but conflict semantically could merge. This is the same tradeoff already accepted for
Integration Tests, and it is narrowed by the queue's strict-required-checks policy andALLGREENgrouping. Documented in a comment on the job.Verification
classify/statusonpull_request,classifyonworkflow_dispatch,merge-queue-statusonmerge_grouponly)make wspassesstatusto match the required context, which is the job id — that job declares noname:. Confirmed against live check runs.github-scriptSHA and the runner group are both already used elsewhere in this repoMerge order
This should land before the check is marked required. On its own it is a no-op for PR behavior — it only adds a job that runs on queue refs.
NO_CHANGELOG=true
This pull request and its description were written by Isaac.