diff --git a/src/backtest_engine/schemas/strategy-bot/v1/official-backtest-request.schema.json b/src/backtest_engine/schemas/strategy-bot/v1/official-backtest-request.schema.json index a5b3e33..9b37edc 100644 --- a/src/backtest_engine/schemas/strategy-bot/v1/official-backtest-request.schema.json +++ b/src/backtest_engine/schemas/strategy-bot/v1/official-backtest-request.schema.json @@ -59,7 +59,6 @@ "requestReason": {"const": "STRATEGY_RELEASE"}, "featureMaterializations": { "type": "array", - "minItems": 1, "items": { "type": "object", "required": ["featureMaterializationId", "lockedResultHash"], diff --git a/tests/test_contracts.py b/tests/test_contracts.py index 0eb78a6..1d3ceb6 100644 --- a/tests/test_contracts.py +++ b/tests/test_contracts.py @@ -271,6 +271,16 @@ def test_consumer_accepts_bs_official_backtest_request_verbatim( assert accepted["datasetManifestId"] == B_DATASET_MANIFEST_ID +def test_official_request_accepts_no_feature_materializations( + official_request: dict[str, Any], +) -> None: + official_request["featureMaterializations"] = [] + + accepted = validate_official_backtest_request(official_request) + + assert accepted["featureMaterializations"] == [] + + def test_official_request_identity_covers_every_server_selected_dataset( official_request: dict[str, Any], ) -> None: