hyf

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

commit dfc2a7accded8cb1e59242a9f3d03ef5815fb3e6
parent a5d09c4d0ef9568c8b1145dc6030d77f44850cbb
Author: triesap <tyson@radroots.org>
Date:   Mon, 21 Sep 2026 12:53:24 +0000

core: add source identity and revision types

Diffstat:
Mpixi.toml | 1+
Asrc/hyf_core/domain/__init__.mojo | 1+
Asrc/hyf_core/domain/source.mojo | 86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atests/test_domain.mojo | 38++++++++++++++++++++++++++++++++++++++
4 files changed, 126 insertions(+), 0 deletions(-)

diff --git a/pixi.toml b/pixi.toml @@ -24,6 +24,7 @@ test-runtime = "mojo -I src tests/test_runtime_paths.mojo" test-repo-local-process = "mojo -I src tests/test_repo_local_process_contract.mojo" test-stdio = "mojo -I src tests/test_stdio_contract.mojo" test-provider-adapter = "mojo -I src -I tests tests/test_provider_adapter.mojo" +test-domain = "mojo -I src -I tests tests/test_domain.mojo" test-spec = "mojo -I src -I tests tests/test_traceability.mojo" check-build = "mkdir -p .pixi/build && mojo build -I src src/main.mojo -o .pixi/build/hyfd" check-format = "sh tools/check_format.sh" diff --git a/src/hyf_core/domain/__init__.mojo b/src/hyf_core/domain/__init__.mojo @@ -0,0 +1 @@ +# domain package diff --git a/src/hyf_core/domain/source.mojo b/src/hyf_core/domain/source.mojo @@ -0,0 +1,86 @@ +from std.collections import List, Optional + + +@fieldwise_init +struct SourceId(Copyable, Movable): + var value: String + + +@fieldwise_init +struct ActorId(Copyable, Movable): + var value: String + + +@fieldwise_init +struct FarmId(Copyable, Movable): + var value: String + + +@fieldwise_init +struct NeedId(Copyable, Movable): + var value: String + + +@fieldwise_init +struct LotId(Copyable, Movable): + var value: String + + +@fieldwise_init +struct Revision(Copyable, Movable): + var value: String + + +def _require_identity(value: String, context: String) raises -> String: + var trimmed = String(String(value).strip()) + if trimmed == "": + raise Error(context + " must not be empty") + if trimmed != value: + raise Error(context + " must not include boundary whitespace") + return trimmed^ + + +def source_id(value: String) raises -> SourceId: + return SourceId(value=_require_identity(value, "source id")) + + +def actor_id(value: String) raises -> ActorId: + return ActorId(value=_require_identity(value, "actor id")) + + +def farm_id(value: String) raises -> FarmId: + return FarmId(value=_require_identity(value, "farm id")) + + +def need_id(value: String) raises -> NeedId: + return NeedId(value=_require_identity(value, "need id")) + + +def lot_id(value: String) raises -> LotId: + return LotId(value=_require_identity(value, "lot id")) + + +def revision(value: String) raises -> Revision: + return Revision(value=_require_identity(value, "revision")) + + +@fieldwise_init +struct TrustedSource(Copyable, Movable): + var source_id: SourceId + var revision: Revision + var actor_id: ActorId + var farm_id: FarmId + + +def trusted_source( + source_id_value: String, + revision_value: String, + actor_id_value: String, + farm_id_value: String, +) raises -> TrustedSource: + return TrustedSource( + source_id=source_id(source_id_value), + revision=revision(revision_value), + actor_id=actor_id(actor_id_value), + farm_id=farm_id(farm_id_value), + ) diff --git a/tests/test_domain.mojo b/tests/test_domain.mojo @@ -0,0 +1,38 @@ +from std.testing import TestSuite, assert_equal, assert_raises, assert_true + +from hyf_core.domain.source import ( + actor_id, + farm_id, + lot_id, + need_id, + revision, + source_id, + trusted_source, +) + + +def test_source_identity_accepts_valid_and_rejects_empty() raises: + assert_equal(source_id("s1").value, "s1") + assert_equal(actor_id("a1").value, "a1") + assert_equal(farm_id("f1").value, "f1") + assert_equal(need_id("n1").value, "n1") + assert_equal(lot_id("l1").value, "l1") + assert_equal(revision("r1").value, "r1") + with assert_raises(): + _ = source_id("") + with assert_raises(): + _ = revision(" r1") + with assert_raises(): + _ = actor_id("a1 ") + + +def test_trusted_source_preserves_revision() raises: + var source = trusted_source("s1", "r1", "a1", "f1") + assert_equal(source.source_id.value, "s1") + assert_equal(source.revision.value, "r1") + assert_equal(source.actor_id.value, "a1") + assert_equal(source.farm_id.value, "f1") + + +def main() raises: + TestSuite.discover_tests[__functions_in_module()]().run()