commit b57f1d9d9bea7cafac1cb21d8a20729efea5d389
parent 342ff98da7db53048d1bfa0eefe36a266f97e3c5
Author: triesap <tyson@radroots.org>
Date: Thu, 9 Apr 2026 02:42:32 +0000
core: unify hyf capability truth and routing
- move callable business capability lookup and execution into the registry
- route the heuristic backend and stdio server through registry truth
- remove the server-side manual business capability dispatch list
- add loop-based tests for registry-aligned routing and capability output
Diffstat:
4 files changed, 181 insertions(+), 38 deletions(-)
diff --git a/src/hyf_core/backends/heuristic_backend.mojo b/src/hyf_core/backends/heuristic_backend.mojo
@@ -1,13 +1,9 @@
from mojson import Value
-from hyf_core.capabilities.explain_result import execute_explain_result
-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 (
- CapabilityResult,
- capability_not_implemented_error,
- failed_capability,
+from hyf_core.capabilities.registry import (
+ execute_registered_business_capability,
)
+from hyf_core.errors import CapabilityResult
from hyf_core.request_context import RequestContext
@@ -18,11 +14,4 @@ def backend_name() -> String:
def execute_capability(
capability_id: String, input: Value, context: RequestContext
) raises -> CapabilityResult:
- if capability_id == "query_rewrite":
- return execute_query_rewrite(input, context)
- if capability_id == "semantic_rank":
- return execute_semantic_rank(input, context)
- if capability_id == "explain_result":
- return execute_explain_result(input, context)
-
- return failed_capability(capability_not_implemented_error(capability_id))
+ return execute_registered_business_capability(capability_id, input, context)
diff --git a/src/hyf_core/capabilities/registry.mojo b/src/hyf_core/capabilities/registry.mojo
@@ -1,4 +1,16 @@
-from std.collections import List
+from std.collections import List, Optional
+
+from mojson import Value
+
+from hyf_core.capabilities.explain_result import execute_explain_result
+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 (
+ CapabilityResult,
+ capability_not_implemented_error,
+ failed_capability,
+)
+from hyf_core.request_context import RequestContext
@fieldwise_init
@@ -7,6 +19,7 @@ struct BusinessCapabilityDescriptor(Copyable, Movable):
var deterministic_enabled: Bool
var implemented: Bool
var callable: Bool
+ var deterministic_backend: String
var assisted_available: Bool
var disabled_reason: String
@@ -19,6 +32,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=True,
implemented=True,
callable=True,
+ deterministic_backend="heuristic",
assisted_available=False,
disabled_reason="",
)
@@ -29,6 +43,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=False,
implemented=False,
callable=False,
+ deterministic_backend="",
assisted_available=False,
disabled_reason="deferred_bootstrap_capability",
)
@@ -39,6 +54,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=True,
implemented=True,
callable=True,
+ deterministic_backend="heuristic",
assisted_available=False,
disabled_reason="",
)
@@ -49,6 +65,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=False,
implemented=False,
callable=False,
+ deterministic_backend="",
assisted_available=False,
disabled_reason="deferred_bootstrap_capability",
)
@@ -59,6 +76,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=False,
implemented=False,
callable=False,
+ deterministic_backend="",
assisted_available=False,
disabled_reason="deferred_bootstrap_capability",
)
@@ -69,6 +87,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=False,
implemented=False,
callable=False,
+ deterministic_backend="",
assisted_available=False,
disabled_reason="deferred_bootstrap_capability",
)
@@ -79,6 +98,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=True,
implemented=True,
callable=True,
+ deterministic_backend="heuristic",
assisted_available=False,
disabled_reason="",
)
@@ -89,6 +109,7 @@ def canonical_business_capabilities() -> List[BusinessCapabilityDescriptor]:
deterministic_enabled=False,
implemented=False,
callable=False,
+ deterministic_backend="",
assisted_available=False,
disabled_reason="deferred_bootstrap_capability",
)
@@ -130,15 +151,45 @@ def deferred_capabilities() -> List[String]:
return disabled^
-def is_known_business_capability(capability_id: String) -> Bool:
+def canonical_business_capability(
+ capability_id: String,
+) -> Optional[BusinessCapabilityDescriptor]:
for capability in canonical_business_capabilities():
if capability.id == capability_id:
- return True
- return False
-
+ return Optional[BusinessCapabilityDescriptor](capability.copy())
+ return Optional[BusinessCapabilityDescriptor](None)
+
+
+def _dispatch_heuristic_registered_business_capability(
+ capability_id: String, input: Value, context: RequestContext
+) raises -> CapabilityResult:
+ if capability_id == "query_rewrite":
+ return execute_query_rewrite(input, context)
+ if capability_id == "semantic_rank":
+ return execute_semantic_rank(input, context)
+ if capability_id == "explain_result":
+ return execute_explain_result(input, context)
+ return failed_capability(capability_not_implemented_error(capability_id))
+
+
+def execute_registered_business_capability(
+ capability_id: String, input: Value, context: RequestContext
+) raises -> CapabilityResult:
+ var capability = canonical_business_capability(capability_id)
+ if not capability:
+ return failed_capability(capability_not_implemented_error(capability_id))
+
+ var descriptor = capability.value().copy()
+ if (
+ not descriptor.deterministic_enabled
+ or not descriptor.implemented
+ or not descriptor.callable
+ ):
+ return failed_capability(capability_not_implemented_error(capability_id))
+
+ if descriptor.deterministic_backend == "heuristic":
+ return _dispatch_heuristic_registered_business_capability(
+ capability_id, input, context
+ )
-def is_deferred_capability(capability_id: String) -> Bool:
- for capability in canonical_business_capabilities():
- if capability.id == capability_id:
- return not capability.deterministic_enabled
- return False
+ return failed_capability(capability_not_implemented_error(capability_id))
diff --git a/src/hyf_stdio/server.mojo b/src/hyf_stdio/server.mojo
@@ -6,8 +6,7 @@ from mojson import Value
from hyf_core.backends.selector import execute_capability as execute_backend_capability
from hyf_core.capabilities.registry import (
- is_deferred_capability,
- is_known_business_capability,
+ canonical_business_capability,
)
from hyf_core.errors import CapabilityFailure, CapabilityResult, CapabilitySuccess
from hyf_core.metadata import hyf_protocol_version
@@ -164,6 +163,23 @@ def _dispatch_business_capability(
return _dispatch_capability_result(request_id, request.trace_id, result)
+def _route_business_capability(
+ request: WireRequest, request_id: String
+) raises -> String:
+ var capability = canonical_business_capability(request.capability)
+ if not capability:
+ return encode_error(_unsupported_response(request))
+
+ var descriptor = capability.value().copy()
+ if not descriptor.deterministic_enabled:
+ return encode_error(_disabled_response(request))
+
+ if descriptor.implemented and descriptor.callable:
+ return _dispatch_business_capability(request, request_id)
+
+ return encode_error(_unavailable_response(request))
+
+
@parameter
def handle_request_with_control_builders[
status_builder: def() raises -> Value,
@@ -192,17 +208,7 @@ def handle_request_with_control_builders[
meta=None,
)
)
- elif (
- request.capability == "query_rewrite"
- or request.capability == "semantic_rank"
- or request.capability == "explain_result"
- ):
- return _dispatch_business_capability(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))
+ return _route_business_capability(request.copy(), request_id)
except e:
_emit_internal_diagnostic(
request_id,
diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo
@@ -26,6 +26,7 @@ from hyf_core.backends.selector import (
execute_capability as execute_core_capability,
resolve_backend,
)
+from hyf_core.capabilities.registry import canonical_business_capabilities
from hyf_core.metadata import current_build_identity, current_package_surface
from hyf_core.request_context import default_request_context
from hyf_stdio.control.capabilities import build_capabilities_output
@@ -70,6 +71,35 @@ def _dispatch(line: String) raises -> Value:
return loads(handle_request_line(line))
+def _capability_output_entry_by_id(
+ output: Value, capability_id: String
+) raises -> Value:
+ for entry in output["business_capabilities"].array_items():
+ if entry["id"].string_value() == capability_id:
+ return entry.clone()
+ raise Error("missing business capability entry '" + capability_id + "'")
+
+
+def _sample_request_json_for_callable_capability(
+ capability_id: String,
+) raises -> String:
+ if capability_id == "query_rewrite":
+ return load_scenario_request_json(
+ "scenarios/query_rewrite_local_pickup_weekend.json"
+ )
+ if capability_id == "semantic_rank":
+ return load_scenario_request_json(
+ "scenarios/semantic_rank_local_pickup_weekend.json"
+ )
+ if capability_id == "explain_result":
+ return load_scenario_request_json(
+ "scenarios/explain_result_local_pickup_weekend.json"
+ )
+ raise Error(
+ "missing sample request for callable capability '" + capability_id + "'"
+ )
+
+
def _failing_status_output() raises -> Value:
raise Error("simulated test-only status builder failure")
@@ -337,6 +367,40 @@ def test_capabilities_report_implemented_and_disabled_states() raises:
assert_matches_scenario_response(result, "scenarios/capabilities_ok.json")
+def test_capabilities_output_reflects_registry_truth_for_all_business_capabilities() raises:
+ var output = build_capabilities_output()
+ for capability in canonical_business_capabilities():
+ var entry = _capability_output_entry_by_id(output, capability.id)
+ assert_equal(entry["id"].string_value(), capability.id)
+ assert_equal(entry["implemented"].bool_value(), capability.implemented)
+ assert_equal(entry["callable"].bool_value(), capability.callable)
+ assert_equal(
+ entry["assisted_backend_available"].bool_value(),
+ capability.assisted_available,
+ )
+ assert_equal(
+ entry["deterministic_execution"].string_value(),
+ "enabled" if capability.deterministic_enabled else "disabled",
+ )
+ assert_equal(
+ entry["implementation_status"].string_value(),
+ "implemented"
+ if capability.implemented
+ else (
+ "not_implemented"
+ if capability.deterministic_enabled
+ else "disabled"
+ ),
+ )
+ if capability.disabled_reason != "":
+ assert_equal(
+ entry["disabled_reason"].string_value(),
+ capability.disabled_reason,
+ )
+ else:
+ assert_true(not _has_key(entry, "disabled_reason"))
+
+
def test_disabled_capability_returns_capability_disabled() raises:
var result = _dispatch(
load_scenario_request_json("scenarios/deferred_capability_disabled.json")
@@ -346,6 +410,39 @@ def test_disabled_capability_returns_capability_disabled() raises:
)
+def test_all_callable_registry_business_capabilities_are_dispatchable() raises:
+ for capability in canonical_business_capabilities():
+ if not capability.callable:
+ continue
+ var result = _dispatch(
+ _sample_request_json_for_callable_capability(capability.id)
+ )
+ assert_equal(Int(result["version"].int_value()), 1)
+ assert_equal(result["ok"].bool_value(), True)
+
+
+def test_non_callable_registry_business_capabilities_do_not_route_as_success() raises:
+ for capability in canonical_business_capabilities():
+ if capability.callable:
+ continue
+ var result = _dispatch(
+ '{"version":1,"request_id":"'
+ + capability.id
+ + '-routing-1","capability":"'
+ + capability.id
+ + '","input":{}}'
+ )
+ assert_equal(Int(result["version"].int_value()), 1)
+ assert_equal(result["request_id"].string_value(), capability.id + "-routing-1")
+ assert_equal(result["ok"].bool_value(), False)
+ assert_equal(
+ result["error"]["code"].string_value(),
+ "capability_disabled"
+ if not capability.deterministic_enabled
+ else "capability_unavailable",
+ )
+
+
def test_backend_selector_routes_deterministic_wave() raises:
var context = default_request_context()
var selection = resolve_backend(context)