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:
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())