{"abstract":"A signal degrades although its auxiliary filament is working.","category":"Railway interlocking logic","checks":8,"contract":"Aspects need lamps: G needs G; YY needs Y1 and Y2; Y needs Y1; R needs R. A lamp is lit if its main or auxiliary filament works. If the requested aspect cannot be lit, show the next more restrictive aspect that can (G, YY, Y, R); if even R cannot be lit the signal is DARK. alarm is raised if the signal is DARK or any lamp used by the shown aspect runs on its auxiliary filament. degraded means shown != requested.","contract_signature":"x","evaluation_group":"w2-railway_interlocking_logic-lamp-proving-degradation","failed_approach":"Refusing the auxiliary filament on the red lamp turns a working red into a dark signal.","family":"w2-railway_interlocking_logic-lamp-proving-degradation-auxiliary-filament-fallback","id":"FA-67151","implementations":{"attempt":{"sha256":"8a24941e0b8779ab090e3b88ea31937c724b84758b9179d079fb9c68bbbef673","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    lamps = x['lamps']\n    need = {'G': ['G'], 'YY': ['Y1', 'Y2'], 'Y': ['Y1'], 'R': ['R']}\n    order = ['G', 'YY', 'Y', 'R']\n    def lit(l):\n        return lamps[l]['main'] or (lamps[l]['aux'] and l != 'R')\n    shown = 'DARK'\n    for asp in order[order.index(x['requested']):]:\n        if all(lit(l) for l in need[asp]):\n            shown = asp\n            break\n    alarm = shown == 'DARK' or any(not lamps[l]['main'] for l in need[shown])\n    return {'shown': shown, 'alarm': alarm, 'degraded': shown != x['requested']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: green on auxiliary filament', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'G', 'alarm': True, 'degraded': False}), ('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 2', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 34', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('boundary: green lamp dead', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'YY', 'alarm': False, 'degraded': True}), ('control 1', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 4', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 7', {'requested': 'R', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': False})], [('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 30', {'requested': 'YY', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('boundary: green lamp dead', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'YY', 'alarm': False, 'degraded': True}), ('boundary: lower yellow dead under double yellow', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': True}), ('boundary: upper yellow dead under double yellow', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': True}), ('control 12', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': False, 'aux': True}}}, {'shown': 'YY', 'alarm': False, 'degraded': False}), ('sampled regression 15', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 18', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'Y', 'alarm': True, 'degraded': False})], [('regression: second yellow on auxiliary', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 62', {'requested': 'Y', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': False}}}, {'shown': 'R', 'alarm': True, 'degraded': True}), ('sampled regression 69', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('boundary: upper yellow dead under double yellow', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': True}), ('control 23', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': False}), ('control 26', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': False}), ('control 29', {'requested': 'R', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': False})], [('regression: green on auxiliary filament', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'G', 'alarm': True, 'degraded': False}), ('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('regression: second yellow on auxiliary', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 62', {'requested': 'Y', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': False}}}, {'shown': 'R', 'alarm': True, 'degraded': True}), ('boundary: unused lamp on auxiliary', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': False}), ('sampled regression 34', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('control 37', {'requested': 'R', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': False}), ('control 40', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'YY', 'alarm': False, 'degraded': False})], [('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 25', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 53', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('boundary: all yellows dead', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': False, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': True}), ('regression: green on auxiliary filament', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'G', 'alarm': True, 'degraded': False}), ('control 45', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': False}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 48', {'requested': 'G', 'lamps': {'R': {'main': False, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 51', {'requested': 'YY', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': False, 'degraded': False})]]\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":"738561751ea70e7ccb38e088fceefea4f3aad381f6a066ed80c1f27db6dcdc95","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    lamps = x['lamps']\n    need = {'G': ['G'], 'YY': ['Y1', 'Y2'], 'Y': ['Y1'], 'R': ['R']}\n    order = ['G', 'YY', 'Y', 'R']\n    def lit(l):\n        return lamps[l]['main']\n    shown = 'DARK'\n    for asp in order[order.index(x['requested']):]:\n        if all(lit(l) for l in need[asp]):\n            shown = asp\n            break\n    alarm = shown == 'DARK' or any(not lamps[l]['main'] for l in need[shown])\n    return {'shown': shown, 'alarm': alarm, 'degraded': shown != x['requested']}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: green on auxiliary filament', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'G', 'alarm': True, 'degraded': False}), ('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 2', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 34', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('boundary: green lamp dead', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'YY', 'alarm': False, 'degraded': True}), ('control 1', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 4', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 7', {'requested': 'R', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': False})], [('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 30', {'requested': 'YY', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('boundary: green lamp dead', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'YY', 'alarm': False, 'degraded': True}), ('boundary: lower yellow dead under double yellow', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': True}), ('boundary: upper yellow dead under double yellow', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': True}), ('control 12', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': False, 'aux': True}}}, {'shown': 'YY', 'alarm': False, 'degraded': False}), ('sampled regression 15', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 18', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'Y', 'alarm': True, 'degraded': False})], [('regression: second yellow on auxiliary', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 62', {'requested': 'Y', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': False}}}, {'shown': 'R', 'alarm': True, 'degraded': True}), ('sampled regression 69', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('boundary: upper yellow dead under double yellow', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': True}), ('control 23', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': False}), ('control 26', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': False}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': False}), ('control 29', {'requested': 'R', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': False})], [('regression: green on auxiliary filament', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'G', 'alarm': True, 'degraded': False}), ('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('regression: second yellow on auxiliary', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 62', {'requested': 'Y', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': False}}}, {'shown': 'R', 'alarm': True, 'degraded': True}), ('boundary: unused lamp on auxiliary', {'requested': 'Y', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'Y', 'alarm': False, 'degraded': False}), ('sampled regression 34', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('control 37', {'requested': 'R', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': False}), ('control 40', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'YY', 'alarm': False, 'degraded': False})], [('regression: red on auxiliary filament', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('sampled regression 25', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': True, 'degraded': False}), ('sampled regression 53', {'requested': 'R', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': False}}}, {'shown': 'R', 'alarm': True, 'degraded': False}), ('boundary: all yellows dead', {'requested': 'YY', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': False, 'aux': False}, 'Y2': {'main': False, 'aux': False}, 'G': {'main': True, 'aux': True}}}, {'shown': 'R', 'alarm': False, 'degraded': True}), ('regression: green on auxiliary filament', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': False, 'aux': True}}}, {'shown': 'G', 'alarm': True, 'degraded': False}), ('control 45', {'requested': 'G', 'lamps': {'R': {'main': True, 'aux': True}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': True, 'aux': False}, 'G': {'main': True, 'aux': False}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 48', {'requested': 'G', 'lamps': {'R': {'main': False, 'aux': False}, 'Y1': {'main': True, 'aux': True}, 'Y2': {'main': False, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'G', 'alarm': False, 'degraded': False}), ('control 51', {'requested': 'YY', 'lamps': {'R': {'main': False, 'aux': True}, 'Y1': {'main': True, 'aux': False}, 'Y2': {'main': True, 'aux': True}, 'G': {'main': True, 'aux': True}}}, {'shown': 'YY', 'alarm': False, 'degraded': False})]]\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":"Stipulated toy interlocking contract for a bounded teaching model; it makes no claim of conformance to any railway signalling standard and omits real safety cases. 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-railway_interlocking_logic-lamp-proving-degradation-auxiliary-filament-fallback","generated_at":"2026-09-29T14:47:50.083760+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Interlocking logic decides whether trains may be given authority; a wrong decision at this point either grants unsafe movements or strands traffic.","root_cause":"Only the main filament counts as lit.","sha256":"09c2f92a41c31ba7f0b8e11ded36f7f74595d3d0d2df860bd7583ab19fcb7e66","title":"Signal lamp proving and aspect degradation: auxiliary filament fallback · 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":42.392,"exit_code":1,"observations":[{"actual":{"alarm":true,"degraded":false,"shown":"G"},"check":"regression: green on auxiliary filament","expected":{"alarm":true,"degraded":false,"shown":"G"},"passed":true},{"actual":{"alarm":true,"degraded":true,"shown":"DARK"},"check":"regression: red on auxiliary filament","expected":{"alarm":true,"degraded":false,"shown":"R"},"passed":false},{"actual":{"alarm":true,"degraded":false,"shown":"YY"},"check":"sampled regression 2","expected":{"alarm":true,"degraded":false,"shown":"YY"},"passed":true},{"actual":{"alarm":true,"degraded":true,"shown":"DARK"},"check":"sampled regression 34","expected":{"alarm":true,"degraded":false,"shown":"R"},"passed":false},{"actual":{"alarm":false,"degraded":true,"shown":"YY"},"check":"boundary: green lamp dead","expected":{"alarm":false,"degraded":true,"shown":"YY"},"passed":true},{"actual":{"alarm":false,"degraded":false,"shown":"G"},"check":"control 1","expected":{"alarm":false,"degraded":false,"shown":"G"},"passed":true},{"actual":{"alarm":false,"degraded":false,"shown":"G"},"check":"control 4","expected":{"alarm":false,"degraded":false,"shown":"G"},"passed":true},{"actual":{"alarm":false,"degraded":false,"shown":"R"},"check":"control 7","expected":{"alarm":false,"degraded":false,"shown":"R"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: green on auxiliary filament\", \"actual\": {\"shown\": \"G\", \"alarm\": true, \"degraded\": false}, \"expected\": {\"shown\": \"G\", \"alarm\": true, \"degraded\": false}, \"passed\": true}, {\"check\": \"regression: red on auxiliary filament\", \"actual\": {\"shown\": \"DARK\", \"alarm\": true, \"degraded\": true}, \"expected\": {\"shown\": \"R\", \"alarm\": true, \"degraded\": false}, \"passed\": false}, {\"check\": \"sampled regression 2\", \"actual\": {\"shown\": \"YY\", \"alarm\": true, \"degraded\": false}, \"expected\": {\"shown\": \"YY\", \"alarm\": true, \"degraded\": false}, \"passed\": true}, {\"check\": \"sampled regression 34\", \"actual\": {\"shown\": \"DARK\", \"alarm\": true, \"degraded\": true}, \"expected\": {\"shown\": \"R\", \"alarm\": true, \"degraded\": false}, \"passed\": false}, {\"check\": \"boundary: green lamp dead\", \"actual\": {\"shown\": \"YY\", \"alarm\": false, \"degraded\": true}, \"expected\": {\"shown\": \"YY\", \"alarm\": false, \"degraded\": true}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"expected\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"expected\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"shown\": \"R\", \"alarm\": false, \"degraded\": false}, \"expected\": {\"shown\": \"R\", \"alarm\": false, \"degraded\": false}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.401,"exit_code":1,"observations":[{"actual":{"alarm":false,"degraded":true,"shown":"YY"},"check":"regression: green on auxiliary filament","expected":{"alarm":true,"degraded":false,"shown":"G"},"passed":false},{"actual":{"alarm":true,"degraded":true,"shown":"DARK"},"check":"regression: red on auxiliary filament","expected":{"alarm":true,"degraded":false,"shown":"R"},"passed":false},{"actual":{"alarm":false,"degraded":true,"shown":"R"},"check":"sampled regression 2","expected":{"alarm":true,"degraded":false,"shown":"YY"},"passed":false},{"actual":{"alarm":true,"degraded":true,"shown":"DARK"},"check":"sampled regression 34","expected":{"alarm":true,"degraded":false,"shown":"R"},"passed":false},{"actual":{"alarm":false,"degraded":true,"shown":"YY"},"check":"boundary: green lamp dead","expected":{"alarm":false,"degraded":true,"shown":"YY"},"passed":true},{"actual":{"alarm":false,"degraded":false,"shown":"G"},"check":"control 1","expected":{"alarm":false,"degraded":false,"shown":"G"},"passed":true},{"actual":{"alarm":false,"degraded":false,"shown":"G"},"check":"control 4","expected":{"alarm":false,"degraded":false,"shown":"G"},"passed":true},{"actual":{"alarm":false,"degraded":false,"shown":"R"},"check":"control 7","expected":{"alarm":false,"degraded":false,"shown":"R"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: green on auxiliary filament\", \"actual\": {\"shown\": \"YY\", \"alarm\": false, \"degraded\": true}, \"expected\": {\"shown\": \"G\", \"alarm\": true, \"degraded\": false}, \"passed\": false}, {\"check\": \"regression: red on auxiliary filament\", \"actual\": {\"shown\": \"DARK\", \"alarm\": true, \"degraded\": true}, \"expected\": {\"shown\": \"R\", \"alarm\": true, \"degraded\": false}, \"passed\": false}, {\"check\": \"sampled regression 2\", \"actual\": {\"shown\": \"R\", \"alarm\": false, \"degraded\": true}, \"expected\": {\"shown\": \"YY\", \"alarm\": true, \"degraded\": false}, \"passed\": false}, {\"check\": \"sampled regression 34\", \"actual\": {\"shown\": \"DARK\", \"alarm\": true, \"degraded\": true}, \"expected\": {\"shown\": \"R\", \"alarm\": true, \"degraded\": false}, \"passed\": false}, {\"check\": \"boundary: green lamp dead\", \"actual\": {\"shown\": \"YY\", \"alarm\": false, \"degraded\": true}, \"expected\": {\"shown\": \"YY\", \"alarm\": false, \"degraded\": true}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"expected\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"expected\": {\"shown\": \"G\", \"alarm\": false, \"degraded\": false}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"shown\": \"R\", \"alarm\": false, \"degraded\": false}, \"expected\": {\"shown\": \"R\", \"alarm\": false, \"degraded\": false}, \"passed\": true}], \"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."}}