fix(ios): guard websocket ping continuation#88231
Conversation
|
Codex review: needs maintainer review before merge. Reviewed May 30, 2026, 12:42 AM ET / 04:42 UTC. Summary PR surface: Other +76. Total +76 across 2 files. Reproducibility: yes. at source level: current main resumes the checked continuation directly from the Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land the focused ping-continuation guard with its regression tests after normal maintainer and CI gates so duplicate WebSocket ping callbacks cannot crash the native app. Do we have a high-confidence way to reproduce the issue? Yes at source level: current main resumes the checked continuation directly from the Is this the best way to solve the issue? Yes: a local at-most-once gate in AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against d13c8b03c901. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +76. Total +76 across 2 files. 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
|
c6f3f22 to
b4cee97
Compare
|
Merged via squash.
Thanks @ngutman! |
Summary
Verification
cd apps/shared/OpenClawKit && swift test --filter GatewayNodeSessionTests/websocketPingIgnoresDuplicateSuccessCallbacks(reproduced pre-fix crash:SWIFT TASK CONTINUATION MISUSE: sendPing() tried to resume its continuation more than once)cd apps/shared/OpenClawKit && swift test --filter GatewayNodeSessionTests/websocketPingIgnoresDuplicateSuccessCallbackscd apps/shared/OpenClawKit && swift test --filter GatewayNodeSessionTests/websocketPingIgnoresDuplicateCallbacksAfterFirstErrorcd apps/shared/OpenClawKit && swift test --filter GatewayNodeSessionTestsgit diff --check.agents/skills/autoreview/scripts/autoreview --mode localReal behavior proof
Behavior addressed: Latest shared App Store Connect TestFlight crash (
2026-05-30, build2026.5.25 (4)) showedEXC_BREAKPOINTfromCheckedContinuation.resume(throwing:)viaWebSocketTaskBox.sendPing()/ThrowingContinuationSupport.resumeVoid.Real environment tested: Local macOS Swift Package test runner for
apps/shared/OpenClawKiton branchfix/ios-websocket-ping-continuation-crash.Exact steps or command run after this patch:
cd apps/shared/OpenClawKit && swift test --filter GatewayNodeSessionTests.Evidence after fix: Regression tests simulate duplicate WebSocket ping callbacks; the full
GatewayNodeSessionTestssuite passed with 14 tests.Observed result after fix: Duplicate ping callbacks no longer trap from checked-continuation double resume; first callback result wins.
What was not tested: A live iOS TestFlight build against App Store Connect crash reporting was not run for this branch.