Repository navigation
Conversation
PHPUnit Feature, Shared Server fixtures, SonarQube and Public Boundary now also run on merge_group, so a merge queue can replace the require-up-to-date rerun loop. Base-revision checks use the queue group's base_sha, the boundary scan covers the group's exact base..head range, and the push trigger skips gh-readonly-queue/** branches that the merge_group run already scans. Shared Server fixtures has no path filter for merge_group, so every queued group gets the full profile.
|
General CI/Sonar review of The event/base-SHA changes are the right direction. Before enabling the queue, its required checks must also wait for the terminal full Shared Server fixtures result on the merge-group head. The current public rulesets require Please provide a required aggregate for the full shared matrix, or have an already-required aggregate depend on it, without leaving path-filtered ordinary PRs waiting forever for a missing required result. Keep the full-profile budgets and evidence unchanged. A negative control should show that a shared-matrix failure or missing result prevents a queue merge even when PHP and Sonar pass; the successful control must refer to the actual merge-group SHA. For Sonar, the scanner is CI-based in This is a source/settings qualification requirement. No queue setting was changed by this review. |
tests/Unit/MergeGroupTriggersTest.mjs checks that PHPUnit Feature, Shared Server fixtures, SonarQube and Public Boundary run on merge_group, that base-revision checks and the boundary range use the queue group's base and head, that queue branches are not scanned twice, and that superseded-run cancellation never applies to a queue group. It runs in Repository contracts. It fails 6 of 7 checks on the train head without merge_group support.
|
Head |
The OpenAPI evolution and regression corpus contracts pin the exact base revision expression; include the merge_group base so a queued group diffs against the revision it was built on.
The Sonar job receives SONAR_TOKEN and its fork guard is always true for a merge group, so it no longer runs on merge_group; the contract test now requires that. Public Boundary scans every push again, including queue branches, and the test requires the unfiltered push trigger alongside the exact merge-group range.
|
General reviewed corrected head 2781a92. The diff now preserves the existing Sonar secret boundary, keeps Public Boundary on every push, and adds the exact merge-group base/range handling to the non-secret workflows. The PR correctly separates source preparation from queue activation. My terminal Shared Server fixtures requirement remains an explicit follow-up: the synthetic head must receive a required aggregate that fails on any failed, cancelled or unexpectedly skipped matrix cell, and ordinary PRs must report a defined no-change result rather than leave a required check pending. This review does not qualify an actual merge_group execution or activate the queue. The exact-SHA Sonar gate and that terminal matrix result remain prerequisites. |
Security class: R2. This changes workflow events and required-check coverage (D500).
GitHub's merge queue needs every required Actions check to run on the
merge_groupevent. This PR is preparatory workflow source only. It does not make the queue usable, and repository queue settings stay disabled. D500 train batching remains the throughput mechanism until both activation prerequisites below are qualified.Stacked on train #723 (base
rust-325-train-oct24) so it includes #724's concurrency groups. It retargets tomainwhen #723 merges.Changes
phpunit-feature.yml(PHPUnit feature suite, Repository contracts, policy preflight, feature source qualification)merge_group:trigger.OPENAPI_BASE_REF/CORPUS_BASE_REFand the Docker-input diff usegithub.event.merge_group.base_shafor queue groups. Both jobs already fetch full history. The two PHP contract tests that pin these expressions now expect the merge-group base.server-parity.yml(Shared Server fixtures)merge_group:trigger.merge_grouphas no path filter, so a queued group would get the full shared profile.public-boundary.ymlmerge_group:trigger, scanning exactlymerge_group.base_sha..head_sha. The push trigger stays unfiltered, so queue branches are also scanned on push.sonar.ymlSONAR_TOKEN, and its fork guard is always true for a merge group. It does not run onmerge_group.tests/Unit/MergeGroupTriggersTest.mjs(Repository contracts) requires all of the above, including thatsonar.ymlhas nomerge_grouptrigger and that the Public Boundary push trigger has no branch or path filter. It passes 7/7. Counterfactual: against the previous head'ssonar.ymlandpublic-boundary.yml, exactly those two cases fail.Activation prerequisites (not in this PR; the queue stays off until both are qualified)
SONAR_TOKENto candidate-controlled source, workflow or config. Security is designing and qualifying this.Trust notes
pull_requestruns cancel superseded heads.pull_request, not a realmerge_group; they cannot prove the queue event contract by themselves.