evergreen-tracks: no supported way to move `latest` outside a release cut
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 970
- Forks
- 486
- Avg merge
- 3d 33m
- Merged PRs (30d)
- 170
Description
Problem
When the 2026-08-12 release cut failed to move latest (#37025 — Hub started refusing anonymous tag pagination), there was no supported way to repoint it:
cicd_evergreen-tracks-promote.ymlhardcodes--tracks standard,trailingand has no input to change that.cicd_evergreen-tracks-admin.ymlonly does taint / untaint / hold / release-hold.- Re-running the failed release job replays the pre-fix commit, so it just fails again.
The only route left was cutting a throwaway release to repoint a tag — which is what we did (26.08.12-02, code-identical to -01 apart from the CI fix). That works, but rebuilding artifacts, redeploying to Artifactory, regenerating release notes and publishing a changelog entry to dev.dotcms.com is a lot of blast radius for moving one floating tag, and it puts a phantom release in front of customers.
Proposal
Add a tracks dispatch input to the promote workflow, defaulting to standard,trailing.
- The daily cron and every existing dispatch behave exactly as today — a
scheduleevent carries no inputs at all, which the||fallback covers. tracks=latestbecomes the break-glass path, behind the sameevergreen-tracks-applyrequired-reviewer gate as any other manual move.- The apply job still holds the
evergreen-tracks-registrylock, so it cannot race the release pipeline's latest-promote. If a GA cut repointslatestwhile an approval sits, the existing drift check makes apply refuse rather than fight the release pipeline — the correct outcome.
Also fixes a latent bug
The moved-summary grep matches only ^(standard|trailing):
MOVES=$(printf '%s\n' "$CURRENT_PLAN" | grep -E '^(standard|trailing) (\(held\) )?-> ' ...)
So a latest move would apply correctly but report moved=false and post no Slack notice. Silent success is the one outcome this workflow is built to avoid. Widened to include latest.
Related: #37025, #37028.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with cicd_evergreen-tracks-promote.yml and compare its schedule and dispatch handling with cicd_evergreen-tracks-admin.yml; inspect the existing evergreen-tracks-apply gate, registry lock, drift check, and moved-summary grep. Done means a manual tracks=latest path is supported without changing scheduled behavior, and a latest move reports success to Slack.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, shell
- Domain
- ci-cd, release
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 72/100