Skip to content

ci: track root causes and restore CI on latest, release/v11, and release/v10 #10027

Closed
10 of 10 issues completed
Closed

Description

@reggi

Purpose

Track restoration of CI and post-release integration on latest, release/v11, and release/v10. Group failures by verified cause, not by runtime or job name. Distinguish a merged fix, a published dependency, a passing job, and verified execution of the affected tests.

Current verified baseline — November 5, 2026

These are the latest completed Release runs on each branch, all at attempt 1. The inventory below accounts for all 13 failed jobs: 7 on latest, 3 on v11, and 3 on v10. This replaces the September/October runs as the current failure baseline.

Branch Release / commit Release run Failed jobs Same-commit ordinary CI
latest npm 12.2.2 / 60e11343e61316d966c86805d803df5a0eb99230 41936963652 7 Passed
release/v11 npm 11.21.2 / 1c66798c9def37e12509ccebb5b08cddf247c2e8 41928067609 3 Passed
release/v10 npm 10.9.10 / 74df09b1d399535aeffcde3489648f3a89a273e5 41900373307 3 Passed

These Release failures are downstream integration failures, not evidence that npm package publication failed. A green ordinary CI run does not exercise the complete Release Integration matrix. Dependent jobs skipped after a failed build are not counted as failures or passing coverage.

Every current failed job and its coverage

All job links below belong to Release / Release Integration / publish (...).

Branch Runtime / failed job Verified error Owner / proposed coverage
v11 22: test nodejs Python stdout flush raises BlockingIOError: [Errno 11]; addon header build exits 120 Gap A, tracker-owned; not covered by #10235 or a CITGM change
v11 23: build nodejs@23 npm@11.21.2 Node configure finds Python 3.14.4 but accepts only Python 3.8–3.13 Gap B, tracker-owned; not covered by #10235
v11 nightly: microtime@3.1.1 node-gyp 9.4.1 tries to install headers for v28.0.0-pre instead of using configured headers #10065; header transport in #10235; alternative removal proposed in nodejs/citgm#1199
v10 18: build nodejs@18 npm@10.9.10 Node configure finds Python 3.14.4 but accepts only Python 3.6–3.13 Gap B, tracker-owned; requires v10 coverage
v10 20: test nodejs tools/install.py fails while printing installed header paths with BlockingIOError: [Errno 11]; addon header build exits 120 Gap A, tracker-owned; requires v10 coverage
v10 nightly: test npm Strict no-args smoke stderr assertion sees the unsupported-engine warning for v28.0.0-pre; aggregation later exits with literal STEPEXIT #10064 plus tracker aggregation follow-up; Gap C, missing v10 startup/aggregation backports
latest 22: JSONStream@1.3.5 EALLOWGIT fetching JSONStream's fomatto Git dependency during installation #10026; requires both nodejs/citgm#1158 publication/consumption and install-time environment propagation in #10234
latest 22: test nodejs Python stdout flush raises BlockingIOError: [Errno 11]; addon header build exits 120 Gap A, tracker-owned; not covered by #10234
latest 24: JSONStream@1.3.5 Same install-time EALLOWGIT #10026; same two-part dependency as Node 22
latest 24: test nodejs Python stdout flush raises BlockingIOError: [Errno 11]; addon header build exits 120 Gap A, tracker-owned; not covered by #10234
latest 26: JSONStream@1.3.5 Same install-time EALLOWGIT #10026; same two-part dependency as Node 22
latest nightly: JSONStream@1.3.5 Same install-time EALLOWGIT #10026; same two-part dependency as Node 22
latest nightly: microtime@3.1.1 node-gyp 9.4.1 tries to install headers for v28.0.0-pre #10065; header transport in #10234; alternative removal proposed in nodejs/citgm#1199

Uncovered work

  • Gap A — Node test header-install stdout failures (four jobs across all three branches). Preserve the Node/addon test coverage and investigate/correct the stdout transport used by the Python header installer. The shared observed failure is nonblocking stdout/flush, not a CITGM fixture failure. Do not attribute the initiating runner behavior to a particular Python or runner release without evidence. Subsequent ccache deletion errors (Resource not accessible by integration) are cleanup errors, not the first failure.
  • Gap B — Python version compatibility for older Node source builds (v11/23 and v10/18). Select a supported Python for the affected configure/build and test steps, keeping source templates and generated workflows aligned. Source-download retries cannot fix configure rejecting Python 3.14.4.
  • Gap C — v10 nightly startup and result aggregation. release/v10 still calls semver.satisfies without includePrerelease: true; fix: accept supported Node.js prereleases at startup #10175 and its v11 backport fix: accept supported Node.js prereleases at startup #10195 do not cover v10. Backport the supported-prerelease startup behavior and numeric exit/discovery handling; preserve strict smoke stderr assertions.
  • Prepare a branch-appropriate ci-integration-v10 patch and assess additional corrections for chore: restore release integration #10234/chore: restore release integration (v11) #10235. No v10 integration PR currently exists for these gaps, and neither existing integration PR claims to solve all 13 jobs.

