hyf

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

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

core: add clarification and review models

Diffstat:
Asrc/hyf_core/domain/review.mojo | 35+++++++++++++++++++++++++++++++++++
Mtests/test_domain.mojo | 13+++++++++++++
2 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/src/hyf_core/domain/review.mojo b/src/hyf_core/domain/review.mojo @@ -0,0 +1,35 @@ +from std.collections import List + + +@fieldwise_init +struct Clarification(Copyable, Movable): + var field: String + var reason: String + + +@fieldwise_init +struct ReviewState(Copyable, Movable): + var required: Bool + var clarifications: List[Clarification] + + +def review_clear() -> ReviewState: + return ReviewState(required=False, clarifications=List[Clarification]()) + + +def review_required(field: String, reason: String) raises -> ReviewState: + if field.strip() == "" or reason.strip() == "": + raise Error("clarification requires field and reason") + var clarifications = List[Clarification]() + clarifications.append(Clarification(field=String(field), reason=String(reason))) + return ReviewState(required=True, clarifications=clarifications^) + + +def review_add(state: ReviewState, field: String, reason: String) raises -> ReviewState: + if field.strip() == "" or reason.strip() == "": + raise Error("clarification requires field and reason") + var clarifications = List[Clarification]() + for existing in state.clarifications: + clarifications.append(existing.copy()) + clarifications.append(Clarification(field=String(field), reason=String(reason))) + return ReviewState(required=True, clarifications=clarifications^) diff --git a/tests/test_domain.mojo b/tests/test_domain.mojo @@ -389,3 +389,16 @@ def test_supply_change_operations_and_scoped_withdrawal() raises: assert_equal(correction.operation, "unresolved") with assert_raises(): _ = proposed_change("galaxy", Optional[String]("x"), "addition", None) + + +from hyf_core.domain.review import review_add, review_clear, review_required + + +def test_review_state_optional_price_does_not_block_withdrawal_does() raises: + var clear = review_clear() + assert_true(not clear.required) + var blocked = review_required("withdrawal.target", "ambiguous_target") + assert_true(blocked.required) + assert_equal(len(blocked.clarifications), 1) + var extended = review_add(blocked, "quantity.unreserved", "stock_unknown") + assert_equal(len(extended.clarifications), 2)