chore(release): prepare v0.2.1 - #63
Conversation
Bump the coordinated public packages, CLI/MCP runtime version literals, and MCP registry manifest to 0.2.1. Add the v0.2.1 changelog and maintainer cutover runbook, and document the MCP registry and queue@v0 follow-ups. Release-path audit found the MCP server runtime version was not tied to the package version; add coverage and align it before publication. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
There was a problem hiding this comment.
Pull request overview
Prepares the coordinated v0.2.1 release across packages, runtime metadata, documentation, and release procedures.
Changes:
- Bumps all public packages and runtime version literals to v0.2.1.
- Adds MCP runtime/package version regression coverage.
- Updates changelog, distribution guidance, site copy, and release runbook.
Reviewed changes
Copilot reviewed 18 out of 20 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
package.json |
Bumps root version. |
bun.lock |
Updates workspace versions. |
packages/core/package.json |
Bumps core package. |
packages/evaluator/package.json |
Bumps evaluator package. |
packages/cli/package.json |
Bumps CLI package. |
packages/cli/src/index.ts |
Updates CLI runtime version. |
packages/mcp/package.json |
Bumps MCP package. |
packages/mcp/src/server.ts |
Corrects MCP runtime version. |
packages/mcp/server.json |
Updates registry versions. |
packages/mcp/test/version.test.ts |
Adds version-drift regression test. |
CHANGELOG.md |
Adds v0.2.1 release notes. |
docs/RELEASING.md |
Adds release cutover runbook. |
docs/DISTRIBUTION.md |
Updates MCP publication sequencing. |
README.md |
Updates published version. |
site/src/content/docs/quickstart.mdx |
Updates quickstart version. |
site/src/content/docs/index.mdx |
Updates site release status. |
site/src/content/docs/ci.mdx |
Updates immutable Action tag. |
site/src/components/Hero.astro |
Updates hero version copy. |
site/scripts/og-card.svg |
Updates social-card version. |
site/public/llms.txt |
Updates agent-facing version copy. |
| ```sh | ||
| gh run list --workflow release.yml --event push --status success --limit 1 | ||
| ``` |
There was a problem hiding this comment.
Fixed in e8cadc1. The runbook now resolves the v0.2.1 tagged commit, finds the release.yml run for that exact head SHA, and watches that run with gh run watch "$release_run_id" --exit-status. I also tightened the adjacent checks: manifest/package/MCP metadata assertions, the v0 versus v0.2.1 SHA comparison, and the registry grep now fail closed instead of accepting stale state.
Regenerate the served Open Graph image after the v0.2.1 SVG source update, and make the MCP version drift regression test independent of the invocation cwd. ADR-0016: temporarily restored the stale MCP SERVER_INFO version and observed packages/mcp/test/version.test.ts fail before restoring the fix. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
5f9d1d9 to
e8cadc1
Compare
#60, #61, #62 and #64 all merged after this branch was cut, so the release prep it carried had gone stale in four ways. - Changelog: add the corpus-directory usage-error fix (#60) and the agent-drafted ratifier gate (#64), state the audit gate's scope (#62), and correct the release date, which was still 2026-07-25. - Disclose the known consumer exposure. Root overrides are not published in package manifests, so a consumer installing @adrkit/mcp still resolves a vulnerable @hono/node-server. Observed, not assumed: a real npm install of the packed 0.2.1 tarballs resolves @hono/node-server@1.19.17 and npm audit reports GHSA-frvp-7c67-39w9 with fixAvailable: false. - The audit gate recorded that exposure against @adrkit/mcp@0.2.0 and @hono/node-server@1.19.15. Publishing 0.2.1 would have left the gate naming a version nobody installs, which reads as false safety for the version that is shipping. Both now match what the consumer install actually resolves, and the test asserts against packages/mcp/package.json instead of a literal so the next release cannot ship the same drift. Per ADR-0016 the test was changed first and observed failing: Expected "0.2.1", Received "0.2.0". - ADR-0017 assigns published-artifact consumer audits to release evidence, but the runbook had no such step. Add it, with the reconciliation rule against KNOWN_CONSUMER_ADVISORY_ACCEPTANCES, and de-stale the cutover preamble that still listed three already-merged branches as blockers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…adrkit into release-0-2-1-readiness
Summary
packages/mcp/server.jsonversion fields to 0.2.1.queue@v0follow-ups.SERVER_INFO.versioncannot drift from the package version again.site/public/og.pngsocial card after the SVG source version bump.Release-path audit
gh releaseusesGH_TOKEN, andrelease:action-tagsetshttp.https://github.com/.extraheaderonly aroundgit ls-remote/git pushwith anEXITcleanup trap.@adrkit/mcpreportedSERVER_INFO.versionas0.1.0while the package was0.2.0. That would have shipped stale runtime metadata in v0.2.1 without this fix.ADR-0016 failure observed
Before fixing MCP runtime version drift, the new regression test failed as intended:
After making the test cwd-independent, I temporarily restored the stale server version and re-observed the failure:
Social-card drift gate decision
site/public/og.png; new sha256:143f616a35f7de792e42c1ae4a0b01181b7865406c148142e3194217457228b7.Arial, Helvetica, sans-serif), so a CI byte gate would likely be platform/font-stack sensitive unless the project first makes the card render fully deterministic. Known gap: nothing currently gates social-card source/artifact drift.Validation
bun test scripts/release-pack.test.ts scripts/release-publish.test.ts scripts/update-action-tag.test.ts packages/mcp/test/version.test.tsbun test packages/mcp/test/version.test.ts && cd packages/mcp && bun test test/version.test.tsbun run release:pack -- --tag v0.2.1bun run release:publish -- --dry-runbun run typecheck && bun test && bun run lintbun run schema:emit && git diff --exit-code schema/adr.schema.json packages/ci/dist && bun run check:deps && bun run adr lintbun run audit:gatecd site && bun run build0.2.1 dev.adrkit/mcp ./dist/bin.js 0.2.1.@adrkit/mcp@0.2.0still has no publishedmcpName; confirmedpackages/ci/queue/action.ymlis missing atv0and present atefef89b5d747ca175a1947f1ce2f4296dab54fa3.Refresh after #60, #61, #62, #64 landed
All four merged after this branch was cut, so the release prep it carried had gone stale.
mainis now merged in and the prep re-verified against it.Changelog gaps closed. Added the corpus-directory usage-error fix (#60) and the agent-drafted ratifier gate (#64) under Fixed, stated the audit gate's scope under Changed (#62), and corrected the release date, which still read
2026-07-25.Consumer exposure disclosed, and observed rather than assumed. The Security section previously said only that root overrides yield a clean root
bun audit. True, but overrides are not published in package manifests, so it says nothing about consumers. A real npm install of the packed 0.2.1 tarballs into a scratch directory resolves@hono/node-server@1.19.17, andnpm auditthere reports:@modelcontextprotocol/sdk@1.29.0ranges@hono/node-serverat^1.19.9, which can never reach the patched>=2.0.5. So v0.2.1 ships the same exposure v0.2.0 has, and the changelog now says so.Defect found: the audit gate would have gone stale on publish.
KNOWN_CONSUMER_ADVISORY_ACCEPTANCESrecorded the exposure against@adrkit/mcp@0.2.0and@hono/node-server@1.19.15. Publish 0.2.1 and the gate names a version nobody installs — which reads as false safety for the version that is actually shipping. This is the same drift class as theSERVER_INFO.versionbug this PR already fixes. Both fields now match the observed consumer install, and the test asserts againstpackages/mcp/package.jsonrather than a literal, so the next release-prep PR is forced to re-observe instead of inheriting a stale record.Per ADR-0016 the test was changed first and observed failing:
Then 19 pass / 0 fail.
Runbook gap closed. ADR-0017 decides that published-artifact consumer audits belong in release evidence rather than PR CI — but
docs/RELEASING.mdhad no such step; it never mentioned consumer installs,npm audit, or advisories at all. Added the packed-tarball consumer audit with the rule that every reported advisory must reconcile againstKNOWN_CONSUMER_ADVISORY_ACCEPTANCESwith a matching id, an unexpiredacceptedUntil, and anaffectedPublishedVersionequal to the version being cut. Also de-staled the cutover preamble, which still listed three already-merged branches as blockers.Re-verification after the merge
bun run build && bun run schema:emit && git diff --exit-code schema/adr.schema.json packages/ci/dist— no drift (this is the check that would have caught a stale CI bundle after fix(core): require ratifiers for agent-drafted ADRs #64 rebuilt it on a different base).bun run typecheck,bun run lint,bun run check:deps,bun run adr lint(17 records, 0 errors, 0 warnings).bun test— 789 pass, 0 fail, 95 files.bun run release:pack -- --tag v0.2.1,bun run release:publish -- --dry-run—+ @adrkit/mcp@0.2.1.bun run audit:gate— PASSED, now reporting@adrkit/mcp@0.2.1 ... resolves @hono/node-server@1.19.17.cd site && bun run build— 26 pages.Branch reconciliation
A GitHub "Update branch" merge landed on this branch while I had also merged
mainlocally. Reconciled with a merge rather than a force push; the resulting tree hash was byte-identical before and after (e376243…), so the remote update contributed no content that could have been lost.Sequencing note
This version bump should still be the last thing merged before tagging
v0.2.1. Nothing else is open against the release. If anything new merges ahead of it, refresh the changelog and re-run the local simulation before cutting the tag.