commit 36e067b51094b7b375748cbe201db52cbae96173
parent ac1cf12676d27b44565b574244c60d119c098026
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:50:05 +0000
core: apply explicit farm clarification context
Diffstat:
2 files changed, 66 insertions(+), 0 deletions(-)
diff --git a/src/hyf_application/farm_clarification.mojo b/src/hyf_application/farm_clarification.mojo
@@ -0,0 +1,39 @@
+from hyf_core.domain.clarification import (
+ ClarificationEvidence,
+ apply_clarification,
+ clarification_evidence,
+ clarification_is_stale,
+)
+from hyf_core.domain.field import DecodedField, known_field
+
+
+def apply_farm_clarification(
+ original_value: String,
+ target_field: String,
+ source_id: String,
+ revision: String,
+ clarification_text: String,
+ resolved_value: String,
+) raises -> DecodedField:
+ var original = known_field(original_value, "span")
+ var evidence = clarification_evidence(
+ target_field, source_id, revision, clarification_text
+ )
+ return apply_clarification(original, evidence, resolved_value)
+
+
+def farm_clarification_is_stale(
+ target_field: String,
+ source_id: String,
+ revision: String,
+ text: String,
+ current_revision: String,
+) raises -> Bool:
+ return clarification_is_stale(
+ clarification_evidence(target_field, source_id, revision, text),
+ current_revision,
+ )
+
+
+def clarification_overwrites_original() -> Bool:
+ return False
diff --git a/tests/test_application.mojo b/tests/test_application.mojo
@@ -161,3 +161,30 @@ def test_farm_review_output_is_proposal_only() raises:
assert_equal(output.hyf_business_writes, 0)
assert_true(not missing_optional_price_blocks_draft())
assert_true(ambiguous_withdrawal_blocks_apply())
+
+
+from hyf_application.farm_clarification import (
+ apply_farm_clarification,
+ clarification_overwrites_original,
+ farm_clarification_is_stale,
+)
+
+
+def test_farm_clarification_is_revisioned_new_evidence() raises:
+ var refined = apply_farm_clarification(
+ "80", "quantity.unreserved", "farm-source-1", "r2",
+ "60 lb unreserved", "60",
+ )
+ assert_equal(refined.value.value(), "60")
+ assert_equal(refined.method, "clarification")
+ assert_true(not clarification_overwrites_original())
+ assert_true(
+ not farm_clarification_is_stale(
+ "quantity.unreserved", "farm-source-1", "r2", "60 lb", "r2"
+ )
+ )
+ assert_true(
+ farm_clarification_is_stale(
+ "quantity.unreserved", "farm-source-1", "r2", "60 lb", "r3"
+ )
+ )