hyf

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

commit c45dd485c53954264f01f02f4fcd11d20f4fe863
parent 36e067b51094b7b375748cbe201db52cbae96173
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:50:20 +0000

core: handle farm inference failures safely

Diffstat:
Asrc/hyf_application/farm_failure.mojo | 28++++++++++++++++++++++++++++
Mtests/test_application.mojo | 19+++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/src/hyf_application/farm_failure.mojo b/src/hyf_application/farm_failure.mojo @@ -0,0 +1,28 @@ + + +@fieldwise_init +struct FarmInferenceOutcome(Copyable, Movable): + var status: String + var confirmed_claims: Int + var unresolved_claims: Int + var reason: String + + +def farm_inference_failure(reason: String) raises -> FarmInferenceOutcome: + if String(reason).strip().byte_length() == 0: + raise Error("inference failure requires a reason") + return FarmInferenceOutcome( + status="failed", confirmed_claims=0, unresolved_claims=1, reason=String(reason) + ) + + +def farm_inference_degraded(reason: String) raises -> FarmInferenceOutcome: + if String(reason).strip().byte_length() == 0: + raise Error("inference degradation requires a reason") + return FarmInferenceOutcome( + status="degraded", confirmed_claims=0, unresolved_claims=1, reason=String(reason) + ) + + +def inference_failure_confirms_stock() -> Bool: + return False diff --git a/tests/test_application.mojo b/tests/test_application.mojo @@ -188,3 +188,22 @@ def test_farm_clarification_is_revisioned_new_evidence() raises: "quantity.unreserved", "farm-source-1", "r2", "60 lb", "r3" ) ) + + +from hyf_application.farm_failure import ( + farm_inference_degraded, + farm_inference_failure, + inference_failure_confirms_stock, +) + + +def test_farm_inference_failure_never_confirms_stock() raises: + var failed = farm_inference_failure("provider_timeout") + assert_equal(failed.status, "failed") + assert_equal(failed.confirmed_claims, 0) + assert_equal(failed.unresolved_claims, 1) + var degraded = farm_inference_degraded("provider_degraded") + assert_equal(degraded.status, "degraded") + assert_true(not inference_failure_confirms_stock()) + with assert_raises(): + _ = farm_inference_failure("")