fix: harden release preparation and publish handoff - #40
Merged
Conversation
tensornull
commented
Jul 30, 2026
tensornull
left a comment
Contributor
Author
There was a problem hiding this comment.
Reviewed final head 11871d9 and authorize its merge and the one-time
v0.1.1 recovery
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
workflow_dispatchwithout holding the shared publish concurrency slot while the dispatched run queuesrecover-v0.1.1main-dispatch path that can reuse the already live-verified artifact after a temporary exactbranch:mainnpm Environment policy is human-approvedRELEASE_PLEASE_ENABLED=falseplus onlytag:v*Root cause
The earlier flow had three independent failure modes:
package.jsonchanges, so a normal source-onlyfix:commit could not prepare the expected patch PR.maindeployment rejected by the tag-only npm Environment policy.v0.1.1tag predates the corrected dispatch entry point; GitHub resolves the requested ref workflow and cannot borrow the newer default-branch definition.The permanent design is Release Please result → unprivileged handoff → exact immutable-tag dispatch → verify/live/npm OIDC. The main path is a one-time, commit/file/actor/run/artifact/policy-ID-bound recovery only for the already-created
v0.1.1.Scope and safety
The intended merge control commit must have first parent
5f493045a2205fe19904ca5be36f5bbf23378aecand must change exactly these six files:.github/workflows/publish.yml.github/workflows/release-please.ymlRELEASING.mdscripts/release-workflow-validation.mjstests/release-workflow-validation.test.mjstests/workflow-contract.test.mjsIt does not change package source, version, tag, release, protections, secrets, Trusted Publisher settings, or npm ownership. Before any recovery mutation, the owner must complete npm 2FA and visually reconfirm Trusted Publisher =
cometapi-dev/cometapi-node/publish.yml/ Environmentnpm.GitHub prohibits PR authors from approving their own PRs even when they are administrators. This PR therefore requires an exact-final-head
COMMENTEDowner audit record when the author and reviewer are bothtensornull; that record is not represented as a formalAPPROVEDreview. The action-authored Release Please PR still requires formal final-head approval from a different human administrator.Verification
npm cinpm run verify:offlinegit diff --checkFrozen diff SHA-256:
449370f789f317d15664a96a8ccec3b4eba42a4c8aaf24df07eb9b5f3f07724f.