commit 0e9a504cd122430320ed971f2b1cddabf650c342
parent 50ac67ad5c724b6daf85fd663b888f9c49258dea
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:42:29 +0000
runtime: implement shared execution budgets
Diffstat:
2 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/src/hyf_runtime/budget.mojo b/src/hyf_runtime/budget.mojo
@@ -0,0 +1,33 @@
+
+
+@fieldwise_init
+struct Budget(Copyable, Movable):
+ var start_monotonic_ns: Int
+ var cap_ms: Int
+
+
+def budget(deadline_ms: Int, server_cap_ms: Int) -> Budget:
+ var cap = server_cap_ms
+ if deadline_ms > 0 and deadline_ms < cap:
+ cap = deadline_ms
+ if cap <= 0:
+ cap = server_cap_ms
+ return Budget(start_monotonic_ns=0, cap_ms=cap)
+
+
+def budget_from_clock(deadline_ms: Int, server_cap_ms: Int, now_ns: Int) -> Budget:
+ var value = budget(deadline_ms, server_cap_ms)
+ value.start_monotonic_ns = now_ns
+ return value^
+
+
+def budget_remaining_ms(value: Budget, now_ns: Int) -> Int:
+ var elapsed_ms = (now_ns - value.start_monotonic_ns) // 1_000_000
+ var remaining = value.cap_ms - elapsed_ms
+ if remaining < 0:
+ return 0
+ return remaining
+
+
+def budget_exhausted(value: Budget, now_ns: Int) -> Bool:
+ return budget_remaining_ms(value, now_ns) == 0
diff --git a/tests/test_runtime_paths.mojo b/tests/test_runtime_paths.mojo
@@ -279,3 +279,16 @@ def test_operation_enablement_and_kill_switch() raises:
config.effective.runtime.disable_provider = True
assert_true(provider_disabled(config))
assert_true(not operation_enabled(config, "buyer_request.match"))
+
+
+from hyf_runtime.budget import budget_from_clock, budget_remaining_ms, budget_exhausted
+
+
+def test_shared_budget_does_not_reset_per_stage() raises:
+ var value = budget_from_clock(500, 2000, 0)
+ assert_equal(value.cap_ms, 500)
+ assert_equal(budget_remaining_ms(value, 200_000_000), 300)
+ assert_equal(budget_remaining_ms(value, 600_000_000), 0)
+ assert_true(budget_exhausted(value, 600_000_000))
+ var capped = budget_from_clock(5000, 2000, 0)
+ assert_equal(capped.cap_ms, 2000)