This checklist is for maintainers publishing the first public lean_lsp Hex
release. The goal is to publish v0.1.0 from a clean, current main branch with
matching metadata, documentation, package contents, and downstream smoke-test
coverage.
1. Prepare the release branch
Fetch the latest repository state and confirm the release commit is based on the current
mainbranch:git fetch origin main --tags git switch main git pull --ff-only origin main git status --shortConfirm that
mix.exs,README.md,CHANGELOG.md, and the release readiness docs all describe version0.1.0.Confirm that
README.mdstill presents v0.1.0 as a foundation/runtime-preview release, not as a production-ready Lean LSP client.Confirm there are no uncommitted changes before the final validation pass.
2. Authenticate with Hex
Publishing requires a Hex account that has permission to publish lean_lsp.
mix hex.user auth
mix hex.user whoami
If Hex asks whether the package should be owned by an individual account or an
organization, choose the owner intentionally before confirming the first publish.
Do not use --yes for the final publish command; the final publish should remain
an explicit maintainer action.
HEX_API_KEY is not required for the local manual release procedure. If a future
automation flow uses HEX_API_KEY, keep it scoped to publish permissions and do
not commit it to the repository.
3. Run pre-publish validation
Run the full project quality gate:
mix deps.get
mix check
Run the release-specific checks:
mix test
mix docs --warnings-as-errors
mix package.contents
LEAN_LSP_DOWNSTREAM_DOCKER=skip mix downstream.smoke
mix dependency.audit
mix publish.check
mix publish.check is intentionally non-publishing. It builds and unpacks the
package, generates docs with warnings as errors, runs the downstream smoke test,
and runs the Hex dry run with --dry-run --yes to avoid interactive prompts.
4. Inspect package contents
After mix package.contents or mix publish.check, inspect the unpacked package:
find _build/hex_publish_check -maxdepth 3 -type f | sort
The package should include the source files, README, CHANGELOG, license, and docs
extras. It should not include _build, deps, doc, tmp, cover, .elixir_ls,
priv/plts, compiled .beam files, tests, or CI-only scripts.
5. Publish to Hex
Immediately before publishing, confirm that lean_lsp is still available or is
owned by the expected maintainer account.
Publish manually:
mix hex.publish
Review the package summary printed by Hex. Confirm the version, description, license, links, production dependencies, and package contents before answering the final prompt.
6. Verify Hex and HexDocs
After publishing, verify the public package page and generated documentation:
https://hex.pm/packages/lean_lsphttps://hexdocs.pm/lean_lsphttps://hexdocs.pm/lean_lsp/0.1.0
Check that Hex shows version 0.1.0, the package description, the Apache-2.0
license, the GitHub and HexDocs links, and only the intended production
dependencies.
Check that HexDocs renders the README, CHANGELOG, release scope and stability notes, dependency audit, package contents note, runtime dependency policy, downstream smoke-test note, module responsibilities, and this release procedure.
Run the downstream smoke test against the published Hex package:
LEAN_LSP_DOWNSTREAM_DEP=hex LEAN_LSP_DOWNSTREAM_DOCKER=skip mix downstream.smoke
Use LEAN_LSP_DOWNSTREAM_DOCKER=required when Docker runtime verification is
intended and Docker is available.
7. Tag and create the GitHub release
After the Hex package and HexDocs have been verified, tag the exact release commit:
git tag -a v0.1.0 -m "v0.1.0"
git push origin v0.1.0
Create the GitHub release from the tag:
gh release create v0.1.0 \
--verify-tag \
--title "v0.1.0" \
--notes "Initial Hex foundation/runtime-preview release for LeanLsp."
The GitHub release notes should point users to CHANGELOG.md, Hex, and HexDocs.
If the tag already exists, do not move it after publishing without also deciding
how to handle the published Hex version.
8. Revert, update, or correct a bad first publish
If the first publish has a problem, act quickly and document what changed.
Documentation-only problems can usually be corrected with:
mix hex.publish docsA newly published package can be updated or reverted during Hex's first-release update window. For v0.1.0, use:
mix hex.publish --revert 0.1.0Then fix the issue, rerun the full pre-publish validation, and publish again.
If the update window has closed, do not try to replace the published package. Prepare a follow-up version such as
0.1.1, update the changelog, and publish the correction as a new release.
After any revert or update, verify Hex, HexDocs, downstream dependency mode, the Git tag, and the GitHub release again.