commit d842040d71c4533872979a220a02f1fbbfcbaffd
parent 89151e72732976f705881516a78634dcfc5f5ce1
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:02:10 +0000
core: add execution and provenance types
Diffstat:
3 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/pixi.toml b/pixi.toml
@@ -37,6 +37,7 @@ test-runtime-contract = { depends-on = [
] }
test = { depends-on = [
"test-unit",
+ "test-domain",
"test-provider-adapter",
"test-spec",
"test-architecture",
diff --git a/src/hyf_core/domain/execution.mojo b/src/hyf_core/domain/execution.mojo
@@ -0,0 +1,36 @@
+from std.collections import Optional
+
+
+@fieldwise_init
+struct ExecutionMeta(Copyable, Movable):
+ var status: String
+ var provider_calls: Int
+ var model: Optional[String]
+ var question_bundle: Optional[String]
+ var degraded_reason: Optional[String]
+
+
+def execution_meta(
+ status: String,
+ provider_calls: Int,
+ model: Optional[String],
+ question_bundle: Optional[String],
+ degraded_reason: Optional[String],
+) raises -> ExecutionMeta:
+ if status != "complete" and status != "degraded" and status != "failed":
+ raise Error("execution status must be complete, degraded or failed")
+ if provider_calls < 0:
+ raise Error("provider call count must be non-negative")
+ if status == "degraded" and not degraded_reason:
+ raise Error("degraded execution requires a reason")
+ return ExecutionMeta(
+ status=String(status),
+ provider_calls=provider_calls,
+ model=model.copy(),
+ question_bundle=question_bundle.copy(),
+ degraded_reason=degraded_reason.copy(),
+ )
+
+
+def execution_is_business_outcome() -> Bool:
+ return False
diff --git a/tests/test_domain.mojo b/tests/test_domain.mojo
@@ -544,3 +544,18 @@ def test_coverage_limitations_do_not_claim_global_absence() raises:
assert_equal(len(value.unsupported), 1)
assert_true(not no_match_is_global_absence())
assert_true(not unsupported_is_no_supply())
+
+
+from hyf_core.domain.execution import ExecutionMeta, execution_is_business_outcome, execution_meta
+
+
+def test_execution_metadata_is_separate_from_business_outcome() raises:
+ var complete = execution_meta("complete", 0, None, Optional[String]("qb1"), None)
+ assert_equal(complete.status, "complete")
+ var degraded = execution_meta("degraded", 0, None, None, Optional[String]("provider_degraded"))
+ assert_equal(degraded.status, "degraded")
+ assert_true(not execution_is_business_outcome())
+ with assert_raises():
+ _ = execution_meta("degraded", 0, None, None, None)
+ with assert_raises():
+ _ = execution_meta("weird", 0, None, None, None)