[GH-ISSUE #4109] [Bug] Windows WABT verifier MCP calls expire before its CLI budget #1618

Closed
opened 2026-10-16 21:08:04 +00:00 by bsakaguchi · 3 comments
Owner

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

A real ordinary-user Windows WABT verifier now gets past the separate child-TEMP ownership fix from #2950, but the first production MCP inspection can exceed the SDK's implicit 60-second request timeout even though the verifier gives the equivalent CLI inspection 120 seconds.

Exact main: 2a2a33ad92150821195327456ec059b3893852a2. Windows 11 x64, Node 24.18.0, official WABT 1.0.42 tools with the published archive digest, two logical CPUs, BelowNormal priority, 2 GiB Job limit. The deployed 1,619-file dist/ matches the exact-main local build byte-for-byte.

Two runs reproduced the same typed failure:

  • cold/default environment: SdkError: Request timed out, REQUEST_TIMEOUT, timeout: 60000; 108.78 s Job wall, 18.36 sampled CPU seconds, 514,826,240-byte Job peak, Job0.
  • existing persistent NODE_COMPILE_CACHE: the same 60-second timeout; 178.75 s Job wall, 76.22 sampled CPU seconds, 565,469,184-byte Job peak, Job0.

The verifier already completed WABT version checks, MCP connection/schema discovery, fixture compilation/validation, and the equivalent CLI inspection before the MCP request expired. This is not the old Win32 32 private-lease failure, and adding a compile cache does not make the fixed request budget reliable.

Give the WABT verifier one named MCP tool-request budget aligned with its existing 120-second CLI inspection budget, and apply it to every client.callTool path: successful inspection, retained bundle lookup, malformed-input error inspection, and failed-evidence bundle lookup. Preserve all current fixture, schema, provenance, CLI/MCP parity, malformed-input, cleanup, and resource assertions. Then rerun the unmodified real verifier on Windows and report complete wall/CPU/Job/working-set evidence. Do not increase product provider limits, weaken native sharing, skip fixtures, or hide timeouts with retries.

Local raw receipts are retained under /tmp/rea-windows-e2e-20261013/results/issue2950-current-main/; no complete Evidence or binary is published.

Originally created by @N0zoM1z0 on GitHub (Oct 15, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/4109 A real ordinary-user Windows WABT verifier now gets past the separate child-TEMP ownership fix from #2950, but the first production MCP inspection can exceed the SDK's implicit 60-second request timeout even though the verifier gives the equivalent CLI inspection 120 seconds. Exact main: `2a2a33ad92150821195327456ec059b3893852a2`. Windows 11 x64, Node 24.18.0, official WABT 1.0.42 tools with the published archive digest, two logical CPUs, BelowNormal priority, 2 GiB Job limit. The deployed 1,619-file `dist/` matches the exact-main local build byte-for-byte. Two runs reproduced the same typed failure: - cold/default environment: `SdkError: Request timed out`, `REQUEST_TIMEOUT`, `timeout: 60000`; 108.78 s Job wall, 18.36 sampled CPU seconds, 514,826,240-byte Job peak, Job0. - existing persistent `NODE_COMPILE_CACHE`: the same 60-second timeout; 178.75 s Job wall, 76.22 sampled CPU seconds, 565,469,184-byte Job peak, Job0. The verifier already completed WABT version checks, MCP connection/schema discovery, fixture compilation/validation, and the equivalent CLI inspection before the MCP request expired. This is not the old Win32 32 private-lease failure, and adding a compile cache does not make the fixed request budget reliable. Give the WABT verifier one named MCP tool-request budget aligned with its existing 120-second CLI inspection budget, and apply it to every `client.callTool` path: successful inspection, retained bundle lookup, malformed-input error inspection, and failed-evidence bundle lookup. Preserve all current fixture, schema, provenance, CLI/MCP parity, malformed-input, cleanup, and resource assertions. Then rerun the unmodified real verifier on Windows and report complete wall/CPU/Job/working-set evidence. Do not increase product provider limits, weaken native sharing, skip fixtures, or hide timeouts with retries. Local raw receipts are retained under `/tmp/rea-windows-e2e-20261013/results/issue2950-current-main/`; no complete Evidence or binary is published.
bsakaguchi 2026-10-16 21:08:04 +00:00
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 15, 2026):

Candidate r1 confirmed the original diagnosis and exposed the same budget owner on the CLI side.

A single 120-second MCP budget let the verifier pass the prior 60-second failure, complete the first successful CLI/MCP parity case, and exercise malformed input. The later invalid.wasm CLI child then reached its existing 120-second execFile timeout. The verifier preserved both facts: the SIGTERM command failure and the resulting provider-workspace residue assertion. The outer Job still reached zero processes.

r1: 436.18 s Job wall, 216.95 sampled CPU seconds, 1,092,988,928-byte Job peak, 1,146,179,584-byte sampled family working-set peak, 2 LP / BelowNormal / 2 GiB.

The structural fix is therefore adjusted to one named 240-second WABT operation budget used by both CLI inspection and every MCP tool call. This keeps equivalent transports aligned and gives the measured 120-second boundary margin without adding retries, weakening cleanup, or changing provider limits. The complete real verifier will be rerun.

<!-- gh-comment-id:6192662858 --> @N0zoM1z0 commented on GitHub (Oct 15, 2026): Candidate r1 confirmed the original diagnosis and exposed the same budget owner on the CLI side. A single 120-second MCP budget let the verifier pass the prior 60-second failure, complete the first successful CLI/MCP parity case, and exercise malformed input. The later `invalid.wasm` CLI child then reached its existing 120-second `execFile` timeout. The verifier preserved both facts: the SIGTERM command failure and the resulting provider-workspace residue assertion. The outer Job still reached zero processes. r1: 436.18 s Job wall, 216.95 sampled CPU seconds, 1,092,988,928-byte Job peak, 1,146,179,584-byte sampled family working-set peak, 2 LP / BelowNormal / 2 GiB. The structural fix is therefore adjusted to one named 240-second WABT operation budget used by both CLI inspection and every MCP tool call. This keeps equivalent transports aligned and gives the measured 120-second boundary margin without adding retries, weakening cleanup, or changing provider limits. The complete real verifier will be rerun.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 15, 2026):

