U1/U2/KTD-6: extract the dashboard heap-runner's process-group kill lifecycle
into a shared scripts/lib/run-vitest-watchdog.mjs with per-class budget bands
(timings only tighten within a generous ceiling) and an inline hang-diagnostics
snapshot. Delegate run-vitest-with-heap.mjs to it (behavior preserved). Add
timeout-minutes backstops to all full-suite.yml test jobs so a wedged run can no
longer hang to GitHub's 6h ceiling.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Improve dashboard vitest wrapper diagnostics so transient SIGTERM handling is easier to trace.
- track the last signal and reason forwarded from the heap wrapper to the vitest process group
- log when the wrapper receives SIGINT or SIGTERM and when timeout shutdown escalates
- extend wrapper tests to assert process-group leadership and emitted diagnostic stderr
Files changed:
.../scripts/__tests__/run-vitest-with-heap.test.ts | 25 +++++++++++++++++++---
.../dashboard/scripts/run-vitest-with-heap.mjs | 19 ++++++++++++----
2 files changed, 37 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-6184
Fusion-Task-Lineage: b276d88e-a22d-4fdf-a533-c4b0aa4e199d
Prevent dashboard test wrappers from leaving orphaned Vitest subprocesses after interruption or timeout.
- run dashboard vitest wrappers in a detached process group and forward shutdown signals to the whole group
- add an exit-time cleanup path and spawn override seam for process-lifecycle handling without launching real vitest
- cover SIGINT/SIGTERM orphan reaping and keep the dashboard test config guard aligned with the new script test
Files changed:
.../scripts/__tests__/run-vitest-with-heap.test.ts | 172 +++++++++++++++++++++
.../dashboard/scripts/run-vitest-with-heap.mjs | 89 ++++++++++-
.../__tests__/dashboard-test-config-guard.test.ts | 1 +
packages/dashboard/vitest.config.ts | 1 +
4 files changed, 256 insertions(+), 7 deletions(-)
Fusion-Task-Id: FN-5918
Fusion-Task-Lineage: 5c695b3b-14c5-4749-ad9c-eb9f33d5ecd5