fix(mobile): keep pending tasks queued when a send fails in flight

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>
9d738dab39Julius Marminge committed on 9/6/2026, 7:08:01 PMparent9a47c7b
2 files changedLine totals unavailable