Why
The benchmark pins specific blend versions (0.0.36, 0.0.37-beta.8, 0.0.37). Twice now, a regression compiled fine on the pinned versions but broke on a newer real one — caught only by ad-hoc downstream validation, after the change was on main:
blend is "the primary downstream target" (blend-rescript regenerates from it), and it moves faster than our pins. A crash-before-emit is also invisible to compile gates (no output to compile), so only running the latest package catches this class.
Proposal
Add a pre-release (and/or scheduled) gate that resolves the latest @juspay/blend-design-system@beta dist-tag, generates bindings with the shipped checkout, and asserts it (a) exits 0 with non-empty output and (b) compiles on ReScript 12. Surface a diff vs the last pinned blend baseline for review. Run it before cutting any release so a "compiles on pinned, crashes on latest" regression is caught before it ships, not after.
Complements pinning the exact failing version as a regression lock (as done for 0.0.38-beta.1 in #199/PR #201) — the pin catches that case forever; this gate catches the next one.
Surfaced during the #198 post-mortem.
Why
The benchmark pins specific blend versions (
0.0.36,0.0.37-beta.8,0.0.37). Twice now, a regression compiled fine on the pinned versions but broke on a newer real one — caught only by ad-hoc downstream validation, after the change was onmain:v100OrV102Or…OrV511OrV1), blocking constrained-generic resolution #190'sfinalizePublicIdsthrow hard-crashed generation (zero output) on blend0.0.38-beta.1's newDeepPartial<ComponentTokenType>token types; the pinned 0.0.36/0.0.37 didn't have that shape, so every gate stayed green.blend is "the primary downstream target" (blend-rescript regenerates from it), and it moves faster than our pins. A crash-before-emit is also invisible to compile gates (no output to compile), so only running the latest package catches this class.
Proposal
Add a pre-release (and/or scheduled) gate that resolves the latest
@juspay/blend-design-system@betadist-tag, generates bindings with the shipped checkout, and asserts it (a) exits 0 with non-empty output and (b) compiles on ReScript 12. Surface a diff vs the last pinned blend baseline for review. Run it before cutting any release so a "compiles on pinned, crashes on latest" regression is caught before it ships, not after.Complements pinning the exact failing version as a regression lock (as done for
0.0.38-beta.1in #199/PR #201) — the pin catches that case forever; this gate catches the next one.Surfaced during the #198 post-mortem.