|
| 1 | +# Phase 04: Release Hardening & Beta Exit Preparation |
| 2 | + |
| 3 | +This phase hardens the CI/CD pipeline, validates the full release process end-to-end, and prepares for exiting beta prerelease mode. By the end, the release pipeline will be validated and ready for the stable release cut. The actual `changeset pre exit` command should be run manually by a maintainer when ready — this phase prepares everything needed for that moment. |
| 4 | + |
| 5 | +## Tasks |
| 6 | + |
| 7 | +- [ ] Audit and fix CI workflow issues: |
| 8 | + - Review `.github/workflows/release.yml` for any gaps or issues: |
| 9 | + - Verify all job dependencies are correct (lint → typecheck → test → smoke → release) |
| 10 | + - Ensure Node version is consistent across jobs (some use 22, release uses 24 — verify this is intentional) |
| 11 | + - Check that the `changesets/action@v1` step has correct configuration for the beta prerelease mode |
| 12 | + - Review `.github/workflows/continuous-release.yml` (PR checks): |
| 13 | + - Verify the `pkg-pr-new publish` step works correctly for preview packages |
| 14 | + - Ensure all parallel jobs (lint, typecheck, test, build) have consistent Node/pnpm versions |
| 15 | + - Check that Doppler OIDC authentication is properly configured for smoke tests (`.github/workflows/release.yml` smoke test job). Don't modify secrets, just verify the workflow references are correct. |
| 16 | + |
| 17 | +- [ ] Validate the changeset configuration for stable release: |
| 18 | + - Read `.changeset/config.json` and verify settings are correct for public release: |
| 19 | + - `access: "public"` is set |
| 20 | + - `baseBranch: "main"` is correct |
| 21 | + - `ignore` list only contains packages that should not be published (`@proofkit/docs`, `@proofkit/typegen-web`) |
| 22 | + - `updateInternalDependencies: "patch"` is appropriate |
| 23 | + - Read `.changeset/pre.json` and document the current beta state: which packages have beta versions, how many changesets are queued. |
| 24 | + - Create a checklist file at `docs/release/beta-exit-checklist.md` with structured markdown (front matter: type: reference, tags: [release, beta, checklist]) documenting: |
| 25 | + 1. Pre-exit steps (run full CI, verify all tests pass, review doc staleness report) |
| 26 | + 2. The exit command: `pnpm changeset pre exit` |
| 27 | + 3. Post-exit steps (run `pnpm changeset version`, review generated changelogs, commit, push, let CI release) |
| 28 | + 4. Rollback plan if something goes wrong |
| 29 | + 5. List of packages and their current beta versions vs expected stable versions |
| 30 | + |
| 31 | +- [ ] Ensure all packages build cleanly for release: |
| 32 | + - Run `pnpm build` from the repo root and verify all packages compile without errors. |
| 33 | + - Run `pnpm --filter @proofkit/registry build` separately since it's private — verify it still builds even if it might be removed later. |
| 34 | + - Check that each package's `package.json` has correct `exports`, `main`, `types`, and `files` fields for npm publishing. |
| 35 | + - Run `pnpm dlx publint` on each package (or check if it's already part of the build pipeline) to validate package entry points. |
| 36 | + |
| 37 | +- [ ] Run the complete CI pipeline locally to simulate a release: |
| 38 | + - Run `pnpm run ci` (lint + typecheck + test) from the repo root. |
| 39 | + - Run `pnpm build` to verify build succeeds. |
| 40 | + - Run `pnpm changeset status` to see the current changeset queue and verify it reports correctly. |
| 41 | + - If smoke tests can be run locally (check if Doppler secrets are available), run `pnpm --filter @proofkit/cli test:smoke`. If not, note this as a CI-only gate. |
| 42 | + - Fix any issues found during this validation. |
| 43 | + |
| 44 | +- [ ] Create a release runbook document: |
| 45 | + - Create `docs/release/release-runbook.md` with structured markdown front matter (type: reference, tags: [release, process, runbook]) documenting: |
| 46 | + 1. The complete release process from changeset creation to npm publish |
| 47 | + 2. How the CI pipeline validates each step |
| 48 | + 3. How to handle common failure scenarios (failed publish, partial release, reverted changeset) |
| 49 | + 4. How the doc-staleness check (from Phase 02) integrates into the process |
| 50 | + 5. How skill staleness checks (notify-intent → check-skills) fit into the release cycle |
| 51 | + 6. Contact/escalation info if the release pipeline breaks |
| 52 | + - Use `[[Beta-Exit-Checklist]]` wiki-link to cross-reference the checklist from the previous task. |
0 commit comments