test(ci): probe K — Node 22 added to Windows-no-plugins matrix as comparator#7863
test(ci): probe K — Node 22 added to Windows-no-plugins matrix as comparator#7863JohnMcLear wants to merge 1 commit into
Conversation
…parator Probe A (PR #7855) ruled out Defender, and the captured tasklist showed the dying node.exe was completely healthy 1 second before death with no Application/System/Defender event entry — fingerprint matches __fastfail. ProcDump JIT debugger (probe G, PR #7862) catches that, but only IF the flake fires. Meanwhile bisecting against Node version costs ~1 extra job per push and gives a clean signal: - Win-no-plugins (Node 24): the current matrix entry, ~20-30% flake - Win-no-plugins (Node 22): comparator. If flake rate drops to ~0 → Node 24 specific (libuv IOCP regression or similar between v22 and v24). If unchanged → Node version ruled out, look at something else. Scoped to Win-no-plugins only because that matrix is the cheapest (no plugin install step). The Node 22 entry gets `engines-strict=false` appended to .npmrc just before pnpm install, since Etherpad's `engines.node: >=24` would otherwise refuse the install. Frozen lockfile resolution is unaffected — pnpm-lock.yaml is engine-agnostic. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
Review Summary by QodoAdd Node 22 comparator to Windows-no-plugins CI matrix for flake bisection
WalkthroughsDescription• Add Node 22 to Windows-no-plugins CI matrix as flake bisection probe • Compare flake rates between Node 22 and Node 24 to identify root cause • Relax engines-strict for Node 22 job to bypass package.json constraint • Minimal CI cost impact by scoping to cheapest matrix variant Diagramflowchart LR
A["Windows-no-plugins<br/>Node 24 baseline<br/>20-30% flake rate"] -->|"Compare flake rates"| B["Windows-no-plugins<br/>Node 22 comparator<br/>engines-strict=false"]
B -->|"If flake drops to ~0"| C["Node 24 specific issue<br/>libuv IOCP regression"]
B -->|"If flake unchanged"| D["Node version ruled out<br/>investigate other causes"]
File Changes1. .github/workflows/backend-tests.yml
|
Code Review by Qodo
1. Cache key ignores Node
|
|
Closing — Etherpad has a runtime version check (settings.ts) that refuses to start on Node < 24 with a clear error message. So this probe can't compare flake rate without code changes to bypass the version check, which expands scope considerably. The Node-22-as-comparator hypothesis isn't dead, just not achievable with a workflow-only probe. Worth revisiting as a code change if other probes don't pin down the cause. |
Probe K from the silent-ELIFECYCLE flake matrix. After probe A (#7855) ruled out Defender and probe G (#7862) deploys ProcDump for forensic capture, this PR adds a parallel data point: run Win-no-plugins on Node 22 alongside the existing Node 24 job. If the flake rate drops materially on Node 22, we have a clear bisection target. If unchanged, Node version isn't the cause.
Adds
engines-strict=falseto .npmrc on the Node 22 job only (Etherpad's package.json hasengines.node: >=24). Scoped to Win-no-plugins to minimise CI cost — the same probe on the with-plugins job adds ~5 minutes more per push because of plugin install.