# npm 10+ rejects transitive peerOptional mismatches by default. The # repo has one: openai@4.x declares peerOptional zod@^3.x, but zod@4.x # is a direct dependency here (used by the request-schema layer in # shared/clinical/). Earlier npm versions ignored peerOptional clashes # automatically; since npm 10 we have to opt-in to that behaviour. # Pinning it here so host installs, CI, and Docker all share one # resolution policy and the lock file stays reproducible. legacy-peer-deps=true