hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

commit 115d11a98470f60f186a87f2474d082bc8500bdb
parent ee57d4c46248eeb60674b780a0fbe6e5bbc30ef7
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:00:28 +0000

core: add revisioned clarification merge rules

Diffstat:
Asrc/hyf_core/domain/clarification.mojo | 42++++++++++++++++++++++++++++++++++++++++++
Mtests/test_domain.mojo | 19+++++++++++++++++++
2 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/src/hyf_core/domain/clarification.mojo b/src/hyf_core/domain/clarification.mojo @@ -0,0 +1,42 @@ +from hyf_core.domain.field import DecodedField, known_field + + +@fieldwise_init +struct ClarificationEvidence(Copyable, Movable): + var target_field: String + var source_id: String + var revision: String + var text: String + + +def clarification_evidence( + target_field: String, source_id: String, revision: String, text: String +) raises -> ClarificationEvidence: + if target_field.strip() == "": + raise Error("clarification requires a target field") + if source_id.strip() == "" or revision.strip() == "": + raise Error("clarification requires source id and revision") + if text.strip() == "": + raise Error("clarification text must not be empty") + return ClarificationEvidence( + target_field=String(target_field), + source_id=String(source_id), + revision=String(revision), + text=String(text), + ) + + +def clarification_is_stale( + evidence: ClarificationEvidence, current_revision: String +) -> Bool: + return evidence.revision != current_revision + + +def apply_clarification( + original: DecodedField, + evidence: ClarificationEvidence, + resolved_value: String, +) raises -> DecodedField: + var refined = known_field(resolved_value, "clarification") + refined.qualifier = original.qualifier + return refined^ diff --git a/tests/test_domain.mojo b/tests/test_domain.mojo @@ -402,3 +402,22 @@ def test_review_state_optional_price_does_not_block_withdrawal_does() raises: assert_equal(len(blocked.clarifications), 1) var extended = review_add(blocked, "quantity.unreserved", "stock_unknown") assert_equal(len(extended.clarifications), 2) + + +from hyf_core.domain.clarification import ( + apply_clarification, + clarification_evidence, + clarification_is_stale, +) + + +def test_clarification_refines_without_overwriting_original() raises: + var original = known_field("80", "span") + var evidence = clarification_evidence( + "quantity.unreserved", "farm-source-1", "r2", "60 lb unreserved" + ) + var refined = apply_clarification(original, evidence, "60") + assert_equal(original.value.value(), "80") + assert_equal(refined.value.value(), "60") + assert_true(not clarification_is_stale(evidence, "r2")) + assert_true(clarification_is_stale(evidence, "r3"))