[Release] Close the release-resume and tag-ancestry gaps - #38
Merged
Conversation
The validate rows now require the tag commit to be an ancestor of origin/main (the tag policies only match names, so a non-main v-tag would otherwise build and publish); the audit's historical-checks ban is narrowed so the tag-local ancestry guard is allowed — and pinned. Resume Release takes the source run's Central deployment id as a required input and commits the VALIDATED deployment to PUBLISHED (idempotently) before any GitHub Release exists, and validates the source run against the tag before downloading anything: same workflow, push event, same tag, same commit, and the npm tarball version must match VERSION. Found by review on the ported tex-core copy (nouprax/tex-core#12). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c717fa940d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
PR performance and binary-size diff
Baseline: exact PR base Performance
Binary size
Size deltas are deterministic for identical build inputs. Performance deltas compare separate hosted runners and should be treated as directional evidence, not a pass/fail threshold. |
The formal ordering makes the irreversible Central commit the last publish step; the resume path had it before the npm publish, so an npm failure during a resume could leave Maven Central publicly published with the npm package absent. The idempotent npm publish now runs first. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Three gaps found by review on the ported tex-core copy (nouprax/tex-core#12), all present here:
validateonly checked the tag name against VERSION; the checked-in tag policies match names, not ancestry. Both validate rows (push and resume) now rungit merge-base --is-ancestor HEAD origin/main. The audit's historical-checks ban is narrowed accordingly (the ancestry guard is tag-local validation, not a check query) and now pins the guard's presence.maven-publishleft the deploymentVALIDATEDforever — the tag run can't be rerun once the immutable npm version exists, and the resume path never calledcentral-portal.sh publish.Resume Releasenow takescentral-deployment-idas a required input and commits it toPUBLISHED(idempotently short-circuiting when already published) before the GitHub Release is created.SOURCE_RUN_IDwas trusted verbatim: the resume job now validates the source run before downloading anything — same workflow file,pushevent,head_branchequal to the release tag,head_shaequal to the tag commit — and asserts the downloaded npm tarball's version matches VERSION.audit:cigreen.🤖 Generated with Claude Code