Final candidate 5423ae073 gives the verifier one 240-second operation budget shared by CLI inspection and every MCP tool call. It does not retry, change provider limits, reduce fixtures, or suppress residue checks.

The ordinary-user Windows run passed all 42 real WABT 1.0.42 cases: seven normal CLI/MCP schema, Evidence, identity, byte/hash, WAT, section, glue/candidate and retained-bundle comparisons plus both malformed inputs and retained failed Evidence for every fixture. Output was 631 bytes, stderr was empty, all workspaces were removed, and Job0.

Metrics under 2 LP / BelowNormal / 2 GiB: 647.28 s Job wall, 667.84 s observer wall, 148.91 sampled CPU seconds, 1,145,798,656-byte Job peak, 1,175,539,712-byte sampled working-set peak. This completed workload is broader than the failing runs, so no speedup is claimed.

Latest main fe7bcc3fb was merged as final head 3318d802e. WABT inputs are unchanged; check:fast and 42/42 WABT provider/output/MCP tests pass on the final head.

<!-- gh-comment-id:6192998482 --> @N0zoM1z0 commented on GitHub (Oct 15, 2026): Final candidate `5423ae073` gives the verifier one 240-second operation budget shared by CLI inspection and every MCP tool call. It does not retry, change provider limits, reduce fixtures, or suppress residue checks. The ordinary-user Windows run passed all 42 real WABT 1.0.42 cases: seven normal CLI/MCP schema, Evidence, identity, byte/hash, WAT, section, glue/candidate and retained-bundle comparisons plus both malformed inputs and retained failed Evidence for every fixture. Output was 631 bytes, stderr was empty, all workspaces were removed, and Job0. Metrics under 2 LP / BelowNormal / 2 GiB: 647.28 s Job wall, 667.84 s observer wall, 148.91 sampled CPU seconds, 1,145,798,656-byte Job peak, 1,175,539,712-byte sampled working-set peak. This completed workload is broader than the failing runs, so no speedup is claimed. Latest main `fe7bcc3fb` was merged as final head `3318d802e`. WABT inputs are unchanged; `check:fast` and 42/42 WABT provider/output/MCP tests pass on the final head.
Author
Owner

