A pending task queued offline drains as soon as the phone reconnects, which is exactly when the socket is most likely to drop again. The outbox drain classified that failure by message text, and an RpcClientError wrapping a SocketReadError reads "An error occurred during Read", which matched no transport pattern. The drain treated it as a server rejection and restored the task into the new-task draft, so it silently vanished from Pending. Classify by error tag first: only OrchestrationDispatchCommandError and EnvironmentAuthorizationError (the two errors dispatchCommand can return) restore; RpcClientError, EnvironmentRpcUnavailableError, EnvironmentNotRegisteredError and ConnectionTransientError retry. Untagged errors still fall back to the message matcher. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Julius Marminge committed on 9/6/2026, 7:08:01 PMparent9a47c7b
2 files changedLine totals unavailable