test(release): boot a board built from the packages just published - #248
Merged
Conversation
0.21.0 was cut to fix a board that rendered raw message keys and had no CSS, and shipped with only the first of the two fixes. A stacked pull request merged into a base that had already merged, so its commits never reached main. Nothing noticed: main was green, the tag was coherent, the packages published, and the notes described a fix that was not in them. It was caught by grepping main by hand before re-pinning the Vercel template. The self-host template drifting three versions behind, serving the same message-keys bug to anyone clicking "Use this template", was the same shape. Every gate in this repository examines the repository. None of them look at what a user downloads. So the release pipeline now scaffolds from the create-meith it just published, installs from the real registry rather than from anything in this tree, and boots the result at both materialization depths — the same three assertions the workspace smoke makes. It runs after the npm job for that reason and `publish` waits on it, so a broken artefact stops the release being announced. It cannot un-publish a bad version and is not meant to; it makes the failure known in minutes rather than after someone deploys it. The boot and its assertions move to scripts/board-boot-check.mts so both smokes share one definition of a board working, rather than the published one drifting into a weaker check than the one it is meant to mirror.
Moving the boot check into its own module left board-workspace-smoke importing the message catalog and node:child_process's spawn for nothing. biome classes an unused import as an unsafe fix, so `biome check --write` reported the file clean and CI's `biome check` did not.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
0.21.0 was cut to fix a board that rendered raw message keys and had no CSS. It shipped with only the first of the two fixes.
A stacked PR merged into a base that had already merged, so its commits never reached
main. Nothing noticed —mainwas green, the tag was coherent, the packages published, and the release notes described a fix that was not in them. It was caught by greppingmainby hand before re-pinning the Vercel template:The self-host template drifting three versions behind, serving that same bug to anyone clicking "Use this template", was the same shape (MEI-136).
Every gate in this repository examines the repository. None look at what a user downloads.
What this adds
scripts/published-board-smoke.mtsscaffolds withnpx create-meith@$MEITH_VERSION— from the real registry, not from packed tarballs or anything in this tree — installs, and boots at both materialization depths, with the same three assertions the workspace smoke makes: renders<main>, no message key reaches the page as text, and the stylesheet carries rules for classes only the installed packages produce.It runs as a release job after
npm, andpublishnow waits on it:It cannot un-publish a bad version, and is not meant to. What it can do is stop the release being announced and tell you within minutes, rather than after somebody deploys it. Both failures above would have been caught.
The shared module
The boot and its assertions move to
scripts/board-boot-check.mts, used by both smokes. Without that the published smoke would drift into a weaker check than the one it exists to mirror — which is exactly the failure mode this week has been about.board-workspace-smoke.mtsloses 86 lines and gains nothing else.Verification
The new job was run for real, against the live 0.21.2 packages on npm — not simulated, not reasoned about:
The existing smoke passes unchanged against the refactored module, both depths — the regression that mattered, since this moved code it depends on:
Also:
npx tsc --noEmitclean;docs:links:checkandci:parity:checkpass; biome clean;release.ymlparses and the job graph is as drawn above.Both local runs used PGlite over the wire protocol, since this box has no Docker — CI uses a real
postgres:18-alpine.Fixes MEI-137.