Release verification checklist
Use this checklist for the exact revision proposed for release. Record results in the release pull request and CI artifacts. Keep fixture credentials, private screenshots, database dumps, and local verification logs out of the published source and packages.Source and application checks
- Run
pnpm verifyagainst a disposable PostgreSQL database. Resolve formatting, lint, type, integration, dependency-audit, and build failures. - Manually review desktop and phone routes in light and dark themes, including keyboard and touch controls, long content, loading, errors and retry behavior. Record the routes, states and results reviewed.
- Verify setup, invitations, sign-in, recovery, passkeys, sessions, profile preferences, and account settings. Check configured email delivery and private-link behavior against the documented capability.
- Verify Admin, Member, and Viewer permissions, current membership, last-administrator protection, invitation authority, and session or credential revocation during concurrent requests.
- Verify board and task creation, field updates, comments, notifications, deletion, search, filters, sorting, pagination, and URL restoration. Check concurrency, version conflicts, and idempotent retries without losing drafts or attribution.
- Exercise REST and MCP with actual clients. Check OAuth/PKCE, scopes, approved boards, expiry, and revocation. Preserve the distinction between browser sessions, personal REST keys, and human-owned MCP connections.
- Check shared component reuse, accessible names, focus restoration, reduced motion, bounded popovers, and readable light/dark contrast. Keep success and error feedback in toast alerts.
Installation and data preservation
- Run
pnpm verify:productionfrom a clean checkout with the documented package-registry access. Confirm the installation does not require a sibling checkout or private runtime dependencies. - Verify native
linux/amd64andlinux/arm64images, non-root runtime, readiness, persistent PostgreSQL, restart behavior, and the documented HTTPS/proxy configuration. - Verify a clean baseline installation and rejection of incompatible migration ledgers without changing their data. Before publication, rehearse guarded prelaunch conversion with a recoverable source snapshot and compare retained records. After publication, use forward migrations and keep applied files immutable.
- Create and restore a full database backup in an isolated installation. Verify retained work, account state, credentials, and recovery with the original
MILL_SECRETand matching configuration. - Review dependency and image vulnerabilities, licenses, third-party notices, bundled assets, and the distributable file manifest for secrets or private material.
- Check physical passkeys, configured mail delivery, public DNS, certificates, and proxy behavior in the intended deployment environment. Local fixtures do not establish those outcomes.
Documentation and release artifacts
- Keep installation instructions, configuration, API/MCP contracts, security guidance, release notes, and screenshots aligned with the supported behavior.
- The full source gate includes the documentation link check. Review the rendered documentation at desktop and phone widths in both themes. Use current, crisp screenshots without private data; the manual documentation capture tool is optional.
- Require the
verifyandproductionCI gates for the reviewed commit. Review both architecture packages and validateSHA256SUMS, source revision, image architecture, and the packaged notices. - Verify version/tag metadata, source and release manifests, download destinations, and beginner installation instructions before publishing.
- For the GHCR publisher, require a stable tag on the current
mainrevision, the latest exact-commit Required CI result, native API and UI images for both platforms, registry labels, and the paired digest references inmill-images.json. Inspect both release installation evidence bundles: each must pull both registry images and pass installation, persistence, backup/restore, HTTPS proxy, and image security checks without rebuilding Mill. - Confirm the GitHub repository is public and the
ghcr.io/avgeek-oss/mill-apiandghcr.io/avgeek-oss/mill-webpackages allow anonymous pulls by digest. Repository visibility does not automatically make an existing GHCR package public. The release workflow fails before publication if either condition is missing. - Verify a fresh installation from the public release asset and the default image-only Compose file without GitHub or npm credentials. Confirm the Compose and example environment files come from that release tag, and record both image digests. The normal user installation must not require Git, Node,
jq, or a helper script. - Record publication and installation separately. Releasing the image does not deploy Mill to any server; a deployment needs its own reviewed image digest, database backup, configuration, and operational checks.
