[PR #7020] [MERGED] fix(runner): scope internal Node notices to the supervisor #7579

Closed
opened 2026-11-03 13:38:51 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/7020
Author: @gensokyo-dev
Created: 10/24/2026
Status: ✅ Merged
Merged: 10/24/2026
Merged by: @gensokyo-dev

Base: main ← Head: fix/runner-diagnostics-20261024


📝 Commits (1)

  • b460168 fix(runner): scope internal Node notices to the supervisor

📊 Changes

2 files changed (+31 additions, -0 deletions)

View changed files

📝 scripts/run-exclusive.mjs (+4 -0)
📝 tests/process-global/runnerCancellation.test.ts (+27 -0)

📄 Description

Problem and outcome

Windows qualification exposed three public-runner regressions after #7012: the supervisor's in-process TypeScript API emits an ExperimentalWarning into forwarded command stderr. Exit status and argument bytes are correct. Node 22 also exposes the same boundary through the supervisor's experimental SQLite notice.

Pass --disable-warning=ExperimentalWarning to the internal supervisor process only. Its implementation notices no longer contaminate command stderr. The command keeps its original arguments and environment; no NODE_OPTIONS/global warning setting or stderr filtering is introduced. Other supervisor warning categories remain enabled, and target commands retain all warning categories. Existing empty-stderr assertions remain unchanged.

Executed validation

Linux x64, two CPUs, npm 11.16.0:

  • Node 22.23.4 baseline: the real public-runner argument test fails solely because of the supervisor's SQLite warning (1.94 s wall / 2.17 s family CPU / 412.5 MiB sampled family RSS).
  • Fixed complete runner file: 7 passed, five Windows-only skipped on Node 24.22.1 (8.48 s / 4.62 s CPU / 956.2 MiB) and Node 22.23.4 (9.24 s / 5.63 s CPU / 979.4 MiB). These execute real cancellation, descendant cleanup, locking and argument workflows.
  • New public-runner regression preserves exact authored stderr, both a target ExperimentalWarning and DeprecationWarning, exit status 7, and confirms no warning-disable flag reaches target argv. A negative control that propagates NODE_NO_WARNINGS=1 fails this assertion; mutation restored.
  • Actual Windows source-owner loading on Linux: the default Node process emits its TypeScript ExperimentalWarning, while the scoped-flag process omits that notice and still emits an authored supervisor DeprecationWarning. Both import the real owner successfully. This is source-loading coverage, not native Windows execution. Single cold-process probes took 0.451 / 0.415 s, 0.565 / 0.527 s CPU, and 98.9 / 102.4 MiB; too few samples for any speedup claim, and no warm-process measurements.
  • Final npm run check and git diff --check: passed (44.84 s wall / 77.48 s CPU / 2337.9 MiB).

Native Windows qualification executed all eight applicable runner cases successfully, including argument/shim handling, cancellation and the new warning-preservation case (four POSIX-only cases skipped). That lane still fails the two unchanged Web manifest assertions; it is not reported as green. The separate existing Web manifest contract assertions still fail on base cc7cc8155; they are not changed here and will be repaired in an isolated follow-up. Agent tokens were not measured; analysis payloads are unchanged. RSS samples sum descendants every 100 ms, may double-count shared pages or miss short/reparented children, and are not a hard aggregate cap. Tests/probes had a 3 GiB sampled stop; static checks had an 8 GiB sampled stop. No OOM occurred.

Codex and Greptile reviewed the exact b460168e head without actionable findings. The complete selected CI finished with 29,029 tests passed, two failed, 179 skipped. Only the unchanged Web manifest assertions failed in the portable and Windows lanes. Source/static/build and all selected native package baselines passed. The workflow conclusion is failure, not green qualification; this PR repairs the separate supervisor-notice regressions and the Web assertions are the next isolated issue.

Author readiness

Human owner: @gensokyo-dev

The owner explicitly delegated readiness declarations and agent-managed review. Inspection and execution were performed by Codex; no separate human inspection is claimed.

  • I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work.
  • I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps.
  • I declare this PR ready for initial maintainer review.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/7020 **Author:** [@gensokyo-dev](https://github.com/gensokyo-dev) **Created:** 10/24/2026 **Status:** ✅ Merged **Merged:** 10/24/2026 **Merged by:** [@gensokyo-dev](https://github.com/gensokyo-dev) **Base:** `main` ← **Head:** `fix/runner-diagnostics-20261024` --- ### 📝 Commits (1) - [`b460168`](https://github.com/morluto/rea/commit/b460168e122324c3f64c725292d4a2a0a4116721) fix(runner): scope internal Node notices to the supervisor ### 📊 Changes **2 files changed** (+31 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `scripts/run-exclusive.mjs` (+4 -0) 📝 `tests/process-global/runnerCancellation.test.ts` (+27 -0) </details> ### 📄 Description ## Problem and outcome [Windows qualification](https://github.com/morluto/rea/actions/runs/40105743147/job/120908742523) exposed three public-runner regressions after #7012: the supervisor's in-process TypeScript API emits an ExperimentalWarning into forwarded command stderr. Exit status and argument bytes are correct. Node 22 also exposes the same boundary through the supervisor's experimental SQLite notice. Pass `--disable-warning=ExperimentalWarning` to the **internal supervisor process only**. Its implementation notices no longer contaminate command stderr. The command keeps its original arguments and environment; no `NODE_OPTIONS`/global warning setting or stderr filtering is introduced. Other supervisor warning categories remain enabled, and target commands retain all warning categories. Existing empty-stderr assertions remain unchanged. ## Executed validation Linux x64, two CPUs, npm 11.16.0: - Node 22.23.4 baseline: the real public-runner argument test fails solely because of the supervisor's SQLite warning (1.94 s wall / 2.17 s family CPU / 412.5 MiB sampled family RSS). - Fixed complete runner file: **7 passed, five Windows-only skipped** on Node 24.22.1 (8.48 s / 4.62 s CPU / 956.2 MiB) and Node 22.23.4 (9.24 s / 5.63 s CPU / 979.4 MiB). These execute real cancellation, descendant cleanup, locking and argument workflows. - New public-runner regression preserves exact authored stderr, both a target ExperimentalWarning and DeprecationWarning, exit status 7, and confirms no warning-disable flag reaches target argv. A negative control that propagates `NODE_NO_WARNINGS=1` fails this assertion; mutation restored. - Actual Windows source-owner loading on Linux: the default Node process emits its TypeScript ExperimentalWarning, while the scoped-flag process omits that notice and **still emits an authored supervisor DeprecationWarning**. Both import the real owner successfully. This is source-loading coverage, not native Windows execution. Single cold-process probes took 0.451 / 0.415 s, 0.565 / 0.527 s CPU, and 98.9 / 102.4 MiB; too few samples for any speedup claim, and no warm-process measurements. - Final `npm run check` and `git diff --check`: passed (44.84 s wall / 77.48 s CPU / 2337.9 MiB). [Native Windows qualification](https://github.com/morluto/rea/actions/runs/40108191990/job/120914664321) executed all eight applicable runner cases successfully, including argument/shim handling, cancellation and the new warning-preservation case (four POSIX-only cases skipped). That lane still fails the two unchanged Web manifest assertions; it is not reported as green. The separate existing Web manifest contract assertions still fail on base `cc7cc8155`; they are not changed here and will be repaired in an isolated follow-up. Agent tokens were not measured; analysis payloads are unchanged. RSS samples sum descendants every 100 ms, may double-count shared pages or miss short/reparented children, and are not a hard aggregate cap. Tests/probes had a 3 GiB sampled stop; static checks had an 8 GiB sampled stop. No OOM occurred. Codex and Greptile reviewed the exact `b460168e` head without actionable findings. The [complete selected CI](https://github.com/morluto/rea/actions/runs/40108191990) finished with **29,029 tests passed, two failed, 179 skipped**. Only the unchanged Web manifest assertions failed in the portable and Windows lanes. Source/static/build and all selected native package baselines passed. The workflow conclusion is **failure**, not green qualification; this PR repairs the separate supervisor-notice regressions and the Web assertions are the next isolated issue. ## Author readiness Human owner: @gensokyo-dev The owner explicitly delegated readiness declarations and agent-managed review. Inspection and execution were performed by Codex; no separate human inspection is claimed. - [x] I reviewed the final diff and relevant existing code, understand the change and its edge cases, and take responsibility for the complete PR, including AI-assisted work. - [x] I checked the evidence above, confirmed it supports the current change, and recorded meaningful validation gaps. - [x] I declare this PR ready for initial maintainer review. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-03 13:38:51 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#7579
No description provided.