From 29abaeb98fcc48c0a9f3d87c105c13151351475e Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Mon, 27 Jul 2026 22:45:24 +0500 Subject: [PATCH 1/2] fix(timeouts): add claude-fable to reasoning stale-timeout floor table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit claude-fable-5 is a Mythos-class reasoning model (1M context, 128K output, adaptive thinking per anthropic_adapter.py) but was missing from the _REASONING_STALE_TIMEOUT_FLOORS table. Without a floor entry it got the default 180s stale timeout (300s with context scaling), which is too short for fable-5's thinking phase on large contexts. Each stale kill bumped the cross-turn circuit breaker streak; after 5 consecutive kills _check_stale_giveup() fired immediately (elapsed: 0.00s), aborting all calls with "Provider has been unresponsive for 5 consecutive stale attempts." Users with 191K-token contexts hit this reliably. Add ("claude-fable", 600) — deep-reasoning tier alongside o1/deepseek-r1/ nemotron-3-ultra. The claude-fable slug matches claude-fable-5 and future variants via the existing right-anchor regex. --- agent/reasoning_timeouts.py | 10 ++++++++++ tests/agent/test_reasoning_stale_timeout_floor.py | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/agent/reasoning_timeouts.py b/agent/reasoning_timeouts.py index 8af5ab799f48..9c5fc2020152 100644 --- a/agent/reasoning_timeouts.py +++ b/agent/reasoning_timeouts.py @@ -106,6 +106,14 @@ _REASONING_STALE_TIMEOUT_FLOORS: tuple[tuple[str, int], ...] = ( ("claude-sonnet-5", 180), ("claude-sonnet-4.5", 180), ("claude-sonnet-4.6", 180), + # Anthropic Mythos-class named reasoning models (claude-fable-5, …). + # 1M context + 128K output — heavier thinking phase than the + # numbered Claude line, so the floor is in the deep-reasoning tier + # alongside o1 / deepseek-r1 / nemotron-3-ultra. Without this + # entry the stale-stream detector kills fable-5's thinking phase + # at the default 180s (300s with context scaling), tripping the + # cross-turn circuit breaker after 5 consecutive stale kills. + ("claude-fable", 600), # xAI Grok reasoning variants. Explicit reasoning-only keys # plus one for the ``non-reasoning`` variant so users picking # the fast variant don't get the 300s floor. Bare ``grok-3``, @@ -207,6 +215,8 @@ def get_reasoning_stale_timeout_floor(model: object) -> Optional[float]: 300.0 >>> get_reasoning_stale_timeout_floor("anthropic/claude-opus-4-6") 240.0 + >>> get_reasoning_stale_timeout_floor("anthropic/claude-fable-5") + 600.0 >>> get_reasoning_stale_timeout_floor("gpt-4o") is None True >>> get_reasoning_stale_timeout_floor("olmo-1") is None diff --git a/tests/agent/test_reasoning_stale_timeout_floor.py b/tests/agent/test_reasoning_stale_timeout_floor.py index ec05cb54dd60..608c83d10408 100644 --- a/tests/agent/test_reasoning_stale_timeout_floor.py +++ b/tests/agent/test_reasoning_stale_timeout_floor.py @@ -74,6 +74,10 @@ import pytest ("anthropic/claude-opus-4-20250514", 240.0), ("anthropic/claude-sonnet-4.5", 180.0), ("anthropic/claude-sonnet-4.6", 180.0), + # Anthropic Mythos-class named reasoning models — deep-reasoning tier. + ("anthropic/claude-fable-5", 600.0), + ("claude-fable-5", 600.0), + ("claude-fable", 600.0), # xAI Grok reasoning variants — explicit, not bare `grok`. ("x-ai/grok-4-fast-reasoning", 300.0), ("x-ai/grok-4.20-reasoning", 300.0), From f5f5ac312af29ea1bc276663e2b7d71091753276 Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Mon, 27 Jul 2026 23:10:30 +0500 Subject: [PATCH 2/2] chore: add contributor mapping for reinbeumer@gmail.com Needed for PR #72677 attribution check. --- contributors/emails/reinbeumer@gmail.com | 1 + 1 file changed, 1 insertion(+) create mode 100644 contributors/emails/reinbeumer@gmail.com diff --git a/contributors/emails/reinbeumer@gmail.com b/contributors/emails/reinbeumer@gmail.com new file mode 100644 index 000000000000..26c0b64b9500 --- /dev/null +++ b/contributors/emails/reinbeumer@gmail.com @@ -0,0 +1 @@ +reinbeumer