Skip to content

chore(centaur-client): give the package a typecheck script so pnpm check covers it#553

Merged
gbasin merged 1 commit into
masterfrom
chore/cc-typecheck
Jul 16, 2026
Merged

chore(centaur-client): give the package a typecheck script so pnpm check covers it#553
gbasin merged 1 commit into
masterfrom
chore/cc-typecheck

Conversation

@gbasin

@gbasin gbasin commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

centaur-client was the only workspace package with no typecheck script. pnpm -r typecheck skips a package that lacks the script rather than failing, so pnpm check — the pre-PR bar CLAUDE.md tells you to run — has never typechecked this package at all. Its types were only ever checked by build (bare tsc -p tsconfig.json, whose include covers src/**/*.ts and therefore *.test.ts), which runs only in CI's Surface static job.

That is exactly how #545 shipped a red build: vitest doesn't typecheck, so a type error in a test file was invisible to every gate a human runs locally and only surfaced in CI.

src/toolDisplay.test.ts(5,82): error TS2741: Property 'executionId' is missing in type
'{ type: "tool_call"; ... }' but required in type 'ToolCallItem'.

Verification

Re-introduced that exact error on this branch and ran the gate that previously missed it:

  • with the bugpnpm -r typecheck prints centaur-client typecheck: Failed + the TS2741, exits 2
  • without it → exits 0
  • pnpm --filter @atrium/centaur-client typecheck leaves no dist/; build still emits it (--noEmit because build owns outDir + declaration — a typecheck shouldn't race it for artifacts)
  • pnpm lint clean

Note

build and typecheck now both compile the same project, so the work is duplicated in CI. That's deliberate: build exists to produce dist for publishing, typecheck exists to be part of pnpm check. Collapsing them would mean either pnpm check writes build artifacts or Surface static stops producing them.

…eck covers it

centaur-client was the only workspace package without a typecheck script.
pnpm -r typecheck skips a package that lacks the script rather than
failing, so pnpm check -- the pre-PR bar in CLAUDE.md -- never
typechecked this package at all. Its types were only ever checked by
build (bare tsc, whose include covers *.test.ts), which runs solely in
CI's Surface static job.

That is how #545 shipped a red build: vitest does not typecheck, so a
test-file type error was invisible to every gate a human runs locally.

--noEmit because build already owns dist (outDir + declaration); a
typecheck should not race it for build artifacts.
@gbasin
gbasin added this pull request to the merge queue Jul 16, 2026
Merged via the queue into master with commit 2044316 Jul 16, 2026
16 checks passed
@gbasin
gbasin deleted the chore/cc-typecheck branch July 16, 2026 21:38
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.

1 participant