From 29b9beb7b458c8754df5ba32f0f0b0b4e1f495d3 Mon Sep 17 00:00:00 2001 From: Kai Schwarz Date: Fri, 28 Aug 2026 21:54:01 +0200 Subject: [PATCH] build(pnpm): move devEngines onFail to warn so npm and action-setup both work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit devEngines.packageManager keeps the single-object form and moves from onFail "error" to "warn", matching the canonical value in .github/node-policy.conf in rtldev-middleware-workspace. "error" is what this field is for, and we do not get to have it. npm enforces the declaration against ITSELF on every command, not just install: with "error", `npm whoami` exits EBADDEVENGINES, and @semantic-release/npm calls exactly that in verifyConditions before it can authenticate. That made every publishing repository unreleasable the moment the field was adopted. The array form the spec allows — pnpm strictly plus npm by name — satisfies npm and was tried first. pnpm/action-setup cannot read it: its check is literally `devEngines.packageManager.name === "pnpm" && .version`, so an array falls through to "No pnpm version is specified" and nothing installs. True as of v6.0.10, the latest. So the object form is forced by action-setup and "warn" is forced by npm. pnpm now prints [WARN] rather than [ERROR] on a version outside the range and proceeds — the cost is recorded in node-policy.conf, and restoring "error" is filed separately. No lockfile change: the pnpm entry's name and version are untouched. RSRMID-3008 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a8d2d20..6e9e431 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "packageManager": { "name": "pnpm", "version": "^11.0.0", - "onFail": "error" + "onFail": "warn" } }, "homepage": "https://github.com/centralnicgroup-opensource/rtldev-middleware-python-sdk",