diff --git a/evaluation-suites/dependent-flags/cases/dependent-flags.json b/evaluation-suites/dependent-flags/cases/dependent-flags.json index 44e92da..67539fe 100644 --- a/evaluation-suites/dependent-flags/cases/dependent-flags.json +++ b/evaluation-suites/dependent-flags/cases/dependent-flags.json @@ -339,5 +339,46 @@ }, "targetingKey": "dependent-cycle", "variationType": "STRING" + }, + { + "description": "The 'property' key inside flagEvaluation is deliberately unknown and must be ignored; only 'key' selects the prerequisite. The unknownConditionField and unknownEvaluatorField keys must also be ignored, preserving the normal assignment and telemetry.", + "attributes": {}, + "defaultValue": "caller-default", + "flag": "dependent-unknown-fields-root", + "result": { + "reason": "TARGETING_MATCH", + "value": "direct-match" + }, + "targetingKey": "dependent-unknown-fields", + "variationType": "STRING", + "expectations": { + "noUnmatchedEvents": true, + "exposures": [ + { + "flag": "dependent-leaf-on", + "allocation": "leaf-static", + "variant": "on", + "_count": 1 + }, + { + "flag": "dependent-unknown-fields-root", + "allocation": "dependent-match", + "variant": "matched", + "_count": 1 + } + ], + "evaluationEvents": [ + { + "flag": "dependent-leaf-on", + "errorCode": null, + "_count": 1 + }, + { + "flag": "dependent-unknown-fields-root", + "errorCode": null, + "_count": 1 + } + ] + } } ] diff --git a/evaluation-suites/dependent-flags/ufc-config.json b/evaluation-suites/dependent-flags/ufc-config.json index dd15f93..cd4b480 100644 --- a/evaluation-suites/dependent-flags/ufc-config.json +++ b/evaluation-suites/dependent-flags/ufc-config.json @@ -6,7 +6,8 @@ "unknownEnvironmentField": "ignored" }, "evaluatorParams": { - "maxDependencyDepth": 2 + "maxDependencyDepth": 2, + "unknownEvaluatorField": "ignored" }, "flags": { "dependent-leaf-on": { @@ -862,6 +863,62 @@ "doLog": true } ] + }, + "dependent-unknown-fields-root": { + "key": "dependent-unknown-fields-root", + "enabled": true, + "variationType": "STRING", + "variations": { + "matched": { + "key": "matched", + "value": "direct-match" + }, + "fallback": { + "key": "fallback", + "value": "direct-fallback" + } + }, + "allocations": [ + { + "key": "dependent-match", + "rules": [ + { + "conditions": [ + { + "flagEvaluation": { + "key": "dependent-leaf-on", + "property": "variant" + }, + "operator": "ONE_OF", + "value": [ + "on" + ], + "unknownConditionField": { + "nested": true + } + } + ] + } + ], + "splits": [ + { + "variationKey": "matched", + "shards": [] + } + ], + "doLog": true + }, + { + "key": "fallback", + "splits": [ + { + "variationKey": "fallback", + "shards": [] + } + ], + "doLog": true + } + ] } } }