ci(roadmap): close the release batch automatically on tag (CS-77) - #40
Merged
Conversation
- release-sync.yml: on a v* tag push, stamp that version on the merged cards the tag shipped, closing the "Em aberto" bucket with no manual step - verify containment with git merge-base --is-ancestor instead of blanket stamping: work merged after the tag was cut stays open for the next release - never guess a version for a card with no commitHash; refuse a non-release tag; idempotent on re-run - workflow_dispatch input to reprocess a tag manually - tests build a throwaway repo with a real commit graph (mocking git would test nothing): containment, post-tag exclusion, no-overwrite, idempotency - AGENTS.md / GIT-WORKFLOW.md: E7 stamping is now automatic, not NEO's job
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
Completes the roadmap automation chain. Merging already moves a card to Concluídas; now tagging closes the batch: pushing a
v*tag stamps that version on the merged-but-unreleased cards, so the "Em aberto" bucket folds into its release group with no manual step.The rule it enforces
Per AGENTS.md → Versioning authority, a card's
versionis a claim that the work shipped in that release. So the script does not blanket-stamp everything unversioned — it verifies each card withgit merge-base --is-ancestor <commitHash> <tag>:commitHash→ left untouched (never guessed)banana) → refused, exit 1This makes the phantom-version bug that started the versioning work (a
v1.15.0group git never tagged) structurally impossible.Changes
.github/workflows/release-sync.yml— onpushofv*(plusworkflow_dispatchto reprocess a tag manually); checks out main with full history so the containment check has a real graph; commits the board with[skip ci]scripts/roadmap-stamp-release.mjs— the stamping logictests/unit/release-sync.test.ts— 6 cases run against a throwaway git repo with a real commit graph and a real tag; mocking git would have tested nothingVerified locally against the real repo
After merge
I'll trigger
workflow_dispatchwithv1.16.0to close the current batch — which both delivers the stamping and proves the automation end-to-end on the real board.Checklist
References
CS-77 · follows CS-73 (merge sync) and CS-76 (dual-source board)