@N0zoM1z0 commented on GitHub (Oct 15, 2026):

PR #4117 is ready to merge at final head fbc268555adbf00c68c4cb38aaed16a8ff78abf3.

The structural fix now owns both verifier budgets in one module: 240 seconds per CLI/MCP operation and 15 minutes for the complete packaged workflow. The aggregate budget covers the measured 647.28-second complete Windows workload with about 39% margin. There are no retries, provider-limit changes, fixture reductions, or output-contract changes.

Real ordinary-user Windows evidence:

  • Direct verifier: 42/42 WABT 1.0.42 cases, 647.28 s Job wall, 148.91 sampled CPU seconds, 1,145,798,656-byte Job peak, 1,175,539,712-byte sampled working-set peak, 631 output bytes, empty stderr, Job0.
  • Packaged-timeout continuation from the extracted package entrypoint: 42/42, 363.28 s Job wall (past the old 180-second cap), 98.30 sampled CPU seconds, 942,870,528-byte Job peak, 968,450,048-byte sampled working-set peak, 631 output bytes, empty stderr, Job0.
  • Final local check:fast and focused WABT tests pass (42/42). All exact-head CI checks pass, including the five shards, Windows package lane, native baselines, Portable tests, required aggregator, and Greptile review. Both prior review threads are resolved.

The full pack/install prelude exposed four independent existing Windows verifier defects and therefore is not claimed as passed: #4125, #4128, #4134, and #4136. Test-only prerequisite bypasses were confined to the host copy and are absent from this PR. Latest main changed only JavaScript tool-effect contracts/docs/tests; every WABT/package-verifier input used by the Windows run is byte-identical on the final head.

Local receipts, failure evidence, test-only source, hashes, and source-identity proof are retained under /tmp/rea-windows-e2e-20261013/results/issue4109-fix/.

<!-- gh-comment-id:6194082256 --> @N0zoM1z0 commented on GitHub (Oct 15, 2026): PR #4117 is ready to merge at final head `fbc268555adbf00c68c4cb38aaed16a8ff78abf3`. The structural fix now owns both verifier budgets in one module: 240 seconds per CLI/MCP operation and 15 minutes for the complete packaged workflow. The aggregate budget covers the measured 647.28-second complete Windows workload with about 39% margin. There are no retries, provider-limit changes, fixture reductions, or output-contract changes. Real ordinary-user Windows evidence: - Direct verifier: 42/42 WABT 1.0.42 cases, 647.28 s Job wall, 148.91 sampled CPU seconds, 1,145,798,656-byte Job peak, 1,175,539,712-byte sampled working-set peak, 631 output bytes, empty stderr, Job0. - Packaged-timeout continuation from the extracted package entrypoint: 42/42, 363.28 s Job wall (past the old 180-second cap), 98.30 sampled CPU seconds, 942,870,528-byte Job peak, 968,450,048-byte sampled working-set peak, 631 output bytes, empty stderr, Job0. - Final local `check:fast` and focused WABT tests pass (42/42). All exact-head CI checks pass, including the five shards, Windows package lane, native baselines, Portable tests, required aggregator, and Greptile review. Both prior review threads are resolved. The full pack/install prelude exposed four independent existing Windows verifier defects and therefore is not claimed as passed: #4125, #4128, #4134, and #4136. Test-only prerequisite bypasses were confined to the host copy and are absent from this PR. Latest main changed only JavaScript tool-effect contracts/docs/tests; every WABT/package-verifier input used by the Windows run is byte-identical on the final head. Local receipts, failure evidence, test-only source, hashes, and source-identity proof are retained under `/tmp/rea-windows-e2e-20261013/results/issue4109-fix/`.
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#1618
No description provided.