fix: repair pnpm-lock.yaml broken by auto-merge collision - #212
Conversation
Three dependabot PRs (#202, #204, #205) squash-merged within seconds on 2026-08-13 textually collided in pnpm-lock.yaml, duplicating the ws@8.21.3 mapping key in both the packages and snapshots sections. pnpm install --frozen-lockfile fails to parse the file (ERR_PNPM_BROKEN_LOCKFILE), so every workflow on main is red. Remove the duplicated blocks, keeping the non-optional snapshot entry (ws@8.21.3 is a non-optional dependency of @expo/cli and isomorphic-ws).
New high advisory (nanoid <3.3.18, infinite loop with size 0) reaches prod via next > postcss > nanoid@3.3.17, unsatisfied by the previous >=3.3.17 override pin. Raise the pin so pnpm audit --prod exits clean again; the remaining image-size pair is already covered by pnpm.auditConfig.ignoreCves.
|
Peer review (automated)Verdict: approve with nits. The core repair is correct and I was able to verify it independently rather than by inspection alone — a pristine Verification performed
The load-bearing question: is
|



Summary
pnpm-lock.yamlonmain, which was left unparseable by the 2026-08-13 auto-merge burst: the Daily PR sweep routine squash-merged three dependabot PRs (chore(deps): bump mako from 1.3.12 to 1.4.1 #205, chore(deps): bump ruff from 0.16.1 to 0.16.2 #204, chore(deps): bump pip from 26.2 to 26.2.1 #202) within ~6 seconds, and the git merges textually collided in the lockfile, duplicating thews@8.21.3mapping key in both thepackagesandsnapshotssections.pnpm install --frozen-lockfilefails withERR_PNPM_BROKEN_LOCKFILE, so Web, Server, and SonarQube are all red onmain. The duplicate blocks are removed, keeping the non-optional snapshot entry (ws@8.21.3is a non-optional dependency of@expo/cliandisomorphic-ws).pnpm.overridesnanoid pin from>=3.3.17to>=3.3.18for the new high advisory GHSA-2v37-7h3g-55p8 (reached vianext > postcss > nanoid@3.3.17), so thepnpm audit --prodCI gate exits clean again. The remaining image-size pair stays covered bypnpm.auditConfig.ignoreCves.The auto-merge routine itself is being updated separately (merges now require an up-to-date branch and serial merging with post-merge main CI verification) so green-on-a-stale-base merges can't corrupt the lockfile again.
Test plan
pnpm install --frozen-lockfile(the exact step failing onmain) passes locallypackages/snapshotssections is cleanuv.lockverified undamaged (parses, no duplicate packages; pip/ruff/mako/starlette bumps intact)pnpm audit --prodexits 0 after the nanoid override bumppnpm verifygreen end-to-end (build, lint, typecheck, coverage 96.7% API, audits)Generated by Claude Code