{"abstract":"Users without a tier attribute join a segment whose clause lists null among its values.","category":"Feature flag rollout bucketing","checks":8,"contract":"A user is in the segment if its key is in included (reason included, which beats excluded); else not if its key is in excluded; else if some rule with a non-empty clause list has every clause matching (reason rule:i). A clause [attr, values] matches only when the attribute is present and its value (or any element of a list value) is in values. Otherwise [False, none].","evaluation_group":"w2-feature-flag-rollout-bucketing-segment-membership","failed_approach":"Defaulting absent attributes to the empty string trades the null collision for an empty-string one.","family":"w2-feature-flag-rollout-bucketing-segment-membership-missing-attribute","id":"FA-73951","implementations":{"attempt":{"sha256":"e1b2f9b2c8ef371185017c61fa95503057fafc0dadf59c6a5c68d87f8d009d67","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(segment, user):\n    key = user.get('key')\n    def hit(clause):\n        attr, values = clause\n        value = user.get(attr, '')\n        items = value if isinstance(value, list) else [value]\n        return any(item in values for item in items)\n    if key in segment.get('included', []):\n        return [True, 'included']\n    if key in segment.get('excluded', []):\n        return [False, 'excluded']\n    for i, rule in enumerate(segment.get('rules', [])):\n        clauses = rule.get('clauses', [])\n        if clauses and all(hit(c) for c in clauses):\n            return [True, 'rule:%d' % i]\n    return [False, 'none']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('explicit inclusion beats exclusion',\n   [{'included': ['k1'], 'excluded': ['k1'], 'rules': []}, {'key': 'k1'}],\n   [True, 'included']),\n  ('exclusion blocks a matching rule',\n   [{'included': ['k2'], 'excluded': ['k1'], 'rules': [{'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('segment sample 1',\n   [{'included': ['k3'], 'excluded': ['k2', 'k1'], 'rules': [{'clauses': []}, {'clauses': []}]},\n    {'key': 'k2', 'groups': ['beta'], 'tier': 'gold'}],\n   [False, 'excluded']),\n  ('segment sample 2',\n   [{'included': [], 'excluded': ['k4', 'k1'], 'rules': [{'clauses': [['groups', ['staff', 'gold']]]}]},\n    {'key': 'k4', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('segment sample 3',\n   [{'included': ['k4', 'k3'], 'excluded': ['k4'], 'rules': []}, {'key': 'k3'}],\n   [True, 'included'])],\n [('exclusion blocks a matching rule',\n   [{'included': ['k2'], 'excluded': ['k1'], 'rules': [{'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('segment sample 6',\n   [{'included': ['k4'], 'excluded': [], 'rules': []}, {'key': 'k2', 'region': 'us'}],\n   [False, 'none']),\n  ('segment sample 20',\n   [{'included': ['k3', 'k2'],\n     'excluded': [],\n     'rules': [{'clauses': [['tier', ['eu', 'gold']], ['tier', [None, 'gold']]]},\n               {'clauses': [['tier', [None, '']]]}]},\n    {'key': 'k4', 'region': ''}],\n   [False, 'none']),\n  ('segment sample 53',\n   [{'included': ['k4', 'k3'],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['groups', ['', 'gold']], ['groups', ['', 'gold']]]}]},\n    {'key': 'k9', 'region': 'eu', 'tier': 'gold'}],\n   [False, 'none'])],\n [('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('segment sample 11',\n   [{'included': ['k1'], 'excluded': ['k3'], 'rules': [{'clauses': []}]},\n    {'key': 'k2', 'groups': ['staff', 'eu'], 'tier': 'gold'}],\n   [False, 'none']),\n  ('segment sample 37',\n   [{'included': ['k4', 'k3'],\n     'excluded': [],\n     'rules': [{'clauses': [['groups', [None, 'staff']]]}, {'clauses': [['region', ['staff', '']]]}]},\n    {'key': 'k1', 'groups': 'beta'}],\n   [False, 'none']),\n  ('segment sample 42',\n   [{'included': [],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['region', ['gold', 'eu']], ['region', ['staff', '']]]},\n               {'clauses': [['tier', [None, 'eu']]]}]},\n    {'key': 'k3', 'groups': ['x'], 'region': ''}],\n   [False, 'none'])],\n [('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('all clauses must match',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['eu']], ['groups', ['beta']]]}]},\n    {'key': 'k1', 'region': 'eu', 'groups': ['x']}],\n   [False, 'none']),\n  ('segment sample 9',\n   [{'included': ['k3', 'k1'], 'excluded': [], 'rules': [{'clauses': [['tier', ['eu', None]]]}]},\n    {'key': 'k2', 'groups': ['beta']}],\n   [False, 'none']),\n  ('segment sample 13',\n   [{'included': ['k1', 'k4'],\n     'excluded': [],\n     'rules': [{'clauses': []}, {'clauses': [['region', ['', 'eu']]]}]},\n    {'key': 'k3', 'groups': 'beta', 'tier': None}],\n   [False, 'none']),\n  ('segment sample 16',\n   [{'included': ['k3', 'k1'], 'excluded': [], 'rules': [{'clauses': [['groups', ['gold', 'staff']]]}]},\n    {'key': 'k2', 'groups': ['beta', 'staff'], 'region': 'eu'}],\n   [True, 'rule:0'])],\n [('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('all clauses must match',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['eu']], ['groups', ['beta']]]}]},\n    {'key': 'k1', 'region': 'eu', 'groups': ['x']}],\n   [False, 'none']),\n  ('second rule index',\n   [{'included': [],\n     'excluded': [],\n     'rules': [{'clauses': [['region', ['us']]]}, {'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [True, 'rule:1']),\n  ('segment sample 4',\n   [{'included': ['k1', 'k2'], 'excluded': [], 'rules': [{'clauses': [['groups', ['', 'beta']]]}]},\n    {'key': 'k4', 'region': 'eu'}],\n   [False, 'none']),\n  ('segment sample 21',\n   [{'included': ['k3'], 'excluded': [], 'rules': []}, {'key': 'k9', 'groups': 'beta'}],\n   [False, 'none']),\n  ('segment sample 31',\n   [{'included': ['k2', 'k4'],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['groups', ['gold', None]]]}, {'clauses': [['groups', ['gold', 'beta']]]}]},\n    {'key': 'k1', 'region': 'us'}],\n   [False, 'none'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"711f440dea385ff378498669f2ae9f82d11b228168a830e0f83e909548b7257a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(segment, user):\n    key = user.get('key')\n    def hit(clause):\n        attr, values = clause\n        value = user.get(attr)\n        items = value if isinstance(value, list) else [value]\n        return any(item in values for item in items)\n    if key in segment.get('included', []):\n        return [True, 'included']\n    if key in segment.get('excluded', []):\n        return [False, 'excluded']\n    for i, rule in enumerate(segment.get('rules', [])):\n        clauses = rule.get('clauses', [])\n        if clauses and all(hit(c) for c in clauses):\n            return [True, 'rule:%d' % i]\n    return [False, 'none']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('explicit inclusion beats exclusion',\n   [{'included': ['k1'], 'excluded': ['k1'], 'rules': []}, {'key': 'k1'}],\n   [True, 'included']),\n  ('exclusion blocks a matching rule',\n   [{'included': ['k2'], 'excluded': ['k1'], 'rules': [{'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('segment sample 1',\n   [{'included': ['k3'], 'excluded': ['k2', 'k1'], 'rules': [{'clauses': []}, {'clauses': []}]},\n    {'key': 'k2', 'groups': ['beta'], 'tier': 'gold'}],\n   [False, 'excluded']),\n  ('segment sample 2',\n   [{'included': [], 'excluded': ['k4', 'k1'], 'rules': [{'clauses': [['groups', ['staff', 'gold']]]}]},\n    {'key': 'k4', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('segment sample 3',\n   [{'included': ['k4', 'k3'], 'excluded': ['k4'], 'rules': []}, {'key': 'k3'}],\n   [True, 'included'])],\n [('exclusion blocks a matching rule',\n   [{'included': ['k2'], 'excluded': ['k1'], 'rules': [{'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('segment sample 6',\n   [{'included': ['k4'], 'excluded': [], 'rules': []}, {'key': 'k2', 'region': 'us'}],\n   [False, 'none']),\n  ('segment sample 20',\n   [{'included': ['k3', 'k2'],\n     'excluded': [],\n     'rules': [{'clauses': [['tier', ['eu', 'gold']], ['tier', [None, 'gold']]]},\n               {'clauses': [['tier', [None, '']]]}]},\n    {'key': 'k4', 'region': ''}],\n   [False, 'none']),\n  ('segment sample 53',\n   [{'included': ['k4', 'k3'],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['groups', ['', 'gold']], ['groups', ['', 'gold']]]}]},\n    {'key': 'k9', 'region': 'eu', 'tier': 'gold'}],\n   [False, 'none'])],\n [('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('segment sample 11',\n   [{'included': ['k1'], 'excluded': ['k3'], 'rules': [{'clauses': []}]},\n    {'key': 'k2', 'groups': ['staff', 'eu'], 'tier': 'gold'}],\n   [False, 'none']),\n  ('segment sample 37',\n   [{'included': ['k4', 'k3'],\n     'excluded': [],\n     'rules': [{'clauses': [['groups', [None, 'staff']]]}, {'clauses': [['region', ['staff', '']]]}]},\n    {'key': 'k1', 'groups': 'beta'}],\n   [False, 'none']),\n  ('segment sample 42',\n   [{'included': [],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['region', ['gold', 'eu']], ['region', ['staff', '']]]},\n               {'clauses': [['tier', [None, 'eu']]]}]},\n    {'key': 'k3', 'groups': ['x'], 'region': ''}],\n   [False, 'none'])],\n [('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('all clauses must match',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['eu']], ['groups', ['beta']]]}]},\n    {'key': 'k1', 'region': 'eu', 'groups': ['x']}],\n   [False, 'none']),\n  ('segment sample 9',\n   [{'included': ['k3', 'k1'], 'excluded': [], 'rules': [{'clauses': [['tier', ['eu', None]]]}]},\n    {'key': 'k2', 'groups': ['beta']}],\n   [False, 'none']),\n  ('segment sample 13',\n   [{'included': ['k1', 'k4'],\n     'excluded': [],\n     'rules': [{'clauses': []}, {'clauses': [['region', ['', 'eu']]]}]},\n    {'key': 'k3', 'groups': 'beta', 'tier': None}],\n   [False, 'none']),\n  ('segment sample 16',\n   [{'included': ['k3', 'k1'], 'excluded': [], 'rules': [{'clauses': [['groups', ['gold', 'staff']]]}]},\n    {'key': 'k2', 'groups': ['beta', 'staff'], 'region': 'eu'}],\n   [True, 'rule:0'])],\n [('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('all clauses must match',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['eu']], ['groups', ['beta']]]}]},\n    {'key': 'k1', 'region': 'eu', 'groups': ['x']}],\n   [False, 'none']),\n  ('second rule index',\n   [{'included': [],\n     'excluded': [],\n     'rules': [{'clauses': [['region', ['us']]]}, {'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [True, 'rule:1']),\n  ('segment sample 4',\n   [{'included': ['k1', 'k2'], 'excluded': [], 'rules': [{'clauses': [['groups', ['', 'beta']]]}]},\n    {'key': 'k4', 'region': 'eu'}],\n   [False, 'none']),\n  ('segment sample 21',\n   [{'included': ['k3'], 'excluded': [], 'rules': []}, {'key': 'k9', 'groups': 'beta'}],\n   [False, 'none']),\n  ('segment sample 31',\n   [{'included': ['k2', 'k4'],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['groups', ['gold', None]]]}, {'clauses': [['groups', ['gold', 'beta']]]}]},\n    {'key': 'k1', 'region': 'us'}],\n   [False, 'none'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"8de98ae7066ac71f343fb0347239cb0b1d2abbbc65ed742e9aef3cf47e76647e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(segment, user):\n    key = user.get('key')\n    def hit(clause):\n        attr, values = clause\n        if attr not in user:\n            return False\n        value = user[attr]\n        items = value if isinstance(value, list) else [value]\n        return any(item in values for item in items)\n    if key in segment.get('included', []):\n        return [True, 'included']\n    if key in segment.get('excluded', []):\n        return [False, 'excluded']\n    for i, rule in enumerate(segment.get('rules', [])):\n        clauses = rule.get('clauses', [])\n        if clauses and all(hit(c) for c in clauses):\n            return [True, 'rule:%d' % i]\n    return [False, 'none']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('explicit inclusion beats exclusion',\n   [{'included': ['k1'], 'excluded': ['k1'], 'rules': []}, {'key': 'k1'}],\n   [True, 'included']),\n  ('exclusion blocks a matching rule',\n   [{'included': ['k2'], 'excluded': ['k1'], 'rules': [{'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('segment sample 1',\n   [{'included': ['k3'], 'excluded': ['k2', 'k1'], 'rules': [{'clauses': []}, {'clauses': []}]},\n    {'key': 'k2', 'groups': ['beta'], 'tier': 'gold'}],\n   [False, 'excluded']),\n  ('segment sample 2',\n   [{'included': [], 'excluded': ['k4', 'k1'], 'rules': [{'clauses': [['groups', ['staff', 'gold']]]}]},\n    {'key': 'k4', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('segment sample 3',\n   [{'included': ['k4', 'k3'], 'excluded': ['k4'], 'rules': []}, {'key': 'k3'}],\n   [True, 'included'])],\n [('exclusion blocks a matching rule',\n   [{'included': ['k2'], 'excluded': ['k1'], 'rules': [{'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [False, 'excluded']),\n  ('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('segment sample 6',\n   [{'included': ['k4'], 'excluded': [], 'rules': []}, {'key': 'k2', 'region': 'us'}],\n   [False, 'none']),\n  ('segment sample 20',\n   [{'included': ['k3', 'k2'],\n     'excluded': [],\n     'rules': [{'clauses': [['tier', ['eu', 'gold']], ['tier', [None, 'gold']]]},\n               {'clauses': [['tier', [None, '']]]}]},\n    {'key': 'k4', 'region': ''}],\n   [False, 'none']),\n  ('segment sample 53',\n   [{'included': ['k4', 'k3'],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['groups', ['', 'gold']], ['groups', ['', 'gold']]]}]},\n    {'key': 'k9', 'region': 'eu', 'tier': 'gold'}],\n   [False, 'none'])],\n [('empty clause list never matches',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': []}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('segment sample 11',\n   [{'included': ['k1'], 'excluded': ['k3'], 'rules': [{'clauses': []}]},\n    {'key': 'k2', 'groups': ['staff', 'eu'], 'tier': 'gold'}],\n   [False, 'none']),\n  ('segment sample 37',\n   [{'included': ['k4', 'k3'],\n     'excluded': [],\n     'rules': [{'clauses': [['groups', [None, 'staff']]]}, {'clauses': [['region', ['staff', '']]]}]},\n    {'key': 'k1', 'groups': 'beta'}],\n   [False, 'none']),\n  ('segment sample 42',\n   [{'included': [],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['region', ['gold', 'eu']], ['region', ['staff', '']]]},\n               {'clauses': [['tier', [None, 'eu']]]}]},\n    {'key': 'k3', 'groups': ['x'], 'region': ''}],\n   [False, 'none'])],\n [('absent attribute does not match a null value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['tier', [None, 'gold']]]}]}, {'key': 'k3'}],\n   [False, 'none']),\n  ('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('all clauses must match',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['eu']], ['groups', ['beta']]]}]},\n    {'key': 'k1', 'region': 'eu', 'groups': ['x']}],\n   [False, 'none']),\n  ('segment sample 9',\n   [{'included': ['k3', 'k1'], 'excluded': [], 'rules': [{'clauses': [['tier', ['eu', None]]]}]},\n    {'key': 'k2', 'groups': ['beta']}],\n   [False, 'none']),\n  ('segment sample 13',\n   [{'included': ['k1', 'k4'],\n     'excluded': [],\n     'rules': [{'clauses': []}, {'clauses': [['region', ['', 'eu']]]}]},\n    {'key': 'k3', 'groups': 'beta', 'tier': None}],\n   [False, 'none']),\n  ('segment sample 16',\n   [{'included': ['k3', 'k1'], 'excluded': [], 'rules': [{'clauses': [['groups', ['gold', 'staff']]]}]},\n    {'key': 'k2', 'groups': ['beta', 'staff'], 'region': 'eu'}],\n   [True, 'rule:0'])],\n [('absent attribute does not match an empty string value',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['']]]}]}, {'key': 'k4'}],\n   [False, 'none']),\n  ('list attribute matches through any element',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': ['staff', 'beta']}],\n   [True, 'rule:0']),\n  ('empty list attribute is not a member',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['groups', ['beta']]]}]},\n    {'key': 'k2', 'groups': []}],\n   [False, 'none']),\n  ('all clauses must match',\n   [{'included': [], 'excluded': [], 'rules': [{'clauses': [['region', ['eu']], ['groups', ['beta']]]}]},\n    {'key': 'k1', 'region': 'eu', 'groups': ['x']}],\n   [False, 'none']),\n  ('second rule index',\n   [{'included': [],\n     'excluded': [],\n     'rules': [{'clauses': [['region', ['us']]]}, {'clauses': [['region', ['eu']]]}]},\n    {'key': 'k1', 'region': 'eu'}],\n   [True, 'rule:1']),\n  ('segment sample 4',\n   [{'included': ['k1', 'k2'], 'excluded': [], 'rules': [{'clauses': [['groups', ['', 'beta']]]}]},\n    {'key': 'k4', 'region': 'eu'}],\n   [False, 'none']),\n  ('segment sample 21',\n   [{'included': ['k3'], 'excluded': [], 'rules': []}, {'key': 'k9', 'groups': 'beta'}],\n   [False, 'none']),\n  ('segment sample 31',\n   [{'included': ['k2', 'k4'],\n     'excluded': ['k4'],\n     'rules': [{'clauses': [['groups', ['gold', None]]]}, {'clauses': [['groups', ['gold', 'beta']]]}]},\n    {'key': 'k1', 'region': 'us'}],\n   [False, 'none'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic toy flag-evaluation model with a stipulated contract; it does not reproduce any vendor SDK byte for byte. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-feature-flag-rollout-bucketing-segment-membership-missing-attribute","generated_at":"2026-09-29T14:48:52.240398+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Segments are reused across many flags, so a precedence slip changes exposure everywhere at once.","repair":"Return no match when the attribute is absent before comparing values.","root_cause":"The attribute is read with user.get, so absence becomes None and matches a None clause value.","sha256":"42c0cf0fe7647146ad8bc45bc9b9c9d1e521e6815e1cad6a1ac84f90c06abf99","title":"Segment membership precedence: Absent attributes match null clause values · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.55,"exit_code":1,"observations":[{"actual":[true,"included"],"check":"explicit inclusion beats exclusion","expected":[true,"included"],"passed":true},{"actual":[false,"excluded"],"check":"exclusion blocks a matching rule","expected":[false,"excluded"],"passed":true},{"actual":[false,"none"],"check":"empty clause list never matches","expected":[false,"none"],"passed":true},{"actual":[false,"none"],"check":"absent attribute does not match a null value","expected":[false,"none"],"passed":true},{"actual":[true,"rule:0"],"check":"absent attribute does not match an empty string value","expected":[false,"none"],"passed":false},{"actual":[false,"excluded"],"check":"segment sample 1","expected":[false,"excluded"],"passed":true},{"actual":[false,"excluded"],"check":"segment sample 2","expected":[false,"excluded"],"passed":true},{"actual":[true,"included"],"check":"segment sample 3","expected":[true,"included"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit inclusion beats exclusion\", \"actual\": [true, \"included\"], \"expected\": [true, \"included\"], \"passed\": true}, {\"check\": \"exclusion blocks a matching rule\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"empty clause list never matches\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"absent attribute does not match a null value\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"absent attribute does not match an empty string value\", \"actual\": [true, \"rule:0\"], \"expected\": [false, \"none\"], \"passed\": false}, {\"check\": \"segment sample 1\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"segment sample 2\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"segment sample 3\", \"actual\": [true, \"included\"], \"expected\": [true, \"included\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.116,"exit_code":1,"observations":[{"actual":[true,"included"],"check":"explicit inclusion beats exclusion","expected":[true,"included"],"passed":true},{"actual":[false,"excluded"],"check":"exclusion blocks a matching rule","expected":[false,"excluded"],"passed":true},{"actual":[false,"none"],"check":"empty clause list never matches","expected":[false,"none"],"passed":true},{"actual":[true,"rule:0"],"check":"absent attribute does not match a null value","expected":[false,"none"],"passed":false},{"actual":[false,"none"],"check":"absent attribute does not match an empty string value","expected":[false,"none"],"passed":true},{"actual":[false,"excluded"],"check":"segment sample 1","expected":[false,"excluded"],"passed":true},{"actual":[false,"excluded"],"check":"segment sample 2","expected":[false,"excluded"],"passed":true},{"actual":[true,"included"],"check":"segment sample 3","expected":[true,"included"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit inclusion beats exclusion\", \"actual\": [true, \"included\"], \"expected\": [true, \"included\"], \"passed\": true}, {\"check\": \"exclusion blocks a matching rule\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"empty clause list never matches\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"absent attribute does not match a null value\", \"actual\": [true, \"rule:0\"], \"expected\": [false, \"none\"], \"passed\": false}, {\"check\": \"absent attribute does not match an empty string value\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"segment sample 1\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"segment sample 2\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"segment sample 3\", \"actual\": [true, \"included\"], \"expected\": [true, \"included\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.051,"exit_code":0,"observations":[{"actual":[true,"included"],"check":"explicit inclusion beats exclusion","expected":[true,"included"],"passed":true},{"actual":[false,"excluded"],"check":"exclusion blocks a matching rule","expected":[false,"excluded"],"passed":true},{"actual":[false,"none"],"check":"empty clause list never matches","expected":[false,"none"],"passed":true},{"actual":[false,"none"],"check":"absent attribute does not match a null value","expected":[false,"none"],"passed":true},{"actual":[false,"none"],"check":"absent attribute does not match an empty string value","expected":[false,"none"],"passed":true},{"actual":[false,"excluded"],"check":"segment sample 1","expected":[false,"excluded"],"passed":true},{"actual":[false,"excluded"],"check":"segment sample 2","expected":[false,"excluded"],"passed":true},{"actual":[true,"included"],"check":"segment sample 3","expected":[true,"included"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit inclusion beats exclusion\", \"actual\": [true, \"included\"], \"expected\": [true, \"included\"], \"passed\": true}, {\"check\": \"exclusion blocks a matching rule\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"empty clause list never matches\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"absent attribute does not match a null value\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"absent attribute does not match an empty string value\", \"actual\": [false, \"none\"], \"expected\": [false, \"none\"], \"passed\": true}, {\"check\": \"segment sample 1\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"segment sample 2\", \"actual\": [false, \"excluded\"], \"expected\": [false, \"excluded\"], \"passed\": true}, {\"check\": \"segment sample 3\", \"actual\": [true, \"included\"], \"expected\": [true, \"included\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}