fix: use longer bridge timeout for send actions#139
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 6, 2026, 10:01 PM ET / 02:01 UTC. Summary Reproducibility: no. high-confidence live reproduction is included. Source inspection confirms current main gives send-style bridge actions the same 10s default as every other action, but the PR does not include live macOS output showing a send completing after more than 10s. Review metrics: 2 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the narrow action-specific timeout helper after redacted live macOS bridge-send proof shows slow sends complete within the longer window and maintainers accept the 150s failure wait. Do we have a high-confidence way to reproduce the issue? No high-confidence live reproduction is included. Source inspection confirms current main gives send-style bridge actions the same 10s default as every other action, but the PR does not include live macOS output showing a send completing after more than 10s. Is this the best way to solve the issue? Yes, the code path is narrow and covers message, multipart, attachment, poll, and tapback sends while preserving explicit overrides and non-send defaults. The remaining concern is proof and maintainer acceptance of the timeout tradeoff, not a mechanical code defect. AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 041b40686a6d. Label changesLabel justifications:
Evidence reviewedWhat 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
|
08d2d9a to
4c85d16
Compare
|
@clawsweeper re-review Addressed the timeout coverage finding:
Fresh verification after the patch:
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
…d timeout (#91041) Append imsg's own status message (SIP / library validation / macOS 26 AMFI gate) to iMessage private-API blocked-action errors so operators see the real blocker instead of a generic "run imsg launch". Add a dedicated 150s default timeout for iMessage send RPCs (explicit opts and probeTimeoutMs still win) so macOS 26 bridge stalls are not aborted mid-send. Staged mitigation: the longer wait fully activates once the companion bridge timeout (openclaw/imsg#139) ships; on current imsg the bridge still returns at its own 10s, so there is no regression. Diagnostics half is live-proven; the delayed-send timeout is covered by source + unit proof + maintainer waiver.
…d timeout (openclaw#91041) Append imsg's own status message (SIP / library validation / macOS 26 AMFI gate) to iMessage private-API blocked-action errors so operators see the real blocker instead of a generic "run imsg launch". Add a dedicated 150s default timeout for iMessage send RPCs (explicit opts and probeTimeoutMs still win) so macOS 26 bridge stalls are not aborted mid-send. Staged mitigation: the longer wait fully activates once the companion bridge timeout (openclaw/imsg#139) ships; on current imsg the bridge still returns at its own 10s, so there is no regression. Diagnostics half is live-proven; the delayed-send timeout is covered by source + unit proof + maintainer waiver.
…d timeout (openclaw#91041) Append imsg's own status message (SIP / library validation / macOS 26 AMFI gate) to iMessage private-API blocked-action errors so operators see the real blocker instead of a generic "run imsg launch". Add a dedicated 150s default timeout for iMessage send RPCs (explicit opts and probeTimeoutMs still win) so macOS 26 bridge stalls are not aborted mid-send. Staged mitigation: the longer wait fully activates once the companion bridge timeout (openclaw/imsg#139) ships; on current imsg the bridge still returns at its own 10s, so there is no regression. Diagnostics half is live-proven; the delayed-send timeout is covered by source + unit proof + maintainer waiver.
4c85d16 to
c8296e6
Compare
|
Maintainer proof/update after rebasing and tightening this PR:
Verification:
Caveat: I could not add redacted live slow-send bridge proof because the available macOS hosts are SIP-enabled, so this merge is based on source-level verification, local tests, CI, and explicit maintainer acceptance of the longer send wait. |
Summary
This backs the OpenClaw iMessage send timeout in openclaw/openclaw#91041 at the actual imsg bridge layer.
Verification
swift format lint Sources/IMsgCore/IMsgBridgeClient.swift Sources/IMsgCore/IMsgBridgeProtocol.swift Tests/IMsgCoreTests/IMsgBridgeProtocolTests.swiftDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift test --filter IMsgBridgeProtocolTestsDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift test --filter RPCBridgeMessageHandlersTests --filter RPCServerBridgeTests --filter BridgeRichCommandTestsDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer make test(325 tests in 2 suites passed)Notes
.sendReactionis included because tapbacks build anIMMessageand dispatch through[chat sendMessage:], so they can hit the same private-send wait class..notifyAnywaysintentionally remains on the 10s default because it uses a separate message-item mutation path rather than dispatching a send.