commit 9b6de82c9f2adc9478d4d77c39a1b9a77ca4f4c5
parent c18af0d6b2ba7c027fd4088a9c3ffc85cabbef22
Author: triesap <tyson@radroots.org>
Date: Wed, 8 Apr 2026 18:10:02 +0000
tests: add checked-in hyf verification lane
- add pixi run test and a mojo test module covering protocol and wire encode/decode behavior
- expose a pure stdio request-dispatch helper so tests can exercise routing without subprocess glue
- cover truthful control-plane responses, deferred capability handling, and first-wave mode-a outputs
- verify both pixi run test and pixi run run from the hyf repo root
Diffstat:
3 files changed, 298 insertions(+), 69 deletions(-)
diff --git a/pixi.toml b/pixi.toml
@@ -17,3 +17,4 @@ mojson = { path = "../../../../vendor/mojo/mojson" }
[tasks]
run = "mojo run src/main.mojo"
+test = "mojo -I src tests/test_hyf.mojo"
diff --git a/src/hyf_stdio/server.mojo b/src/hyf_stdio/server.mojo
@@ -11,7 +11,7 @@ from hyf_core.capabilities.registry import (
)
from hyf_core.capabilities.query_rewrite import execute_query_rewrite
from hyf_core.capabilities.semantic_rank import execute_semantic_rank
-from hyf_core.errors import CapabilityFailure, CapabilitySuccess
+from hyf_core.errors import CapabilityFailure, CapabilityResult, CapabilitySuccess
from hyf_stdio.codec import decode_request, encode_error, encode_success
from hyf_stdio.control.capabilities import build_capabilities_output
from hyf_stdio.control.status import build_status_output
@@ -90,40 +90,89 @@ def _wire_success_from_core_success(
)
-def _write_query_rewrite(request: WireRequest, request_id: String) raises:
- var result = execute_query_rewrite(
- request.input.clone(), request.context.copy()
- )
+def _dispatch_capability_result(
+ request_id: String, result: CapabilityResult
+) raises -> String:
if result.failure:
- _write_error(_wire_error_from_core_failure(request_id, result.failure.value()))
- return
- _write_success(
+ return encode_error(
+ _wire_error_from_core_failure(request_id, result.failure.value())
+ )
+ return encode_success(
_wire_success_from_core_success(request_id, result.success.value())
)
-def _write_semantic_rank(request: WireRequest, request_id: String) raises:
- var result = execute_semantic_rank(
+def _dispatch_query_rewrite(request: WireRequest, request_id: String) raises -> String:
+ var result = execute_query_rewrite(
request.input.clone(), request.context.copy()
)
- if result.failure:
- _write_error(_wire_error_from_core_failure(request_id, result.failure.value()))
- return
- _write_success(
- _wire_success_from_core_success(request_id, result.success.value())
+ return _dispatch_capability_result(request_id, result)
+
+
+def _dispatch_semantic_rank(request: WireRequest, request_id: String) raises -> String:
+ var result = execute_semantic_rank(
+ request.input.clone(), request.context.copy()
)
+ return _dispatch_capability_result(request_id, result)
-def _write_explain_result(request: WireRequest, request_id: String) raises:
+def _dispatch_explain_result(request: WireRequest, request_id: String) raises -> String:
var result = execute_explain_result(
request.input.clone(), request.context.copy()
)
- if result.failure:
- _write_error(_wire_error_from_core_failure(request_id, result.failure.value()))
- return
- _write_success(
- _wire_success_from_core_success(request_id, result.success.value())
- )
+ return _dispatch_capability_result(request_id, result)
+
+
+def handle_request(request: WireRequest) raises -> String:
+ var request_id = String(request.request_id)
+ try:
+ if request.capability == "sys.status":
+ return encode_success(
+ WireSuccessResponse(
+ request_id=request_id,
+ output=build_status_output(),
+ meta=None,
+ )
+ )
+ elif request.capability == "sys.capabilities":
+ return encode_success(
+ WireSuccessResponse(
+ request_id=request_id,
+ output=build_capabilities_output(),
+ meta=None,
+ )
+ )
+ elif request.capability == "query_rewrite":
+ return _dispatch_query_rewrite(request.copy(), request_id)
+ elif request.capability == "semantic_rank":
+ return _dispatch_semantic_rank(request.copy(), request_id)
+ elif request.capability == "explain_result":
+ return _dispatch_explain_result(request.copy(), request_id)
+ elif is_deferred_capability(request.capability):
+ return encode_error(_disabled_response(request))
+ elif is_known_business_capability(request.capability):
+ return encode_error(_unavailable_response(request))
+ return encode_error(_unsupported_response(request))
+ except e:
+ return encode_error(
+ WireErrorResponse(
+ request_id=request_id,
+ error=internal_error(String(e)),
+ )
+ )
+
+
+def handle_request_line(line: String) raises -> String:
+ try:
+ var request = decode_request(line)
+ return handle_request(request^)
+ except e:
+ return encode_error(
+ WireErrorResponse(
+ request_id="",
+ error=invalid_request_error(String(e)),
+ )
+ )
def run_stdio_server() raises:
@@ -133,53 +182,7 @@ def run_stdio_server() raises:
try:
var line = _read_request_line()
- try:
- var request = decode_request(line)
- var request_id = String(request.request_id)
-
- try:
- if request.capability == "sys.status":
- _write_success(
- WireSuccessResponse(
- request_id=request_id,
- output=build_status_output(),
- meta=None,
- )
- )
- elif request.capability == "sys.capabilities":
- _write_success(
- WireSuccessResponse(
- request_id=request_id,
- output=build_capabilities_output(),
- meta=None,
- )
- )
- elif request.capability == "query_rewrite":
- _write_query_rewrite(request^, request_id)
- elif request.capability == "semantic_rank":
- _write_semantic_rank(request^, request_id)
- elif request.capability == "explain_result":
- _write_explain_result(request^, request_id)
- elif is_deferred_capability(request.capability):
- _write_error(_disabled_response(request))
- elif is_known_business_capability(request.capability):
- _write_error(_unavailable_response(request))
- else:
- _write_error(_unsupported_response(request))
- except e:
- _write_error(
- WireErrorResponse(
- request_id=request_id,
- error=internal_error(String(e)),
- )
- )
- except e:
- _write_error(
- WireErrorResponse(
- request_id="",
- error=invalid_request_error(String(e)),
- )
- )
+ print(handle_request_line(line))
except e:
if String(e) == "EOF":
return
diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo
@@ -0,0 +1,225 @@
+from std.testing import assert_equal, assert_true, assert_raises, TestSuite
+
+from mojson import Value, loads
+
+from hyf_stdio.codec import decode_request, encode_error, encode_success
+from hyf_stdio.envelope import WireErrorResponse, WireSuccessResponse
+from hyf_stdio.errors import WireError
+from hyf_stdio.server import handle_request_line
+
+
+def _dispatch(line: String) raises -> Value:
+ return loads(handle_request_line(line))
+
+
+def _business_capability(result: Value, capability_id: String) raises -> Value:
+ for capability in result["output"]["business_capabilities"].array_items():
+ if capability["id"].string_value() == capability_id:
+ return capability.clone()
+ raise Error("missing capability '" + capability_id + "' in response")
+
+
+def test_decode_request_parses_context_and_input() raises:
+ var request = decode_request(
+ '{"request_id":"req-1","capability":"query_rewrite","context":{"consumer":"radroots-cli","return_provenance":true},"input":{"query":"eggs near me"}}'
+ )
+
+ assert_equal(request.request_id, "req-1")
+ assert_equal(request.capability, "query_rewrite")
+ assert_equal(request.context.consumer, "radroots-cli")
+ assert_equal(request.context.mode_preference, "a")
+ assert_equal(request.context.return_provenance, True)
+ assert_equal(request.input["query"].string_value(), "eggs near me")
+
+
+def test_decode_request_rejects_unexpected_field() raises:
+ with assert_raises():
+ _ = decode_request(
+ '{"request_id":"req-1","capability":"query_rewrite","input":{"query":"eggs"},"unexpected":true}'
+ )
+
+
+def test_encode_success_and_error_shapes() raises:
+ var output = loads("{}")
+ output.set("kind", Value("ok"))
+
+ var meta = loads("{}")
+ meta.set("mode", Value("a"))
+
+ var success = loads(
+ encode_success(
+ WireSuccessResponse(
+ request_id="req-success",
+ output=output.copy(),
+ meta=meta.copy(),
+ )
+ )
+ )
+ assert_equal(success["request_id"].string_value(), "req-success")
+ assert_equal(success["ok"].bool_value(), True)
+ assert_equal(success["output"]["kind"].string_value(), "ok")
+ assert_equal(success["meta"]["mode"].string_value(), "a")
+
+ var failure = loads(
+ encode_error(
+ WireErrorResponse(
+ request_id="req-error",
+ error=WireError(code="invalid_request", message="bad request"),
+ )
+ )
+ )
+ assert_equal(failure["request_id"].string_value(), "req-error")
+ assert_equal(failure["ok"].bool_value(), False)
+ assert_equal(failure["error"]["code"].string_value(), "invalid_request")
+ assert_equal(failure["error"]["message"].string_value(), "bad request")
+
+
+def test_handle_request_line_returns_invalid_request_for_bad_line() raises:
+ var result = _dispatch("")
+ assert_equal(result["request_id"].string_value(), "")
+ assert_equal(result["ok"].bool_value(), False)
+ assert_equal(result["error"]["code"].string_value(), "invalid_request")
+
+
+def test_status_reports_registered_mode_a_ready() raises:
+ var result = _dispatch(
+ '{"request_id":"status-1","capability":"sys.status","input":{}}'
+ )
+
+ assert_equal(result["ok"].bool_value(), True)
+ assert_equal(
+ result["output"]["implementation_status"].string_value(),
+ "bootstrap_registered_mode_a_ready",
+ )
+ assert_equal(
+ result["output"]["backend_reachability"]["mode_a_deterministic"].string_value(),
+ "available",
+ )
+ assert_equal(
+ Int(
+ result["output"]["counts"]["mode_a_registered_business_capabilities"].int_value()
+ ),
+ 3,
+ )
+ assert_equal(
+ Int(
+ result["output"]["counts"]["mode_a_implemented_business_capabilities"].int_value()
+ ),
+ 3,
+ )
+
+
+def test_capabilities_report_implemented_and_disabled_states() raises:
+ var result = _dispatch(
+ '{"request_id":"caps-1","capability":"sys.capabilities","input":{}}'
+ )
+
+ var query_rewrite = _business_capability(result, "query_rewrite")
+ var semantic_rank = _business_capability(result, "semantic_rank")
+ var explain_result = _business_capability(result, "explain_result")
+ var filter_extraction = _business_capability(result, "filter_extraction")
+
+ assert_equal(query_rewrite["implemented"].bool_value(), True)
+ assert_equal(query_rewrite["callable"].bool_value(), True)
+ assert_equal(
+ semantic_rank["implementation_status"].string_value(), "implemented"
+ )
+ assert_equal(
+ explain_result["implementation_status"].string_value(), "implemented"
+ )
+ assert_equal(filter_extraction["mode_a"].string_value(), "disabled")
+ assert_equal(
+ filter_extraction["disabled_reason"].string_value(),
+ "deferred_bootstrap_capability",
+ )
+
+
+def test_disabled_capability_returns_capability_disabled() raises:
+ var result = _dispatch(
+ '{"request_id":"disabled-1","capability":"filter_extraction","input":{}}'
+ )
+
+ assert_equal(result["ok"].bool_value(), False)
+ assert_equal(result["request_id"].string_value(), "disabled-1")
+ assert_equal(result["error"]["code"].string_value(), "capability_disabled")
+
+
+def test_query_rewrite_returns_deterministic_output() raises:
+ var result = _dispatch(
+ '{"request_id":"rewrite-1","capability":"query_rewrite","input":{"text":"eggs near me with weekend pickup"}}'
+ )
+
+ assert_equal(result["ok"].bool_value(), True)
+ assert_equal(
+ result["output"]["rewritten_text"].string_value(),
+ "eggs",
+ )
+ assert_equal(
+ result["output"]["extracted_filters"]["fulfillment"].string_value(),
+ "pickup",
+ )
+ assert_equal(result["meta"]["backend"].string_value(), "heuristic")
+
+
+def test_semantic_rank_returns_ranked_ids_and_reasons() raises:
+ var result = _dispatch(
+ '{"request_id":"rank-1","capability":"semantic_rank","input":{"query":"eggs near me with weekend pickup","candidates":[{"id":"lst_7ak2","title":"Pasture eggs","farm":"La Huerta del Sur","delivery":"pickup","distance_km":3.2,"freshness_minutes":2},{"id":"lst_8k1p","title":"Free range eggs","farm":"Santa Elena","delivery":"delivery","distance_km":8.7,"freshness_minutes":18}]}}'
+ )
+
+ assert_equal(result["ok"].bool_value(), True)
+ assert_equal(
+ result["output"]["ranked_ids"][0].string_value(),
+ "lst_7ak2",
+ )
+ assert_equal(
+ result["output"]["ranked_ids"][1].string_value(),
+ "lst_8k1p",
+ )
+ assert_equal(
+ result["output"]["reasons"]["lst_7ak2"][1].string_value(),
+ "pickup match",
+ )
+ assert_equal(
+ result["output"]["scored_candidates"][0]["score"].int_value(),
+ 102,
+ )
+
+
+def test_explain_result_returns_deterministic_summary_and_provenance() raises:
+ var result = _dispatch(
+ '{"request_id":"explain-1","capability":"explain_result","context":{"consumer":"radroots-cli","return_provenance":true},"input":{"query":"eggs near me with weekend pickup","candidate":{"id":"lst_7ak2","title":"Pasture eggs","farm":"La Huerta del Sur","delivery":"pickup","distance_km":3.2,"freshness_minutes":2}}}'
+ )
+
+ assert_equal(result["ok"].bool_value(), True)
+ assert_equal(
+ result["output"]["explanation_kind"].string_value(),
+ "deterministic",
+ )
+ assert_true(
+ result["output"]["summary"].string_value().find("pickup match") >= 0
+ )
+ assert_equal(
+ result["meta"]["provenance"]["kind"].string_value(),
+ "deterministic",
+ )
+ assert_equal(
+ result["meta"]["provenance"]["source_refs"][1]["source_kind"].string_value(),
+ "candidate",
+ )
+
+
+def test_semantic_rank_invalid_input_returns_invalid_request() raises:
+ var result = _dispatch(
+ '{"request_id":"rank-bad-1","capability":"semantic_rank","input":{"query":"eggs near me with weekend pickup","candidates":[]}}'
+ )
+
+ assert_equal(result["ok"].bool_value(), False)
+ assert_equal(result["request_id"].string_value(), "rank-bad-1")
+ assert_equal(result["error"]["code"].string_value(), "invalid_request")
+ assert_true(
+ result["error"]["message"].string_value().find("must not be empty") >= 0
+ )
+
+
+def main() raises:
+ TestSuite.discover_tests[__functions_in_module()]().run()