Speed up import checks, localization extraction, and CI typechecking (#27727)

* Skip unnecessary compatibility-boundary parsing and benchmark it in CI

* Use pinned preflight Bun for compatibility checks and localization extraction

* Measure two concurrent Bun projects in full preflight and update its scope test
This commit is contained in:
Neil
2026-10-11 20:43:34 -07:00
committed by GitHub
parent b4aae49de8
commit 1d571e67ec
7 changed files with 323 additions and 4 deletions
+4 -3
View File
@@ -290,7 +290,7 @@ jobs:
PREFLIGHT_PRIOR_SUCCESS: ${{ job.status == 'success' }}
run: |
if [ "$PREFLIGHT_PHASE_SELECTED" != true ] || [ "$PREFLIGHT_PRIOR_SUCCESS" != true ]; then exit 0; fi
pnpm run typecheck:ci
pnpm run typecheck:ci --bun-concurrency=2 --bun-threads=2
- name: Check Zustand selector fan-out budget
if: needs.code_paths.outputs.static_analysis == 'true'
@@ -348,7 +348,7 @@ jobs:
- name: Check compatibility-folder imports
if: needs.code_paths.outputs.static_analysis == 'true'
run: pnpm run check:compat-boundary-imports
run: bun config/scripts/check-compat-boundary-imports.mjs
- name: Check Node runtime pin
if: needs.code_paths.outputs.static_analysis == 'true'
@@ -356,6 +356,7 @@ jobs:
# Why: extraction writes sorted evidence to an isolated temporary path,
# so feature PRs need one normalized AST pass rather than a three-OS matrix.
# Use preflight's pinned Bun even when the optional local pin differs.
- name: Verify localization extraction
if: '!cancelled()'
id: localization-extraction
@@ -372,7 +373,7 @@ jobs:
scope="$(node config/scripts/localization-extraction-change-scope.mjs "$RUNNER_TEMP/localization-changes")" && [ "$scope" = false ]; then
echo "Localization extraction inputs are unchanged."
else
pnpm run verify:localization-extraction
bun config/scripts/verify-localization-extraction.mjs
fi
# Why both: the ratchet proves nothing reachable from the runtime imports electron,
+45
View File
@@ -58,3 +58,48 @@ jobs:
name: preflight-static-analysis
path: .build/preflight-benchmark/
retention-days: 30
compatibility-imports:
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 2
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: none
node-version: '24'
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.4.3
- name: Compare compatibility-import scan and runtimes
run: node config/scripts/benchmark-preflight-compat-boundary.mjs
- uses: actions/upload-artifact@v7
if: always()
with:
name: preflight-compat-boundary
path: .build/preflight-benchmark/
retention-days: 30
localization-extraction:
runs-on: ubuntu-24.04-arm
timeout-minutes: 12
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: ./.github/actions/install-node-dependencies
with:
native-runtime: none
node-version: '24'
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.4.3
- name: Compare localization extraction runtimes and complete catalogs
run: node config/scripts/benchmark-preflight-localization-extraction.mjs
- uses: actions/upload-artifact@v7
if: always()
with:
name: preflight-localization-extraction
path: .build/preflight-benchmark/
retention-days: 30