feat(ci): TypeScript 7 native shadow for typecheck:core (WS4.2, advisory) (#7091)

TS7 went GA 2026-07-08 (native Go compiler). Hybrid adoption is the officially
documented pattern: the Compiler API only arrives in 7.1, so typescript-eslint,
type-coverage and the Stryker checker must stay on typescript 6.x — only the
pure type-check gate can move. This adds an ADVISORY shadow step to the
fast-gates job running the SAME tsconfig.typecheck-core.json under TS7 via an
isolated npx (deliberately NOT a dependency: an alias install could collide
node_modules/.bin/tsc with 6.x and silently swap the blocking gate's binary).

Live parity evidence (this tree): TS7 exit 0 / 0 errors vs TS6 exit 0 / 0
errors — identical verdicts. Local wall: 25s -> 19s (warm dev box; upstream
reports 8-12x on cold/large runs — the shadow exists to measure OUR CI number).
Promotion to blocking after ~1 week of parity, per the v3.8.49 plan.
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-07-14 07:09:20 -03:00
committed by GitHub
parent 4505e67c04
commit 17cea8f49e
2 changed files with 15 additions and 0 deletions

View File

@@ -143,6 +143,20 @@ jobs:
- run: npm run check:complexity-ratchets
- name: Typecheck (core)
run: npm run typecheck:core
# WS4.2 (v3.8.49 plan): TypeScript 7 native-compiler SHADOW — advisory only.
# TS7 went GA 2026-07-08 with 8-12x type-check speedups; its Compiler API only
# arrives in 7.1, so typescript-eslint / type-coverage / Stryker stay on 6.x
# (the hybrid is the officially documented pattern). Isolated npx on purpose:
# installing an alias package could collide node_modules/.bin/tsc with 6.x.
# Promote to the blocking gate after ~1 week of parity with the step above.
- name: Typecheck (core) — TS7 native shadow (advisory)
continue-on-error: true
run: |
RC=0
START=$(date +%s)
npx -y -p typescript@7 tsc --pretty false -p tsconfig.typecheck-core.json || RC=$?
echo "[ts7-shadow] exit=$RC elapsed=$(( $(date +%s) - START ))s — the 6.x step above stays authoritative"
exit $RC
# TIA: build the impact map at runtime (gitignored, ~21MB) and run only the
# unit tests impacted by this PR's changed files. On hub/unmapped changes the
# selector returns __RUN_ALL__ — full-suite authority is the parallel