Skip to content

Commit 84cb81a

Browse files
committed
fix: drop --ignore-workspace from test-app:install (defeats #649 security overrides)
The first live run of the layer-3 device path failed at ERR_PNPM_LOCKFILE_CONFIG_MISMATCH, and the cause is a real latent bug rather than a stale lockfile. #649 moved the fixture app's `overrides` into examples/test-app/pnpm-workspace.yaml precisely because pnpm only honors overrides from a workspace root — they pin transitive deps (ws, brace-expansion, xmldom, postcss, uuid, shell-quote) to versions that clear Dependabot alerts. But `test-app:install` passes --ignore-workspace, which ignores that very file, so the overrides are dropped and no longer match the lockfile that has them baked in. It goes unnoticed locally because interactive installs are not frozen, and no CI job has ever installed this app. Dropping --ignore-workspace makes examples/test-app resolve as its own workspace root (it has its own pnpm-workspace.yaml and is not a member of the repo-root workspace), so the overrides apply and a frozen install succeeds. Verified both directions locally: with the flag + --frozen-lockfile reproduces the CI failure; without it, a frozen install completes and the lockfile's overrides stay intact. Note the workaround this replaces would have been actively harmful: installing with --no-frozen-lockfile resolves the mismatch by regenerating the lockfile WITHOUT the overrides, silently reverting the app to the vulnerable transitive versions #649 pinned away.
1 parent 5e48f2e commit 84cb81a

2 files changed

Lines changed: 2 additions & 8 deletions

File tree

.github/workflows/conformance-differential.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,7 @@ jobs:
8181
- name: Build and install the fixture app
8282
run: |
8383
set -euo pipefail
84-
# Not `pnpm test-app:install`: CI implies --frozen-lockfile, and the
85-
# fixture app's lockfile is out of sync with its package.json overrides
86-
# (ERR_PNPM_LOCKFILE_CONFIG_MISMATCH). No CI job has ever built this app,
87-
# so that drift went unnoticed. Install unfrozen here rather than change
88-
# the shared script; the fixture app is a device-test dependency, not a
89-
# shipped artifact.
90-
pnpm install --dir examples/test-app --ignore-workspace --no-frozen-lockfile
84+
pnpm test-app:install
9185
pnpm --dir examples/test-app exec expo run:ios \
9286
--configuration Release \
9387
--device "iPhone 17 Pro" \

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
"check": "pnpm check:tooling && pnpm check:fallow && pnpm check:unit",
134134
"prepack": "pnpm check:mcp-metadata && pnpm build:all && pnpm package:apple-runner:npm && pnpm package:android-snapshot-helper:npm && pnpm package:android-multitouch-helper:npm && pnpm package:android-ime-helper:npm",
135135
"typecheck": "tsc -p tsconfig.json",
136-
"test-app:install": "pnpm install --dir examples/test-app --ignore-workspace",
136+
"test-app:install": "pnpm install --dir examples/test-app",
137137
"test-app:start": "pnpm --dir examples/test-app start",
138138
"test-app:ios": "pnpm --dir examples/test-app ios",
139139
"test-app:android": "pnpm --dir examples/test-app android",

0 commit comments

Comments
 (0)