Repository navigation
fix(scripts): spell pnpm flags so a global pnpm 11+/12 frontend parses them (--config.production=false, --silent) - #23777
Merged
Conversation
wip Claude-Session: https://claude.ai/code/session_local_00307fb7-db7a-4ba8-84c3-65a062e8a14d Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
hotlong
marked this pull request as ready for review
October 16, 2026 03:27
hotlong
enabled auto-merge
October 16, 2026 03:28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A contributor whose globally installed pnpm is a newer
@pnpm/exefrontend (11.x / 12.x) cannot getpnpm devpastcheck:console-shaonce the objectui pin moves. The repo pinspackageManager: pnpm@10.31.0, andpnpm --versiondutifully reports10.31.0— but the new frontend parses the argv itself (clap-style) before it hands off to the pinned version, and it rejects two spellings this repo's scripts use:pnpm install … --prod=falsescripts/build-console.sh(pnpm objectui:build)error: unexpected value 'false' for '--prod' found; no more were expected— exit 2, nothing installedpnpm -s SCRIPTpackages/spec/scripts/check-generated.ts(everycheck:generatedgate),scripts/check-regen-pending.mjs(thepre-commitregen gate),ownerRunCommand({ silent })error: unexpected argument '-s' found— exit 2, which those callers read as "stale"CI never sees it: Corepack runs the real pnpm 10.31 binary directly, which accepts all of these.
Change
build-console.sh:--prod=false→--config.production=false.pnpm -s→pnpm --silent(the long form of the same flag):check-generated.ts,check-regen-pending.mjs,regen-artifacts.mjsownerRunCommand, and the self-test pin for it ingit-merge-regen.mjs. Comments that describe the spawn follow; two comments that record a historical measurement taken withpnpm -sare left as written.dispatch-gates.mjsnamespnpm -s ${script}as a live specimen of the shell-form class; the specimen and its self-test fixture string now read--silent.No workflow change: every
.github/workflows/**call already spells--silent.Evidence
All probes in a scratch workspace pinned to
packageManager: pnpm@10.31.0, run with both binaries: OLD = the real pnpm 10.31.0@pnpm/exebinary (what CI runs), NEW = the global@pnpm/exe12.3.4 frontend.Install: which spelling parses on both AND still installs devDependencies. One
dependency+ onedevDependency;dev=is whether the devDependency landed. First, the controls — what actually turns production mode on under pnpm 10.31 (measured, OLD, no flag):NODE_ENV=productionnpm_config_production=true.npmrcproduction=true--prodThen each candidate, against the two contexts that do skip devDependencies (identical rows for both contexts, so shown once):
--prod=false--production=false--no-production--no-prod--config.production=false--config.production=falseis chosen over--no-prodbecause the new frontend's own help documents--config.KEY=VALUEas a universal rc-option, and it names the exact setting being overridden.Run:
--silentis byte-identical to-s. For a root script and a--filtered one, each both passing and failing (exit 3 / 4): stdout, stderr and exit code ofOLD -scompared withcmpagainstOLD --silentandNEW --silent— 8/8 identical (--reporter=silentalso 8/8). Control:-svs no flag differs, so the comparison is live.--loglevel=silentis NOT equivalent (still prints the> pkg scriptheader).Sweep: nothing else the repo spells is rejected. Every other option shape the repo's scripts pass to pnpm (
--filter/--filter=,-r list --depth -1 --json,exec … -e, trailing script args such as--maxWorkers=2 --update -e x,run x -- --y,install --no-frozen-lockfile/--offline,pack --pack-destination … --silent,store path --silent,-v) parses identically under OLD and NEW.Repo, under the global 12.3.4 shim, no PATH workaround (
command -v pnpm→~/Library/pnpm/bin/pnpm):0326b32952)pnpm objectui:buildPackages: +1566, devDependencies included), console dist built;pnpm check:console-shathen passes, sopnpm devgets past itpnpm --filter @objectstack/spec check:generatedunexpected argument '-s'node scripts/check-regen-pending.mjs --self-testnode scripts/git-merge-regen.mjs --self-testnode scripts/pm/dispatch-gates.mjs --self-testThe "before" column is the same command with only the touched file restored from
maininto the working tree, after the fix was committed.Repo, under the real pnpm 10.31.0 binary first on PATH (what CI runs):
check:generatedrc 0 (14/14),pnpm check:merge-driverrc 0,pnpm objectui:buildrc 0. (In that run the objectui install was a no-op over the already-populated cache tree; the install semantics under 10.31 are the scratch table above.)eslintover the six changed JS/TS files: clean.bash -n scripts/build-console.sh: clean.Notes
scripts/**andpackages/spec/scripts/**change, and neither ships in any published package (@objectstack/spec'sfilesdoes not includescripts/) —skip-changeset.Generated by Claude Code