fix: prevent agents-tools message test timeouts#98701
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 1, 2026, 12:15 PM ET / 16:15 UTC. Summary PR surface: Tests +13. Total +13 across 1 file. Reproducibility: yes. Main CI logs show the agents-tools shard timing out in Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this narrow test-only isolation through the normal maintainer review path once required checks remain green. Do we have a high-confidence way to reproduce the issue? Yes. Main CI logs show the agents-tools shard timing out in Is this the best way to solve the issue? Yes. This is the best fix shape for the PR scope because it blocks only expensive bundled fallback inside the focused unit suite while preserving loaded-plugin registry behavior and leaving bundled runtime coverage in loader/contract suites. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against a5e11c0083c5. Label changesLabel justifications:
Evidence reviewedPR surface: Tests +13. Total +13 across 1 file. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
Land-ready proof for exact head
No product/runtime code, timeout, worker-count, coverage, workflow, or CHANGELOG change. Ready to merge. |
|
Merged via squash.
|
Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
Co-authored-by: Peter Steinberger <[email protected]>
What Problem This Solves
Resolves a problem where the serialized
agents-toolsCI shard could time out inmessage-tool.test.tswhen its first asynchronous send cold-loaded bundled channel source entries after the heavyweight image-tool tests.Why This Change Was Made
The message-tool unit suite now disables bundled runtime/setup entry fallback while retaining the real loaded-plugin registry and alias-resolution paths. Tests that need channel behavior already install explicit minimal test plugins, so this keeps integration loading in its dedicated loader suites without changing production code, runner allocation, worker counts, timeouts, or coverage.
User Impact
There is no product/runtime behavior change. Maintainers can expect the main
agents-toolsshard to complete without the deterministic 2–3 minute message-tool stall that was blocking green-main leases.Evidence
Root-cause reproduction:
tbx_01kwf4f5e6dcm6qrw9h2kswchs(Node 24.13) reproduced the exact valid string-timeout row at 132,998 ms.cbx_370910f4757b/c7a.8xlarge(Node 24.18, 32 CPUs) reproduced it at 172,451 ms, excluding a Blacksmith-only platform defect.message-tool execute -> resolvePollVoteEchoRoute -> getChannelPlugin -> getBundledChannelPlugin -> source entry loader. The Vitest worker held one CPU while the async resolver awaited its next line.Exact-head candidate proof:
tbx_01kwf65hyk9camrztpa05p40qt, Actions run 28530354474, Node 24.13, 8 CPUs: exact row 10 ms; final full message-tool file 111/111 passed in 2.38 seconds.image-tool.test.tsran first in 34.889 seconds, thenmessage-tool.test.tspassed 111/111 in 547 ms; entire shard passed 54 files / 1,040 tests in 70.18 seconds.cbx_370910f4757b: exact row 10 ms (runrun_29422e57dc4b); full message-tool file passed 111/111 in 3.19 seconds with all formerly displaced fallback rows at 0–2 ms (runrun_94e471588c26).corepack pnpm check:changed -- src/agents/tools/message-tool.test.ts: passed conflict, attribution, dependency/patch guards, core-test typecheck, and changed-file lint (0 warnings/errors) on the fresh Testbox.gpt-5.6-solxhigh autoreview: no findings; patch correct at 0.97 confidence.The exact hosted/Testbox/direct-AWS executions are the live boundary for this test-only change; no external product service is involved.