From 17cea8f49ed10364ec557823b811b61927ef7b0f Mon Sep 17 00:00:00 2001 From: Diego Rodrigues de Sa e Souza <8016841+diegosouzapw@users.noreply.github.com> Date: Tue, 14 Jul 2026 07:09:20 -0300 Subject: [PATCH] feat(ci): TypeScript 7 native shadow for typecheck:core (WS4.2, advisory) (#7091) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- .github/workflows/quality.yml | 14 ++++++++++++++ changelog.d/maintenance/ts7-shadow-typecheck.md | 1 + 2 files changed, 15 insertions(+) create mode 100644 changelog.d/maintenance/ts7-shadow-typecheck.md diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index f6cdbe4d98..013c2e5ca6 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -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 diff --git a/changelog.d/maintenance/ts7-shadow-typecheck.md b/changelog.d/maintenance/ts7-shadow-typecheck.md new file mode 100644 index 0000000000..e73b70f8de --- /dev/null +++ b/changelog.d/maintenance/ts7-shadow-typecheck.md @@ -0,0 +1 @@ +- **CI**: TypeScript 7 (native compiler, GA 2026-07-08) now runs as an advisory SHADOW of the blocking `typecheck:core` gate on the fast path — same tsconfig, isolated `npx` (no dependency change; the Compiler API only lands in TS 7.1, so typescript-eslint/type-coverage/Stryker stay on 6.x). Local parity proven (0 errors on both, exit 0); promotion to the blocking gate after ~1 week of CI parity