From bcaff8c208f114c932bb5d644c3ebab62f23e8d8 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 4 Apr 2026 16:18:07 +0100 Subject: [PATCH] docs: refresh failover generic error refs --- docs/concepts/model-failover.md | 8 ++++++++ docs/help/faq.md | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/docs/concepts/model-failover.md b/docs/concepts/model-failover.md index 3ce2cf1cc18..6a484d76d39 100644 --- a/docs/concepts/model-failover.md +++ b/docs/concepts/model-failover.md @@ -129,6 +129,14 @@ validation failures) are treated as failover‑worthy and use the same cooldowns OpenAI-compatible stop-reason errors such as `Unhandled stop reason: error`, `stop reason: error`, and `reason: error` are classified as timeout/failover signals. +Provider-scoped generic server text can also land in that timeout bucket when +the source matches a known transient pattern. For example, Anthropic bare +`An unknown error occurred` and JSON `api_error` payloads with transient server +text such as `internal server error`, `unknown error, 520`, `upstream error`, +or `backend error` are treated as failover-worthy timeouts. Generic internal +fallback text such as `LLM request failed with an unknown error.` or a bare +`Provider returned error` stays conservative and does not trigger failover by +itself. Cooldowns use exponential backoff: diff --git a/docs/help/faq.md b/docs/help/faq.md index 5a8313ae25b..dc70e97b380 100644 --- a/docs/help/faq.md +++ b/docs/help/faq.md @@ -2454,6 +2454,16 @@ for usage/billing and raise limits as needed. `input is too long for the model` stay on the compaction/retry path instead of advancing model fallback. + Generic server-error text is intentionally narrower than "anything with + unknown/error in it". OpenClaw does treat provider-scoped transient shapes + such as Anthropic bare `An unknown error occurred`, stop-reason errors like + `Unhandled stop reason: error`, and JSON `api_error` payloads with + transient server text (`internal server error`, `unknown error, 520`, + `upstream error`, `backend error`) as timeout/failover signals. But generic + internal fallback text like `LLM request failed with an unknown error.` or + a bare `Provider returned error` stays conservative and does not trigger + model fallback by itself. +