You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The respec build step fails on every CI run for w3c/gamepad going back to at least 2026-02-13, both on pull_request and on push to gh-pages. The annotation is:
src/build.ts then calls await sh('respec ...'). I checked both PUPPETEER_ENV (src/constants.ts) and sh (src/utils.ts) and neither touches PATH — sh uses child_process.exec with { ...process.env, ...execOptions.env }. So the respec lookup falls through to whatever PATH the action runner inherits from pnpm/action-setup and actions/setup-node.
If pnpm add respec is silently failing or the resulting binary isn't on PATH under newer pnpm (the major jump to 10.x landed in #210, with further bumps in #217 and #225), the downstream respec lookup gets exit 127 with no upstream error surfaced.
Suggested debugging
Make the install() helper throw on a non-zero exit from pnpm add instead of silently returning the output
Log the pnpm add stdout/stderr when the subsequent respec command fails
Happy to test fixes or run additional reproducers.
The respec build step fails on every CI run for
w3c/gamepadgoing back to at least 2026-02-13, both onpull_requestand onpushtogh-pages. The annotation is:Exit 127 means
respecis not on PATH whensrc/build.tsinvokes it as a bare command:https://github.com/w3c/spec-prod/blob/v2.13.0/src/build.ts#L102-L120
Versions confirmed broken
w3c/spec-prod@v2(= v2.13.0)w3c/spec-prod@v2.12.5Same identical failure under both. Also reproduces on push to
gh-pages(https://github.com/w3c/gamepad/actions/runs/25892690820), so it's not PR-specific.In
w3c/gamepad, this has been failing on every PR run and everygh-pagespush since at least 2026-02-13.Local baseline passes
Running ReSpec locally against the same source with the same flags exits 0:
So the spec content is fine — the failure is in how the action installs or locates the
respecbinary.Reproducing workflow
Working hypothesis (please verify)
Looking at the action source (v2.13.0):
src/setup.tscallsinstall("respec", PUPPETEER_ENV)for the ReSpec toolchaininstall()insrc/utils.tsrunspnpm add respecinACTION_DIR, then restores the originalpackage.jsonandpnpm-lock.yamlto fake--no-save(workaround for Update to package.json breaks multi-spec builds #213 / fix: correctly reset pnpm-lock.yaml after package install #218)src/build.tsthen callsawait sh('respec ...'). I checked bothPUPPETEER_ENV(src/constants.ts) andsh(src/utils.ts) and neither touchesPATH—shuseschild_process.execwith{ ...process.env, ...execOptions.env }. So therespeclookup falls through to whatever PATH the action runner inherits frompnpm/action-setupandactions/setup-node.If
pnpm add respecis silently failing or the resulting binary isn't on PATH under newer pnpm (the major jump to 10.x landed in #210, with further bumps in #217 and #225), the downstreamrespeclookup gets exit 127 with no upstream error surfaced.Suggested debugging
install()helper throw on a non-zero exit frompnpm addinstead of silently returning the outputpnpm addstdout/stderr when the subsequentrespeccommand failsHappy to test fixes or run additional reproducers.