{"abstract":"Contracts not divisible by ten produce fractional supplement minutes.","category":"Shift rostering labor rules","checks":8,"contract":"Contract minutes per week and worked minutes per week. Per week: top-up = shortfall below contract; additional = minutes between contract and 2400; supplement base = additional minutes beyond a tolerance of contract // 10; overtime = minutes above 2400. Return [top-up, additional, supplement base, overtime] per week.","evaluation_group":"w2-shift-rostering-labor-rules-part-time-additional-hours","failed_approach":"Ceiling division rounds the tolerance up, shrinking the supplement base.","family":"w2-shift-rostering-labor-rules-part-time-additional-hours-tolerance-integer-minutes","id":"FA-94301","implementations":{"attempt":{"sha256":"274f3df1a41363b755d15c95c9b8828371a5848f1cf63dc075d9d91295037e20","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(contract, weeks):\n    out = []\n    free = -(-contract // 10)\n    for w in weeks:\n        top = max(contract - w, 0)\n        add = max(min(w, 2400) - contract, 0)\n        sup = max(add - free, 0)\n        ot = max(w - 2400, 0)\n        out.append([top, add, sup, ot])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: tolerance integer minutes 1', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [1174, 2400]],\n   [[60, 0, 0, 0], [0, 1166, 1043, 0]]),\n  ('partial repair guard 3', [1234, [1174, 2400, 1358]], [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),\n  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1200, [391, 1320]], [[809, 0, 0, 0], [0, 120, 0, 0]]),\n  ('normal control 7', [1234, [2880, 2400]], [[0, 1166, 1043, 480], [0, 1166, 1043, 0]]),\n  ('normal control 8', [1234, [2880, 1358, 2500]],\n   [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]])],\n [('regression: tolerance integer minutes 1', [1205, [2880, 1229]], [[0, 1195, 1075, 480], [0, 24, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [2880, 1358, 2500]],\n   [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]]),\n  ('partial repair guard 3', [1205, [1381, 415, 1325]], [[0, 176, 56, 0], [790, 0, 0, 0], [0, 120, 0, 0]]),\n  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('boundary control 5', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('normal control 6', [1200, [1321, 1321]], [[0, 121, 1, 0], [0, 121, 1, 0]]),\n  ('normal control 7', [1500, [1650, 2880]], [[0, 150, 0, 0], [0, 900, 750, 480]]),\n  ('normal control 8', [2100, [2040, 0, 2100, 2500, 2880]],\n   [[60, 0, 0, 0], [2100, 0, 0, 0], [0, 0, 0, 0], [0, 300, 90, 100], [0, 300, 90, 480]])],\n [('regression: tolerance integer minutes 1', [1234, [2880, 1056, 2880, 2400, 1357]],\n   [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1205, [2508, 2500, 2400, 1700]],\n   [[0, 1195, 1075, 108], [0, 1195, 1075, 100], [0, 1195, 1075, 0], [0, 495, 375, 0]]),\n  ('partial repair guard 3', [1234, [2400, 2400, 1234, 2500, 1174]],\n   [[0, 1166, 1043, 0], [0, 1166, 1043, 0], [0, 0, 0, 0], [0, 1166, 1043, 100], [60, 0, 0, 0]]),\n  ('boundary control 4', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('boundary control 5', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('normal control 6', [1500, [1440, 1651]], [[60, 0, 0, 0], [0, 151, 1, 0]]),\n  ('normal control 7', [2100, [2500, 2310, 0]], [[0, 300, 90, 100], [0, 210, 0, 0], [2100, 0, 0, 0]]),\n  ('normal control 8', [1800, [1981, 1980, 1981]], [[0, 181, 1, 0], [0, 180, 0, 0], [0, 181, 1, 0]])],\n [('regression: tolerance integer minutes 1', [1205, [2373, 1325, 1326, 1205]],\n   [[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [1357, 143, 2500, 1604]],\n   [[0, 123, 0, 0], [1091, 0, 0, 0], [0, 1166, 1043, 100], [0, 370, 247, 0]]),\n  ('partial repair guard 3', [1234, [1234, 2500, 1358]],\n   [[0, 0, 0, 0], [0, 1166, 1043, 100], [0, 124, 1, 0]]),\n  ('boundary control 4', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('boundary control 5', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1500, [0, 2400, 0]], [[1500, 0, 0, 0], [0, 900, 750, 0], [1500, 0, 0, 0]]),\n  ('normal control 7', [1200, [84, 1200, 1140, 0, 2755]],\n   [[1116, 0, 0, 0], [0, 0, 0, 0], [60, 0, 0, 0], [1200, 0, 0, 0], [0, 1200, 1080, 355]]),\n  ('normal control 8', [1234, [1357, 2400, 175, 1433, 2473]],\n   [[0, 123, 0, 0], [0, 1166, 1043, 0], [1059, 0, 0, 0], [0, 199, 76, 0], [0, 1166, 1043, 73]])],\n [('regression: tolerance integer minutes 1', [1205, [1145, 2400, 0, 2880]],\n   [[60, 0, 0, 0], [0, 1195, 1075, 0], [1205, 0, 0, 0], [0, 1195, 1075, 480]]),\n  ('regression variant: tolerance integer minutes 2', [1205, [1205, 2400, 2400, 2400]],\n   [[0, 0, 0, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 0]]),\n  ('partial repair guard 3', [1205, [1205, 2880, 0]], [[0, 0, 0, 0], [0, 1195, 1075, 480], [1205, 0, 0, 0]]),\n  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1234, [1357, 2500, 0, 1234]],\n   [[0, 123, 0, 0], [0, 1166, 1043, 100], [1234, 0, 0, 0], [0, 0, 0, 0]]),\n  ('normal control 7', [1500, [1650, 0, 1500, 0, 1500]],\n   [[0, 150, 0, 0], [1500, 0, 0, 0], [0, 0, 0, 0], [1500, 0, 0, 0], [0, 0, 0, 0]]),\n  ('normal control 8', [1200, [2267, 2400]], [[0, 1067, 947, 0], [0, 1200, 1080, 0]])]]\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":"5bdffbec73fcad8e20a63144b12d9670b9751f4de48958d03a2a3b4b91b500ad","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(contract, weeks):\n    out = []\n    free = contract / 10\n    for w in weeks:\n        top = max(contract - w, 0)\n        add = max(min(w, 2400) - contract, 0)\n        sup = max(add - free, 0)\n        ot = max(w - 2400, 0)\n        out.append([top, add, sup, ot])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: tolerance integer minutes 1', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [1174, 2400]],\n   [[60, 0, 0, 0], [0, 1166, 1043, 0]]),\n  ('partial repair guard 3', [1234, [1174, 2400, 1358]], [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),\n  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1200, [391, 1320]], [[809, 0, 0, 0], [0, 120, 0, 0]]),\n  ('normal control 7', [1234, [2880, 2400]], [[0, 1166, 1043, 480], [0, 1166, 1043, 0]]),\n  ('normal control 8', [1234, [2880, 1358, 2500]],\n   [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]])],\n [('regression: tolerance integer minutes 1', [1205, [2880, 1229]], [[0, 1195, 1075, 480], [0, 24, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [2880, 1358, 2500]],\n   [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]]),\n  ('partial repair guard 3', [1205, [1381, 415, 1325]], [[0, 176, 56, 0], [790, 0, 0, 0], [0, 120, 0, 0]]),\n  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('boundary control 5', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('normal control 6', [1200, [1321, 1321]], [[0, 121, 1, 0], [0, 121, 1, 0]]),\n  ('normal control 7', [1500, [1650, 2880]], [[0, 150, 0, 0], [0, 900, 750, 480]]),\n  ('normal control 8', [2100, [2040, 0, 2100, 2500, 2880]],\n   [[60, 0, 0, 0], [2100, 0, 0, 0], [0, 0, 0, 0], [0, 300, 90, 100], [0, 300, 90, 480]])],\n [('regression: tolerance integer minutes 1', [1234, [2880, 1056, 2880, 2400, 1357]],\n   [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1205, [2508, 2500, 2400, 1700]],\n   [[0, 1195, 1075, 108], [0, 1195, 1075, 100], [0, 1195, 1075, 0], [0, 495, 375, 0]]),\n  ('partial repair guard 3', [1234, [2400, 2400, 1234, 2500, 1174]],\n   [[0, 1166, 1043, 0], [0, 1166, 1043, 0], [0, 0, 0, 0], [0, 1166, 1043, 100], [60, 0, 0, 0]]),\n  ('boundary control 4', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('boundary control 5', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('normal control 6', [1500, [1440, 1651]], [[60, 0, 0, 0], [0, 151, 1, 0]]),\n  ('normal control 7', [2100, [2500, 2310, 0]], [[0, 300, 90, 100], [0, 210, 0, 0], [2100, 0, 0, 0]]),\n  ('normal control 8', [1800, [1981, 1980, 1981]], [[0, 181, 1, 0], [0, 180, 0, 0], [0, 181, 1, 0]])],\n [('regression: tolerance integer minutes 1', [1205, [2373, 1325, 1326, 1205]],\n   [[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [1357, 143, 2500, 1604]],\n   [[0, 123, 0, 0], [1091, 0, 0, 0], [0, 1166, 1043, 100], [0, 370, 247, 0]]),\n  ('partial repair guard 3', [1234, [1234, 2500, 1358]],\n   [[0, 0, 0, 0], [0, 1166, 1043, 100], [0, 124, 1, 0]]),\n  ('boundary control 4', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('boundary control 5', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1500, [0, 2400, 0]], [[1500, 0, 0, 0], [0, 900, 750, 0], [1500, 0, 0, 0]]),\n  ('normal control 7', [1200, [84, 1200, 1140, 0, 2755]],\n   [[1116, 0, 0, 0], [0, 0, 0, 0], [60, 0, 0, 0], [1200, 0, 0, 0], [0, 1200, 1080, 355]]),\n  ('normal control 8', [1234, [1357, 2400, 175, 1433, 2473]],\n   [[0, 123, 0, 0], [0, 1166, 1043, 0], [1059, 0, 0, 0], [0, 199, 76, 0], [0, 1166, 1043, 73]])],\n [('regression: tolerance integer minutes 1', [1205, [1145, 2400, 0, 2880]],\n   [[60, 0, 0, 0], [0, 1195, 1075, 0], [1205, 0, 0, 0], [0, 1195, 1075, 480]]),\n  ('regression variant: tolerance integer minutes 2', [1205, [1205, 2400, 2400, 2400]],\n   [[0, 0, 0, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 0]]),\n  ('partial repair guard 3', [1205, [1205, 2880, 0]], [[0, 0, 0, 0], [0, 1195, 1075, 480], [1205, 0, 0, 0]]),\n  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1234, [1357, 2500, 0, 1234]],\n   [[0, 123, 0, 0], [0, 1166, 1043, 100], [1234, 0, 0, 0], [0, 0, 0, 0]]),\n  ('normal control 7', [1500, [1650, 0, 1500, 0, 1500]],\n   [[0, 150, 0, 0], [1500, 0, 0, 0], [0, 0, 0, 0], [1500, 0, 0, 0], [0, 0, 0, 0]]),\n  ('normal control 8', [1200, [2267, 2400]], [[0, 1067, 947, 0], [0, 1200, 1080, 0]])]]\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":"2cad21fe86f4dc56a0c6452bf6b4a9797252093cbd20a5eb98afb1c0d6b418a5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(contract, weeks):\n    out = []\n    free = contract // 10\n    for w in weeks:\n        top = max(contract - w, 0)\n        add = max(min(w, 2400) - contract, 0)\n        sup = max(add - free, 0)\n        ot = max(w - 2400, 0)\n        out.append([top, add, sup, ot])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: tolerance integer minutes 1', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [1174, 2400]],\n   [[60, 0, 0, 0], [0, 1166, 1043, 0]]),\n  ('partial repair guard 3', [1234, [1174, 2400, 1358]], [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),\n  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1200, [391, 1320]], [[809, 0, 0, 0], [0, 120, 0, 0]]),\n  ('normal control 7', [1234, [2880, 2400]], [[0, 1166, 1043, 480], [0, 1166, 1043, 0]]),\n  ('normal control 8', [1234, [2880, 1358, 2500]],\n   [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]])],\n [('regression: tolerance integer minutes 1', [1205, [2880, 1229]], [[0, 1195, 1075, 480], [0, 24, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [2880, 1358, 2500]],\n   [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]]),\n  ('partial repair guard 3', [1205, [1381, 415, 1325]], [[0, 176, 56, 0], [790, 0, 0, 0], [0, 120, 0, 0]]),\n  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('boundary control 5', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('normal control 6', [1200, [1321, 1321]], [[0, 121, 1, 0], [0, 121, 1, 0]]),\n  ('normal control 7', [1500, [1650, 2880]], [[0, 150, 0, 0], [0, 900, 750, 480]]),\n  ('normal control 8', [2100, [2040, 0, 2100, 2500, 2880]],\n   [[60, 0, 0, 0], [2100, 0, 0, 0], [0, 0, 0, 0], [0, 300, 90, 100], [0, 300, 90, 480]])],\n [('regression: tolerance integer minutes 1', [1234, [2880, 1056, 2880, 2400, 1357]],\n   [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1205, [2508, 2500, 2400, 1700]],\n   [[0, 1195, 1075, 108], [0, 1195, 1075, 100], [0, 1195, 1075, 0], [0, 495, 375, 0]]),\n  ('partial repair guard 3', [1234, [2400, 2400, 1234, 2500, 1174]],\n   [[0, 1166, 1043, 0], [0, 1166, 1043, 0], [0, 0, 0, 0], [0, 1166, 1043, 100], [60, 0, 0, 0]]),\n  ('boundary control 4', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('boundary control 5', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('normal control 6', [1500, [1440, 1651]], [[60, 0, 0, 0], [0, 151, 1, 0]]),\n  ('normal control 7', [2100, [2500, 2310, 0]], [[0, 300, 90, 100], [0, 210, 0, 0], [2100, 0, 0, 0]]),\n  ('normal control 8', [1800, [1981, 1980, 1981]], [[0, 181, 1, 0], [0, 180, 0, 0], [0, 181, 1, 0]])],\n [('regression: tolerance integer minutes 1', [1205, [2373, 1325, 1326, 1205]],\n   [[0, 1168, 1048, 0], [0, 120, 0, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),\n  ('regression variant: tolerance integer minutes 2', [1234, [1357, 143, 2500, 1604]],\n   [[0, 123, 0, 0], [1091, 0, 0, 0], [0, 1166, 1043, 100], [0, 370, 247, 0]]),\n  ('partial repair guard 3', [1234, [1234, 2500, 1358]],\n   [[0, 0, 0, 0], [0, 1166, 1043, 100], [0, 124, 1, 0]]),\n  ('boundary control 4', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('boundary control 5', [1205, [1325, 1326]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1500, [0, 2400, 0]], [[1500, 0, 0, 0], [0, 900, 750, 0], [1500, 0, 0, 0]]),\n  ('normal control 7', [1200, [84, 1200, 1140, 0, 2755]],\n   [[1116, 0, 0, 0], [0, 0, 0, 0], [60, 0, 0, 0], [1200, 0, 0, 0], [0, 1200, 1080, 355]]),\n  ('normal control 8', [1234, [1357, 2400, 175, 1433, 2473]],\n   [[0, 123, 0, 0], [0, 1166, 1043, 0], [1059, 0, 0, 0], [0, 199, 76, 0], [0, 1166, 1043, 73]])],\n [('regression: tolerance integer minutes 1', [1205, [1145, 2400, 0, 2880]],\n   [[60, 0, 0, 0], [0, 1195, 1075, 0], [1205, 0, 0, 0], [0, 1195, 1075, 480]]),\n  ('regression variant: tolerance integer minutes 2', [1205, [1205, 2400, 2400, 2400]],\n   [[0, 0, 0, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 0]]),\n  ('partial repair guard 3', [1205, [1205, 2880, 0]], [[0, 0, 0, 0], [0, 1195, 1075, 480], [1205, 0, 0, 0]]),\n  ('boundary control 4', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('boundary control 5', [1200, [1320, 1321]], [[0, 120, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 6', [1234, [1357, 2500, 0, 1234]],\n   [[0, 123, 0, 0], [0, 1166, 1043, 100], [1234, 0, 0, 0], [0, 0, 0, 0]]),\n  ('normal control 7', [1500, [1650, 0, 1500, 0, 1500]],\n   [[0, 150, 0, 0], [1500, 0, 0, 0], [0, 0, 0, 0], [1500, 0, 0, 0], [0, 0, 0, 0]]),\n  ('normal control 8', [1200, [2267, 2400]], [[0, 1067, 947, 0], [0, 1200, 1080, 0]])]]\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 labor rule for a bounded roster model; it is not legal advice and does not claim conformance with any jurisdiction, award, or collective agreement. 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-shift-rostering-labor-rules-part-time-additional-hours-tolerance-integer-minutes","generated_at":"2026-09-29T14:52:03.236349+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Part-time contracts pay guaranteed hours, additional hours and supplements; each band has its own boundary.","repair":"Use a whole-minute tolerance of contract // 10.","root_cause":"The tolerance uses true division.","sha256":"b664879295b36b436eb9e6102ecffab3839a89d6b77423800f3d0a9978a15aff","title":"Supplement tolerance computed as fractional minutes · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.398,"exit_code":1,"observations":[{"actual":[[0,120,0,0],[0,121,0,0]],"check":"regression: tolerance integer minutes 1","expected":[[0,120,0,0],[0,121,1,0]],"passed":false},{"actual":[[60,0,0,0],[0,1166,1042,0]],"check":"regression variant: tolerance integer minutes 2","expected":[[60,0,0,0],[0,1166,1043,0]],"passed":false},{"actual":[[60,0,0,0],[0,1166,1042,0],[0,124,0,0]],"check":"partial repair guard 3","expected":[[60,0,0,0],[0,1166,1043,0],[0,124,1,0]],"passed":false},{"actual":[[0,600,420,0],[0,600,420,600]],"check":"boundary control 4","expected":[[0,600,420,0],[0,600,420,600]],"passed":true},{"actual":[[0,120,0,0],[0,121,1,0]],"check":"boundary control 5","expected":[[0,120,0,0],[0,121,1,0]],"passed":true},{"actual":[[809,0,0,0],[0,120,0,0]],"check":"normal control 6","expected":[[809,0,0,0],[0,120,0,0]],"passed":true},{"actual":[[0,1166,1042,480],[0,1166,1042,0]],"check":"normal control 7","expected":[[0,1166,1043,480],[0,1166,1043,0]],"passed":false},{"actual":[[0,1166,1042,480],[0,124,0,0],[0,1166,1042,100]],"check":"normal control 8","expected":[[0,1166,1043,480],[0,124,1,0],[0,1166,1043,100]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tolerance integer minutes 1\", \"actual\": [[0, 120, 0, 0], [0, 121, 0, 0]], \"expected\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"passed\": false}, {\"check\": \"regression variant: tolerance integer minutes 2\", \"actual\": [[60, 0, 0, 0], [0, 1166, 1042, 0]], \"expected\": [[60, 0, 0, 0], [0, 1166, 1043, 0]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[60, 0, 0, 0], [0, 1166, 1042, 0], [0, 124, 0, 0]], \"expected\": [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"expected\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"expected\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[809, 0, 0, 0], [0, 120, 0, 0]], \"expected\": [[809, 0, 0, 0], [0, 120, 0, 0]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[0, 1166, 1042, 480], [0, 1166, 1042, 0]], \"expected\": [[0, 1166, 1043, 480], [0, 1166, 1043, 0]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[0, 1166, 1042, 480], [0, 124, 0, 0], [0, 1166, 1042, 100]], \"expected\": [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.647,"exit_code":1,"observations":[{"actual":[[0,120,0,0],[0,121,0.5,0]],"check":"regression: tolerance integer minutes 1","expected":[[0,120,0,0],[0,121,1,0]],"passed":false},{"actual":[[60,0,0,0],[0,1166,1042.6,0]],"check":"regression variant: tolerance integer minutes 2","expected":[[60,0,0,0],[0,1166,1043,0]],"passed":false},{"actual":[[60,0,0,0],[0,1166,1042.6,0],[0,124,0.5999999999999943,0]],"check":"partial repair guard 3","expected":[[60,0,0,0],[0,1166,1043,0],[0,124,1,0]],"passed":false},{"actual":[[0,600,420.0,0],[0,600,420.0,600]],"check":"boundary control 4","expected":[[0,600,420,0],[0,600,420,600]],"passed":true},{"actual":[[0,120,0.0,0],[0,121,1.0,0]],"check":"boundary control 5","expected":[[0,120,0,0],[0,121,1,0]],"passed":true},{"actual":[[809,0,0,0],[0,120,0.0,0]],"check":"normal control 6","expected":[[809,0,0,0],[0,120,0,0]],"passed":true},{"actual":[[0,1166,1042.6,480],[0,1166,1042.6,0]],"check":"normal control 7","expected":[[0,1166,1043,480],[0,1166,1043,0]],"passed":false},{"actual":[[0,1166,1042.6,480],[0,124,0.5999999999999943,0],[0,1166,1042.6,100]],"check":"normal control 8","expected":[[0,1166,1043,480],[0,124,1,0],[0,1166,1043,100]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tolerance integer minutes 1\", \"actual\": [[0, 120, 0, 0], [0, 121, 0.5, 0]], \"expected\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"passed\": false}, {\"check\": \"regression variant: tolerance integer minutes 2\", \"actual\": [[60, 0, 0, 0], [0, 1166, 1042.6, 0]], \"expected\": [[60, 0, 0, 0], [0, 1166, 1043, 0]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[60, 0, 0, 0], [0, 1166, 1042.6, 0], [0, 124, 0.5999999999999943, 0]], \"expected\": [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[0, 600, 420.0, 0], [0, 600, 420.0, 600]], \"expected\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": [[0, 120, 0.0, 0], [0, 121, 1.0, 0]], \"expected\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[809, 0, 0, 0], [0, 120, 0.0, 0]], \"expected\": [[809, 0, 0, 0], [0, 120, 0, 0]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[0, 1166, 1042.6, 480], [0, 1166, 1042.6, 0]], \"expected\": [[0, 1166, 1043, 480], [0, 1166, 1043, 0]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[0, 1166, 1042.6, 480], [0, 124, 0.5999999999999943, 0], [0, 1166, 1042.6, 100]], \"expected\": [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.953,"exit_code":0,"observations":[{"actual":[[0,120,0,0],[0,121,1,0]],"check":"regression: tolerance integer minutes 1","expected":[[0,120,0,0],[0,121,1,0]],"passed":true},{"actual":[[60,0,0,0],[0,1166,1043,0]],"check":"regression variant: tolerance integer minutes 2","expected":[[60,0,0,0],[0,1166,1043,0]],"passed":true},{"actual":[[60,0,0,0],[0,1166,1043,0],[0,124,1,0]],"check":"partial repair guard 3","expected":[[60,0,0,0],[0,1166,1043,0],[0,124,1,0]],"passed":true},{"actual":[[0,600,420,0],[0,600,420,600]],"check":"boundary control 4","expected":[[0,600,420,0],[0,600,420,600]],"passed":true},{"actual":[[0,120,0,0],[0,121,1,0]],"check":"boundary control 5","expected":[[0,120,0,0],[0,121,1,0]],"passed":true},{"actual":[[809,0,0,0],[0,120,0,0]],"check":"normal control 6","expected":[[809,0,0,0],[0,120,0,0]],"passed":true},{"actual":[[0,1166,1043,480],[0,1166,1043,0]],"check":"normal control 7","expected":[[0,1166,1043,480],[0,1166,1043,0]],"passed":true},{"actual":[[0,1166,1043,480],[0,124,1,0],[0,1166,1043,100]],"check":"normal control 8","expected":[[0,1166,1043,480],[0,124,1,0],[0,1166,1043,100]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tolerance integer minutes 1\", \"actual\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"expected\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"passed\": true}, {\"check\": \"regression variant: tolerance integer minutes 2\", \"actual\": [[60, 0, 0, 0], [0, 1166, 1043, 0]], \"expected\": [[60, 0, 0, 0], [0, 1166, 1043, 0]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]], \"expected\": [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"expected\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"expected\": [[0, 120, 0, 0], [0, 121, 1, 0]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[809, 0, 0, 0], [0, 120, 0, 0]], \"expected\": [[809, 0, 0, 0], [0, 120, 0, 0]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[0, 1166, 1043, 480], [0, 1166, 1043, 0]], \"expected\": [[0, 1166, 1043, 480], [0, 1166, 1043, 0]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]], \"expected\": [[0, 1166, 1043, 480], [0, 124, 1, 0], [0, 1166, 1043, 100]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}