hyf

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

commit c78524ff860eaef623a3b494ba33bffd0dbb9487
parent bc3706aab53c4ac838d0b13c0da5c8ad5fe8c13f
Author: triesap <tyson@radroots.org>
Date:   Thu,  9 Apr 2026 01:01:40 +0000

tests: add repo-local fixture mirror support

- add a repo-local hyf fixture loader rooted under tests/fixtures/v1
- mirror the approved v1 status and deterministic capability scenarios into the standalone repo
- prove the mounted repo can discover its own manifest and scenario files in unit tests
- keep the fixture dependency surface local while leaving contract assertions for later slices

Diffstat:
Atests/fixture_loader.mojo | 19+++++++++++++++++++
Atests/fixtures/v1/manifest.json | 18++++++++++++++++++
Atests/fixtures/v1/scenarios/assisted_backend_unavailable.json | 22++++++++++++++++++++++
Atests/fixtures/v1/scenarios/capabilities_ok.json | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Atests/fixtures/v1/scenarios/deferred_capability_disabled.json | 17+++++++++++++++++
Atests/fixtures/v1/scenarios/explain_result_local_pickup_weekend.json | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atests/fixtures/v1/scenarios/query_rewrite_local_pickup_weekend.json | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atests/fixtures/v1/scenarios/query_rewrite_unexpected_field.json | 20++++++++++++++++++++
Atests/fixtures/v1/scenarios/semantic_rank_local_pickup_weekend.json | 85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atests/fixtures/v1/scenarios/status_ok.json | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/test_hyf.mojo | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
11 files changed, 499 insertions(+), 0 deletions(-)

