{"abstract":"Weeks over 40 hours count minutes in both additional and overtime bands.","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":"Capping at 48 hours still double counts minutes 2400-2880.","family":"w2-shift-rostering-labor-rules-part-time-additional-hours-additional-band-cap","id":"FA-94306","implementations":{"attempt":{"sha256":"b099bb5b9b6f7dc3ebc52ad9264dce25a88a864428d4982c22a56175331f96e2","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, 2880) - 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: additional band cap 1', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [1800, [2880, 0, 2500, 1488, 1981]],\n   [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]]),\n  ('partial repair guard 3', [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  ('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, [2880, 204, 1321]], [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 7', [2100, [2500, 2311]], [[0, 300, 90, 100], [0, 211, 1, 0]]),\n  ('normal control 8', [1500, [1440, 1651, 1440]], [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]])],\n [('regression: additional band cap 1', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('regression variant: additional band cap 2', [1500, [0, 0, 1123, 2880, 2400]],\n   [[1500, 0, 0, 0], [1500, 0, 0, 0], [377, 0, 0, 0], [0, 900, 750, 480], [0, 900, 750, 0]]),\n  ('partial repair guard 3', [1800, [1740, 2880]], [[60, 0, 0, 0], [0, 600, 420, 480]]),\n  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('normal control 5', [1200, [1140, 0, 1200, 2696]],\n   [[60, 0, 0, 0], [1200, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 296]]),\n  ('normal control 6', [1205, [1325, 2880]], [[0, 120, 0, 0], [0, 1195, 1075, 480]]),\n  ('normal control 7', [1205, [1145, 1145, 1326]], [[60, 0, 0, 0], [60, 0, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 8', [1205, [1205, 2880, 0]], [[0, 0, 0, 0], [0, 1195, 1075, 480], [1205, 0, 0, 0]])],\n [('regression: additional band cap 1', [2100, [1346, 2500, 0, 2880, 2100]],\n   [[754, 0, 0, 0], [0, 300, 90, 100], [2100, 0, 0, 0], [0, 300, 90, 480], [0, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [2100, [2500, 2880, 2791, 0, 2100]],\n   [[0, 300, 90, 100], [0, 300, 90, 480], [0, 300, 90, 391], [2100, 0, 0, 0], [0, 0, 0, 0]]),\n  ('partial repair guard 3', [1800, [2500, 2500]], [[0, 600, 420, 100], [0, 600, 420, 100]]),\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', [1200, [1321, 1321, 1200]], [[0, 121, 1, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),\n  ('normal control 7', [1200, [2400, 1320, 1200, 2400, 2500]],\n   [[0, 1200, 1080, 0], [0, 120, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 0], [0, 1200, 1080, 100]]),\n  ('normal control 8', [2100, [2400, 2400, 0, 2310, 2400]],\n   [[0, 300, 90, 0], [0, 300, 90, 0], [2100, 0, 0, 0], [0, 210, 0, 0], [0, 300, 90, 0]])],\n [('regression: additional band cap 1', [1500, [2880, 2880, 2880]],\n   [[0, 900, 750, 480], [0, 900, 750, 480], [0, 900, 750, 480]]),\n  ('regression variant: additional band cap 2', [1500, [1440, 2400, 2880, 2013, 2500]],\n   [[60, 0, 0, 0], [0, 900, 750, 0], [0, 900, 750, 480], [0, 513, 363, 0], [0, 900, 750, 100]]),\n  ('partial repair guard 3', [1205, [0, 2400, 2880, 1325, 1145]],\n   [[1205, 0, 0, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 480], [0, 120, 0, 0], [60, 0, 0, 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', [1200, [1200, 1321, 2823]], [[0, 0, 0, 0], [0, 121, 1, 0], [0, 1200, 1080, 423]]),\n  ('normal control 7', [1500, [2500, 2400, 2500, 1650]],\n   [[0, 900, 750, 100], [0, 900, 750, 0], [0, 900, 750, 100], [0, 150, 0, 0]]),\n  ('normal control 8', [1205, [1325, 1145, 1325, 0, 2880]],\n   [[0, 120, 0, 0], [60, 0, 0, 0], [0, 120, 0, 0], [1205, 0, 0, 0], [0, 1195, 1075, 480]])],\n [('regression: additional band cap 1', [2100, [2400, 2310, 2880, 58, 0]],\n   [[0, 300, 90, 0], [0, 210, 0, 0], [0, 300, 90, 480], [2042, 0, 0, 0], [2100, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [1205, [2880, 1326, 2500, 1205]],\n   [[0, 1195, 1075, 480], [0, 121, 1, 0], [0, 1195, 1075, 100], [0, 0, 0, 0]]),\n  ('partial repair guard 3', [1500, [1440, 2880, 1651]], [[60, 0, 0, 0], [0, 900, 750, 480], [0, 151, 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', [1500, [0, 2400, 1651, 1651]],\n   [[1500, 0, 0, 0], [0, 900, 750, 0], [0, 151, 1, 0], [0, 151, 1, 0]]),\n  ('normal control 7', [1234, [1174, 2400, 1358]], [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),\n  ('normal control 8', [2100, [2310, 2400]], [[0, 210, 0, 0], [0, 300, 90, 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":"f1c307765f93e96670f8d4408a95c10ec157eda98c85846a82d3ba9218760df7","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(w - 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: additional band cap 1', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [1800, [2880, 0, 2500, 1488, 1981]],\n   [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]]),\n  ('partial repair guard 3', [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  ('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, [2880, 204, 1321]], [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 7', [2100, [2500, 2311]], [[0, 300, 90, 100], [0, 211, 1, 0]]),\n  ('normal control 8', [1500, [1440, 1651, 1440]], [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]])],\n [('regression: additional band cap 1', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('regression variant: additional band cap 2', [1500, [0, 0, 1123, 2880, 2400]],\n   [[1500, 0, 0, 0], [1500, 0, 0, 0], [377, 0, 0, 0], [0, 900, 750, 480], [0, 900, 750, 0]]),\n  ('partial repair guard 3', [1800, [1740, 2880]], [[60, 0, 0, 0], [0, 600, 420, 480]]),\n  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('normal control 5', [1200, [1140, 0, 1200, 2696]],\n   [[60, 0, 0, 0], [1200, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 296]]),\n  ('normal control 6', [1205, [1325, 2880]], [[0, 120, 0, 0], [0, 1195, 1075, 480]]),\n  ('normal control 7', [1205, [1145, 1145, 1326]], [[60, 0, 0, 0], [60, 0, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 8', [1205, [1205, 2880, 0]], [[0, 0, 0, 0], [0, 1195, 1075, 480], [1205, 0, 0, 0]])],\n [('regression: additional band cap 1', [2100, [1346, 2500, 0, 2880, 2100]],\n   [[754, 0, 0, 0], [0, 300, 90, 100], [2100, 0, 0, 0], [0, 300, 90, 480], [0, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [2100, [2500, 2880, 2791, 0, 2100]],\n   [[0, 300, 90, 100], [0, 300, 90, 480], [0, 300, 90, 391], [2100, 0, 0, 0], [0, 0, 0, 0]]),\n  ('partial repair guard 3', [1800, [2500, 2500]], [[0, 600, 420, 100], [0, 600, 420, 100]]),\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', [1200, [1321, 1321, 1200]], [[0, 121, 1, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),\n  ('normal control 7', [1200, [2400, 1320, 1200, 2400, 2500]],\n   [[0, 1200, 1080, 0], [0, 120, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 0], [0, 1200, 1080, 100]]),\n  ('normal control 8', [2100, [2400, 2400, 0, 2310, 2400]],\n   [[0, 300, 90, 0], [0, 300, 90, 0], [2100, 0, 0, 0], [0, 210, 0, 0], [0, 300, 90, 0]])],\n [('regression: additional band cap 1', [1500, [2880, 2880, 2880]],\n   [[0, 900, 750, 480], [0, 900, 750, 480], [0, 900, 750, 480]]),\n  ('regression variant: additional band cap 2', [1500, [1440, 2400, 2880, 2013, 2500]],\n   [[60, 0, 0, 0], [0, 900, 750, 0], [0, 900, 750, 480], [0, 513, 363, 0], [0, 900, 750, 100]]),\n  ('partial repair guard 3', [1205, [0, 2400, 2880, 1325, 1145]],\n   [[1205, 0, 0, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 480], [0, 120, 0, 0], [60, 0, 0, 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', [1200, [1200, 1321, 2823]], [[0, 0, 0, 0], [0, 121, 1, 0], [0, 1200, 1080, 423]]),\n  ('normal control 7', [1500, [2500, 2400, 2500, 1650]],\n   [[0, 900, 750, 100], [0, 900, 750, 0], [0, 900, 750, 100], [0, 150, 0, 0]]),\n  ('normal control 8', [1205, [1325, 1145, 1325, 0, 2880]],\n   [[0, 120, 0, 0], [60, 0, 0, 0], [0, 120, 0, 0], [1205, 0, 0, 0], [0, 1195, 1075, 480]])],\n [('regression: additional band cap 1', [2100, [2400, 2310, 2880, 58, 0]],\n   [[0, 300, 90, 0], [0, 210, 0, 0], [0, 300, 90, 480], [2042, 0, 0, 0], [2100, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [1205, [2880, 1326, 2500, 1205]],\n   [[0, 1195, 1075, 480], [0, 121, 1, 0], [0, 1195, 1075, 100], [0, 0, 0, 0]]),\n  ('partial repair guard 3', [1500, [1440, 2880, 1651]], [[60, 0, 0, 0], [0, 900, 750, 480], [0, 151, 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', [1500, [0, 2400, 1651, 1651]],\n   [[1500, 0, 0, 0], [0, 900, 750, 0], [0, 151, 1, 0], [0, 151, 1, 0]]),\n  ('normal control 7', [1234, [1174, 2400, 1358]], [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),\n  ('normal control 8', [2100, [2310, 2400]], [[0, 210, 0, 0], [0, 300, 90, 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":"a23d8073bcc0b171954a1004c206305872fe8543b6c82c71faf0e01fa0fd4389","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: additional band cap 1', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [1800, [2880, 0, 2500, 1488, 1981]],\n   [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]]),\n  ('partial repair guard 3', [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  ('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, [2880, 204, 1321]], [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 7', [2100, [2500, 2311]], [[0, 300, 90, 100], [0, 211, 1, 0]]),\n  ('normal control 8', [1500, [1440, 1651, 1440]], [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]])],\n [('regression: additional band cap 1', [1800, [2400, 3000]], [[0, 600, 420, 0], [0, 600, 420, 600]]),\n  ('regression variant: additional band cap 2', [1500, [0, 0, 1123, 2880, 2400]],\n   [[1500, 0, 0, 0], [1500, 0, 0, 0], [377, 0, 0, 0], [0, 900, 750, 480], [0, 900, 750, 0]]),\n  ('partial repair guard 3', [1800, [1740, 2880]], [[60, 0, 0, 0], [0, 600, 420, 480]]),\n  ('boundary control 4', [1500, [2500, 1000]], [[0, 900, 750, 100], [500, 0, 0, 0]]),\n  ('normal control 5', [1200, [1140, 0, 1200, 2696]],\n   [[60, 0, 0, 0], [1200, 0, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 296]]),\n  ('normal control 6', [1205, [1325, 2880]], [[0, 120, 0, 0], [0, 1195, 1075, 480]]),\n  ('normal control 7', [1205, [1145, 1145, 1326]], [[60, 0, 0, 0], [60, 0, 0, 0], [0, 121, 1, 0]]),\n  ('normal control 8', [1205, [1205, 2880, 0]], [[0, 0, 0, 0], [0, 1195, 1075, 480], [1205, 0, 0, 0]])],\n [('regression: additional band cap 1', [2100, [1346, 2500, 0, 2880, 2100]],\n   [[754, 0, 0, 0], [0, 300, 90, 100], [2100, 0, 0, 0], [0, 300, 90, 480], [0, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [2100, [2500, 2880, 2791, 0, 2100]],\n   [[0, 300, 90, 100], [0, 300, 90, 480], [0, 300, 90, 391], [2100, 0, 0, 0], [0, 0, 0, 0]]),\n  ('partial repair guard 3', [1800, [2500, 2500]], [[0, 600, 420, 100], [0, 600, 420, 100]]),\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', [1200, [1321, 1321, 1200]], [[0, 121, 1, 0], [0, 121, 1, 0], [0, 0, 0, 0]]),\n  ('normal control 7', [1200, [2400, 1320, 1200, 2400, 2500]],\n   [[0, 1200, 1080, 0], [0, 120, 0, 0], [0, 0, 0, 0], [0, 1200, 1080, 0], [0, 1200, 1080, 100]]),\n  ('normal control 8', [2100, [2400, 2400, 0, 2310, 2400]],\n   [[0, 300, 90, 0], [0, 300, 90, 0], [2100, 0, 0, 0], [0, 210, 0, 0], [0, 300, 90, 0]])],\n [('regression: additional band cap 1', [1500, [2880, 2880, 2880]],\n   [[0, 900, 750, 480], [0, 900, 750, 480], [0, 900, 750, 480]]),\n  ('regression variant: additional band cap 2', [1500, [1440, 2400, 2880, 2013, 2500]],\n   [[60, 0, 0, 0], [0, 900, 750, 0], [0, 900, 750, 480], [0, 513, 363, 0], [0, 900, 750, 100]]),\n  ('partial repair guard 3', [1205, [0, 2400, 2880, 1325, 1145]],\n   [[1205, 0, 0, 0], [0, 1195, 1075, 0], [0, 1195, 1075, 480], [0, 120, 0, 0], [60, 0, 0, 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', [1200, [1200, 1321, 2823]], [[0, 0, 0, 0], [0, 121, 1, 0], [0, 1200, 1080, 423]]),\n  ('normal control 7', [1500, [2500, 2400, 2500, 1650]],\n   [[0, 900, 750, 100], [0, 900, 750, 0], [0, 900, 750, 100], [0, 150, 0, 0]]),\n  ('normal control 8', [1205, [1325, 1145, 1325, 0, 2880]],\n   [[0, 120, 0, 0], [60, 0, 0, 0], [0, 120, 0, 0], [1205, 0, 0, 0], [0, 1195, 1075, 480]])],\n [('regression: additional band cap 1', [2100, [2400, 2310, 2880, 58, 0]],\n   [[0, 300, 90, 0], [0, 210, 0, 0], [0, 300, 90, 480], [2042, 0, 0, 0], [2100, 0, 0, 0]]),\n  ('regression variant: additional band cap 2', [1205, [2880, 1326, 2500, 1205]],\n   [[0, 1195, 1075, 480], [0, 121, 1, 0], [0, 1195, 1075, 100], [0, 0, 0, 0]]),\n  ('partial repair guard 3', [1500, [1440, 2880, 1651]], [[60, 0, 0, 0], [0, 900, 750, 480], [0, 151, 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', [1500, [0, 2400, 1651, 1651]],\n   [[1500, 0, 0, 0], [0, 900, 750, 0], [0, 151, 1, 0], [0, 151, 1, 0]]),\n  ('normal control 7', [1234, [1174, 2400, 1358]], [[60, 0, 0, 0], [0, 1166, 1043, 0], [0, 124, 1, 0]]),\n  ('normal control 8', [2100, [2310, 2400]], [[0, 210, 0, 0], [0, 300, 90, 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-additional-band-cap","generated_at":"2026-09-29T14:52:03.234183+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":"Cap additional minutes at 2400 worked minutes.","root_cause":"Additional minutes are not capped at the full-time threshold.","sha256":"2487212243aed4840df34eb927ae3c7210cbccc5efa1b3ac03a387a5c887695f","title":"Overtime minutes also counted as additional hours · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.724,"exit_code":1,"observations":[{"actual":[[0,1000,850,100],[500,0,0,0]],"check":"regression: additional band cap 1","expected":[[0,900,750,100],[500,0,0,0]],"passed":false},{"actual":[[0,1080,900,480],[1800,0,0,0],[0,700,520,100],[312,0,0,0],[0,181,1,0]],"check":"regression variant: additional band cap 2","expected":[[0,600,420,480],[1800,0,0,0],[0,600,420,100],[312,0,0,0],[0,181,1,0]],"passed":false},{"actual":[[0,1646,1523,480],[178,0,0,0],[0,1646,1523,480],[0,1166,1043,0],[0,123,0,0]],"check":"partial repair guard 3","expected":[[0,1166,1043,480],[178,0,0,0],[0,1166,1043,480],[0,1166,1043,0],[0,123,0,0]],"passed":false},{"actual":[[0,600,420,0],[0,1080,900,600]],"check":"boundary control 4","expected":[[0,600,420,0],[0,600,420,600]],"passed":false},{"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":[[0,1680,1560,480],[996,0,0,0],[0,121,1,0]],"check":"normal control 6","expected":[[0,1200,1080,480],[996,0,0,0],[0,121,1,0]],"passed":false},{"actual":[[0,400,190,100],[0,211,1,0]],"check":"normal control 7","expected":[[0,300,90,100],[0,211,1,0]],"passed":false},{"actual":[[60,0,0,0],[0,151,1,0],[60,0,0,0]],"check":"normal control 8","expected":[[60,0,0,0],[0,151,1,0],[60,0,0,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: additional band cap 1\", \"actual\": [[0, 1000, 850, 100], [500, 0, 0, 0]], \"expected\": [[0, 900, 750, 100], [500, 0, 0, 0]], \"passed\": false}, {\"check\": \"regression variant: additional band cap 2\", \"actual\": [[0, 1080, 900, 480], [1800, 0, 0, 0], [0, 700, 520, 100], [312, 0, 0, 0], [0, 181, 1, 0]], \"expected\": [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[0, 1646, 1523, 480], [178, 0, 0, 0], [0, 1646, 1523, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]], \"expected\": [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[0, 600, 420, 0], [0, 1080, 900, 600]], \"expected\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"passed\": false}, {\"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\": [[0, 1680, 1560, 480], [996, 0, 0, 0], [0, 121, 1, 0]], \"expected\": [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[0, 400, 190, 100], [0, 211, 1, 0]], \"expected\": [[0, 300, 90, 100], [0, 211, 1, 0]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]], \"expected\": [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.946,"exit_code":1,"observations":[{"actual":[[0,1000,850,100],[500,0,0,0]],"check":"regression: additional band cap 1","expected":[[0,900,750,100],[500,0,0,0]],"passed":false},{"actual":[[0,1080,900,480],[1800,0,0,0],[0,700,520,100],[312,0,0,0],[0,181,1,0]],"check":"regression variant: additional band cap 2","expected":[[0,600,420,480],[1800,0,0,0],[0,600,420,100],[312,0,0,0],[0,181,1,0]],"passed":false},{"actual":[[0,1646,1523,480],[178,0,0,0],[0,1646,1523,480],[0,1166,1043,0],[0,123,0,0]],"check":"partial repair guard 3","expected":[[0,1166,1043,480],[178,0,0,0],[0,1166,1043,480],[0,1166,1043,0],[0,123,0,0]],"passed":false},{"actual":[[0,600,420,0],[0,1200,1020,600]],"check":"boundary control 4","expected":[[0,600,420,0],[0,600,420,600]],"passed":false},{"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":[[0,1680,1560,480],[996,0,0,0],[0,121,1,0]],"check":"normal control 6","expected":[[0,1200,1080,480],[996,0,0,0],[0,121,1,0]],"passed":false},{"actual":[[0,400,190,100],[0,211,1,0]],"check":"normal control 7","expected":[[0,300,90,100],[0,211,1,0]],"passed":false},{"actual":[[60,0,0,0],[0,151,1,0],[60,0,0,0]],"check":"normal control 8","expected":[[60,0,0,0],[0,151,1,0],[60,0,0,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: additional band cap 1\", \"actual\": [[0, 1000, 850, 100], [500, 0, 0, 0]], \"expected\": [[0, 900, 750, 100], [500, 0, 0, 0]], \"passed\": false}, {\"check\": \"regression variant: additional band cap 2\", \"actual\": [[0, 1080, 900, 480], [1800, 0, 0, 0], [0, 700, 520, 100], [312, 0, 0, 0], [0, 181, 1, 0]], \"expected\": [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[0, 1646, 1523, 480], [178, 0, 0, 0], [0, 1646, 1523, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]], \"expected\": [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[0, 600, 420, 0], [0, 1200, 1020, 600]], \"expected\": [[0, 600, 420, 0], [0, 600, 420, 600]], \"passed\": false}, {\"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\": [[0, 1680, 1560, 480], [996, 0, 0, 0], [0, 121, 1, 0]], \"expected\": [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[0, 400, 190, 100], [0, 211, 1, 0]], \"expected\": [[0, 300, 90, 100], [0, 211, 1, 0]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]], \"expected\": [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.565,"exit_code":0,"observations":[{"actual":[[0,900,750,100],[500,0,0,0]],"check":"regression: additional band cap 1","expected":[[0,900,750,100],[500,0,0,0]],"passed":true},{"actual":[[0,600,420,480],[1800,0,0,0],[0,600,420,100],[312,0,0,0],[0,181,1,0]],"check":"regression variant: additional band cap 2","expected":[[0,600,420,480],[1800,0,0,0],[0,600,420,100],[312,0,0,0],[0,181,1,0]],"passed":true},{"actual":[[0,1166,1043,480],[178,0,0,0],[0,1166,1043,480],[0,1166,1043,0],[0,123,0,0]],"check":"partial repair guard 3","expected":[[0,1166,1043,480],[178,0,0,0],[0,1166,1043,480],[0,1166,1043,0],[0,123,0,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":[[0,1200,1080,480],[996,0,0,0],[0,121,1,0]],"check":"normal control 6","expected":[[0,1200,1080,480],[996,0,0,0],[0,121,1,0]],"passed":true},{"actual":[[0,300,90,100],[0,211,1,0]],"check":"normal control 7","expected":[[0,300,90,100],[0,211,1,0]],"passed":true},{"actual":[[60,0,0,0],[0,151,1,0],[60,0,0,0]],"check":"normal control 8","expected":[[60,0,0,0],[0,151,1,0],[60,0,0,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: additional band cap 1\", \"actual\": [[0, 900, 750, 100], [500, 0, 0, 0]], \"expected\": [[0, 900, 750, 100], [500, 0, 0, 0]], \"passed\": true}, {\"check\": \"regression variant: additional band cap 2\", \"actual\": [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]], \"expected\": [[0, 600, 420, 480], [1800, 0, 0, 0], [0, 600, 420, 100], [312, 0, 0, 0], [0, 181, 1, 0]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 0]], \"expected\": [[0, 1166, 1043, 480], [178, 0, 0, 0], [0, 1166, 1043, 480], [0, 1166, 1043, 0], [0, 123, 0, 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\": [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]], \"expected\": [[0, 1200, 1080, 480], [996, 0, 0, 0], [0, 121, 1, 0]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[0, 300, 90, 100], [0, 211, 1, 0]], \"expected\": [[0, 300, 90, 100], [0, 211, 1, 0]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]], \"expected\": [[60, 0, 0, 0], [0, 151, 1, 0], [60, 0, 0, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}