[GH-ISSUE #4960] [Bug] Full coverage exhausts the ordinary CLI worker heap during ADB boundary tests #3072

Closed
opened 2026-10-31 00:35:55 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @morluto on GitHub (Oct 18, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/4960

Before submitting

  • Searched open and closed reports for ADB worker and heap failures; related historical report #4713 describes ordinary, non-coverage failures and does not establish this covered reproduction.
  • Evidence contains public source/Actions references and no credentials or private targets.

Area

Other — full-coverage CI worker resources.

Observed behavior

Release 6.6.0 qualification at 2c4338db1fdb7773e05376301c558cff2a0b4b80 aborts CLI workers in adbWindowFocus.test.ts and adbWindowDisplays.test.ts at their 384 MiB V8 heap limit. The required gate fails and npm/MCP publication is skipped.

Reproduction

With the pinned dependencies and required build artifacts, executed:

npm run test:ci:shard:run -- --project cli-boundary tests/boundary/cli/adbWindowFocus.test.ts tests/boundary/cli/adbWindowDisplays.test.ts --shard=1/1

Locally: one worker abort, 6 tests passed, exit 1 (20.85 s). The same two files plus the WASM registration file passed without coverage (12 cases). A coverage stress packet including the original ten ADB scenarios and a preloaded CLI completes at a 512 MiB worker budget (16 cases, 22.18 s, 46.52 CPU seconds, sampled peak summed process-family RSS about 2.33 GiB). RSS samples are 200 ms apart and may double-count shared pages or miss short-lived children; agent token costs are unmeasured. No suite-wide speedup is claimed.

Expected behavior

Full coverage must complete without dropping assertions, retrying tests or hiding worker crashes. Ordinary runs should retain their existing resource profile. CLI option interpretation must honor explicit false coverage and spaced shard syntax.

Impact and scope

Observed on release Linux x64 CI and a controlled macOS arm64 reproduction. Capacity evidence supports a separate bounded coverage profile; it does not identify a production ADB leak or resolve #4713’s historical non-coverage intermittency.

REA version

6.6.0, source 2c4338db1fdb7773e05376301c558cff2a0b4b80.

Runtime and platform

Node 24.18.0, Vitest 5.0.3; hosted Linux x64 and macOS arm64.

Target and artifact context

Source-owned fake ADB protocol; no real device qualification.

Interface

Other — Vitest/CI.

Earliest failure stage

Worker resource admission during full coverage.

Relevant output or evidence

Qualification shard 1, shard 2: Allocation failed - JavaScript heap out of memory, followed by worker SIGABRT.

Proposed correction

Keep ordinary CLI workers at 384 MiB and covered workers at the tested 512 MiB, retaining two-worker concurrency. Use pinned Vitest’s CLI parser rather than prefix guesses; add actual-config regressions for coverage false/provider-only flags and both shard spellings. Full Linux qualification remains required after pushing.

Originally created by @morluto on GitHub (Oct 18, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/4960 ### Before submitting - [x] Searched open and closed reports for ADB worker and heap failures; related historical report #4713 describes ordinary, non-coverage failures and does not establish this covered reproduction. - [x] Evidence contains public source/Actions references and no credentials or private targets. ### Area Other — full-coverage CI worker resources. ### Observed behavior Release 6.6.0 qualification at `2c4338db1fdb7773e05376301c558cff2a0b4b80` aborts CLI workers in `adbWindowFocus.test.ts` and `adbWindowDisplays.test.ts` at their 384 MiB V8 heap limit. The required gate fails and npm/MCP publication is skipped. ### Reproduction With the pinned dependencies and required build artifacts, executed: ```sh npm run test:ci:shard:run -- --project cli-boundary tests/boundary/cli/adbWindowFocus.test.ts tests/boundary/cli/adbWindowDisplays.test.ts --shard=1/1 ``` Locally: one worker abort, 6 tests passed, exit 1 (20.85 s). The same two files plus the WASM registration file passed without coverage (12 cases). A coverage stress packet including the original ten ADB scenarios and a preloaded CLI completes at a 512 MiB worker budget (16 cases, 22.18 s, 46.52 CPU seconds, sampled peak summed process-family RSS about 2.33 GiB). RSS samples are 200 ms apart and may double-count shared pages or miss short-lived children; agent token costs are unmeasured. No suite-wide speedup is claimed. ### Expected behavior Full coverage must complete without dropping assertions, retrying tests or hiding worker crashes. Ordinary runs should retain their existing resource profile. CLI option interpretation must honor explicit false coverage and spaced shard syntax. ### Impact and scope Observed on release Linux x64 CI and a controlled macOS arm64 reproduction. Capacity evidence supports a separate bounded coverage profile; it does not identify a production ADB leak or resolve #4713’s historical non-coverage intermittency. ### REA version 6.6.0, source `2c4338db1fdb7773e05376301c558cff2a0b4b80`. ### Runtime and platform Node 24.18.0, Vitest 5.0.3; hosted Linux x64 and macOS arm64. ### Target and artifact context Source-owned fake ADB protocol; no real device qualification. ### Interface Other — Vitest/CI. ### Earliest failure stage Worker resource admission during full coverage. ### Relevant output or evidence [Qualification shard 1](https://github.com/morluto/rea/actions/runs/39094414403/job/117578040219), [shard 2](https://github.com/morluto/rea/actions/runs/39094414403/job/117578040312): `Allocation failed - JavaScript heap out of memory`, followed by worker `SIGABRT`. ### Proposed correction Keep ordinary CLI workers at 384 MiB and covered workers at the tested 512 MiB, retaining two-worker concurrency. Use pinned Vitest’s CLI parser rather than prefix guesses; add actual-config regressions for coverage false/provider-only flags and both shard spellings. Full Linux qualification remains required after pushing.
bsakaguchi 2026-10-31 00:35:55 +00:00
  • closed this issue
  • added the
    triage
    bug
    labels
Author
Owner

@morluto commented on GitHub (Oct 18, 2026):

Verified at bb212ffecb47e129cc569b9867b2b6e7c9b65685: full qualification completed successfully (38 passed jobs, one intentional skip), including all six coverage shards, aggregate coverage, Windows/macOS/Linux package checks and CI required. Push CI also passed.

Fixed in 6b180783e: installed Vitest CLI parsing selects the bounded 512 MiB coverage heap, retaining the ordinary 384 MiB heap and two-worker limit. Eight flag/configuration cases retain explicit false and spaced shard semantics. The preloaded coverage control passed 16 cases after the original 384 MiB control aborted. Full coverage now passes. This does not establish a fix for the separate historical non-coverage intermittency in #4713.

<!-- gh-comment-id:6246052563 --> @morluto commented on GitHub (Oct 18, 2026): Verified at `bb212ffecb47e129cc569b9867b2b6e7c9b65685`: [full qualification](https://github.com/morluto/rea/actions/runs/39099153126) completed successfully (38 passed jobs, one intentional skip), including all six coverage shards, aggregate coverage, Windows/macOS/Linux package checks and `CI required`. [Push CI](https://github.com/morluto/rea/actions/runs/39099134853) also passed. Fixed in `6b180783e`: installed Vitest CLI parsing selects the bounded 512 MiB coverage heap, retaining the ordinary 384 MiB heap and two-worker limit. Eight flag/configuration cases retain explicit false and spaced shard semantics. The preloaded coverage control passed 16 cases after the original 384 MiB control aborted. Full coverage now passes. This does not establish a fix for the separate historical non-coverage intermittency in #4713.
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#3072
No description provided.