feat(ci): add merge-train/spartan-v5 targeting v5-next#23831
Merged
Conversation
Wire up a new merge-train branch, merge-train/spartan-v5, that mirrors merge-train/spartan but tracks the v5 release line: fed from and targeting v5-next instead of next. - merge-train-create-pr.yml: resolve base branch per train (v5-next for spartan-v5), used by the ancestor check and the ci-full-no-test-cache label list. - merge-train-next-to-branches.yml: also trigger on push to v5-next and merge v5-next into merge-train/spartan-v5. - merge-next.sh: optional source-branch arg (defaults to next). - merge-train-stale-check.yml: spartan-v5 job with BASE_BRANCH=v5-next. - ci3_labels_to_env.sh / ci.sh: spartan-v5 merge-group runs use merge-queue-heavy. - run_test_cmd, merge_train_failure_slack_notify: flake + failure Slack routing for spartan-v5 (#team-alpha / #team-alpha-ci). - merge-trains / merge-train-infra skills, root CLAUDE.md base mapping, and fix skill: document the v5 train and base branch.
44954a7 to
0c3abc1
Compare
spalladino
approved these changes
Jun 3, 2026
ludamad
approved these changes
Jun 3, 2026
spalladino
pushed a commit
that referenced
this pull request
Jun 4, 2026
Backports the `merge-train/spartan-v5` wiring from #23831 (merged to `next`) onto `v5-next`. ## Why this is needed The base→train sync (`merge-train-next-to-branches.yml`) is push-triggered, and for a `push` event GitHub Actions runs the workflow file **as it exists on the pushed branch**. `v5-next` still has the old workflow (triggers only on `next`, no `spartan-v5` routing), so commits landing on `v5-next` never fire the sync into `merge-train/spartan-v5`. Putting the wiring on `v5-next` makes that sync fire for every subsequent push to `v5-next`. This is a cherry-pick of #23831's squashed commit onto `v5-next` — same 12-file changeset, no v5-specific divergence (the merge-train infra files merged cleanly; v5-next's newer `actions/checkout` pin is preserved). ## After merge Future pushes to `v5-next` will sync into `merge-train/spartan-v5`. The commit that already landed on `v5-next` (`chore: backport merge-train/spartan PRs to v5-next` #23846) won't retroactively trigger — it needs either a fresh push to `v5-next` or a one-time manual `scripts/merge-train/merge-next.sh merge-train/spartan-v5 v5-next` to catch the train up. Labeled `ci-skip` — workflow/script/docs config only. --- *Created by [claudebox](https://claudebox.work/v2/sessions/a24733a6b8930662) · group: `slackbot`*
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.
Summary
Wires up a new merge-train branch,
merge-train/spartan-v5, that behaves exactly likemerge-train/spartanbut tracks the v5 release line: it is fed from and targetsv5-nextinstead ofnext.Scoped by grepping every
merge-trainreference repo-wide (all file types, not just workflows) and adding thespartan-v5equivalent wherever spartan-specific behavior is hard-coded.Changes
Workflows
merge-train-create-pr.yml— base branch is resolved per train (v5-nextformerge-train/spartan-v5,nextotherwise); the "already merged" ancestor check and theci-full-no-test-cachelabel list both use it.merge-train-next-to-branches.yml— now also triggers on push tov5-next. A push tov5-nextmergesv5-nextintomerge-train/spartan-v5; pushes tonextcontinue feeding the other six trains.merge-train-stale-check.yml— added aspartan-v5job running the stale check withBASE_BRANCH=v5-next, alerting#team-alpha.Scripts
scripts/merge-train/merge-next.sh— takes an optional second arg for the source branch (defaults tonext); allnextreferences (fetch, diff, merge message, conflict comment + the commit it's posted on) now use it.CI plumbing
.github/ci3_labels_to_env.sh—merge-train/spartan-v5merge-group runs map tomerge-queue-heavy(10 grind runs), same as spartan.ci3/run_test_cmd— flake notifications and the#team-alpha-cichannel mapping includespartan-v5.ci3/merge_train_failure_slack_notify—merge-train/spartan-v5failures route to#team-alpha.ci.sh— comment updated.Docs / skills / base-branch guidance
merge-trains+merge-train-infraskills (branch table, CI behavior, automation lifecycle, and "create a new merge train" steps now cover non-nextbase branches).CLAUDE.mdbase-branch mapping notesmerge-train/spartan-v5(→v5-next) as the v5-line alternative tomerge-train/spartan..claude/skills/fix/SKILL.mdnotes branching/PR-basing offmerge-train/spartan-v5for v5-scoped fixes.Verified branch-agnostic — no change needed
These already match
merge-train/*or capture the subsystem generically, so they coverspartan-v5automatically:merge-train-recreate.yml,merge-train-update-pr-body.yml,merge-queue-dequeue-notify.yml(startsWith('merge-train/'))scripts/merge-train/auto-merge.sh(BRANCH_PATTERN=merge-train/),update-pr-body.sh(reads the PR's real base)ci3.shinstance-postfix +ci3.ymlconcurrency (merge-train/*)ci3/dashboard/ci-metrics/github_data.pyandrk.py(regexmerge-train/([^\s]+))scripts/commits,scripts/filter_history,scripts/find_orphaned_issues_in_prs.py(merge-train/prefix)No in-repo CODEOWNERS / ruleset / branch-protection config exists (those live in the GitHub UI). Remaining literal
merge-train/spartanstrings are illustrativeExample:/usage comments with no behavior.Follow-up needed (cannot be done from this PR)
The
merge-train/spartan-v5branch itself must be created fromv5-nextand pushed — branch creation can't go through PR tooling. Once it exists the automation here takes over (PR creation, integration fromv5-next, stale checks, auto-merge, recreation).v5-nextalready exists as a protected branch.CI
Labeled
ci-skip— workflow/script/docs config only. Shell scripts passbash -n; workflow YAML parses cleanly.