test: run the suite with Sparkplug off, which is what kills the #405 segfault (#477)
#405's crash has an upstream name — nodejs/node#62393, V8 CL 0b94a9fd23ba: the
BaselineOutOfLinePrologue builtin left a random value on the stack where the GC
found it. `ClearStaleLeftTrimmedPointerVisitor` reads it as a heap pointer and
faults at 0xe, the address in all five local reports. Sparkplug generates that
prologue, so `--no-sparkplug` removes the path.
The two decisions #405 was holding both answer no. Node cannot be bumped into the
fix: the backport (nodejs/node#65753) is open, not landed, so no released 24.x has
it, and one upstream report has the crash live on v26.7.0. CI needs no dead-child
retry: every occurrence here and upstream is macOS arm64, and every workflow runs
ubuntu-latest.
Cost is nothing measurable — 55.8 s mean either way over two runs each locally,
~3% on Linux x64 over the two heaviest jsdom files, against a 22-minute review
step. The flag is on the test script only, on purpose: `npm start` and `npm run
dev` keep the Sparkplug path, because one dev server dying is loud where a dead
test child reads as a clean run with a short pass count.
A test pins the flag, and after round 1 it pins its *position*: `node --test
"glob" --no-sparkplug` exits 0, warns nothing, and the child's `execArgv` does not
carry the flag, so a presence-only check could go green through the exact
regression it exists to catch. Drop the flag and that test together when
nodejs/node#65753 ships in a 24.x release.
Two rounds, both approved; round 1's three notes fixed, round 2 clean.
Refs #405
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>