test(ci): tsc --noEmit release-gate guard (close the build-break gap)#23
Merged
Conversation
run-all.sh runs vitest, which does not typecheck — so a tsc error (and the stale committed dist/ from a failed `tsc && bundle`) slipped through the ALL-GREEN gate. That is how the 0.24.7 EDGE_TYPES cast broke the build yet shipped in 0.24.7 and 0.24.8. New tests/test-mcp-typecheck.sh makes the gate fail on a type error. Verified watch-it-fail: passes clean, fails on an injected type error, passes again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR strengthens the repository’s “ALL GREEN” release gate by adding an explicit TypeScript typecheck step for the mcp/ package, preventing a repeat of “vitest passes but tsc fails” situations that can leave a stale committed dist/ unnoticed.
Changes:
- Add
tests/test-mcp-typecheck.shto runmcp/’stsc --noEmitas part of thetests/test-*.shrelease-gate glob (with clean SKIP behavior when prerequisites aren’t present). - Document the new 0.24.10 upgrade/migration row in
skills/upgrade/SKILL.md. - Bump plugin version to
0.24.10in bothplugin.jsonandmarketplace.json.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| tests/test-mcp-typecheck.sh | Adds a shell guard that runs tsc --noEmit in mcp/ to ensure the release gate catches type errors. |
| skills/upgrade/SKILL.md | Records the 0.24.10 “typecheck guard” entry in the upgrade migration table. |
| .claude-plugin/plugin.json | Version bump to 0.24.10. |
| .claude-plugin/marketplace.json | Version bump to 0.24.10 to match plugin.json. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Close the gate gap that let two broken builds ship
tests/run-all.sh— the "ALL GREEN" release gate — runs vitest, which transpiles per-file and does not typecheck the project. So a realtscerror, plus the stale committeddist/left behind whennpm run build(tsc && bundle) fails, slipped through invisibly.That is exactly how the 0.24.7
EDGE_TYPESzod-enum cast (as [string, ...]) broke the build yet shipped in both 0.24.7 and 0.24.8 — only caught during SP-1 when the bundle was rebuilt.Fix
New
tests/test-mcp-typecheck.shrunstsc --noEmit:dist/).nodeor the localtypescriptis absent (a fresh checkout withoutnpm ciwon't hard-fail).test-*.shglob, so the gate now fails on a type error.Closes the "validate the real capability" gap — the gate was testing a cheap proxy (vitest), not the real
npm run build.Verification (watch-it-fail)
TS2322).Full suite green: 78 pass / 0 fail / 1 known skip.
Test-only — no state migration, no MCP change. Plugin 0.24.9 → 0.24.10 + migration row.
🤖 Generated with Claude Code