commit 86f34187bb1808949a9de18b40d2d8f8bf1fe475
parent 146ecee3cc2ed21587f066cad168dd6c46d053ae
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 14:00:29 +0000
core: prepare gated descriptors for new operations
Diffstat:
2 files changed, 50 insertions(+), 0 deletions(-)
diff --git a/src/hyf_core/capabilities/registry.mojo b/src/hyf_core/capabilities/registry.mojo
@@ -228,3 +228,37 @@ def capability_exposure(
and provider_ready
),
)
+
+
+@fieldwise_init
+struct GatedOperationDescriptor(Copyable, Movable):
+ var id: String
+ var requires_assistance: Bool
+ var exposed: Bool
+
+
+def gated_operation_descriptors() -> List[GatedOperationDescriptor]:
+ var descriptors = List[GatedOperationDescriptor]()
+ descriptors.append(
+ GatedOperationDescriptor(
+ id="farm_update.interpret", requires_assistance=False, exposed=False
+ )
+ )
+ descriptors.append(
+ GatedOperationDescriptor(
+ id="buyer_request.interpret", requires_assistance=False, exposed=False
+ )
+ )
+ descriptors.append(
+ GatedOperationDescriptor(
+ id="buyer_request.match", requires_assistance=False, exposed=False
+ )
+ )
+ return descriptors^
+
+
+def gated_operation_is_exposed(operation: String, exposure_enabled: Bool) -> Bool:
+ for descriptor in gated_operation_descriptors():
+ if descriptor.id == operation:
+ return exposure_enabled
+ return False
diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo
@@ -1350,3 +1350,19 @@ def test_capability_exposure_separates_support_permission_readiness() raises:
assert_true(fully_ready.exposed)
var permission_denied = capability_exposure("query_rewrite", True, False, True)
assert_true(not permission_denied.exposed)
+
+
+from hyf_core.capabilities.registry import (
+ gated_operation_descriptors,
+ gated_operation_is_exposed,
+)
+
+
+def test_gated_operation_descriptors_are_prepared_not_exposed() raises:
+ var descriptors = gated_operation_descriptors()
+ assert_equal(len(descriptors), 3)
+ for descriptor in descriptors:
+ assert_true(not descriptor.exposed)
+ assert_true(not gated_operation_is_exposed("farm_update.interpret", False))
+ assert_true(gated_operation_is_exposed("buyer_request.match", True))
+ assert_true(not gated_operation_is_exposed("query_rewrite", True))