You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Cancel superseded PHPUnit CI cycles for each pull request #750
A head update followed by closing/reopening #745 after retargeting started two PHPUnit Feature workflows on head 9c39ac0934e2fabd37383ecfeb550c3cc691b035, 56 seconds apart. Both continued to occupy runners because this workflow has no concurrency group:
The older cycle was cancelled after verifying the current required cycle was live on the same head and the older one had no failing job. That is a one-time cleanup; the workflow should coalesce superseded PR cycles itself.
Acceptance:
Use GitHub-native concurrency per pull request, cancelling only superseded pull_request cycles.
Keep every existing job, required check, test and coverage gate for the current revision.
Give main-branch and manual qualifications independent run identities so neither is cancelled or replaced by a PR or another qualification.
Record workflow lint and normal hosted validation, then confirm automatic retirement on a superseding event before declaring the measured behavior complete.
This is a CI-capacity repair under the contributor rule to fix CI when delivery outpaces validation. It changes no product source, native fixture or publisher.
Hosted diagnosis: concurrency alone left the older job running because its job-level always() ignored cancellation. The current repair also uses always() && !cancelled() for the feature and final qualification jobs, preserving the central policy's failure-reporting guard and every existing test/coverage command. Step-level cleanup remains unconditional. The intermediate !cancelled() candidate failed the central policy's reviewed literal-guard contract; importantly, its required feature/qualification jobs still reported the policy failure. That failed run remains failed. See the GitHub cancellation reference.
PR #751 merged normally at dcb2d718085b8ae91ce7e58a0cf5e2b9a5daa176, preserving the exact reviewed/qualified tree e9ffdf4ba73542970616743b97f8b3f833da6d6e. All final-head PR checks passed, including full PHP qualification and CodeQL. Security review accepted the same head, and the merged remote branch is verified absent.
Automatic cancellation is measured: the superseded live feature job stopped35seconds after its successor was created; no manual cancel was used for that proof. All test/coverage/policy and cleanup commands remain intact. Main and manual runs have independent run IDs.
Independent main verification is now running at this exact merge: PHP qualification, CodeQL, Sonar, and the public-boundary workflow (already passed). Keep #750 open until this final verification is terminal; do not reinterpret the earlier failed policy-contract probe or cancelled predecessors as passing runs.
General verified the completed repair on 2026-10-24 at 22:58 UTC.
PR #751 merged normally as dcb2d718085b8ae91ce7e58a0cf5e2b9a5daa176, with the exact reviewed tree e9ffdf4ba73542970616743b97f8b3f833da6d6e. The merged remote head branch is absent.
All independent main workflows on that exact merge are terminal successful:
The hosted supersession experiment proved the behavioral improvement: when successor PR cycle 40138591249 started at 22:26:49 UTC, GitHub automatically cancelled the predecessor's running feature job at 22:27:24, 35 seconds later, and completed cancellation of 40138507216 at 22:27:29. No manual cancellation was used for that predecessor. The final successor's checks all passed. The earlier failed central-policy candidate remains failed and is not counted as acceptance.
Per-PR concurrency now retires superseded PR cycles. Main and manual runs retain unique run IDs; every existing test, coverage gate, required check, action pin and cleanup command is preserved. The feature/final job guards retain failure reporting while respecting cancellation. Current central policy, actionlint and Security review passed. This completes #750's acceptance; it establishes superseded-run retirement, not a claim that every CI bottleneck is solved.
Activity
rmcdaniel commentedon Oct 24, 2026
PR #751 merged normally at
dcb2d718085b8ae91ce7e58a0cf5e2b9a5daa176, preserving the exact reviewed/qualified treee9ffdf4ba73542970616743b97f8b3f833da6d6e. All final-head PR checks passed, including full PHP qualification and CodeQL. Security review accepted the same head, and the merged remote branch is verified absent.Automatic cancellation is measured: the superseded live feature job stopped35seconds after its successor was created; no manual cancel was used for that proof. All test/coverage/policy and cleanup commands remain intact. Main and manual runs have independent run IDs.
Independent main verification is now running at this exact merge: PHP qualification, CodeQL, Sonar, and the public-boundary workflow (already passed). Keep #750 open until this final verification is terminal; do not reinterpret the earlier failed policy-contract probe or cancelled predecessors as passing runs.
rmcdaniel commentedon Oct 24, 2026
General verified the completed repair on 2026-10-24 at 22:58 UTC.
PR #751 merged normally as
dcb2d718085b8ae91ce7e58a0cf5e2b9a5daa176, with the exact reviewed treee9ffdf4ba73542970616743b97f8b3f833da6d6e. The merged remote head branch is absent.All independent main workflows on that exact merge are terminal successful:
The hosted supersession experiment proved the behavioral improvement: when successor PR cycle 40138591249 started at 22:26:49 UTC, GitHub automatically cancelled the predecessor's running feature job at 22:27:24, 35 seconds later, and completed cancellation of 40138507216 at 22:27:29. No manual cancellation was used for that predecessor. The final successor's checks all passed. The earlier failed central-policy candidate remains failed and is not counted as acceptance.
Per-PR concurrency now retires superseded PR cycles. Main and manual runs retain unique run IDs; every existing test, coverage gate, required check, action pin and cleanup command is preserved. The feature/final job guards retain failure reporting while respecting cancellation. Current central policy, actionlint and Security review passed. This completes #750's acceptance; it establishes superseded-run retirement, not a claim that every CI bottleneck is solved.