diff --git a/tests/fixture_loader.mojo b/tests/fixture_loader.mojo @@ -0,0 +1,19 @@ +from std.pathlib import Path, _dir_of_current_file + +from mojson import Value, loads + + +def fixture_root_path() raises -> Path: + return _dir_of_current_file() / "fixtures" / "v1" + + +def fixture_manifest_path() raises -> Path: + return fixture_root_path() / "manifest.json" + + +def load_fixture_manifest() raises -> Value: + return loads(fixture_manifest_path().read_text()) + + +def load_fixture_scenario(relative_path: String) raises -> Value: + return loads((fixture_root_path() / String(relative_path)).read_text()) diff --git a/tests/fixtures/v1/manifest.json b/tests/fixtures/v1/manifest.json @@ -0,0 +1,18 @@ +{ + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Canonical HYF stdio request and response scenarios for deterministic bootstrap capabilities.", + "family_kind": "wire_compatibility", + "transport": "stdio", + "request_framing": "newline_delimited_json", + "scenario_files": [ + "scenarios/status_ok.json", + "scenarios/capabilities_ok.json", + "scenarios/query_rewrite_local_pickup_weekend.json", + "scenarios/semantic_rank_local_pickup_weekend.json", + "scenarios/explain_result_local_pickup_weekend.json", + "scenarios/assisted_backend_unavailable.json", + "scenarios/deferred_capability_disabled.json", + "scenarios/query_rewrite_unexpected_field.json" + ] +} diff --git a/tests/fixtures/v1/scenarios/assisted_backend_unavailable.json b/tests/fixtures/v1/scenarios/assisted_backend_unavailable.json @@ -0,0 +1,22 @@ +{ + "fixture_id": "assisted_backend_unavailable", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Explicit assisted execution requests fail with a bounded unavailable-backend error.", + "request": { + "version": 1, + "request_id": "assisted-fixture-1", + "capability": "query_rewrite", + "context": { + "execution_mode_preference": "assisted" + }, + "input": { + "text": "apples near me" + } + }, + "expected": { + "ok": false, + "error_code": "backend_unavailable", + "message_contains": "assisted_execution" + } +} diff --git a/tests/fixtures/v1/scenarios/capabilities_ok.json b/tests/fixtures/v1/scenarios/capabilities_ok.json @@ -0,0 +1,53 @@ +{ + "fixture_id": "capabilities_ok", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Control-plane capabilities report implemented deterministic routes and deferred bootstrap routes truthfully.", + "request": { + "version": 1, + "request_id": "capabilities-fixture-1", + "capability": "sys.capabilities", + "input": {} + }, + "expected": { + "ok": true, + "equals": { + "version": 1, + "request_id": "capabilities-fixture-1", + "output.control_routes": [ + "sys.status", + "sys.capabilities" + ], + "output.business_capabilities.0.id": "query_rewrite", + "output.business_capabilities.0.deterministic_execution": "enabled", + "output.business_capabilities.0.implementation_status": "implemented", + "output.business_capabilities.0.callable": true, + "output.business_capabilities.1.id": "filter_extraction", + "output.business_capabilities.1.deterministic_execution": "disabled", + "output.business_capabilities.1.implementation_status": "disabled", + "output.business_capabilities.1.callable": false, + "output.business_capabilities.1.disabled_reason": "deferred_bootstrap_capability", + "output.business_capabilities.2.id": "semantic_rank", + "output.business_capabilities.2.implementation_status": "implemented", + "output.business_capabilities.6.id": "explain_result", + "output.business_capabilities.6.implementation_status": "implemented", + "output.assisted_backend_capabilities": [], + "output.request_context_contract.accepted_features": [ + "consumer", + "execution_mode_preference", + "scope.listing_ids", + "return_provenance" + ], + "output.request_context_contract.effective_features": [ + "execution_mode_preference", + "scope.listing_ids", + "return_provenance" + ], + "output.request_context_contract.unsupported_field_behavior": "reject" + }, + "absent_paths": [ + "error", + "meta" + ] + } +} diff --git a/tests/fixtures/v1/scenarios/deferred_capability_disabled.json b/tests/fixtures/v1/scenarios/deferred_capability_disabled.json @@ -0,0 +1,17 @@ +{ + "fixture_id": "deferred_capability_disabled", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Deferred bootstrap capabilities fail with an explicit disabled-capability wire error.", + "request": { + "version": 1, + "request_id": "disabled-fixture-1", + "capability": "filter_extraction", + "input": {} + }, + "expected": { + "ok": false, + "error_code": "capability_disabled", + "message_contains": "deferred capability" + } +} diff --git a/tests/fixtures/v1/scenarios/explain_result_local_pickup_weekend.json b/tests/fixtures/v1/scenarios/explain_result_local_pickup_weekend.json @@ -0,0 +1,66 @@ +{ + "fixture_id": "explain_result_local_pickup_weekend", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Deterministic explanation reports stable reasons and signal assessment for a ranked produce result.", + "request": { + "version": 1, + "request_id": "explain-fixture-1", + "capability": "explain_result", + "context": { + "return_provenance": true + }, + "input": { + "query": "apples near me with weekend pickup", + "candidate": { + "id": "listing_local_1", + "title": "Organic apples", + "farm": "Local Orchard", + "delivery": "pickup", + "distance_km": 4.1, + "freshness_minutes": 3 + } + } + }, + "expected": { + "ok": true, + "equals": { + "version": 1, + "request_id": "explain-fixture-1", + "output.result_id": "listing_local_1", + "output.explanation_kind": "deterministic", + "output.summary": "Result listing_local_1 was ranked using deterministic heuristic signals: apples match, pickup match, closer and fresher.", + "output.score": 102, + "output.signal_assessment.delivery_alignment": "match", + "output.signal_assessment.distance_band": "closer", + "output.signal_assessment.freshness_band": "fresher", + "output.signal_assessment.scope_match": false, + "output.extracted_filters.local_intent": true, + "output.extracted_filters.fulfillment": "pickup", + "output.extracted_filters.time_window": "weekend", + "meta.execution_mode": "deterministic", + "meta.backend": "heuristic" + }, + "contains_all": { + "output.reasons": [ + "apples match", + "pickup match", + "closer", + "fresher" + ], + "output.ranking_hints": [ + "prefer_local_results", + "prefer_pickup", + "prefer_weekend_availability" + ] + }, + "present_paths": [ + "meta.provenance", + "meta.provenance.source_refs" + ], + "absent_paths": [ + "error", + "meta.latency_ms" + ] + } +} diff --git a/tests/fixtures/v1/scenarios/query_rewrite_local_pickup_weekend.json b/tests/fixtures/v1/scenarios/query_rewrite_local_pickup_weekend.json @@ -0,0 +1,59 @@ +{ + "fixture_id": "query_rewrite_local_pickup_weekend", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Deterministic query rewrite extracts normalized terms and structured filters from a local produce search.", + "request": { + "version": 1, + "request_id": "rewrite-fixture-1", + "trace_id": "trace-rewrite-fixture-1", + "capability": "query_rewrite", + "context": { + "return_provenance": true + }, + "input": { + "query": "apples near me with weekend pickup" + } + }, + "expected": { + "ok": true, + "equals": { + "version": 1, + "request_id": "rewrite-fixture-1", + "trace_id": "trace-rewrite-fixture-1", + "output.original_text": "apples near me with weekend pickup", + "output.normalized_text": "apples near me with weekend pickup", + "output.rewritten_text": "apples", + "output.query_terms": [ + "apples" + ], + "output.extracted_filters.local_intent": true, + "output.extracted_filters.fulfillment": "pickup", + "output.extracted_filters.time_window": "weekend", + "meta.execution_mode": "deterministic", + "meta.backend": "heuristic" + }, + "contains_all": { + "output.normalization_signals": [ + "local_intent_detected", + "pickup_filter_detected", + "weekend_filter_detected", + "stopwords_removed", + "filter_tokens_extracted" + ], + "output.ranking_hints": [ + "prefer_local_results", + "prefer_pickup", + "prefer_weekend_availability" + ] + }, + "present_paths": [ + "meta.provenance", + "meta.provenance.source_refs" + ], + "absent_paths": [ + "error", + "meta.latency_ms" + ] + } +} diff --git a/tests/fixtures/v1/scenarios/query_rewrite_unexpected_field.json b/tests/fixtures/v1/scenarios/query_rewrite_unexpected_field.json @@ -0,0 +1,20 @@ +{ + "fixture_id": "query_rewrite_unexpected_field", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Strict request validation rejects unexpected query_rewrite input fields.", + "request": { + "version": 1, + "request_id": "rewrite-bad-fixture-1", + "capability": "query_rewrite", + "input": { + "text": "apples near me", + "tone": "brief" + } + }, + "expected": { + "ok": false, + "error_code": "invalid_request", + "message_contains": "unexpected field" + } +} diff --git a/tests/fixtures/v1/scenarios/semantic_rank_local_pickup_weekend.json b/tests/fixtures/v1/scenarios/semantic_rank_local_pickup_weekend.json @@ -0,0 +1,85 @@ +{ + "fixture_id": "semantic_rank_local_pickup_weekend", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Deterministic ranking prefers closer, fresher, pickup-aligned results for a local produce search.", + "request": { + "version": 1, + "request_id": "rank-fixture-1", + "capability": "semantic_rank", + "input": { + "query": "apples near me with weekend pickup", + "candidates": [ + { + "id": "listing_local_1", + "title": "Organic apples", + "farm": "Local Orchard", + "delivery": "pickup", + "distance_km": 4.1, + "freshness_minutes": 3 + }, + { + "id": "listing_regional_1", + "title": "Honeycrisp apples", + "farm": "Regional Orchard", + "delivery": "delivery", + "distance_km": 28.0, + "freshness_minutes": 25 + } + ] + } + }, + "expected": { + "ok": true, + "equals": { + "version": 1, + "request_id": "rank-fixture-1", + "output.ranked_ids": [ + "listing_local_1", + "listing_regional_1" + ], + "output.scored_candidates.0.id": "listing_local_1", + "output.scored_candidates.0.heuristic_score": 102, + "output.scored_candidates.0.delivery_alignment": "match", + "output.scored_candidates.0.distance_band": "closer", + "output.scored_candidates.0.freshness_band": "fresher", + "output.scored_candidates.0.scope_match": false, + "output.scored_candidates.1.id": "listing_regional_1", + "output.scored_candidates.1.heuristic_score": 17, + "output.scored_candidates.1.delivery_alignment": "mismatch", + "output.scored_candidates.1.distance_band": "farther", + "output.scored_candidates.1.freshness_band": "standard", + "output.scored_candidates.1.scope_match": false, + "output.extracted_filters.local_intent": true, + "output.extracted_filters.fulfillment": "pickup", + "output.extracted_filters.time_window": "weekend", + "meta.execution_mode": "deterministic", + "meta.backend": "heuristic" + }, + "contains_all": { + "output.scored_candidates.0.reasons": [ + "apples match", + "pickup match", + "closer", + "fresher" + ], + "output.scored_candidates.1.reasons": [ + "apples match", + "delivery mismatch", + "farther" + ], + "output.ranking_hints": [ + "prefer_local_results", + "prefer_pickup", + "prefer_weekend_availability" + ] + }, + "absent_paths": [ + "error", + "meta.latency_ms", + "meta.provenance", + "output.scored_candidates.0.score", + "output.scored_candidates.1.score" + ] + } +} diff --git a/tests/fixtures/v1/scenarios/status_ok.json b/tests/fixtures/v1/scenarios/status_ok.json @@ -0,0 +1,75 @@ +{ + "fixture_id": "status_ok", + "fixture_namespace": "radroots-canonical-hyf-v1", + "schema_version": 1, + "description": "Control-plane status reports the truthful deterministic bootstrap posture for the stdio daemon.", + "request": { + "version": 1, + "request_id": "status-fixture-1", + "trace_id": "trace-status-fixture-1", + "capability": "sys.status", + "input": {} + }, + "expected": { + "ok": true, + "equals": { + "version": 1, + "request_id": "status-fixture-1", + "trace_id": "trace-status-fixture-1", + "output.build_identity.service_name": "hyf", + "output.build_identity.package_name": "hyf", + "output.build_identity.package_version": "0.1.0", + "output.build_identity.daemon_name": "hyfd", + "output.build_identity.transport": "stdio", + "output.build_identity.protocol_version": 1, + "output.build_identity.default_execution_mode": "deterministic", + "output.build_identity.deterministic_execution_available": true, + "output.build_identity.assisted_execution_available": false, + "output.daemon": "hyfd", + "output.transport": "stdio", + "output.request_framing": "newline_delimited_json", + "output.implementation_status": "bootstrap_registered_deterministic_ready", + "output.enabled_execution_modes.deterministic": true, + "output.enabled_execution_modes.assisted": false, + "output.execution_mode_request_behavior.deterministic": "execute", + "output.execution_mode_request_behavior.assisted": "backend_unavailable", + "output.backend_reachability.deterministic_backend": "available", + "output.backend_reachability.assisted_backend": "unavailable", + "output.counts.canonical_business_capabilities": 8, + "output.counts.deterministic_registered_business_capabilities": 3, + "output.counts.deterministic_implemented_business_capabilities": 3, + "output.counts.disabled_business_capabilities": 5, + "output.limits.max_requests_per_process": 1, + "output.request_context_contract.accepted_features": [ + "consumer", + "execution_mode_preference", + "scope.listing_ids", + "return_provenance" + ], + "output.request_context_contract.effective_features": [ + "execution_mode_preference", + "scope.listing_ids", + "return_provenance" + ], + "output.request_context_contract.unsupported_field_behavior": "reject" + }, + "contains_all": { + "output.deterministic_registered_capabilities": [ + "query_rewrite", + "semantic_rank", + "explain_result" + ], + "output.disabled_capabilities": [ + "filter_extraction", + "summarize_listing", + "summarize_farm", + "workflow_plan", + "dedupe_cluster" + ] + }, + "absent_paths": [ + "error", + "meta" + ] + } +} diff --git a/tests/test_hyf.mojo b/tests/test_hyf.mojo @@ -11,6 +11,11 @@ from std.tempfile import TemporaryDirectory from mojson import Value, loads +from fixture_loader import ( + fixture_manifest_path, + load_fixture_manifest, + load_fixture_scenario, +) from hyf_core.backends.selector import ( execute_capability as execute_core_capability, resolve_backend, @@ -237,6 +242,66 @@ def test_current_build_identity_matches_manifest_package_surface() raises: ) +def test_repo_local_fixture_manifest_declares_expected_scenarios() raises: + assert_true(exists(fixture_manifest_path())) + + var manifest = load_fixture_manifest() + assert_equal( + manifest["fixture_namespace"].string_value(), + "radroots-canonical-hyf-v1", + ) + assert_equal(Int(manifest["schema_version"].int_value()), 1) + assert_equal( + manifest["family_kind"].string_value(), "wire_compatibility" + ) + assert_equal(manifest["transport"].string_value(), "stdio") + assert_equal( + manifest["request_framing"].string_value(), + "newline_delimited_json", + ) + + var scenario_files = _array_string_values(manifest["scenario_files"]) + assert_equal(len(scenario_files), 8) + assert_equal(scenario_files[0], "scenarios/status_ok.json") + assert_equal( + scenario_files[7], "scenarios/query_rewrite_unexpected_field.json" + ) + + +def test_repo_local_fixture_loader_reads_all_mirrored_scenarios() raises: + var manifest = load_fixture_manifest() + assert_equal( + manifest["fixture_namespace"].string_value(), + "radroots-canonical-hyf-v1", + ) + + var status_scenario = load_fixture_scenario("scenarios/status_ok.json") + assert_equal( + status_scenario["fixture_id"].string_value(), "status_ok" + ) + assert_equal( + status_scenario["request"]["capability"].string_value(), + "sys.status", + ) + assert_true(_has_key(status_scenario, "expected")) + + var rewrite_scenario = load_fixture_scenario( + "scenarios/query_rewrite_local_pickup_weekend.json" + ) + assert_equal( + rewrite_scenario["fixture_id"].string_value(), + "query_rewrite_local_pickup_weekend", + ) + assert_equal( + rewrite_scenario["request"]["capability"].string_value(), + "query_rewrite", + ) + assert_equal( + rewrite_scenario["request"]["input"]["query"].string_value(), + "apples near me with weekend pickup", + ) + + def test_status_reports_registered_deterministic_ready() raises: var result = _dispatch( '{"version":1,"request_id":"status-1","trace_id":"trace-status-1","capability":"sys.status","input":{}}'