Finish a release that half-shipped
1.0.3 reached npm and stopped there, missing from the MCP registry and the releases page with nothing able to finish it. Also: the cache purge that failed every deploy.
The registry refuses a version it cannot find on npm, and npm does not serve a new version to everyone the moment npm publish returns. So 1.0.3 published, was tagged, and failed registration with a 404 on its own package; the GitHub release step after it never ran.
The workflow now waits until npm actually serves the version, and retries registration three times, because the registry reads npm from its own side and the two can disagree for a few seconds. The recovery path, release_only, now includes this step and treats an already-registered version as done, so a rerun finishes a half-shipped release instead of duplicating it.
The purge that never ran
Every deploy since the purge step landed failed at it with a Cloudflare 7003 routing error. The zone id secret had never been set, and an unset secret interpolates to an empty string, so the URL became zones//purge_cache and the error named neither.
The step now checks the id is 32 hex characters before calling Cloudflare. Checking for emptiness was too weak: piping a failed lookup into gh secret set stores the literal null, which is what happened while fixing this.
Also
- •The reviewer’s findings get a second destination. The Intent Document carries them to whoever reviews the pull request, after the fact. The reviewer’s closing message is now the channel back to the session that can still fix the code.
- •The social preview matches the site. Shared links were previewing the previous design.
Commits for this release: v1.0.3…v1.0.4