Skip to content

Support staged publishing and approval waits - #1292

Open
ericmj wants to merge 1 commit into
mainfrom
staged-publishing
Open

ericmj wants to merge 1 commit into
mainfrom
staged-publishing

Conversation

@ericmj

@ericmj ericmj commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Publishers whose API key or workload identity requires approval need to distinguish a staged release from a published one. Recognize staged package and documentation responses, print the approval URL, expiry and artifact SHA-256 values, and add mix hex.publish --wait to open the review page and poll for approval, rejection or expiry.

Polling follows the configured repository, binds approval to the checksums Hexpm reported for the staged release and renews workload-identity tokens when Hexpm rejects them as expired. Combined package/docs publishes detect a package restage before accepting approval. Vendor the status API from hexpm/hex_core#255.

A staged new package's organization transfer waits for approval with --wait and is otherwise left for after approval.

Integration CI uses the companion server branch from hexpm/hexpm#2082. Restore HEXPM_BRANCH: main after that server change merges. Proposal: https://gist.github.com/ericmj/e0a2cff04afa2a09a89fee726e9a5759.

The client suite, including its integration tests, passed 903 tests (2 skipped) against hexpm/hexpm@b4a567f. Formatter and diff checks passed.

Publishers whose API key or workload identity requires approval need
to tell a staged release from a published one. Recognize staged package
and documentation responses, print the approval URL, expiry and
artifact SHA-256 values, and add mix hex.publish --wait to open the
review page and poll until approval, rejection or expiry.

Polling follows the configured repository, binds approval to the
checksums Hexpm reported for the staged release and renews workload
identity tokens when Hexpm rejects them as expired. Combined
package and docs publishes detect a package restage before accepting
approval. A staged new package's organization transfer waits for
approval with --wait and is otherwise left for after approval. The
status API is vendored from hex_core.

Integration CI uses the hexpm staged-publishing branch; restore
HEXPM_BRANCH: main after that server change merges.
@ericmj
ericmj force-pushed the staged-publishing branch from ca82a50 to 92af505 Compare October 30, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant