hyf

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

commit ac1cf12676d27b44565b574244c60d119c098026
parent 477eecef030599ee7ff472e872989589a4ef1438
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:49:51 +0000

core: assemble farm review and clarification output

Diffstat:
Asrc/hyf_application/farm_review_output.mojo | 46++++++++++++++++++++++++++++++++++++++++++++++
Mtests/test_application.mojo | 26++++++++++++++++++++++++++
2 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/src/hyf_application/farm_review_output.mojo b/src/hyf_application/farm_review_output.mojo @@ -0,0 +1,46 @@ +from std.collections import List + +from hyf_application.farm_status import ProductStatus +from hyf_core.domain.execution import ExecutionMeta +from hyf_core.domain.review import ReviewState +from hyf_core.domain.supply_change import ProposedSupplyChange + + +@fieldwise_init +struct FarmInterpretationOutput(Copyable, Movable): + var claims: List[ProductStatus] + var changes: List[ProposedSupplyChange] + var review: ReviewState + var execution: ExecutionMeta + var original_source_preserved: Bool + var hyf_business_writes: Int + + +def assemble_farm_output( + claims: List[ProductStatus], + changes: List[ProposedSupplyChange], + review: ReviewState, + execution: ExecutionMeta, +) raises -> FarmInterpretationOutput: + var copied_claims = List[ProductStatus]() + for claim in claims: + copied_claims.append(claim.copy()) + var copied_changes = List[ProposedSupplyChange]() + for change in changes: + copied_changes.append(change.copy()) + return FarmInterpretationOutput( + claims=copied_claims^, + changes=copied_changes^, + review=review.copy(), + execution=execution.copy(), + original_source_preserved=True, + hyf_business_writes=0, + ) + + +def missing_optional_price_blocks_draft() -> Bool: + return False + + +def ambiguous_withdrawal_blocks_apply() -> Bool: + return True diff --git a/tests/test_application.mojo b/tests/test_application.mojo @@ -122,6 +122,7 @@ def test_authorized_change_target_resolution() raises: from hyf_application.farm_fulfillment import interpret_fulfillment +from hyf_core.domain.supply_change import ProposedSupplyChange from hyf_core.domain.time import date_only @@ -135,3 +136,28 @@ def test_farm_fulfillment_and_timing_claims() raises: assert_equal(no_zone.ambiguity, "missing_zone") var none = interpret_fulfillment("pickup", "", monday, "America/Vancouver") assert_equal(none.window_expression, "") + + +from hyf_application.farm_review_output import ( + ambiguous_withdrawal_blocks_apply, + assemble_farm_output, + missing_optional_price_blocks_draft, +) +from hyf_core.domain.execution import execution_meta +from hyf_core.domain.review import review_required + + +def test_farm_review_output_is_proposal_only() raises: + var products = List[String]() + products.append("roma tomatoes") + var statuses = interpret_product_statuses(products, "offered") + var changes = List[ProposedSupplyChange]() + var review = review_required("withdrawal.target", "ambiguous_target") + var execution = execution_meta("complete", 0, None, None, None) + var output = assemble_farm_output(statuses, changes, review, execution) + assert_equal(len(output.claims), 1) + assert_true(output.review.required) + assert_true(output.original_source_preserved) + assert_equal(output.hyf_business_writes, 0) + assert_true(not missing_optional_price_blocks_draft()) + assert_true(ambiguous_withdrawal_blocks_apply())