Uh oh!
There was an error while loading. Please reload this page.
docs(frontend): correct the engine-strict guard — it blocks npm ci too - #493
Conversation
`frontend/.npmrc` claimed engine-strict was a write-path-only guard because "`npm ci` ignores engine-strict in npm >=7". That is false for modern npm. Probed against a minimal package carrying this exact `>=10.9.0 <11` pin, on npm 12.0.1 / node v26.4.0: npm ci -> exit 1, EBADENGINE npm install -> exit 1, EBADENGINE npm_config_engine_strict=false npm ci -> exit 0 It also matches the field evidence: the #113 frontend audit (2026-07-03, npm 11.6.2) had to run `npm_config_engine_strict=false npm ci` — the bypass was needed on the READ path, which the write-path-only story never explained. That session lost time to an empty node_modules and a silently disabled lint gate, because the failure is quiet: lint and typecheck stop being a real gate instead of erroring. - .npmrc: replace the false mechanism block with what engine-strict actually does, the probe result, and the two real unblocks. - README.md: new "If your npm is 11 or newer" section so contributors hit the answer before the empty node_modules. Both keep the never-commit-an-off-pin-lockfile rule prominent — that is what breaks the Cloudflare Workers deploy and the whole reason for the pin. `.github/workflows/ci.yml`'s comment was already correct and is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Deploying with |
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs | frontend-staging | 18b34c2 | Commit Preview URL Branch Preview URL | Jul 31 2026, 06:57 AM |
AndresL230
commented
Jul 31, 2026
Verified independently before merging:
CI green across all lanes including the Workers build. Comments and docs only — no code, no lockfile, no dependency changes. Merging. |
Uh oh!
There was an error while loading. Please reload this page.
Warning Review limit reached
Next review available in:39 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
frontend/.npmrctold contributors thatengine-strict=truewas a write-path-only guard, because "npm ciignores engine-strict in npm >=7". That is false for modern npm.Probed against a minimal package carrying the same
>=10.9.0 <11pin, on npm 12.0.1 / node v26.4.0:engine-strictnpm citrueEBADENGINEnpm installtrueEBADENGINEnpm_config_engine_strict=false npm ciIt also explains a detail the old story never fit: the #113 frontend audit (2026-07-03, npm 11.6.2) had to run
npm_config_engine_strict=false npm **ci**. If the guard were write-path-only, the bypass would not have been needed there at all. That session lost time to an emptynode_modules— the failure is quiet, sonpm run lint/npm run typecheckstop being a real gate instead of erroring.Changes
frontend/.npmrc— replace the false mechanism block with whatengine-strictactually does (both paths), the probe result and date, and the two real unblocks.frontend/README.md— new "If your npm is 11 or newer" section under Run, so a contributor hits the answer before the emptynode_modules.Both keep the never-commit-an-off-pin-lockfile rule prominent — an off-pin lockfile is what breaks the Cloudflare Workers deploy, and the whole reason the pin exists.
.github/workflows/ci.yml's comment (":84 —.npmrcengine-strict=true enforces it duringnpm ci") was already correct and is unchanged.Comments and docs only — no code, no lockfile, no dependency changes.
Follow-up
The live Canopy doc
sapling-frontend-local-devcarries the same false claim; a corrected v2 is staged and needs promotion.🤖 Generated with Claude Code