Gaps A and B are explicitly owned by this tracker pending dedicated child issues/patches. Gap C reuses #10064 rather than inventing a separate issue for the same assertion on another branch. No speculative workaround, fixture removal, retry suppression, or workflow rerun has been applied by this audit.

Open npm/cli PRs and what they actually cover

#10234 | chore: restore release integration

#10235 | chore: restore release integration (v11 backport)

Both are open. Their current ordinary PR checks pass, including lint, smoke tests, Linux/macOS/Windows tests, and Windows Shims Tests. The new Cygwin executable probe runs, and the Cygwin subtest executes; its four existing cwd-related skips remain unchanged.

The PRs provide install-time fixture environment propagation, native-only legacy npm_config_nodedir, numeric npm result aggregation and checked workspace discovery, CITGM version logging, archive HTTP handling, and Cygwin provisioning improvements. The v11 PR additionally backports existing Node source-download protection.

For the current inventory, their direct native-header changes target the two microtime failures. The latest PR is necessary but not sufficient for the four JSONStream failures: upstream fixture metadata must also be merged, published, and consumed. The remaining seven failures (four Node test jobs, two Node build jobs, and v10 nightly npm) are not covered by these PRs. Ordinary PR checks have not verified repaired Release Integration.

Child issue status and historical dispositions

Checkboxes below reflect GitHub issue closure, not an assumption that a proposed patch has shipped.

Upstream CITGM state

Change Current state Remaining requirement
nodejs/citgm#1142 — binary-split owner Merged; released in CITGM 10.0.4 Current binary-split jobs are successful; retain execution/version evidence when reconciling #10020
nodejs/citgm#1122 — retire leveldown Merged; released in CITGM 10.0.4 Record the retirement disposition and retain other native coverage
nodejs/citgm#1159 — thread-sleep metadata Merged; released in CITGM 10.0.4 Reconcile still-open #10023; do not infer full test success from flaky job status alone
nodejs/citgm#1158 — JSONStream Git opt-in Open, not merged Merge, publish, consume, and pair with #10234 install-time environment propagation
nodejs/citgm#1199 — remove microtime Open, not merged Alternative retirement proposal, not a header-build fix or evidence that microtime tests pass

The earlier CITGM 10.0.4 release PR nodejs/citgm#1147 is merged and 10.0.4 is published. The old description of that release as pending is obsolete.

Historical baselines retained for context

Release / workflow Original inventory
npm 12.1.0 Release and CI 9 Release failures and 1 CI failure
npm 11.20.0 Release and CI 3 Release failures and 1 CI failure
npm 12.2.0 Release 14 failures, including original #10064/#10065 reports
npm 11.21.0 Release Historical release-please failure tracked by #10066; records subsequently recovered

These historical runs remain evidence for their child issues; they are not the current open failure list.

Completion criteria

  • Resolve or explicitly disposition every owner, including new gaps A/B and v10 scope.
  • Merge and consume required npm/cli and CITGM fixes on the appropriate release lines.
  • Capture post-fix Release Integration evidence for all three branches: affected installs, compiler/header usage, package tests, Node tests, and strict smoke assertions must execute.
  • Account for flaky tolerances, existing skips, fixture retirements, and skipped dependent jobs; do not equate a green summary with restored coverage.
  • Reconcile still-open historical child issues using their actual fix/execution evidence without presenting an unresolved infrastructure hypothesis as fact.

Keep this tracker open: the two current PRs do not cover the entire failure inventory, JSONStream metadata is still pending upstream, and complete post-fix Release Integration has not been verified.

Activity

  1. self-assigned this
    on Sep 23, 2026
  2. changed the title [-]ci: track root causes and restore CI on latest and release/v11[/-] [+]ci: track root causes and restore CI on latest, release/v11, and release/v10[/+] on Nov 5, 2026
  3. reggi commented on Nov 6, 2026

    @reggi
    ContributorAuthor

    We'll open a new ticket next week when the release kicks off with any remaining issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions