{"abstract":"A section that counted out more axles than in is reported clear.","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":"Skipping the latch during preparatory reset hides an under-count in the sweep phase.","family":"w2-railway_interlocking_logic-axle-counter-section-under-count-handling","id":"FA-66961","implementations":{"attempt":{"sha256":"4751c9db04d12a21cbacde87f0967e66ef878436111a685c5b05b79160f653f1","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 and not prep:\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: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 3', {'events': ['out', 'reset', 'out', 'in', 'query', 'in', 'query', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed']), ('boundary: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('regression: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 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']), ('sampled regression 7', {'events': ['query', 'out', 'in', 'query', 'out', 'query', 'reset', 'reset', 'in', 'reset', 'query', 'reset', 'query']}, ['clear', 'disturbed', 'disturbed', 'prep', 'prep'])], [('regression: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 10', {'events': ['reset', 'out', 'in', 'query', 'reset', 'in', 'query']}, ['disturbed', 'prep']), ('sampled regression 64', {'events': ['out', 'out', 'in', 'query', 'query', 'reset', 'out', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 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: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 21', {'events': ['out', 'in', 'out', 'in', 'query', 'query', 'out', 'query', 'out', 'query', 'query']}, ['disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('sampled regression 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']), ('control 29', {'events': ['out', 'in', 'in', 'out', 'out', 'in', 'reset', 'out', 'reset', 'in', 'query', 'in', 'query']}, ['prep', 'prep'])], [('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 37', {'events': ['reset', 'query', 'out', 'query', 'query', 'out', 'in', 'out', 'in', 'out', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('sampled regression 59', {'events': ['query', 'query', 'in', 'out', 'out', 'reset', 'reset', 'out', 'in', 'query', 'reset', 'query', 'query']}, ['clear', 'clear', 'disturbed', 'prep', 'prep']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('control 34', {'events': ['in', 'out', 'in', 'out', 'in', 'in', 'query']}, ['occupied']), ('control 40', {'events': ['in', 'in', 'query', 'out', 'query']}, ['occupied', 'occupied']), ('sampled regression 43', {'events': ['out', 'in', 'query', 'in', 'query', 'reset', 'reset', 'out', 'reset', 'in', 'out', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed'])], [('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 50', {'events': ['out', 'out', 'in', 'query']}, ['disturbed']), ('sampled regression 75', {'events': ['out', 'out', 'out', 'reset', 'out', 'in', 'in', 'query']}, ['disturbed']), ('boundary: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('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":"02f191b707ded85aab52767f10a6886a103a89f0e8126ae2c5b869022ded709a","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                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: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 3', {'events': ['out', 'reset', 'out', 'in', 'query', 'in', 'query', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed']), ('boundary: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('regression: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 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']), ('sampled regression 7', {'events': ['query', 'out', 'in', 'query', 'out', 'query', 'reset', 'reset', 'in', 'reset', 'query', 'reset', 'query']}, ['clear', 'disturbed', 'disturbed', 'prep', 'prep'])], [('regression: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 10', {'events': ['reset', 'out', 'in', 'query', 'reset', 'in', 'query']}, ['disturbed', 'prep']), ('sampled regression 64', {'events': ['out', 'out', 'in', 'query', 'query', 'reset', 'out', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 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: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 21', {'events': ['out', 'in', 'out', 'in', 'query', 'query', 'out', 'query', 'out', 'query', 'query']}, ['disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('sampled regression 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']), ('control 29', {'events': ['out', 'in', 'in', 'out', 'out', 'in', 'reset', 'out', 'reset', 'in', 'query', 'in', 'query']}, ['prep', 'prep'])], [('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 37', {'events': ['reset', 'query', 'out', 'query', 'query', 'out', 'in', 'out', 'in', 'out', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('sampled regression 59', {'events': ['query', 'query', 'in', 'out', 'out', 'reset', 'reset', 'out', 'in', 'query', 'reset', 'query', 'query']}, ['clear', 'clear', 'disturbed', 'prep', 'prep']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('control 34', {'events': ['in', 'out', 'in', 'out', 'in', 'in', 'query']}, ['occupied']), ('control 40', {'events': ['in', 'in', 'query', 'out', 'query']}, ['occupied', 'occupied']), ('sampled regression 43', {'events': ['out', 'in', 'query', 'in', 'query', 'reset', 'reset', 'out', 'reset', 'in', 'out', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed'])], [('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 50', {'events': ['out', 'out', 'in', 'query']}, ['disturbed']), ('sampled regression 75', {'events': ['out', 'out', 'out', 'reset', 'out', 'in', 'in', 'query']}, ['disturbed']), ('boundary: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('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":"02c008b1dcd416504a412e2ba2f4efbd2efc3ecc8218b5d21df9d64b3c488597","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: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 3', {'events': ['out', 'reset', 'out', 'in', 'query', 'in', 'query', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed']), ('boundary: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('regression: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('sampled regression 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']), ('sampled regression 7', {'events': ['query', 'out', 'in', 'query', 'out', 'query', 'reset', 'reset', 'in', 'reset', 'query', 'reset', 'query']}, ['clear', 'disturbed', 'disturbed', 'prep', 'prep'])], [('regression: reset of a disturbed section', {'events': ['out', 'reset', 'query', 'in', 'out', 'query']}, ['prep', 'clear']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 10', {'events': ['reset', 'out', 'in', 'query', 'reset', 'in', 'query']}, ['disturbed', 'prep']), ('sampled regression 64', {'events': ['out', 'out', 'in', 'query', 'query', 'reset', 'out', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed']), ('boundary: reset refused on a clear section', {'events': ['reset', 'query', 'in', 'query']}, ['clear', 'occupied']), ('sampled regression 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: sweep train partly through', {'events': ['out', 'reset', 'in', 'in', 'out', 'query', 'out', 'query']}, ['prep', 'clear']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 21', {'events': ['out', 'in', 'out', 'in', 'query', 'query', 'out', 'query', 'out', 'query', 'query']}, ['disturbed', 'disturbed', 'disturbed', 'disturbed', 'disturbed']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('sampled regression 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']), ('control 29', {'events': ['out', 'in', 'in', 'out', 'out', 'in', 'reset', 'out', 'reset', 'in', 'query', 'in', 'query']}, ['prep', 'prep'])], [('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 37', {'events': ['reset', 'query', 'out', 'query', 'query', 'out', 'in', 'out', 'in', 'out', 'in', 'query']}, ['clear', 'disturbed', 'disturbed', 'disturbed']), ('sampled regression 59', {'events': ['query', 'query', 'in', 'out', 'out', 'reset', 'reset', 'out', 'in', 'query', 'reset', 'query', 'query']}, ['clear', 'clear', 'disturbed', 'prep', 'prep']), ('boundary: normal passage', {'events': ['in', 'in', 'query', 'out', 'out', 'query']}, ['occupied', 'clear']), ('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('control 34', {'events': ['in', 'out', 'in', 'out', 'in', 'in', 'query']}, ['occupied']), ('control 40', {'events': ['in', 'in', 'query', 'out', 'query']}, ['occupied', 'occupied']), ('sampled regression 43', {'events': ['out', 'in', 'query', 'in', 'query', 'reset', 'reset', 'out', 'reset', 'in', 'out', 'out', 'query']}, ['disturbed', 'disturbed', 'disturbed'])], [('regression: under-count latches disturbance', {'events': ['out', 'query', 'in', 'query']}, ['disturbed', 'disturbed']), ('regression: under-count during preparation', {'events': ['in', 'reset', 'out', 'query']}, ['disturbed']), ('sampled regression 50', {'events': ['out', 'out', 'in', 'query']}, ['disturbed']), ('sampled regression 75', {'events': ['out', 'out', 'out', 'reset', 'out', 'in', 'in', 'query']}, ['disturbed']), ('boundary: reset of a miscounted section', {'events': ['in', 'in', 'out', 'reset', 'query', 'in', 'in', 'query', 'out', 'out', 'query']}, ['prep', 'prep', 'clear']), ('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-under-count-handling","generated_at":"2026-09-29T14:47:48.560887+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":"Latch disturbed and zero the count whenever an out-count drives the count below zero.","root_cause":"The negative count is silently clamped to zero without latching the disturbance.","sha256":"6319fd23294b6a717c80be26618cd07937fdd0c18c0b94a5d0ac9123a36b0550","title":"Axle counter section supervision: under-count handling · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.959,"exit_code":1,"observations":[{"actual":["disturbed","disturbed"],"check":"regression: under-count latches disturbance","expected":["disturbed","disturbed"],"passed":true},{"actual":["prep"],"check":"regression: under-count during preparation","expected":["disturbed"],"passed":false},{"actual":["prep","prep","clear"],"check":"sampled regression 3","expected":["disturbed","disturbed","disturbed"],"passed":false},{"actual":["prep","prep","clear"],"check":"boundary: reset of a miscounted section","expected":["prep","prep","clear"],"passed":true},{"actual":["prep","clear"],"check":"regression: reset of a disturbed section","expected":["prep","clear"],"passed":true},{"actual":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"check":"sampled regression 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":"sampled regression 7","expected":["clear","disturbed","disturbed","prep","prep"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: under-count latches disturbance\", \"actual\": [\"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"regression: under-count during preparation\", \"actual\": [\"prep\"], \"expected\": [\"disturbed\"], \"passed\": false}, {\"check\": \"sampled regression 3\", \"actual\": [\"prep\", \"prep\", \"clear\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": false}, {\"check\": \"boundary: reset of a miscounted section\", \"actual\": [\"prep\", \"prep\", \"clear\"], \"expected\": [\"prep\", \"prep\", \"clear\"], \"passed\": true}, {\"check\": \"regression: reset of a disturbed section\", \"actual\": [\"prep\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": true}, {\"check\": \"sampled regression 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\": \"sampled regression 7\", \"actual\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"expected\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.127,"exit_code":1,"observations":[{"actual":["clear","occupied"],"check":"regression: under-count latches disturbance","expected":["disturbed","disturbed"],"passed":false},{"actual":["prep"],"check":"regression: under-count during preparation","expected":["disturbed"],"passed":false},{"actual":["occupied","occupied","occupied"],"check":"sampled regression 3","expected":["disturbed","disturbed","disturbed"],"passed":false},{"actual":["prep","prep","clear"],"check":"boundary: reset of a miscounted section","expected":["prep","prep","clear"],"passed":true},{"actual":["clear","clear"],"check":"regression: reset of a disturbed section","expected":["prep","clear"],"passed":false},{"actual":["clear","clear","clear","clear","occupied","occupied"],"check":"sampled regression 1","expected":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"passed":false},{"actual":["clear","clear","clear"],"check":"control 4","expected":["clear","clear","clear"],"passed":true},{"actual":["clear","occupied","clear","prep","prep"],"check":"sampled regression 7","expected":["clear","disturbed","disturbed","prep","prep"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: under-count latches disturbance\", \"actual\": [\"clear\", \"occupied\"], \"expected\": [\"disturbed\", \"disturbed\"], \"passed\": false}, {\"check\": \"regression: under-count during preparation\", \"actual\": [\"prep\"], \"expected\": [\"disturbed\"], \"passed\": false}, {\"check\": \"sampled regression 3\", \"actual\": [\"occupied\", \"occupied\", \"occupied\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": false}, {\"check\": \"boundary: reset of a miscounted section\", \"actual\": [\"prep\", \"prep\", \"clear\"], \"expected\": [\"prep\", \"prep\", \"clear\"], \"passed\": true}, {\"check\": \"regression: reset of a disturbed section\", \"actual\": [\"clear\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": false}, {\"check\": \"sampled regression 1\", \"actual\": [\"clear\", \"clear\", \"clear\", \"clear\", \"occupied\", \"occupied\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": false}, {\"check\": \"control 4\", \"actual\": [\"clear\", \"clear\", \"clear\"], \"expected\": [\"clear\", \"clear\", \"clear\"], \"passed\": true}, {\"check\": \"sampled regression 7\", \"actual\": [\"clear\", \"occupied\", \"clear\", \"prep\", \"prep\"], \"expected\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.365,"exit_code":0,"observations":[{"actual":["disturbed","disturbed"],"check":"regression: under-count latches disturbance","expected":["disturbed","disturbed"],"passed":true},{"actual":["disturbed"],"check":"regression: under-count during preparation","expected":["disturbed"],"passed":true},{"actual":["disturbed","disturbed","disturbed"],"check":"sampled regression 3","expected":["disturbed","disturbed","disturbed"],"passed":true},{"actual":["prep","prep","clear"],"check":"boundary: reset of a miscounted section","expected":["prep","prep","clear"],"passed":true},{"actual":["prep","clear"],"check":"regression: reset of a disturbed section","expected":["prep","clear"],"passed":true},{"actual":["disturbed","disturbed","disturbed","disturbed","disturbed","disturbed"],"check":"sampled regression 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":"sampled regression 7","expected":["clear","disturbed","disturbed","prep","prep"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: under-count latches disturbance\", \"actual\": [\"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"regression: under-count during preparation\", \"actual\": [\"disturbed\"], \"expected\": [\"disturbed\"], \"passed\": true}, {\"check\": \"sampled regression 3\", \"actual\": [\"disturbed\", \"disturbed\", \"disturbed\"], \"expected\": [\"disturbed\", \"disturbed\", \"disturbed\"], \"passed\": true}, {\"check\": \"boundary: reset of a miscounted section\", \"actual\": [\"prep\", \"prep\", \"clear\"], \"expected\": [\"prep\", \"prep\", \"clear\"], \"passed\": true}, {\"check\": \"regression: reset of a disturbed section\", \"actual\": [\"prep\", \"clear\"], \"expected\": [\"prep\", \"clear\"], \"passed\": true}, {\"check\": \"sampled regression 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\": \"sampled regression 7\", \"actual\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"expected\": [\"clear\", \"disturbed\", \"disturbed\", \"prep\", \"prep\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}