fix(server): a timed-out steer is not resent as a follow-up

A steer whose acknowledgement timed out may already have been accepted.
If its turn completed in the meantime, the worker treated it like a
rejected steer and dispatched the message again as a follow-up, so the
provider could receive the same input twice. A timeout now never reports
turnCompleted, so it stays a failure; ordinary rejections against a
completed turn keep the follow-up fallback.

The steer cause-chain walk now tracks visited errors so a cyclic cause
cannot loop forever.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
67654ae8e4Julius Marminge committed on 10/22/2026, 9:00:42 PMparent25cf68d
3 files changedLine totals unavailable