commit 21aec6c5dbbc7a0fd48f503b7858d9094dbf3280
parent f60e5cbf78be22df7275c165520882789634fd54
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:53:31 +0000
core: implement grade and required-attribute checks
Diffstat:
2 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/src/hyf_application/match_checks.mojo b/src/hyf_application/match_checks.mojo
@@ -24,3 +24,26 @@ def check_product(
def semantic_score_can_rescue_product() -> Bool:
return False
+
+
+def check_required_attributes(
+ required: List[String], verified: List[String]
+) raises -> ConstraintAssessment:
+ if len(required) == 0:
+ return constraint_assessment(
+ "attribute", "pass", True, "attribute_optional"
+ )
+ for attribute in required:
+ var found = False
+ for known in verified:
+ if known == attribute:
+ found = True
+ if not found:
+ return constraint_assessment(
+ "attribute", "unknown", True, "attribute_unverified"
+ )
+ return constraint_assessment("attribute", "pass", True, "attribute_verified")
+
+
+def model_confidence_verifies_certification() -> Bool:
+ return False
diff --git a/tests/test_application.mojo b/tests/test_application.mojo
@@ -412,3 +412,20 @@ def test_product_and_substitution_check() raises:
var unknown = check_product(unresolved_product("mystery"), roma, False)
assert_equal(unknown.result, "unknown")
assert_true(not semantic_score_can_rescue_product())
+
+
+from hyf_application.match_checks import (
+ check_required_attributes,
+ model_confidence_verifies_certification,
+)
+
+
+def test_grade_and_required_attribute_checks() raises:
+ var required = List[String]()
+ required.append("organic")
+ var verified = List[String]()
+ verified.append("organic")
+ assert_equal(check_required_attributes(required, verified).result, "pass")
+ assert_equal(check_required_attributes(required, List[String]()).result, "unknown")
+ assert_equal(check_required_attributes(List[String](), verified).result, "pass")
+ assert_true(not model_confidence_verifies_certification())