{ "version": "1.0", "thresholds": { "supported": 70, "likely": 40 }, "missing_critical_penalty": 20, "hard_negative_penalty": 40, "hard_negative_patterns": [ "voiceoverps[^\\n\\r]*notsupported", "voice-over-ps[^\\n\\r]*notsupported", "srvcc[^\\n\\r]*notsupported" ], "critical_signals": [ { "name": "ims", "patterns": ["ims-parameters", "ims-support"] }, { "name": "voice_over_ps", "patterns": ["voiceoverps", "voice-over-ps", "vops"] }, { "name": "srvcc", "patterns": ["\\bsrvcc\\b"] } ], "rules": [ { "rule_id": "explicit_ims_voice_over_ps", "category": "explicit_positive", "weight": 50, "patterns": ["voiceoverps[^\\n\\r]*\\bsupported\\b", "voice-over-ps[^\\n\\r]*\\bsupported\\b", "vops[^\\n\\r]*\\bsupported\\b"], "description": "Explicit voice over PS support indicator." }, { "rule_id": "explicit_srvcc_indicator", "category": "explicit_positive", "weight": 30, "patterns": ["srvcc[^\\n\\r]*\\bsupported\\b"], "description": "Explicit SRVCC support indicator." }, { "rule_id": "explicit_ims_indicator", "category": "implicit_positive", "weight": 10, "patterns": ["ims-parameters", "ims-support"], "description": "IMS context present but without explicit voice support state." }, { "rule_id": "implicit_interrat_utra", "category": "implicit_positive", "weight": 15, "patterns": ["supportedbandlistutra-fdd", "e-redirectionutra"], "description": "Inter-RAT UTRA capabilities useful for voice fallback scenarios." }, { "rule_id": "implicit_interrat_geran", "category": "implicit_positive", "weight": 10, "patterns": ["supportedbandlistgeran", "e-redirectiongeran"], "description": "Inter-RAT GERAN capabilities useful for fallback scenarios." }, { "rule_id": "implicit_release_rel9plus", "category": "implicit_positive", "weight": 10, "patterns": ["accessstratumrelease=rel(9|1[0-9])"], "description": "Access stratum release at least Rel-9." } ] }