commit ec4da46805a3e92e723cc962f73882bcc63c6dc7
parent 879ff73264e6d3c988c7bbd3c4e0694220c3b5dc
Author: triesap <tyson@radroots.org>
Date: Mon, 21 Sep 2026 13:07:15 +0000
provider: add data-minimized state projection
Diffstat:
2 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/src/hyf_provider/jev_state.mojo b/src/hyf_provider/jev_state.mojo
@@ -0,0 +1,43 @@
+from std.collections import List
+
+
+comptime MAX_STATE_BYTES = 4096
+
+
+def _is_blank(value: String) -> Bool:
+ return String(value).strip().byte_length() == 0
+
+
+def _truncate(value: String, limit: Int) -> String:
+ if value.byte_length() <= limit:
+ return String(value)
+ return String(value[byte=0:limit])
+
+
+def minimal_state(
+ source_text: String, focus_product: String, buyer_request: String
+) raises -> String:
+ if source_text.byte_length() > MAX_STATE_BYTES:
+ raise Error("provider state exceeds maximum size")
+ var parts = List[String]()
+ if not _is_blank(source_text):
+ parts.append(String("farm_update: ") + _truncate(source_text, 2048))
+ if not _is_blank(focus_product):
+ parts.append(String("focus_product: ") + _truncate(focus_product, 256))
+ if not _is_blank(buyer_request):
+ parts.append(String("buyer_request: ") + _truncate(buyer_request, 512))
+
+ var joined = String()
+ var first = True
+ for part in parts:
+ if not first:
+ joined += "\n"
+ joined += part
+ first = False
+ if joined.byte_length() > MAX_STATE_BYTES:
+ raise Error("provider state exceeds maximum size")
+ return joined^
+
+
+def state_includes_full_repository() -> Bool:
+ return False
diff --git a/tests/test_jev.mojo b/tests/test_jev.mojo
@@ -184,3 +184,23 @@ def test_provider_response_projection() raises:
assert_true(provider_cannot_supply_trusted_identity())
with assert_raises():
_ = answer_by_id(answers, "nonexistent")
+
+
+from hyf_provider.jev_state import minimal_state, state_includes_full_repository
+
+
+def test_data_minimized_state_projection() raises:
+ var state = minimal_state(
+ "Roma tomatoes available now", "Roma tomatoes", "Tomatoes for sauce; seconds permitted"
+ )
+ assert_true(state.find("farm_update:") >= 0)
+ assert_true(state.find("focus_product:") >= 0)
+ assert_true(state.find("buyer_request:") >= 0)
+ var only_source = minimal_state("Basil sold out", "", "")
+ assert_equal(only_source, "farm_update: Basil sold out")
+ assert_true(not state_includes_full_repository())
+ var huge = String()
+ for _ in range(2000):
+ huge += "xxxxxxxxxx"
+ with assert_raises():
+ _ = minimal_state(huge, "", "")