{"abstract":"A section under preparatory reset is shown as ordinarily occupied while the sweep train passes.","category":"Railway interlocking logic","checks":8,"contract":"An axle-counter section counts axles in and out. Counting out below zero latches disturbed (count forced to 0). A reset is accepted only when the section is disturbed or the count is non-zero; it zeroes the count and enters preparatory state, which ends only when a sweep train has counted in and the count returns to zero on an out-count. query reports disturbed, prep, occupied (count>0) or clear, in that precedence.","evaluation_group":"w2-railway_interlocking_logic-axle-counter-section","failed_approach":"Reporting prep only at a zero count still hides the preparatory state during the sweep.","family":"w2-railway_interlocking_logic-axle-counter-section-state-precedence","id":"FA-66976","implementations":{"attempt":{"sha256":"2260564d14570c3372d3ea15d997912e22c6c310548626dd3815b8bcff47ae5f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    count = 0\n    disturbed = False\n    prep = False\n    swept = False\n    out = []\n    for ev in x['events']:\n        if ev == 'in':\n            count += 1\n            if prep:\n                swept = True\n        elif ev == 'out':\n            count -= 1\n            if count < 0:\n                disturbed = True\n                count = 0\n            if prep and swept and count == 0:\n                prep = False\n        elif ev == 'reset':\n            if disturbed or count != 0:\n                count = 0\n                disturbed = False\n                prep = True\n                swept = False\n        elif ev == 'query':\n            if disturbed:\n                out.append('disturbed')\n            elif prep and count == 0:\n                out.append('prep')\n            elif count > 0:\n                out.append('occupied')\n            else:\n                out.append('clear')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('sampled regression 9', {'events': ['in', 'query', 'query', 'reset', 'in', 'in', 'in', 'in', 'query', 'reset', 'in', 'query']}, ['occupied', 'occupied', 'prep', 'prep']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('boundary: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('control 1', {'events': ['out', 'in', 'out', 'query', 'out', 'query', 'in', 'out', 'in', 'out', 'query', 'query', 'in', 'query', 'query']}, ['disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed']), ('control 4', {'events': ['in', 'out', 'query', 'query', 'query']}, ['clear', 'clear', 'clear']), ('control 7', {'events': ['query', 'out', 'in', 'query', 'out', 'query', 'reset', 'reset', 'in', 'reset', 'query', 'reset', 'query']}, ['clear', 'disturbed', 'disturbed', 'prep', 'prep'])], [('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 45', {'events': ['out', 'query', 'out', 'in', 'query', 'in', 'in', 'in', 'reset', 'in', 'query']}, ['disturbed', 'disturbed', 'prep']), ('sampled regression 14', {'events': ['in', 'in', 'reset', 'in', 'query', 'out', 'out', 'reset', 'in', 'in', 'in', 'out', 'in', 'query']}, ['prep', 'prep']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('control 12', {'events': ['query', 'out', 'reset', 'out', 'query']}, ['clear', 'disturbed']), ('control 15', {'events': ['out', 'out', 'in', 'reset', 'query', 'query', 'query']}, ['prep', 'prep', 'prep']), ('sampled regression 18', {'events': ['out', 'query', 'query', 'reset', 'in', 'query', 'query']}, ['disturbed', 'disturbed', 'prep', 'prep'])], [('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('sampled regression 2', {'events': ['in', 'in', 'reset', 'reset', 'query', 'in', 'query']}, ['prep', 'prep']), ('sampled regression 48', {'events': ['out', 'query', 'in', 'out', 'reset', 'in', 'query', 'query', 'query', 'query']}, ['disturbed', 'prep', 'prep', 'prep', 'prep']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('boundary: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('control 23', {'events': ['query', 'out', 'query', 'out', 'in', 'in', 'in', 'query', 'out', 'in', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('control 26', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 29', {'events': ['out', 'in', 'in', 'out', 'out', 'in', 'reset', 'out', 'reset', 'in', 'query', 'in', 'query']}, ['prep', 'prep'])], [('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 39', {'events': ['query', 'query', 'query', 'query', 'query', 'reset', 'out', 'out', 'out', 'reset', 'in', 'in', 'out', 'query']}, ['clear', 'clear', 'clear', 'clear', 'clear', 'prep']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('boundary: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('control 34', {'events': ['in', 'out', 'in', 'out', 'in', 'in', 'query']}, ['occupied']), ('control 37', {'events': ['reset', 'query', 'out', 'query', 'query', 'out', 'in', 'out', 'in', 'out', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('control 40', {'events': ['in', 'in', 'query', 'out', 'query']}, ['occupied', 'occupied'])], [('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 14', {'events': ['in', 'in', 'reset', 'in', 'query', 'out', 'out', 'reset', 'in', 'in', 'in', 'out', 'in', 'query']}, ['prep', 'prep']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 45', {'events': ['out', 'query', 'out', 'in', 'query', 'in', 'in', 'in', 'reset', 'in', 'query']}, ['disturbed', 'disturbed', 'prep']), ('sampled regression 48', {'events': ['out', 'query', 'in', 'out', 'reset', 'in', 'query', 'query', 'query', 'query']}, ['disturbed', 'prep', 'prep', 'prep', 'prep']), ('control 51', {'events': ['reset', 'query', 'in', 'out', 'query', 'in', 'in', 'query', 'query', 'query', 'query']}, ['clear', 'clear', 'occupied', 'occupied', 'occupied', 'occupied'])]]\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":"cb64f85a4919baaed70eda7edb64996b598ca7212cf2e0f88efb1660b859e473","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    count = 0\n    disturbed = False\n    prep = False\n    swept = False\n    out = []\n    for ev in x['events']:\n        if ev == 'in':\n            count += 1\n            if prep:\n                swept = True\n        elif ev == 'out':\n            count -= 1\n            if count < 0:\n                disturbed = True\n                count = 0\n            if prep and swept and count == 0:\n                prep = False\n        elif ev == 'reset':\n            if disturbed or count != 0:\n                count = 0\n                disturbed = False\n                prep = True\n                swept = False\n        elif ev == 'query':\n            if disturbed:\n                out.append('disturbed')\n            elif count > 0:\n                out.append('occupied')\n            elif prep:\n                out.append('prep')\n            else:\n                out.append('clear')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('sampled regression 9', {'events': ['in', 'query', 'query', 'reset', 'in', 'in', 'in', 'in', 'query', 'reset', 'in', 'query']}, ['occupied', 'occupied', 'prep', 'prep']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('boundary: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('control 1', {'events': ['out', 'in', 'out', 'query', 'out', 'query', 'in', 'out', 'in', 'out', 'query', 'query', 'in', 'query', 'query']}, ['disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed']), ('control 4', {'events': ['in', 'out', 'query', 'query', 'query']}, ['clear', 'clear', 'clear']), ('control 7', {'events': ['query', 'out', 'in', 'query', 'out', 'query', 'reset', 'reset', 'in', 'reset', 'query', 'reset', 'query']}, ['clear', 'disturbed', 'disturbed', 'prep', 'prep'])], [('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 45', {'events': ['out', 'query', 'out', 'in', 'query', 'in', 'in', 'in', 'reset', 'in', 'query']}, ['disturbed', 'disturbed', 'prep']), ('sampled regression 14', {'events': ['in', 'in', 'reset', 'in', 'query', 'out', 'out', 'reset', 'in', 'in', 'in', 'out', 'in', 'query']}, ['prep', 'prep']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('control 12', {'events': ['query', 'out', 'reset', 'out', 'query']}, ['clear', 'disturbed']), ('control 15', {'events': ['out', 'out', 'in', 'reset', 'query', 'query', 'query']}, ['prep', 'prep', 'prep']), ('sampled regression 18', {'events': ['out', 'query', 'query', 'reset', 'in', 'query', 'query']}, ['disturbed', 'disturbed', 'prep', 'prep'])], [('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('sampled regression 2', {'events': ['in', 'in', 'reset', 'reset', 'query', 'in', 'query']}, ['prep', 'prep']), ('sampled regression 48', {'events': ['out', 'query', 'in', 'out', 'reset', 'in', 'query', 'query', 'query', 'query']}, ['disturbed', 'prep', 'prep', 'prep', 'prep']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('boundary: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('control 23', {'events': ['query', 'out', 'query', 'out', 'in', 'in', 'in', 'query', 'out', 'in', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('control 26', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 29', {'events': ['out', 'in', 'in', 'out', 'out', 'in', 'reset', 'out', 'reset', 'in', 'query', 'in', 'query']}, ['prep', 'prep'])], [('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 39', {'events': ['query', 'query', 'query', 'query', 'query', 'reset', 'out', 'out', 'out', 'reset', 'in', 'in', 'out', 'query']}, ['clear', 'clear', 'clear', 'clear', 'clear', 'prep']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('boundary: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('control 34', {'events': ['in', 'out', 'in', 'out', 'in', 'in', 'query']}, ['occupied']), ('control 37', {'events': ['reset', 'query', 'out', 'query', 'query', 'out', 'in', 'out', 'in', 'out', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('control 40', {'events': ['in', 'in', 'query', 'out', 'query']}, ['occupied', 'occupied'])], [('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 14', {'events': ['in', 'in', 'reset', 'in', 'query', 'out', 'out', 'reset', 'in', 'in', 'in', 'out', 'in', 'query']}, ['prep', 'prep']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 45', {'events': ['out', 'query', 'out', 'in', 'query', 'in', 'in', 'in', 'reset', 'in', 'query']}, ['disturbed', 'disturbed', 'prep']), ('sampled regression 48', {'events': ['out', 'query', 'in', 'out', 'reset', 'in', 'query', 'query', 'query', 'query']}, ['disturbed', 'prep', 'prep', 'prep', 'prep']), ('control 51', {'events': ['reset', 'query', 'in', 'out', 'query', 'in', 'in', 'query', 'query', 'query', 'query']}, ['clear', 'clear', 'occupied', 'occupied', 'occupied', 'occupied'])]]\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":"738ffeda02eb6f8c98f28304895622fb43616f4076d74e78c6787206ad2e8bc7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    count = 0\n    disturbed = False\n    prep = False\n    swept = False\n    out = []\n    for ev in x['events']:\n        if ev == 'in':\n            count += 1\n            if prep:\n                swept = True\n        elif ev == 'out':\n            count -= 1\n            if count < 0:\n                disturbed = True\n                count = 0\n            if prep and swept and count == 0:\n                prep = False\n        elif ev == 'reset':\n            if disturbed or count != 0:\n                count = 0\n                disturbed = False\n                prep = True\n                swept = False\n        elif ev == 'query':\n            if disturbed:\n                out.append('disturbed')\n            elif prep:\n                out.append('prep')\n            elif count > 0:\n                out.append('occupied')\n            else:\n                out.append('clear')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('sampled regression 9', {'events': ['in', 'query', 'query', 'reset', 'in', 'in', 'in', 'in', 'query', 'reset', 'in', 'query']}, ['occupied', 'occupied', 'prep', 'prep']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('boundary: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('control 1', {'events': ['out', 'in', 'out', 'query', 'out', 'query', 'in', 'out', 'in', 'out', 'query', 'query', 'in', 'query', 'query']}, ['disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed']), ('control 4', {'events': ['in', 'out', 'query', 'query', 'query']}, ['clear', 'clear', 'clear']), ('control 7', {'events': ['query', 'out', 'in', 'query', 'out', 'query', 'reset', 'reset', 'in', 'reset', 'query', 'reset', 'query']}, ['clear', 'disturbed', 'disturbed', 'prep', 'prep'])], [('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 45', {'events': ['out', 'query', 'out', 'in', 'query', 'in', 'in', 'in', 'reset', 'in', 'query']}, ['disturbed', 'disturbed', 'prep']), ('sampled regression 14', {'events': ['in', 'in', 'reset', 'in', 'query', 'out', 'out', 'reset', 'in', 'in', 'in', 'out', 'in', 'query']}, ['prep', 'prep']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('control 12', {'events': ['query', 'out', 'reset', 'out', 'query']}, ['clear', 'disturbed']), ('control 15', {'events': ['out', 'out', 'in', 'reset', 'query', 'query', 'query']}, ['prep', 'prep', 'prep']), ('sampled regression 18', {'events': ['out', 'query', 'query', 'reset', 'in', 'query', 'query']}, ['disturbed', 'disturbed', 'prep', 'prep'])], [('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('sampled regression 2', {'events': ['in', 'in', 'reset', 'reset', 'query', 'in', 'query']}, ['prep', 'prep']), ('sampled regression 48', {'events': ['out', 'query', 'in', 'out', 'reset', 'in', 'query', 'query', 'query', 'query']}, ['disturbed', 'prep', 'prep', 'prep', 'prep']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('boundary: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('control 23', {'events': ['query', 'out', 'query', 'out', 'in', 'in', 'in', 'query', 'out', 'in', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('control 26', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 29', {'events': ['out', 'in', 'in', 'out', 'out', 'in', 'reset', 'out', 'reset', 'in', 'query', 'in', 'query']}, ['prep', 'prep'])], [('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 39', {'events': ['query', 'query', 'query', 'query', 'query', 'reset', 'out', 'out', 'out', 'reset', 'in', 'in', 'out', 'query']}, ['clear', 'clear', 'clear', 'clear', 'clear', 'prep']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('boundary: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('control 34', {'events': ['in', 'out', 'in', 'out', 'in', 'in', 'query']}, ['occupied']), ('control 37', {'events': ['reset', 'query', 'out', 'query', 'query', 'out', 'in', 'out', 'in', 'out', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('control 40', {'events': ['in', 'in', 'query', 'out', 'query']}, ['occupied', 'occupied'])], [('regression: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('regression: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 14', {'events': ['in', 'in', 'reset', 'in', 'query', 'out', 'out', 'reset', 'in', 'in', 'in', 'out', 'in', 'query']}, ['prep', 'prep']), ('boundary: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 45', {'events': ['out', 'query', 'out', 'in', 'query', 'in', 'in', 'in', 'reset', 'in', 'query']}, ['disturbed', 'disturbed', 'prep']), ('sampled regression 48', {'events': ['out', 'query', 'in', 'out', 'reset', 'in', 'query', 'query', 'query', 'query']}, ['disturbed', 'prep', 'prep', 'prep', 'prep']), ('control 51', {'events': ['reset', 'query', 'in', 'out', 'query', 'in', 'in', 'query', 'query', 'query', 'query']}, ['clear', 'clear', 'occupied', 'occupied', 'occupied', 'occupied'])]]\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-axle-counter-section-state-precedence","generated_at":"2026-09-29T14:47:48.643293+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.","repair":"Report prep ahead of occupied until the sweep completes.","root_cause":"Occupied is reported ahead of the preparatory state.","sha256":"36613d88f333b9c3e1eecea1c2ae41ad50b5f22f8293eb5c8001dcdb45e3dda3","title":"Axle counter section supervision: state precedence · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.765,"exit_code":1,"observations":[{"actual":["prep","occupied","clear"],"check":"regression: reset of a miscounted section","expected":["prep","prep","clear"],"passed":false},{"actual":["occupied","occupied","occupied","occupied"],"check":"sampled regression 9","expected":["occupied","occupied","prep","prep"],"passed":false},{"actual":["occupied","clear"],"check":"regression: sweep train partly through","expected":["prep","clear"],"passed":false},{"actual":["disturbed","disturbed"],"check":"boundary: under-count latches disturbance","expected":["disturbed","disturbed"],"passed":true},{"actual":["prep","clear"],"check":"boundary: reset of a disturbed section","expected":["prep","clear"],"passed":true},{"actual":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"check":"control 1","expected":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"passed":true},{"actual":["clear","clear","clear"],"check":"control 4","expected":["clear","clear","clear"],"passed":true},{"actual":["clear","disturbed","disturbed","prep","prep"],"check":"control 7","expected":["clear","disturbed","disturbed","prep","prep"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reset of a miscounted section\", \"actual\": [\"prep\", \"occupied\", \"clear\"], \"expected\": [\"prep\", \"prep\", \"clear\"], \"passed\": false}, {\"check\": \"sampled regression 9\", \"actual\": [\"occupied\", \"occupied\", \"occupied\", \"occupied\"], \"expected\": [\"occupied\", \"occupied\", \"prep\", \"prep\"], \"passed\": false}, {\"check\": \"regression: sweep train partly through\", \"actual\": [\"occupied\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": false}, {\"check\": \"boundary: under-count latches disturbance\", \"actual\": [\"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"boundary: reset of a disturbed section\", \"actual\": [\"prep\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"clear\", \"clear\", \"clear\"], \"expected\": [\"clear\", \"clear\", \"clear\"], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"expected\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.805,"exit_code":1,"observations":[{"actual":["prep","occupied","clear"],"check":"regression: reset of a miscounted section","expected":["prep","prep","clear"],"passed":false},{"actual":["occupied","occupied","occupied","occupied"],"check":"sampled regression 9","expected":["occupied","occupied","prep","prep"],"passed":false},{"actual":["occupied","clear"],"check":"regression: sweep train partly through","expected":["prep","clear"],"passed":false},{"actual":["disturbed","disturbed"],"check":"boundary: under-count latches disturbance","expected":["disturbed","disturbed"],"passed":true},{"actual":["prep","clear"],"check":"boundary: reset of a disturbed section","expected":["prep","clear"],"passed":true},{"actual":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"check":"control 1","expected":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"passed":true},{"actual":["clear","clear","clear"],"check":"control 4","expected":["clear","clear","clear"],"passed":true},{"actual":["clear","disturbed","disturbed","prep","prep"],"check":"control 7","expected":["clear","disturbed","disturbed","prep","prep"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reset of a miscounted section\", \"actual\": [\"prep\", \"occupied\", \"clear\"], \"expected\": [\"prep\", \"prep\", \"clear\"], \"passed\": false}, {\"check\": \"sampled regression 9\", \"actual\": [\"occupied\", \"occupied\", \"occupied\", \"occupied\"], \"expected\": [\"occupied\", \"occupied\", \"prep\", \"prep\"], \"passed\": false}, {\"check\": \"regression: sweep train partly through\", \"actual\": [\"occupied\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": false}, {\"check\": \"boundary: under-count latches disturbance\", \"actual\": [\"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"boundary: reset of a disturbed section\", \"actual\": [\"prep\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"clear\", \"clear\", \"clear\"], \"expected\": [\"clear\", \"clear\", \"clear\"], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"expected\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.657,"exit_code":0,"observations":[{"actual":["prep","prep","clear"],"check":"regression: reset of a miscounted section","expected":["prep","prep","clear"],"passed":true},{"actual":["occupied","occupied","prep","prep"],"check":"sampled regression 9","expected":["occupied","occupied","prep","prep"],"passed":true},{"actual":["prep","clear"],"check":"regression: sweep train partly through","expected":["prep","clear"],"passed":true},{"actual":["disturbed","disturbed"],"check":"boundary: under-count latches disturbance","expected":["disturbed","disturbed"],"passed":true},{"actual":["prep","clear"],"check":"boundary: reset of a disturbed section","expected":["prep","clear"],"passed":true},{"actual":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"check":"control 1","expected":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"passed":true},{"actual":["clear","clear","clear"],"check":"control 4","expected":["clear","clear","clear"],"passed":true},{"actual":["clear","disturbed","disturbed","prep","prep"],"check":"control 7","expected":["clear","disturbed","disturbed","prep","prep"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reset of a miscounted section\", \"actual\": [\"prep\", \"prep\", \"clear\"], \"expected\": [\"prep\", \"prep\", \"clear\"], \"passed\": true}, {\"check\": \"sampled regression 9\", \"actual\": [\"occupied\", \"occupied\", \"prep\", \"prep\"], \"expected\": [\"occupied\", \"occupied\", \"prep\", \"prep\"], \"passed\": true}, {\"check\": \"regression: sweep train partly through\", \"actual\": [\"prep\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": true}, {\"check\": \"boundary: under-count latches disturbance\", \"actual\": [\"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"boundary: reset of a disturbed section\", \"actual\": [\"prep\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [\"clear\", \"clear\", \"clear\"], \"expected\": [\"clear\", \"clear\", \"clear\"], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"expected\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}