@@ -75,19 +75,27 @@ jobs:
7575
7676 - name : Build Packages
7777 run : pnpm run build
78+ env :
79+ # Publish checks are comparatively expensive and only need to run once
80+ # as part of the lint/static-check gate.
81+ RSTEST_PUBLISH_CHECK : true
7882
7983 - name : Lint
8084 run : pnpm run lint
8185
8286 - name : Check Dependency Version
8387 run : pnpm run check-dependency-version
8488
85- - name : Check pnpm Dedupe
86- run : pnpm dedupe --check --config.minimum-release-age=0
87-
8889 - name : Check Unused Code
8990 run : pnpm run check-unused
9091
92+ - name : Check pnpm Dedupe
93+ # Keep dedupe last: `pnpm dedupe --check` may leave pnpm's modules
94+ # state needing a reconcile. If another `pnpm run ...` follows it,
95+ # pnpm can enter its implicit install path and rerun lifecycle scripts
96+ # such as the root `prepare`.
97+ run : pnpm dedupe --check --config.minimum-release-age=0
98+
9199 # ======== ut ========
92100 ut :
93101 # Gate behind lint so a lint failure skips the (billed-premium) macOS +
@@ -129,13 +137,6 @@ jobs:
129137 - name : Setup Playwright
130138 uses : ./.github/actions/setup-playwright
131139
132- - name : Run Type Check
133- # tsc is OS-independent, so PR runs it on macOS only; the post-merge
134- # FULL run still typechecks both OSes so push-to-main stays a literal
135- # superset of PR coverage.
136- if : needs.prepare.outputs.is_full_run == 'true' || matrix.os == 'macos-latest'
137- run : pnpm run typecheck
138-
139140 - name : Run Test
140141 run : pnpm run test
141142
0 commit comments