build: fail the release when smoke tests fail #108
Reference in New Issue
Block a user
Delete Branch "fix/release-fails-on-smoke"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
release.shran the smoke suite, printedWARNING: Smoke tests failed!and exited 0.That is exactly how four broken readiness probes shipped unnoticed on 2026-08-10 — the warning scrolled past in the build log and the release reported success.
docsand the smoke fixture had no probe at all,my-home-assistantpointed at a tool the upstream had renamed, anddocmostwas 401'ing on a stale password. Nothing failed.Fix
Exit 1, with
MCPCTL_ALLOW_SMOKE_FAILURE=1as the escape hatch.The message is deliberately explicit about what the gate does not do: smoke runs last, against the installed binary, so the package is already published and installed by the time it fails. It reports fleet breakage rather than preventing a bad artifact — so investigate the fleet, don't assume the build is bad and re-run.
The hang that had to be fixed first
Turning the gate on would have blocked every release, because one smoke test hung.
security.test.ts > /inspect SSE endpoint is accessible without authenticationwaited for a response body that by design never ends. It could only settle via the socket's inactivity timeout — and/inspectrelays every project's MCP traffic, so during a full smoke run it is never idle. Run alone it passed and looked flaky; run with the suite it failed every time.httpRequestgains aheadersOnlyoption that resolves on the response headers and hangs up. The assertion only ever needed the status line, so this is both correct and load-independent.Verification
release.shand run with a stubbed failing smoke command: exits 1 and stops the script.MCPCTL_ALLOW_SMOKE_FAILURE=1: exits 0 and reaches the code after the gate.