Skip to content

lint.yml and spec-liveness-check.yml still download pnpm through Corepack per job — 7 of the 24 jobs in a queue build keep the ejection exposure #11300 removes from ci.yml #11369

Description

@os-steve

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:

workflowjobs per buildCorepack sitescovered by #11300
ci.yml177yes
lint.yml65no
spec-liveness-check.yml11no

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:45Z2026-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.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions