Filed unassigned by the dev seat working #11300. ⛔ Not fixed there: #11300's declared file surface was .github/workflows/ci.yml + .github/actions/**, and these sites live outside it.
Blocked-by:#11300 — the composite action this card would adopt (.github/actions/setup-pnpm) is introduced by that PR.
What is left exposed
A merge-queue build is 3 workflow runs on one queue sha, measured at 24 jobs total:
| workflow | jobs per build | Corepack sites | covered by #11300 |
|---|
ci.yml | 17 | 7 | yes |
lint.yml | 6 | 5 | no |
spec-liveness-check.yml | 1 | 1 | no |
So after #11300 lands, 7 of 24 jobs in every queue build still fetch pnpm-10.31.0.tgz from registry.npmjs.org before doing any work, each an independent chance to eject the PR and force every PR behind it to rebuild.
Sites, measured at origin/mainb863f01:
lint.yml:60 :2363 :2922 :3099 :3294 corepack enable (5)
lint.yml:2365 :2924 :3101 :3295 Verify pnpm version (4 — :60 is unpaired)
spec-liveness-check.yml:49 corepack enable (1, unpaired)
Same asymmetry as ci.yml had: the unpaired sites still download, they just do it inside a differently-named step, so a signature keyed on Verify pnpm version under-reports them.
Evidence this is the same defect
Measured over merge_group runs 2026-08-21T00:45Z → 2026-08-23T09:02Z: 5 jobs across 4 runs died materialising pnpm, out of 230 failed jobs. One of the four failing runs was a Lint & Type Check ejection, i.e. this is not hypothetical for the sibling workflows.
Two terminal symptoms observed, both inside Corepack's fetch:
AssertionError [ERR_ASSERTION]: assert(!this.paused)
at Parser.finish (node:internal/deps/undici/undici:6165:9)
Error: Client network socket disconnected before secure TLS connection was
established { code: 'ECONNRESET', host: 'registry.npmjs.org' }
Suggested shape
Adopt .github/actions/setup-pnpm at all 6 remaining sites, exactly as ci.yml does:
- name: Setup pnpmuses: ./.github/actions/setup-pnpm
⚠️Keep each caller's own actions/setup-node step with its literal node-version pin.scripts/check-node-version.mjs scans .github/workflows/*.ymlonly and reports how many setup-node steps it audited (currently OK (32 setup-node step(s) across 26 workflow(s))). Moving those steps into the composite would drop them from its census while it still printed OK — a gate silently auditing less than it claims. That constraint is why #11300 left setup-node in place, and it applies identically here.
Dedup
Searched before filing: no open card covers the sibling workflows. #11300 is the only live card on this defect and is scoped to ci.yml by its own claim comment.
Filed unassigned by the dev seat working #11300. ⛔ Not fixed there: #11300's declared file surface was
.github/workflows/ci.yml+.github/actions/**, and these sites live outside it.Blocked-by:#11300 — the composite action this card would adopt (.github/actions/setup-pnpm) is introduced by that PR.What is left exposed
A merge-queue build is 3 workflow runs on one queue sha, measured at 24 jobs total:
ci.ymllint.ymlspec-liveness-check.ymlSo after #11300 lands, 7 of 24 jobs in every queue build still fetch
pnpm-10.31.0.tgzfromregistry.npmjs.orgbefore doing any work, each an independent chance to eject the PR and force every PR behind it to rebuild.Sites, measured at
origin/mainb863f01:Same asymmetry as
ci.ymlhad: the unpaired sites still download, they just do it inside a differently-named step, so a signature keyed onVerify pnpm versionunder-reports them.Evidence this is the same defect
Measured over
merge_groupruns2026-08-21T00:45Z→2026-08-23T09:02Z: 5 jobs across 4 runs died materialising pnpm, out of 230 failed jobs. One of the four failing runs was aLint & Type Checkejection, i.e. this is not hypothetical for the sibling workflows.Two terminal symptoms observed, both inside Corepack's fetch:
Suggested shape
Adopt
.github/actions/setup-pnpmat all 6 remaining sites, exactly asci.ymldoes:actions/setup-nodestep with its literalnode-versionpin.scripts/check-node-version.mjsscans.github/workflows/*.ymlonly and reports how many setup-node steps it audited (currentlyOK (32 setup-node step(s) across 26 workflow(s))). Moving those steps into the composite would drop them from its census while it still printedOK— a gate silently auditing less than it claims. That constraint is why #11300 leftsetup-nodein place, and it applies identically here.Dedup
Searched before filing: no open card covers the sibling workflows. #11300 is the only live card on this defect and is scoped to
ci.ymlby its own claim comment.