commit 833296344231724ac46fe6f7b1c8fe6ed70d4fe5
parent c26a9264e6ec0f7a8de8f3389c03228f4d74dd1e
Author: triesap <tyson@radroots.org>
Date: Fri, 19 Jun 2026 03:56:49 -0700
provider: classify unknown max transport failures
- add unknown transport outcomes for generic max-local client failures
- keep timeout classification tied to elapsed request budget exhaustion
- extend the mojo max-local stub with malformed response modes
- cover health and chat unknown transport boundaries in provider tests
Diffstat:
4 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/pixi.toml b/pixi.toml
@@ -23,7 +23,7 @@ test-unit = "mojo -I src tests/test_hyf.mojo"
test-runtime = "mojo -I src tests/test_runtime_paths.mojo"
test-repo-local-process = "mojo -I src tests/test_repo_local_process_contract.mojo"
test-stdio = "mojo -I src tests/test_stdio_contract.mojo"
-test-provider-adapter = "mojo -I src tests/test_provider_adapter.mojo"
+test-provider-adapter = "mojo -I src -I tests tests/test_provider_adapter.mojo"
smoke-max-local = "mojo -I src -I tests tests/max_local_operator_smoke.mojo"
test-runtime-contract = { depends-on = [
"test-runtime",
diff --git a/src/hyf_provider/client.mojo b/src/hyf_provider/client.mojo
@@ -73,7 +73,7 @@ def _transport_exception_reason(
) -> String:
if _elapsed_ms_since(start_ns) >= request_timeout_ms:
return "timeout"
- return "connection_failed"
+ return "unknown_transport"
def make_max_local_http_client(config: MaxLocalProviderConfig) -> HttpClient:
diff --git a/tests/max_local_process_helper.mojo b/tests/max_local_process_helper.mojo
@@ -117,11 +117,17 @@ def _send(mut stream: TcpStream, status: Int, body: String) raises:
stream.write_all(Span[UInt8, _](response.as_bytes()))
+def _send_raw(mut stream: TcpStream, response: String) raises:
+ stream.write_all(Span[UInt8, _](response.as_bytes()))
+
+
def _handle_health(mut stream: TcpStream, mode: String) raises:
if mode == "health_non_2xx":
_send(stream, 503, '{"status":"unavailable"}')
elif mode == "health_timeout":
usleep(1_000_000)
+ elif mode == "health_malformed_http":
+ _send_raw(stream, "not an http response\r\n\r\n")
elif mode == "query_rewrite_remaining_deadline_timeout":
usleep(200_000)
_send(stream, 200, '{"status":"ok"}')
@@ -168,6 +174,8 @@ def _handle_chat_completions(mut stream: TcpStream, mode: String) raises:
elif mode == "query_rewrite_remaining_deadline_timeout":
usleep(400_000)
_send(stream, 200, _chat_completion(_query_rewrite_analysis()))
+ elif mode == "query_rewrite_malformed_http":
+ _send_raw(stream, "not an http response\r\n\r\n")
else:
_send(stream, 500, '{"error":"unsupported_mode"}')
diff --git a/tests/test_provider_adapter.mojo b/tests/test_provider_adapter.mojo
@@ -26,6 +26,10 @@ from hyf_runtime.config import (
HyfServiceRuntimeConfig,
default_loaded_runtime_config,
)
+from max_local_process_helper import (
+ reserve_loopback_port,
+ spawn_max_local_stub,
+)
def _provider_runtime_config() -> HyfLoadedRuntimeConfig:
@@ -64,6 +68,15 @@ def _provider_config() -> MaxLocalProviderConfig:
)
+def _provider_config_for_port(port: Int) -> MaxLocalProviderConfig:
+ return MaxLocalProviderConfig(
+ base_url="http://127.0.0.1:" + String(port) + "/v1/",
+ health_url="http://127.0.0.1:" + String(port) + "/health",
+ model="max-local-query-rewrite",
+ request_timeout_ms=15000,
+ )
+
+
def _invalid_base_url_provider_config() -> MaxLocalProviderConfig:
return MaxLocalProviderConfig(
base_url="ftp://127.0.0.1:8000/v1/",
@@ -247,6 +260,38 @@ def test_max_local_transport_boundary_rejects_invalid_health_url() raises:
assert_equal(outcome.failure.value().reason, "invalid_url")
+def test_max_local_transport_boundary_reports_unknown_chat_transport() raises:
+ var provider_port = reserve_loopback_port()
+ var provider_stub = spawn_max_local_stub(
+ provider_port, "query_rewrite_malformed_http", 1
+ )
+ var outcome = post_max_local_chat_completion(
+ _provider_config_for_port(provider_port), loads("{}")
+ )
+
+ assert_true(outcome.failure)
+ assert_true(not outcome.response)
+ assert_equal(outcome.failure.value().kind, "transport")
+ assert_equal(outcome.failure.value().reason, "unknown_transport")
+
+ provider_stub.wait()
+
+
+def test_max_local_transport_boundary_reports_unknown_health_transport() raises:
+ var provider_port = reserve_loopback_port()
+ var provider_stub = spawn_max_local_stub(
+ provider_port, "health_malformed_http", 1
+ )
+ var outcome = get_max_local_health(_provider_config_for_port(provider_port))
+
+ assert_true(outcome.failure)
+ assert_true(not outcome.response)
+ assert_equal(outcome.failure.value().kind, "transport")
+ assert_equal(outcome.failure.value().reason, "unknown_transport")
+
+ provider_stub.wait()
+
+
def test_query_rewrite_request_body_sets_schema_contract() raises:
var context = default_request_context()
context.return_provenance = True