ci: run Reborn E2E in the merge queue with internal scope gating - #4830
serrrfirat wants to merge 1 commit into
Conversation
Reborn E2E previously had no merge_group trigger, so the merge queue shipped Reborn changes without the deterministic Rust gate or the gateway/WebUI v2 smoke tests — a direct source of post-merge breakage on the Reborn surface. merge_group events ignore workflow-level paths: filters, and a path-filtered workflow never reports a status on non-matching PRs (which breaks required-check protection). So this replaces the pull_request paths: filter with a changes job that classifies the diff via scripts/ci/classify-test-scope.sh — the same pattern reborn-tests.yml uses — plus a has_e2e_harness output so Python E2E harness changes outside the reborn scenario files still trigger the smoke jobs. The reborn-e2e roll-up now always reports, passing fast when the change is out of scope, making it safe to mark as a required status check for both PRs and the merge queue. Push triggers keep their path filters; workflow_call (nightly) and workflow_dispatch run the full gate unconditionally as before. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Note Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughWorkflow refactors E2E scope gating from path-based pull-request filters to a new ChangesE2E Scope Gating via Changes Job
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
Summary
The merge queue currently runs zero Reborn E2E:
reborn-e2e.ymlhas nomerge_grouptrigger, so Reborn changes merge without the deterministic Rust contract gate or the gateway/WebUI v2 Playwright smoke running against the queued (post-rebase) state. This PR closes that gap.Changes
Add
merge_grouptrigger (checks_requestedonmain), matchingreborn-tests.yml.Replace the
pull_requestworkflow-levelpaths:filter with an internalchangesscope-detection job, for two reasons:merge_groupevents ignorepaths:filters entirely — a trigger-only change would run the full gate on every queue entry, including docs-only and legacy-only changes.The
changesjob classifies the PR/merge-group diff viascripts/ci/classify-test-scope.sh(same pattern and sameBASE_SHA/HEAD_SHAhandling asreborn-tests.yml), plus a workflow-localhas_e2e_harnessoutput (tests/e2e/**) so Python harness changes outside the reborn-specific scenario files still trigger the smoke jobs — preserving the old path filter's coverage.Roll-up job
Reborn E2Enow always reports: passes fast on docs-only / out-of-scope changes, fails if scope detection or any gated job fails. This makes it safe to add as a required status check.pushkeeps its path filters (required checks don't apply to push);workflow_call(nightly, ci: retire dormant reborn-integration workflow, add Reborn suites to nightly deep CI #4829) andworkflow_dispatchrun the full gate via the non-diff branch of thechangesjob, unchanged in behavior.Post-merge action required
Add
Reborn E2E(the roll-up job) to the required status checks formain— the merge queue only waits on required checks, so without that settings change this workflow runs in the queue but does not block it.Verification
python3 yaml.safe_loadparses the workflow; triggers =workflow_call, workflow_dispatch, pull_request, merge_group, push; jobs =changes, rust-reborn, gateway-smoke, webui-v2-smoke, reborn-e2e.reborn-tests.ymlchangesjob (already running on every PR and merge-queue entry).workflow_dispatchfor a full-gate dry run.🤖 Generated with Claude Code
Summary by CodeRabbit