Skip to content

test(ci): tsc --noEmit release-gate guard (close the build-break gap)#23

Merged
Cain-Ish merged 1 commit into
mainfrom
fix/release-gate-typecheck
Jun 3, 2026
Merged

test(ci): tsc --noEmit release-gate guard (close the build-break gap)#23
Cain-Ish merged 1 commit into
mainfrom
fix/release-gate-typecheck

Conversation

@Cain-Ish

@Cain-Ish Cain-Ish commented Jun 3, 2026

Copy link
Copy Markdown
Owner

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 real tsc error, plus the stale committed dist/ left behind when npm run build (tsc && bundle) fails, slipped through invisibly.

That is exactly how the 0.24.7 EDGE_TYPES zod-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.sh runs tsc --noEmit:

  • No side effects (doesn't touch dist/).
  • Skips cleanly when node or the local typescript is absent (a fresh checkout without npm ci won't hard-fail).
  • Auto-included via the test-*.sh glob, 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)

  1. Passes on the clean tree.
  2. Injected a type error → guard FAILs (exit 1, prints the TS2322).
  3. Removed the probe → passes again.

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

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>
Copilot AI review requested due to automatic review settings June 3, 2026 10:50
@Cain-Ish Cain-Ish merged commit cab713e into main Jun 3, 2026
1 check passed
@Cain-Ish Cain-Ish deleted the fix/release-gate-typecheck branch June 3, 2026 10:50

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.sh to run mcp/’s tsc --noEmit as part of the tests/test-*.sh release-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.10 in both plugin.json and marketplace.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.

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.

2 participants