{"abstract":"A typo in a prerequisite key is reported as a routine prerequisite failure.","category":"Feature flag rollout bucketing","checks":8,"contract":"flags maps key -> {on, off, serve, prereqs:[[key, required variation]]}. Missing flags yield [None, MISSING, key]; revisiting a flag on the current path yields [None, CYCLE, key] (checked before on/off). An off flag serves [off, OFF, None]. Prerequisites are evaluated in order; MISSING/CYCLE results propagate unchanged; the first prerequisite that is OFF or serves a different variation stops evaluation with [off, PREREQUISITE_FAILED, that prerequisite key]. A prerequisite that itself failed counts as serving its off variation. Otherwise [serve, ON, None].","contract_signature":"flags, name","evaluation_group":"w2-feature-flag-rollout-bucketing-prerequisite-chain","failed_approach":"Rewrapping the error with the off variation changes the propagated value from None.","family":"w2-feature-flag-rollout-bucketing-prerequisite-chain-missing-prerequisite","id":"FA-73931","implementations":{"attempt":{"sha256":"45d45b5e5280aaaf8de912ffe0f5dff19723ddbfef32b94b189125921d475020","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(flags, name):\n    def ev(key, stack):\n        f = flags.get(key)\n        if f is None:\n            return [None, 'MISSING', key]\n        if key in stack:\n            return [None, 'CYCLE', key]\n        if not f['on']:\n            return [f['off'], 'OFF', None]\n        for pre, want in f.get('prereqs', []):\n            got = ev(pre, stack + [key])\n            if got[1] in ('MISSING', 'CYCLE'):\n                return [f['off'], got[1], got[2]]\n            if got[0] != want or got[1] == 'OFF':\n                return [f['off'], 'PREREQUISITE_FAILED', pre]\n        return [f['serve'], 'ON', None]\n    return ev(name, [])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('off prerequisite whose off value equals the requirement fails',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'off']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('failure names the unmet prerequisite',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('prerequisite graph sample 1',\n   [{'a': {'on': False, 'off': 'x', 'serve': 'on', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['e', 'on'], ['e', 'off']]},\n     'c': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'on']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['b', 'x'], ['e', 'x'], ['b', 'off']]}},\n    'd'],\n   [None, 'MISSING', 'd']),\n  ('prerequisite graph sample 2',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'on'], ['d', 'x'], ['c', 'x']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]}},\n    'b'],\n   [None, 'MISSING', 'z'])],\n [('failure names the unmet prerequisite',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('prerequisite graph sample 13',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'off'], ['d', 'x'], ['e', 'off']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'on'], ['z', 'x'], ['b', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['e', 'on'], ['d', 'off']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]}},\n    'a'],\n   [None, 'MISSING', 'z']),\n  ('prerequisite graph sample 49',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'c': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'off'], ['c', 'on'], ['b', 'x']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'x', 'prereqs': [['e', 'on'], ['a', 'off']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'on'], ['a', 'off'], ['e', 'on']]}},\n    'e'],\n   [None, 'MISSING', 'z'])],\n [('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('nested failure serving required off variation passes',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'c': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('prerequisite graph sample 11',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'x'], ['b', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []},\n     'd': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['b', 'x'], ['z', 'x'], ['e', 'on']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'e'],\n   ['on', 'ON', None]),\n  ('prerequisite graph sample 12',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['c', 'on'], ['z', 'x']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['b', 'on']]},\n     'c': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []}},\n    'c'],\n   [None, 'CYCLE', 'b']),\n  ('prerequisite graph sample 39',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'on'], ['e', 'off']]},\n     'b': {'on': False, 'off': 'x', 'serve': 'on', 'prereqs': [['e', 'on'], ['c', 'on']]},\n     'c': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'x']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'off'], ['c', 'on']]}},\n    'c'],\n   [None, 'MISSING', 'z'])],\n [('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('nested failure serving required off variation passes',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'c': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('prerequisite graph sample 2',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'on'], ['d', 'x'], ['c', 'x']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]}},\n    'b'],\n   [None, 'MISSING', 'z']),\n  ('prerequisite graph sample 16',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['c', 'on'], ['d', 'off']]},\n     'c': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'd': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'off'], ['z', 'on']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['d', 'on']]}},\n    'c'],\n   ['x', 'ON', None]),\n  ('prerequisite graph sample 49',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'c': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'off'], ['c', 'on'], ['b', 'x']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'x', 'prereqs': [['e', 'on'], ['a', 'off']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'on'], ['a', 'off'], ['e', 'on']]}},\n    'e'],\n   [None, 'MISSING', 'z'])],\n [('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('nested failure serving required off variation passes',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'c': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('diamond dependency is not a cycle',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['d', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['d', 'on']]},\n     'd': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('prerequisite graph sample 21',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['b', 'on'], ['d', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['d', 'off'], ['a', 'on'], ['d', 'x']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'x']]},\n     'd': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'e'],\n   [None, 'MISSING', 'e']),\n  ('prerequisite graph sample 51',\n   [{'c': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'off']]},\n     'd': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['a', 'on'], ['a', 'on'], ['c', 'x']]},\n     'e': {'on': False, 'off': 'x', 'serve': 'on', 'prereqs': [['e', 'off']]}},\n    'c'],\n   [None, 'MISSING', 'z'])]]\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":"2ca7bf621709c66918271e0e1a2d5cacaac1a86514435e06011bbfbc03608cae","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(flags, name):\n    def ev(key, stack):\n        f = flags.get(key)\n        if f is None:\n            return [None, 'MISSING', key]\n        if key in stack:\n            return [None, 'CYCLE', key]\n        if not f['on']:\n            return [f['off'], 'OFF', None]\n        for pre, want in f.get('prereqs', []):\n            got = ev(pre, stack + [key])\n            if got[1] == 'CYCLE':\n                return got\n            if got[0] != want or got[1] == 'OFF':\n                return [f['off'], 'PREREQUISITE_FAILED', pre]\n        return [f['serve'], 'ON', None]\n    return ev(name, [])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('off prerequisite whose off value equals the requirement fails',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'off']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('failure names the unmet prerequisite',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('prerequisite graph sample 1',\n   [{'a': {'on': False, 'off': 'x', 'serve': 'on', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['e', 'on'], ['e', 'off']]},\n     'c': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'on']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['b', 'x'], ['e', 'x'], ['b', 'off']]}},\n    'd'],\n   [None, 'MISSING', 'd']),\n  ('prerequisite graph sample 2',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'on'], ['d', 'x'], ['c', 'x']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]}},\n    'b'],\n   [None, 'MISSING', 'z'])],\n [('failure names the unmet prerequisite',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('prerequisite graph sample 13',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'off'], ['d', 'x'], ['e', 'off']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'on'], ['z', 'x'], ['b', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['e', 'on'], ['d', 'off']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]}},\n    'a'],\n   [None, 'MISSING', 'z']),\n  ('prerequisite graph sample 49',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'c': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'off'], ['c', 'on'], ['b', 'x']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'x', 'prereqs': [['e', 'on'], ['a', 'off']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'on'], ['a', 'off'], ['e', 'on']]}},\n    'e'],\n   [None, 'MISSING', 'z'])],\n [('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('nested failure serving required off variation passes',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'c': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('prerequisite graph sample 11',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'x'], ['b', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []},\n     'd': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['b', 'x'], ['z', 'x'], ['e', 'on']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'e'],\n   ['on', 'ON', None]),\n  ('prerequisite graph sample 12',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['c', 'on'], ['z', 'x']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['b', 'on']]},\n     'c': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []}},\n    'c'],\n   [None, 'CYCLE', 'b']),\n  ('prerequisite graph sample 39',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'on'], ['e', 'off']]},\n     'b': {'on': False, 'off': 'x', 'serve': 'on', 'prereqs': [['e', 'on'], ['c', 'on']]},\n     'c': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'x']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'off'], ['c', 'on']]}},\n    'c'],\n   [None, 'MISSING', 'z'])],\n [('missing prerequisite propagates MISSING',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['zz', 'on']]}}, 'a'],\n   [None, 'MISSING', 'zz']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('nested failure serving required off variation passes',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'c': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('prerequisite graph sample 2',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'on'], ['d', 'x'], ['c', 'x']]},\n     'e': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on'], ['c', 'on']]}},\n    'b'],\n   [None, 'MISSING', 'z']),\n  ('prerequisite graph sample 16',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['c', 'on'], ['d', 'off']]},\n     'c': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'd': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['z', 'off'], ['z', 'on']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['d', 'on']]}},\n    'c'],\n   ['x', 'ON', None]),\n  ('prerequisite graph sample 49',\n   [{'a': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': []},\n     'c': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['c', 'off'], ['c', 'on'], ['b', 'x']]},\n     'd': {'on': False, 'off': 'off', 'serve': 'x', 'prereqs': [['e', 'on'], ['a', 'off']]},\n     'e': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'on'], ['a', 'off'], ['e', 'on']]}},\n    'e'],\n   [None, 'MISSING', 'z'])],\n [('cycle through an off member reports CYCLE',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('first unmet prerequisite stops evaluation',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []},\n     'c': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('later missing prerequisite is never reached',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['zz', 'on']]},\n     'b': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['off', 'PREREQUISITE_FAILED', 'b']),\n  ('nested failure serving required off variation passes',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'x']]},\n     'b': {'on': True, 'off': 'x', 'serve': 'on', 'prereqs': [['c', 'on']]},\n     'c': {'on': False, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('cycle revisits the root',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'on']]}},\n    'a'],\n   [None, 'CYCLE', 'a']),\n  ('diamond dependency is not a cycle',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['c', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['d', 'on']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['d', 'on']]},\n     'd': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'a'],\n   ['on', 'ON', None]),\n  ('prerequisite graph sample 21',\n   [{'a': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['b', 'on'], ['b', 'on'], ['d', 'on']]},\n     'b': {'on': True, 'off': 'off', 'serve': 'x', 'prereqs': [['d', 'off'], ['a', 'on'], ['d', 'x']]},\n     'c': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': [['a', 'x']]},\n     'd': {'on': True, 'off': 'off', 'serve': 'on', 'prereqs': []}},\n    'e'],\n   [None, 'MISSING', 'e']),\n  ('prerequisite graph sample 51',\n   [{'c': {'on': True, 'off': 'x', 'serve': 'x', 'prereqs': [['z', 'off']]},\n     'd': {'on': False, 'off': 'x', 'serve': 'x', 'prereqs': [['a', 'on'], ['a', 'on'], ['c', 'x']]},\n     'e': {'on': False, 'off': 'x', 'serve': 'on', 'prereqs': [['e', 'off']]}},\n    'c'],\n   [None, 'MISSING', 'z'])]]\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-prerequisite-chain-missing-prerequisite","generated_at":"2026-09-29T14:48:51.983091+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Prerequisite chains gate dependent features and must fail closed with an actionable reason.","root_cause":"Only CYCLE results are propagated; a MISSING prerequisite falls through to the variation comparison.","sha256":"e0a3c86aee17a72edc5fd0fdaa6a9883b3d387430620254b873332f7fec1c4fc","title":"Prerequisite flag chain: Missing prerequisites look like ordinary failures · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":37.778,"exit_code":1,"observations":[{"actual":["off","PREREQUISITE_FAILED","b"],"check":"off prerequisite whose off value equals the requirement fails","expected":["off","PREREQUISITE_FAILED","b"],"passed":true},{"actual":["off","PREREQUISITE_FAILED","b"],"check":"failure names the unmet prerequisite","expected":["off","PREREQUISITE_FAILED","b"],"passed":true},{"actual":["off","CYCLE","a"],"check":"cycle through an off member reports CYCLE","expected":[null,"CYCLE","a"],"passed":false},{"actual":["off","MISSING","zz"],"check":"missing prerequisite propagates MISSING","expected":[null,"MISSING","zz"],"passed":false},{"actual":["off","PREREQUISITE_FAILED","b"],"check":"first unmet prerequisite stops evaluation","expected":["off","PREREQUISITE_FAILED","b"],"passed":true},{"actual":["off","CYCLE","a"],"check":"cycle revisits the root","expected":[null,"CYCLE","a"],"passed":false},{"actual":[null,"MISSING","d"],"check":"prerequisite graph sample 1","expected":[null,"MISSING","d"],"passed":true},{"actual":["off","MISSING","z"],"check":"prerequisite graph sample 2","expected":[null,"MISSING","z"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"off prerequisite whose off value equals the requirement fails\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"expected\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"passed\": true}, {\"check\": \"failure names the unmet prerequisite\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"expected\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"passed\": true}, {\"check\": \"cycle through an off member reports CYCLE\", \"actual\": [\"off\", \"CYCLE\", \"a\"], \"expected\": [null, \"CYCLE\", \"a\"], \"passed\": false}, {\"check\": \"missing prerequisite propagates MISSING\", \"actual\": [\"off\", \"MISSING\", \"zz\"], \"expected\": [null, \"MISSING\", \"zz\"], \"passed\": false}, {\"check\": \"first unmet prerequisite stops evaluation\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"expected\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"passed\": true}, {\"check\": \"cycle revisits the root\", \"actual\": [\"off\", \"CYCLE\", \"a\"], \"expected\": [null, \"CYCLE\", \"a\"], \"passed\": false}, {\"check\": \"prerequisite graph sample 1\", \"actual\": [null, \"MISSING\", \"d\"], \"expected\": [null, \"MISSING\", \"d\"], \"passed\": true}, {\"check\": \"prerequisite graph sample 2\", \"actual\": [\"off\", \"MISSING\", \"z\"], \"expected\": [null, \"MISSING\", \"z\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.026,"exit_code":1,"observations":[{"actual":["off","PREREQUISITE_FAILED","b"],"check":"off prerequisite whose off value equals the requirement fails","expected":["off","PREREQUISITE_FAILED","b"],"passed":true},{"actual":["off","PREREQUISITE_FAILED","b"],"check":"failure names the unmet prerequisite","expected":["off","PREREQUISITE_FAILED","b"],"passed":true},{"actual":[null,"CYCLE","a"],"check":"cycle through an off member reports CYCLE","expected":[null,"CYCLE","a"],"passed":true},{"actual":["off","PREREQUISITE_FAILED","zz"],"check":"missing prerequisite propagates MISSING","expected":[null,"MISSING","zz"],"passed":false},{"actual":["off","PREREQUISITE_FAILED","b"],"check":"first unmet prerequisite stops evaluation","expected":["off","PREREQUISITE_FAILED","b"],"passed":true},{"actual":[null,"CYCLE","a"],"check":"cycle revisits the root","expected":[null,"CYCLE","a"],"passed":true},{"actual":[null,"MISSING","d"],"check":"prerequisite graph sample 1","expected":[null,"MISSING","d"],"passed":true},{"actual":["off","PREREQUISITE_FAILED","c"],"check":"prerequisite graph sample 2","expected":[null,"MISSING","z"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"off prerequisite whose off value equals the requirement fails\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"expected\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"passed\": true}, {\"check\": \"failure names the unmet prerequisite\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"expected\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"passed\": true}, {\"check\": \"cycle through an off member reports CYCLE\", \"actual\": [null, \"CYCLE\", \"a\"], \"expected\": [null, \"CYCLE\", \"a\"], \"passed\": true}, {\"check\": \"missing prerequisite propagates MISSING\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"zz\"], \"expected\": [null, \"MISSING\", \"zz\"], \"passed\": false}, {\"check\": \"first unmet prerequisite stops evaluation\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"expected\": [\"off\", \"PREREQUISITE_FAILED\", \"b\"], \"passed\": true}, {\"check\": \"cycle revisits the root\", \"actual\": [null, \"CYCLE\", \"a\"], \"expected\": [null, \"CYCLE\", \"a\"], \"passed\": true}, {\"check\": \"prerequisite graph sample 1\", \"actual\": [null, \"MISSING\", \"d\"], \"expected\": [null, \"MISSING\", \"d\"], \"passed\": true}, {\"check\": \"prerequisite graph sample 2\", \"actual\": [\"off\", \"PREREQUISITE_FAILED\", \"c\"], \"expected\": [null, \"MISSING\", \"z\"], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}