mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Open
opened 2026-10-31 01:05:42 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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#5318
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/morluto/rea/pull/2694
Author: @eliot-h
Created: 10/13/2026
Status: 🔄 Open
Base:
main← Head:codex/wabt-output-budget📝 Commits (10+)
5bda610fix(wasm): raise the WABT output budget to 128 MiB6c85c66test(wasm): pin the default MCP response budget in the WABT lane6a25ae2test(wasm): strip the MCP budget variable case-insensitivelybb479a4fix(wasm): derive the advertised WABT limits from WABT_LIMITSa6b0e33Merge remote-tracking branch 'origin/main' into codex/wabt-output-budgetda7dc2dtest(wasm): pin the WABT budget in unit tests and cover paged MCP reads68eafbbtest(wasm): resolve retained partial Evidence in the WABT lane66c1181chore: merge main into PR #2694156e5fdMerge branch 'main' into codex/wabt-output-budget8498414Merge remote-tracking branch 'origin/main' into codex/wabt-output-budget📊 Changes
7 files changed (+132 additions, -9 deletions)
View changed files
📝
docs/testing.md(+6 -1)📝
docs/wasm-artifacts.md(+3 -1)📝
scripts/verify-wasm-artifact.mjs(+110 -4)📝
src/wasm/WabtArtifactProvider.test.ts(+7 -0)📝
src/wasm/WabtArtifactProvider.ts(+1 -1)📝
src/wasm/WabtRelease.ts(+4 -1)📝
tests/fixtures/wasm/artifact.ts(+1 -1)📄 Description
Summary
inspect_wasm_artifactaccepts modules up to 8 MiB, but each WABT subprocess had a fixed 32 MiB output budget. Real public modules far below the input limit decode to more WAT than that and fail:mainnow reportsresource_constraint(since #2117), and before #2117 it reportedunreadable_output. This raises the per-subprocess budget to 128 MiB. No issue is linked; the reproduction below is self-contained.Problem and expected behavior
Smallest trigger:
npm pack @resvg/resvg-wasm@2.6.2, then inspectpackage/index_bg.wasmwith official WABT 1.0.42 linux-x64 (wabt-1.0.42-linux-x64.tar.gz, SHA-25684895407a6bbb80e918f33b16b2fb2206021c150b6bc9ff6f761263a745ab131, matching the release.sha256):All three modules below pass
wasm-validate --enable-all. Costs are in the resource report under Validation performed..wasmbyteswasm2wat --enable-allbytesmain(bee73fc)@resvg/resvg-wasm@2.6.2index_bg.wasmresource_constraint: "WABT output exceeded the 33554432-byte output budget"@dimforge/rapier3d@0.21.0rapier_wasm3d_bg.wasmresource_constraintcanvaskit-wasm@0.42.0bin/canvaskit.wasmresource_constraintOn this branch, the WAT SHA-256 in the Evidence equals the SHA-256 of a standalone
wasm2wat --enable-allrun for all three. Other packaged modules in the same 32–128 MiB range:wasm-vips@0.0.19(vips.wasm,vips-heif.wasm,vips-jxl.wasm) and the@jsquash/avif@2.1.1encoders.Expected: a valid module within the input limit whose decoded WAT fits the budget returns complete Evidence.
Change and scope
Follow the contribution scope.
WABT_LIMITS.outputBytesgoes from 32 MiB to 128 MiB, with a short comment naming the measured modules. The input and tool limits and the per-command deadline (command_timeout_ms, default 30,000 ms) are unchanged.WABT_LIMITS.outputBytesinstead of a literal, as its deadline already comes fromcommand_timeout_ms. Apart from 128 MiB, its text is unchanged.resource_constraint/transportpath with a retained Evidence reference.detail: "summary"(which runs the inspection again) and the pagedwatview ofinspect_analysis_view(which reads the retained record) then return it in small replies.mainin #5798, now expects the 128 MiB budget in the retained Evidence.main. This branch is merged with it, and the shared budget sentence indocs/wasm-artifacts.mdnow states both changes.Contract and boundary impact
src/wasm/WabtRelease.ts(WABT adapter limits).detail: "summary"and paged views.tool_profile.output_budget_bytesreports 134217728 and the limitation text says 128 MiB, so successful Evidence for the same input gets a newevidence_id.resource_constrainterror, which is 4.75 KB on both builds. Before failing, the subprocess output is still captured up to the larger budget. A 28 KB nested-block module whose WAT exceeds 128 MiB therefore peaked at 1,133 MiB process-family memory, compared with 599 MiB onmain(warm medians).docs/public/product-catalog.json), package, or installation impact: none.Expected effects:
Evidence and regression coverage
src/wasm/WabtArtifactProvider.test.ts: the success mode pinstool_profile.timeout_ms,tool_profile.output_budget_bytesand the rendered limitation text, so CI checks the budget.scripts/verify-wasm-artifact.mjs(manual real-WABT lane) builds a deterministic code-heavy module withwat2wasm(3.87 MiB, 38.2 MiB of WAT):wasm2watdigest and the 128 MiB budget.retained-evidencereference equal to the CLI Evidence ID.detail: "summary"reports the same WAT digest, and a pagedwatview returns its first code units.REA_MCP_MAX_RESPONSE_BYTES, so this check does not depend on the caller's configuration.tests/fixtures/wasm/artifact.tsmirrors the newoutput_budget_bytes.mainand decode completely on this branch. Run against amainbuild, the updated lane fails only at the new >32 MiB case (unreadable_outputatd2e16b2,resource_constraintsince #2117).rive.wasmandsqlite3.wasmcomplete on both builds with byte-identical WAT (see the resource report).tool_profile.output_budget_bytes: 134217728and the limitation "Each WABT command has a 30000 ms deadline and a fixed 128 MiB combined output budget. The deadline is not a whole-inspection budget. Oversized output fails instead of producing truncated success."For evidence-bearing changes:
Validation performed
At head
4d5d626, which mergesmainata4c183b(including #5798's per-command deadline and #7822): Node 24.22.1 / npm 11.19.1 (official tarball, checked againstSHASUMS256.txt), Ubuntu 24.04 x86_64, official WABT 1.0.42 linux-x64.npx vitest run src/wasm src/application/wasm tests/boundary/mcp/wasmArtifactMcp.test.ts— 10 files, 167 tests passed.npm run verify:wasm:artifact -- --require-tools— passed, 68 cases; again withREA_MCP_MAX_RESPONSE_BYTES=268435456— passed, 68 cases.npm run verify:wasm:package -- --require-tools— 1 of 3 runs passed with 68 cases. The other 2 failed in process cleanup withenvironment_errno_ESRCH, an ownership-token read on a process that had just exited; no assertion failed. Plainmainata4c183bfails the same way in 3 of 3 runs.wasm2watrun.npm run verify:test-discovery— passed (2,857 files).npm run check:ci— every task passes exceptknip, which reportsisArtifactFormatId(src/domain/artifactGraph.ts:103) and a duplicate export insrc/domain/analysisResourceLimits.ts. Plainmainata4c183breports the same two findings.Earlier heads used Node 24.18.0 / npm 11.16.0 with the same platform and WABT.
At head
8498414, which mergesmainatbee73fc(including #2117, #2114 and #2464):npm run check:ci— passed (0 lint errors).npm run verify:test-discovery— passed.npx vitest run src/wasm src/application/wasm tests/boundary/mcp/wasmArtifactMcp.test.ts— 6 files, 62 tests passed.npm run verify:wasm:artifact -- --require-tools— passed, 45 cases.wasm2watrun, and the typed interface iscomplete. The over-budget module returns a 4,750 Bresource_constraint.At head
68eafbb, which includesmainatd2e16b2:npm run verify:wasm:artifact -- --require-tools— passed, 45 cases; again withREA_MCP_MAX_RESPONSE_BYTES=268435456set — passed, 45 cases.npm run verify:wasm:package— passed, 45 cases from the packed and installed package.mainbuild — fails only at the new >32 MiB case, withunreadable_output.At head
da7dc2d, which includesmainatd2e16b2:npx vitest run src/wasm src/application/wasm tests/boundary/mcp/wasmArtifactMcp.test.ts— 4 files, 43 tests passed.npm run check:ci— every task passes exceptlint:built. Its only error ismax-lines-per-functionintests/boundary/providers/ghidra/ghidraLauncher.test.ts:431, a file identical tomain(#2470).npm run verify:test-discovery— passed.git diff --check— clean.At head
bb479a4, merged locally withmainat2f3dee3:npm run check:ci,npm run verify:test-discovery,npm run test:pythonandnpm run test:prepare— passed.npm run test:run— 1044 files passed, 15 skipped (macOS/Hopper only); 10,760 tests passed.wasm2watrun. On themainbuild they exit 1 withunreadable_output.Resource report
main=d2e16b2(32 MiB budget), branch =68eafbb(128 MiB), both built withnpm run build. Linux x64, i5-13500 hybrid (6 P + 8 E cores), shared host (1-minute load 2.4–13), Node 24.18.0, WABT 1.0.42. These tables measure the PR's diff, which merges since then leave unchanged. The over-budget path changed onmainwith #2117, so it is re-measured at head8498414againstmainatbee73fc.Each run is one
systemd-rununit with-p CPUQuota=100% -p MemoryMax=4G(the #2016 caps); "uncapped" drops the CPU quota. Elapsed is the unit'sService runtime, CPU is cgroupcpu.stat usage_usec, and peak is cgroup v2memory.peakread inside the unit (node, WABT andps; stdout is consumed outside the unit). Builds alternate ABBA. Cold runs first drop the module, WABT, node,dist,scriptsand the 3,065node_modulesfiles REA opens from the page cache with per-fileposix_fadvise(DONTNEED): 0% stayed resident in 75 of 76 cold runs, and the 65.6–72.7 MiB read back from disk is charged to the unit, so cold peaks sit about 67 MiB above warm. Warm runs start with those files resident. Tokens are tiktoken 0.14o200k_basecounts of each whole output, not Claude's tokenizer. Cells are median (min–max).Equivalent workflows (complete on both builds). The WAT is byte-identical and equals standalone
wasm2wat --enable-all. The JSON differs only inevidence_id, the budget sentence (twice) andoutput_budget_bytes.@rive-app/canvas@2.44.2rive.wasm(29.4 MB WAT)mainmain@sqlite.org/sqlite-wasm@3.53.4-build2sqlite3.wasm(15.4 MB WAT)mainmainUncapped warm medians (n = 3),
main→ branch: rive 2.20 → 2.14 s elapsed, 3.35 → 3.44 s CPU, 606 → 604 MiB; sqlite 1.68 → 1.60 s, 2.34 → 2.34 s, 473 → 473 MiB. CLI stdout: rive 32,623,950 → 32,623,953 B and 7,228,545 → 7,228,539 tokens; sqlite 16,440,057 → 16,440,060 B and 2,970,947 → 2,970,949 tokens. rive's peak is bimodal on both builds (about 555 or 672 MiB cold, 488 or 605 MiB warm). Below 32 MiB the capture path is identical, so I attribute this to GC timing, but did not isolate it.Newly completed modules.
mainatd2e16b2fails withunreadable_output, returning 32 MiB of partial WAT in the error. Since #2117,mainreturns a 4.75 KBresource_constraintinstead. The branch completes, and its WAT equals standalonewasm2wat. Cells are elapsed s / CPU s / peak MiB, median of 3.mainmainmainOver-budget failure path (28 KB generated module, 147.3 MB WAT), at head
8498414vsmainatbee73fc(both include #2117). Both builds fail closed withresource_constraint. Warm runs, n = 3.mainMCP (default 10 MiB reply budget, warm, 2 sessions per cell). Each session connects, calls
tools/list, then makes (a) a completeinspect_wasm_artifactcall, (b) the same call withdetail: "summary"and (c)inspect_analysis_viewforwat0..4096. Tokens count the text content. Successful replies repeat it byte for byte instructuredContent, so a client that forwards both pays about twice. Session CPU and peak cover the SDK client, the REA server and WABT in one 1-CPU unit, and elapsed was within 0.07 s of CPU.main→ branchmain→ branchmain→ branchbee73fc→8498414)retained-evidencereference on success, or an 818 B error reference on failure. Call (b) runs the inspection again (1.6–10.8 s), and (c) reads the retained record (2–736 ms). When the module fails, (b) fails again and (c) returnsunsupported_target.tools/list(191 tools) is 2,636,597 B and 689,078 tokens, including 4,062 forinspect_wasm_artifactand 29,791 forinspect_analysis_view; the instructions add 159. Both are byte-identical on both builds, so the change is 0. An idle session (connect andtools/list) took 1.83–2.85 s CPU and 470–491 MiB on both builds.mainfor rive and sqlite stayed between −8.4% and +1.4%. resvg warm CPU came out at 4.07 → 6.29 s, a 2.2 s increase rather than the 0.3 s above. Before #2117, one of 10 branch over-budget MCP calls returnedcleanup_incompleteinstead ofunreadable_output. The retained error names a run-token mismatch for thewasm2watPID, which had already exited 0 with no runtime root left. Linux returns an empty/proc/<pid>/environwhen the owner exits between open and read. With traced runs and a forced race, the same false report reproduces onmain(1 of 10 tracedmainsessions with a module that overshoots 32 MiB by the same 13 MB). It is a pre-existing ownership-check race whose odds depend on how far output overshoots the budget, not a change in this PR; 0 of 40 interleaved MCP calls hit it on either build.Not measured:
structuredContentor both.ps, dentry and inode caches and filesystem metadata were not evicted, anddrop_cacheswas not used on this shared host.get_evidence_bundleandexport_evidence_bundle(the remediation the transport error names), WAT pages past offset 0, other facets anddetaillevels, and retries (none occurred).Compatibility, safety, and release
evidence_id.mainfails on them. Modules that already completed onmainshow no change. See the resource report.Author readiness
Human owner: @eliot-h
Before merge
type(scope): outcome.🤖 Generated with Claude Code
https://claude.ai/code/session_01BycevXKBAk4aDiZYQ1qJLU
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.