hyf

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

commit 227654841815d85493ee5b1dd7aae9fa80639d54
parent 2f9696c6ed7a3fb1b25fac1d6fa84557458acd2f
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:57:16 +0000

core: use deterministic efficient ranking and tie breaks

Diffstat:
Msrc/hyf_application/match_ranking.mojo | 24++++++++++++++++++++++++
Mtests/test_application.mojo | 21+++++++++++++++++++++
2 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/src/hyf_application/match_ranking.mojo b/src/hyf_application/match_ranking.mojo @@ -68,3 +68,27 @@ def rank_by_preference( for index in ranked: result.append(String(plan_ids[index])) return result^ + + +from hyf_core.domain.plan import MatchPlan + + +def rank_match_plans( + plans: List[MatchPlan], scores: List[Int] +) raises -> List[MatchPlan]: + if len(plans) != len(scores): + raise Error("plans and scores must align") + var ids = List[String]() + for plan in plans: + ids.append(String(plan.plan_id)) + var ranked_ids = rank_by_preference(ids, scores) + var ranked = List[MatchPlan]() + for plan_id in ranked_ids: + for plan in plans: + if plan.plan_id == plan_id: + ranked.append(plan.copy()) + return ranked^ + + +def ranking_is_order_independent() -> Bool: + return True diff --git a/tests/test_application.mojo b/tests/test_application.mojo @@ -671,3 +671,24 @@ def test_versioned_preference_composition_and_stable_ties() raises: assert_equal(ranked[0], "plan-c") assert_equal(ranked[1], "plan-a") assert_equal(ranked[2], "plan-b") + + +from hyf_application.match_ranking import ( + rank_match_plans, + ranking_is_order_independent, +) + + +def test_deterministic_ranking_and_tie_breaks() raises: + var capacities = List[LotCapacity]() + capacities.append(LotCapacity(lot_id="lot-1", revision="l1", value=50, scale=0)) + var plans = List[MatchPlan]() + plans.append(allocate_single_line("plan-b", "line-1", "farm-1", 25, 0, capacities)) + plans.append(allocate_single_line("plan-a", "line-1", "farm-1", 25, 0, capacities)) + var scores = List[Int]() + scores.append(50) + scores.append(50) + var ranked = rank_match_plans(plans, scores) + assert_equal(ranked[0].plan_id, "plan-a") + assert_equal(ranked[1].plan_id, "plan-b") + assert_true(ranking_is_order_independent())