Skip to content

fix(release): publish the MCP registry entry after the release is public - #1584

Merged
DeusData merged 1 commit into
mainfrom
fix/registry-publish-ordering
Aug 13, 2026
Merged

fix(release): publish the MCP registry entry after the release is public#1584
DeusData merged 1 commit into
mainfrom
fix/registry-publish-ordering

Conversation

@DeusData

Copy link
Copy Markdown
Owner

v0.10.3 published and then failed its registry step:

MCPB package '...codebase-memory-mcp-darwin-amd64.mcpb' is not publicly accessible (status: 404)

publish-mcp-registry and publish-final both needed only publish-registries, so they ran in parallel — and publish-final is the job that un-drafts the release. The registry validates every package URL it is handed by fetching it, and a draft release's assets are not publicly readable. It lost the race by five seconds; the same URL served 200 once the release went public, and the job passed on a plain re-run.

Fix: the registry now needs: [publish-registries, publish-final]. This preserves the documented intent exactly — publish-final still does not depend on the registry, so a registry outage can never block shipping. The registry just runs after the assets it validates actually exist publicly.

Contract: test_release_gate_chain_contract.sh now pins both directions, since either alone is a bug — the registry must depend on publish-final, and publish-final must never depend on the registry. Revert-checked: reverting the ordering reproduces the exact v0.10.3 failure as a red contract.

Note this is the second latent defect the .mcpb path produced on its first real release (after the security-strings audit treating a manifest as a compiled binary). Both were invisible until a stable release ran — an end-to-end bundle gate is worth adding before the next one.

v0.10.3 published, then failed:

    MCPB package '...codebase-memory-mcp-darwin-amd64.mcpb' is not publicly
    accessible (status: 404)

publish-mcp-registry and publish-final both needed only publish-registries, so
they ran in PARALLEL — and publish-final is the job that un-drafts the release.
The registry validates every package URL it is handed by fetching it, and a
draft release's assets are not publicly readable. The registry lost the race by
five seconds; the identical URL served 200 once the release went public, and the
job passed on a plain re-run.

The registry now needs publish-final. This keeps the documented intent exactly:
publish-final still does NOT depend on the registry, so a registry-preview
outage can never block shipping — the registry simply runs after the assets it
validates exist to the outside world.

The gate-chain contract now pins BOTH directions, because either one alone is a
bug: the registry must depend on publish-final, and publish-final must never
depend on the registry. Verified by reverting the ordering — the contract goes
red with the exact v0.10.3 failure, and green again with it restored.

This is the second latent defect the .mcpb path produced on its first real
release (after the security-strings audit treating a manifest as a binary).
Both were invisible until a stable release ran; an end-to-end bundle gate is
worth adding before the next one.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData
DeusData merged commit 783482f into main Aug 13, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant