hyf

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

commit 0e9a504cd122430320ed971f2b1cddabf650c342
parent 50ac67ad5c724b6daf85fd663b888f9c49258dea
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 13:42:29 +0000

runtime: implement shared execution budgets

Diffstat:
Asrc/hyf_runtime/budget.mojo | 33+++++++++++++++++++++++++++++++++
Mtests/test_runtime_paths.mojo | 13+++++++++++++
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)