From c48532e21bfc94220b9f62d957320bbf6520b36b Mon Sep 17 00:00:00 2001 From: Yuneng Jiang Date: Sat, 19 Sep 2026 16:55:00 -0700 Subject: [PATCH 1/2] test(e2e): point the Nova Sonic realtime test at nova-2-sonic AWS retired amazon.nova-sonic-v1:0. GetFoundationModel now answers ResourceNotFoundException "This model version has reached the end of its life", and opening a bidirectional stream against it fails with ValidationException "The provided model identifier is invalid". amazon.nova-2-sonic-v1:0 is the active replacement. The test passed on builds 219 (2026-09-16) and 246 (2026-09-17) and has failed every run since, three attempts per build, with no litellm change to the realtime path in between. The symptom was a clean websocket close: Bedrock ends the stream rather than erroring, the forwarder treats a None receive as a normal stream end and closes the client socket, so the client sees ConnectionClosedOK and the test fails waiting for response.done. litellm already carries both models in the cost map, with "deprecation_date": "2026-09-14" on the old one, and the promptStart transformation already sends the audioOutputConfiguration that nova-2-sonic requires; only the test constant was left behind. Verified against live Bedrock with the promptStart shape the transformation builds: amazon.nova-sonic-v1:0 raises "The provided model identifier is invalid", amazon.nova-2-sonic-v1:0 opens a session and returns a usageEvent. The mocked handler and provider-cache tests keep the old id: it is only a label there, no call reaches AWS. (cherry picked from commit ca18755b64672a614161624bfedd4b66d62171dd) --- tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py b/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py index fff744b2134..a9836d64a07 100644 --- a/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py +++ b/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py @@ -25,7 +25,7 @@ from realtime_client import ( pytestmark = pytest.mark.e2e -NOVA_SONIC = "bedrock/amazon.nova-sonic-v1:0" +NOVA_SONIC = "bedrock/amazon.nova-2-sonic-v1:0" class TestNovaSonicRealtime: From 64db6e1d3b4ee9d09bf85ff2a380de764ba4a4e1 Mon Sep 17 00:00:00 2001 From: Yuneng Jiang Date: Sat, 19 Sep 2026 17:20:00 -0700 Subject: [PATCH 2/2] test(e2e): cite the source and date for the pinned Nova Sonic model id AGENTS.md allows a vendor-owned literal only when its source and date are cited next to it. A live realtime test cannot avoid naming a model, so record how the id was checked, and record that a retired id fails as a hang rather than an error so the next reader does not start by suspecting litellm. (cherry picked from commit 9f84382a24817cfdad7e73e32e77a1cdd2b7c983) --- .../realtime/test_realtime_bedrock_e2e.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py b/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py index a9836d64a07..656882a4d92 100644 --- a/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py +++ b/tests/e2e/llm_translation/realtime/test_realtime_bedrock_e2e.py @@ -3,6 +3,15 @@ Customer path: open /v1/realtime, session.update, conversation.item.create, response.create, and receive a completed response. A hang with no response.done is the regression. + +NOVA_SONIC pins a vendor-owned model id, which AWS retires on its own schedule. +Source: `aws bedrock list-foundation-models --region us-east-1`, checked +2026-09-19, where amazon.nova-2-sonic-v1:0 is ACTIVE and its predecessor +amazon.nova-sonic-v1:0 answers GetFoundationModel with "This model version has +reached the end of its life". A retired id does not fail loudly here: Bedrock +ends the bidirectional stream instead of erroring, so the proxy closes the +client socket with 1000 OK and this test reads it as a hang. Re-check the id +against that command before concluding litellm broke. """ from __future__ import annotations