{"abstract":"Workers who would finish at exactly 12 hours are skipped.","category":"Shift rostering labor rules","checks":8,"contract":"ledger: worker -> [overtime minutes charged, seniority rank (1 most senior), minutes already worked today]; offers: [minutes, workers who will refuse]. For each offer, candidates are ordered by charged overtime then seniority rank. Workers who would exceed 720 minutes today are skipped without charge; refusers are charged the offered minutes; the first remaining worker takes it and is charged and credited today. Return [taker per offer (or None), charged minutes by worker].","contract_signature":"ledger, offers","evaluation_group":"w2-shift-rostering-labor-rules-overtime-equalization-offers","failed_approach":"Testing current minutes without the offer lets offers exceed 12 hours.","family":"w2-shift-rostering-labor-rules-overtime-equalization-offers-daily-maximum-boundary","id":"FA-94326","implementations":{"attempt":{"sha256":"d9d61f3a0e10f6c7b25fa25f449d148378ec7a4ba9422cf8ef20acb4e9fa67ad","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ledger, offers):\n    led = {w: list(v) for w, v in ledger.items()}\n    result = []\n    for minutes, refusers in offers:\n        cands = sorted(led, key=lambda w: (led[w][0], led[w][1]))\n        taker = None\n        for w in cands:\n            if led[w][2] > 720:\n                continue\n            if w in refusers:\n                led[w][0] += minutes\n                continue\n            taker = w\n            break\n        if taker is not None:\n            led[taker][0] += minutes\n            led[taker][2] += minutes\n        result.append(taker)\n    return [result, {w: led[w][0] for w in sorted(led)}]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: daily maximum boundary 1',\n   [{'p': [120, 1, 240], 'r': [0, 2, 480], 'q': [60, 3, 240], 's': [60, 4, 480]},\n    [[60, []], [240, ['q', 'r']]]],\n   [['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'r': [0, 1, 480], 'q': [240, 2, 660], 'p': [120, 3, 660]},\n    [[60, ['q', 'r']], [120, ['r', 'p']], [240, []]]],\n   [['p', None, 'r'], {'p': 180, 'q': 240, 'r': 420}]),\n  ('partial repair guard 3', [{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],\n   [[None, 'q', 'q'], {'p': 120, 'q': 720}]),\n  ('normal control 4',\n   [{'p': [240, 1, 0], 'q': [60, 2, 660]}, [[60, ['q', 'p']], [120, ['p', 'q']], [120, ['p']]]],\n   [[None, None, None], {'p': 540, 'q': 120}]),\n  ('normal control 5', [{'r': [0, 1, 480], 'p': [120, 2, 240], 'q': [120, 3, 660]}, [[120, ['r']]]],\n   [['p'], {'p': 240, 'q': 120, 'r': 120}]),\n  ('normal control 6', [{'p': [120, 1, 480], 'q': [240, 2, 0]}, [[120, ['p', 'q']], [240, []]]],\n   [[None, 'p'], {'p': 480, 'q': 360}]),\n  ('normal control 7',\n   [{'r': [60, 1, 480], 'q': [120, 2, 660], 's': [0, 3, 660], 'p': [60, 4, 0]}, [[240, []]]],\n   [['r'], {'p': 60, 'q': 120, 'r': 300, 's': 0}]),\n  ('normal control 8',\n   [{'s': [60, 1, 0], 'p': [240, 2, 600], 'r': [120, 3, 600], 'q': [120, 4, 0]},\n    [[240, ['p']], [120, ['s', 'r']], [240, []]]],\n   [['s', 'q', 'q'], {'p': 240, 'q': 480, 'r': 240, 's': 300}])],\n [('regression: daily maximum boundary 1',\n   [{'p': [0, 1, 0], 'q': [120, 2, 600]}, [[60, ['q', 'p']], [120, []], [120, ['q']], [120, []]]],\n   [[None, 'p', 'p', 'q'], {'p': 300, 'q': 300}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'q': [240, 1, 240], 'p': [120, 2, 660], 'r': [60, 3, 660], 's': [0, 4, 480]}, [[240, ['q']]]],\n   [['s'], {'p': 120, 'q': 240, 'r': 60, 's': 240}]),\n  ('partial repair guard 3',\n   [{'p': [240, 1, 660], 'r': [60, 2, 240], 's': [120, 3, 0], 'q': [0, 4, 600]},\n    [[240, []], [60, ['q', 'p']]]],\n   [['r', 's'], {'p': 240, 'q': 60, 'r': 300, 's': 180}]),\n  ('normal control 4', [{'q': [120, 1, 660], 'p': [240, 2, 600]}, [[120, []], [240, []], [240, []]]],\n   [['p', None, None], {'p': 360, 'q': 120}]),\n  ('normal control 5', [{'p': [240, 1, 0], 'r': [240, 2, 600], 'q': [120, 3, 600]}, [[120, []], [60, ['p']]]],\n   [['q', 'r'], {'p': 300, 'q': 240, 'r': 300}]),\n  ('normal control 6',\n   [{'p': [60, 1, 600], 'q': [120, 2, 660]}, [[60, []], [60, ['q']], [240, []], [240, ['p']]]],\n   [['p', 'p', None, None], {'p': 180, 'q': 120}]),\n  ('normal control 7',\n   [{'q': [120, 1, 0], 'p': [0, 2, 0]}, [[120, ['p']], [120, ['q']], [240, ['p']], [120, []]]],\n   [['q', 'p', 'q', 'p'], {'p': 360, 'q': 480}]),\n  ('normal control 8',\n   [{'r': [60, 1, 480], 'q': [60, 2, 660], 'p': [240, 3, 600]}, [[240, ['r']], [120, []]]],\n   [[None, 'p'], {'p': 360, 'q': 60, 'r': 300}])],\n [('regression: daily maximum boundary 1',\n   [{'q': [240, 1, 480], 's': [120, 2, 480], 'r': [0, 3, 660], 'p': [120, 4, 480]}, [[240, ['r', 'q']]]],\n   [['s'], {'p': 120, 'q': 240, 'r': 0, 's': 360}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'s': [60, 1, 660], 'p': [0, 2, 660], 'r': [240, 3, 480], 'q': [120, 4, 0]},\n    [[60, ['s', 'p']], [120, ['p']], [240, ['r']], [120, ['r']]]],\n   [['q', 'q', 'q', 'q'], {'p': 60, 'q': 660, 'r': 600, 's': 120}]),\n  ('normal control 3',\n   [{'q': [0, 1, 0], 'r': [120, 2, 660], 'p': [120, 3, 240]}, [[120, ['r']], [240, ['r']]]],\n   [['q', 'q'], {'p': 120, 'q': 360, 'r': 120}]),\n  ('normal control 4',\n   [{'s': [60, 1, 0], 'p': [240, 2, 600], 'r': [120, 3, 600], 'q': [120, 4, 0]},\n    [[240, ['p']], [120, ['s', 'r']], [240, []]]],\n   [['s', 'q', 'q'], {'p': 240, 'q': 480, 'r': 240, 's': 300}]),\n  ('normal control 5', [{'q': [120, 1, 240], 'r': [240, 2, 0], 'p': [0, 3, 0]}, [[60, []]]],\n   [['p'], {'p': 60, 'q': 120, 'r': 240}]),\n  ('normal control 6', [{'q': [0, 1, 660], 'p': [240, 2, 480]}, [[240, []]]], [['p'], {'p': 480, 'q': 0}]),\n  ('normal control 7',\n   [{'q': [60, 1, 660], 'p': [60, 2, 0]}, [[60, []], [240, []], [120, ['p']], [240, ['q', 'p']]]],\n   [['q', 'p', None, None], {'p': 660, 'q': 120}]),\n  ('normal control 8',\n   [{'p': [240, 1, 600], 'r': [60, 2, 480], 'q': [120, 3, 0], 's': [0, 4, 240]},\n    [[240, ['r', 's']], [60, ['s']], [60, []]]],\n   [['q', 'p', 's'], {'p': 300, 'q': 360, 'r': 300, 's': 300}])],\n [('regression: daily maximum boundary 1',\n   [{'r': [240, 1, 0], 'p': [60, 2, 0], 'q': [120, 3, 0], 's': [120, 4, 600]}, [[120, ['p', 'q']]]],\n   [['s'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),\n  ('regression variant: daily maximum boundary 2', [{'p': [0, 1, 0], 'q': [240, 2, 660]}, [[60, ['q', 'p']]]],\n   [[None], {'p': 60, 'q': 300}]),\n  ('partial repair guard 3',\n   [{'r': [120, 1, 480], 'p': [120, 2, 660], 'q': [60, 3, 480]},\n    [[240, ['p', 'q']], [120, ['r', 'q']], [120, ['p', 'r']], [120, ['r', 'p']]]],\n   [['r', None, 'q', 'q'], {'p': 120, 'q': 660, 'r': 360}]),\n  ('normal control 4',\n   [{'p': [120, 1, 0], 'r': [120, 2, 240], 's': [60, 3, 660], 'q': [120, 4, 0]},\n    [[120, ['p', 's']], [60, []], [60, ['r']]]],\n   [['r', 's', 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 120}]),\n  ('normal control 5',\n   [{'p': [240, 1, 600], 'q': [120, 2, 480], 'r': [240, 3, 0]},\n    [[60, ['r', 'q']], [60, ['q', 'r']], [60, ['r']]]],\n   [['p', 'p', 'q'], {'p': 360, 'q': 300, 'r': 300}]),\n  ('normal control 6', [{'q': [120, 1, 600], 'p': [240, 2, 600]}, [[120, ['q', 'p']]]],\n   [[None], {'p': 360, 'q': 240}]),\n  ('normal control 7',\n   [{'q': [60, 1, 660], 'p': [120, 2, 480], 'r': [0, 3, 240]},\n    [[60, []], [120, ['p', 'q']], [60, ['q']], [60, ['r']]]],\n   [['r', 'r', 'p', 'q'], {'p': 180, 'q': 180, 'r': 180}]),\n  ('normal control 8', [{'p': [120, 1, 660], 'r': [120, 2, 600], 'q': [120, 3, 240]}, [[120, ['p', 'q']]]],\n   [['r'], {'p': 120, 'q': 120, 'r': 240}])],\n [('regression: daily maximum boundary 1',\n   [{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],\n   [[None, 'q', None, None], {'p': 240, 'q': 300}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'q': [120, 1, 600], 'p': [0, 2, 600]}, [[120, []], [240, ['p', 'q']], [60, ['q', 'p']], [120, ['q']]]],\n   [['p', None, None, None], {'p': 120, 'q': 300}]),\n  ('partial repair guard 3', [{'q': [120, 1, 600], 'p': [60, 2, 660]}, [[240, ['q', 'p']]]],\n   [[None], {'p': 60, 'q': 120}]),\n  ('normal control 4',\n   [{'r': [120, 1, 240], 'p': [240, 2, 600], 'q': [120, 3, 480]},\n    [[120, ['p', 'q']], [60, ['r']], [240, ['q']], [120, ['p']]]],\n   [['r', 'q', 'r', 'q'], {'p': 240, 'q': 300, 'r': 480}]),\n  ('normal control 5', [{'p': [60, 1, 0], 'r': [240, 2, 600], 'q': [0, 3, 480]}, [[240, ['r']]]],\n   [['q'], {'p': 60, 'q': 240, 'r': 240}]),\n  ('normal control 6',\n   [{'r': [120, 1, 0], 'p': [120, 2, 240], 'q': [120, 3, 600]}, [[240, []], [60, ['q', 'p']]]],\n   [['r', 'r'], {'p': 180, 'q': 180, 'r': 420}]),\n  ('normal control 7',\n   [{'p': [120, 1, 480], 'q': [60, 2, 660], 's': [120, 3, 600], 'r': [120, 4, 0]},\n    [[240, ['r']], [120, ['r', 's']]]],\n   [['p', None], {'p': 360, 'q': 60, 'r': 240, 's': 240}]),\n  ('normal control 8',\n   [{'q': [120, 1, 480], 'p': [120, 2, 600], 'r': [240, 3, 600], 's': [240, 4, 480]},\n    [[120, ['r']], [120, ['s']], [60, ['q']], [240, ['q']]]],\n   [['q', 'p', 'r', 's'], {'p': 240, 'q': 300, 'r': 300, 's': 480}])]]\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":"73a6ccf672f9bc450b0c4ef30ed7328d00e1b553006f6a5e1d5a866f2ecb8d36","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(ledger, offers):\n    led = {w: list(v) for w, v in ledger.items()}\n    result = []\n    for minutes, refusers in offers:\n        cands = sorted(led, key=lambda w: (led[w][0], led[w][1]))\n        taker = None\n        for w in cands:\n            if led[w][2] + minutes >= 720:\n                continue\n            if w in refusers:\n                led[w][0] += minutes\n                continue\n            taker = w\n            break\n        if taker is not None:\n            led[taker][0] += minutes\n            led[taker][2] += minutes\n        result.append(taker)\n    return [result, {w: led[w][0] for w in sorted(led)}]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: daily maximum boundary 1',\n   [{'p': [120, 1, 240], 'r': [0, 2, 480], 'q': [60, 3, 240], 's': [60, 4, 480]},\n    [[60, []], [240, ['q', 'r']]]],\n   [['r', 's'], {'p': 120, 'q': 300, 'r': 60, 's': 300}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'r': [0, 1, 480], 'q': [240, 2, 660], 'p': [120, 3, 660]},\n    [[60, ['q', 'r']], [120, ['r', 'p']], [240, []]]],\n   [['p', None, 'r'], {'p': 180, 'q': 240, 'r': 420}]),\n  ('partial repair guard 3', [{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],\n   [[None, 'q', 'q'], {'p': 120, 'q': 720}]),\n  ('normal control 4',\n   [{'p': [240, 1, 0], 'q': [60, 2, 660]}, [[60, ['q', 'p']], [120, ['p', 'q']], [120, ['p']]]],\n   [[None, None, None], {'p': 540, 'q': 120}]),\n  ('normal control 5', [{'r': [0, 1, 480], 'p': [120, 2, 240], 'q': [120, 3, 660]}, [[120, ['r']]]],\n   [['p'], {'p': 240, 'q': 120, 'r': 120}]),\n  ('normal control 6', [{'p': [120, 1, 480], 'q': [240, 2, 0]}, [[120, ['p', 'q']], [240, []]]],\n   [[None, 'p'], {'p': 480, 'q': 360}]),\n  ('normal control 7',\n   [{'r': [60, 1, 480], 'q': [120, 2, 660], 's': [0, 3, 660], 'p': [60, 4, 0]}, [[240, []]]],\n   [['r'], {'p': 60, 'q': 120, 'r': 300, 's': 0}]),\n  ('normal control 8',\n   [{'s': [60, 1, 0], 'p': [240, 2, 600], 'r': [120, 3, 600], 'q': [120, 4, 0]},\n    [[240, ['p']], [120, ['s', 'r']], [240, []]]],\n   [['s', 'q', 'q'], {'p': 240, 'q': 480, 'r': 240, 's': 300}])],\n [('regression: daily maximum boundary 1',\n   [{'p': [0, 1, 0], 'q': [120, 2, 600]}, [[60, ['q', 'p']], [120, []], [120, ['q']], [120, []]]],\n   [[None, 'p', 'p', 'q'], {'p': 300, 'q': 300}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'q': [240, 1, 240], 'p': [120, 2, 660], 'r': [60, 3, 660], 's': [0, 4, 480]}, [[240, ['q']]]],\n   [['s'], {'p': 120, 'q': 240, 'r': 60, 's': 240}]),\n  ('partial repair guard 3',\n   [{'p': [240, 1, 660], 'r': [60, 2, 240], 's': [120, 3, 0], 'q': [0, 4, 600]},\n    [[240, []], [60, ['q', 'p']]]],\n   [['r', 's'], {'p': 240, 'q': 60, 'r': 300, 's': 180}]),\n  ('normal control 4', [{'q': [120, 1, 660], 'p': [240, 2, 600]}, [[120, []], [240, []], [240, []]]],\n   [['p', None, None], {'p': 360, 'q': 120}]),\n  ('normal control 5', [{'p': [240, 1, 0], 'r': [240, 2, 600], 'q': [120, 3, 600]}, [[120, []], [60, ['p']]]],\n   [['q', 'r'], {'p': 300, 'q': 240, 'r': 300}]),\n  ('normal control 6',\n   [{'p': [60, 1, 600], 'q': [120, 2, 660]}, [[60, []], [60, ['q']], [240, []], [240, ['p']]]],\n   [['p', 'p', None, None], {'p': 180, 'q': 120}]),\n  ('normal control 7',\n   [{'q': [120, 1, 0], 'p': [0, 2, 0]}, [[120, ['p']], [120, ['q']], [240, ['p']], [120, []]]],\n   [['q', 'p', 'q', 'p'], {'p': 360, 'q': 480}]),\n  ('normal control 8',\n   [{'r': [60, 1, 480], 'q': [60, 2, 660], 'p': [240, 3, 600]}, [[240, ['r']], [120, []]]],\n   [[None, 'p'], {'p': 360, 'q': 60, 'r': 300}])],\n [('regression: daily maximum boundary 1',\n   [{'q': [240, 1, 480], 's': [120, 2, 480], 'r': [0, 3, 660], 'p': [120, 4, 480]}, [[240, ['r', 'q']]]],\n   [['s'], {'p': 120, 'q': 240, 'r': 0, 's': 360}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'s': [60, 1, 660], 'p': [0, 2, 660], 'r': [240, 3, 480], 'q': [120, 4, 0]},\n    [[60, ['s', 'p']], [120, ['p']], [240, ['r']], [120, ['r']]]],\n   [['q', 'q', 'q', 'q'], {'p': 60, 'q': 660, 'r': 600, 's': 120}]),\n  ('normal control 3',\n   [{'q': [0, 1, 0], 'r': [120, 2, 660], 'p': [120, 3, 240]}, [[120, ['r']], [240, ['r']]]],\n   [['q', 'q'], {'p': 120, 'q': 360, 'r': 120}]),\n  ('normal control 4',\n   [{'s': [60, 1, 0], 'p': [240, 2, 600], 'r': [120, 3, 600], 'q': [120, 4, 0]},\n    [[240, ['p']], [120, ['s', 'r']], [240, []]]],\n   [['s', 'q', 'q'], {'p': 240, 'q': 480, 'r': 240, 's': 300}]),\n  ('normal control 5', [{'q': [120, 1, 240], 'r': [240, 2, 0], 'p': [0, 3, 0]}, [[60, []]]],\n   [['p'], {'p': 60, 'q': 120, 'r': 240}]),\n  ('normal control 6', [{'q': [0, 1, 660], 'p': [240, 2, 480]}, [[240, []]]], [['p'], {'p': 480, 'q': 0}]),\n  ('normal control 7',\n   [{'q': [60, 1, 660], 'p': [60, 2, 0]}, [[60, []], [240, []], [120, ['p']], [240, ['q', 'p']]]],\n   [['q', 'p', None, None], {'p': 660, 'q': 120}]),\n  ('normal control 8',\n   [{'p': [240, 1, 600], 'r': [60, 2, 480], 'q': [120, 3, 0], 's': [0, 4, 240]},\n    [[240, ['r', 's']], [60, ['s']], [60, []]]],\n   [['q', 'p', 's'], {'p': 300, 'q': 360, 'r': 300, 's': 300}])],\n [('regression: daily maximum boundary 1',\n   [{'r': [240, 1, 0], 'p': [60, 2, 0], 'q': [120, 3, 0], 's': [120, 4, 600]}, [[120, ['p', 'q']]]],\n   [['s'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),\n  ('regression variant: daily maximum boundary 2', [{'p': [0, 1, 0], 'q': [240, 2, 660]}, [[60, ['q', 'p']]]],\n   [[None], {'p': 60, 'q': 300}]),\n  ('partial repair guard 3',\n   [{'r': [120, 1, 480], 'p': [120, 2, 660], 'q': [60, 3, 480]},\n    [[240, ['p', 'q']], [120, ['r', 'q']], [120, ['p', 'r']], [120, ['r', 'p']]]],\n   [['r', None, 'q', 'q'], {'p': 120, 'q': 660, 'r': 360}]),\n  ('normal control 4',\n   [{'p': [120, 1, 0], 'r': [120, 2, 240], 's': [60, 3, 660], 'q': [120, 4, 0]},\n    [[120, ['p', 's']], [60, []], [60, ['r']]]],\n   [['r', 's', 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 120}]),\n  ('normal control 5',\n   [{'p': [240, 1, 600], 'q': [120, 2, 480], 'r': [240, 3, 0]},\n    [[60, ['r', 'q']], [60, ['q', 'r']], [60, ['r']]]],\n   [['p', 'p', 'q'], {'p': 360, 'q': 300, 'r': 300}]),\n  ('normal control 6', [{'q': [120, 1, 600], 'p': [240, 2, 600]}, [[120, ['q', 'p']]]],\n   [[None], {'p': 360, 'q': 240}]),\n  ('normal control 7',\n   [{'q': [60, 1, 660], 'p': [120, 2, 480], 'r': [0, 3, 240]},\n    [[60, []], [120, ['p', 'q']], [60, ['q']], [60, ['r']]]],\n   [['r', 'r', 'p', 'q'], {'p': 180, 'q': 180, 'r': 180}]),\n  ('normal control 8', [{'p': [120, 1, 660], 'r': [120, 2, 600], 'q': [120, 3, 240]}, [[120, ['p', 'q']]]],\n   [['r'], {'p': 120, 'q': 120, 'r': 240}])],\n [('regression: daily maximum boundary 1',\n   [{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],\n   [[None, 'q', None, None], {'p': 240, 'q': 300}]),\n  ('regression variant: daily maximum boundary 2',\n   [{'q': [120, 1, 600], 'p': [0, 2, 600]}, [[120, []], [240, ['p', 'q']], [60, ['q', 'p']], [120, ['q']]]],\n   [['p', None, None, None], {'p': 120, 'q': 300}]),\n  ('partial repair guard 3', [{'q': [120, 1, 600], 'p': [60, 2, 660]}, [[240, ['q', 'p']]]],\n   [[None], {'p': 60, 'q': 120}]),\n  ('normal control 4',\n   [{'r': [120, 1, 240], 'p': [240, 2, 600], 'q': [120, 3, 480]},\n    [[120, ['p', 'q']], [60, ['r']], [240, ['q']], [120, ['p']]]],\n   [['r', 'q', 'r', 'q'], {'p': 240, 'q': 300, 'r': 480}]),\n  ('normal control 5', [{'p': [60, 1, 0], 'r': [240, 2, 600], 'q': [0, 3, 480]}, [[240, ['r']]]],\n   [['q'], {'p': 60, 'q': 240, 'r': 240}]),\n  ('normal control 6',\n   [{'r': [120, 1, 0], 'p': [120, 2, 240], 'q': [120, 3, 600]}, [[240, []], [60, ['q', 'p']]]],\n   [['r', 'r'], {'p': 180, 'q': 180, 'r': 420}]),\n  ('normal control 7',\n   [{'p': [120, 1, 480], 'q': [60, 2, 660], 's': [120, 3, 600], 'r': [120, 4, 0]},\n    [[240, ['r']], [120, ['r', 's']]]],\n   [['p', None], {'p': 360, 'q': 60, 'r': 240, 's': 240}]),\n  ('normal control 8',\n   [{'q': [120, 1, 480], 'p': [120, 2, 600], 'r': [240, 3, 600], 's': [240, 4, 480]},\n    [[120, ['r']], [120, ['s']], [60, ['q']], [240, ['q']]]],\n   [['q', 'p', 'r', 's'], {'p': 240, 'q': 300, 'r': 300, 's': 480}])]]\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-overtime-equalization-offers-daily-maximum-boundary","generated_at":"2026-09-29T14:52:03.278770+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Overtime equalization clauses require fair rotation of offers, including charging refusals.","root_cause":"The daily maximum comparison is inclusive.","sha256":"b1e60553b7e50646995d092841b8f359c8d9f8c8ad35738669acc9168da08288","title":"Offer reaching exactly twelve hours treated as ineligible · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":44.27,"exit_code":1,"observations":[{"actual":[["r","s"],{"p":120,"q":300,"r":300,"s":300}],"check":"regression: daily maximum boundary 1","expected":[["r","s"],{"p":120,"q":300,"r":60,"s":300}],"passed":false},{"actual":[["p","q","r"],{"p":300,"q":360,"r":420}],"check":"regression variant: daily maximum boundary 2","expected":[["p",null,"r"],{"p":180,"q":240,"r":420}],"passed":false},{"actual":[["p","q","q"],{"p":360,"q":720}],"check":"partial repair guard 3","expected":[[null,"q","q"],{"p":120,"q":720}],"passed":false},{"actual":[[null,null,"q"],{"p":420,"q":360}],"check":"normal control 4","expected":[[null,null,null],{"p":540,"q":120}],"passed":false},{"actual":[["p"],{"p":240,"q":120,"r":120}],"check":"normal control 5","expected":[["p"],{"p":240,"q":120,"r":120}],"passed":true},{"actual":[[null,"p"],{"p":480,"q":360}],"check":"normal control 6","expected":[[null,"p"],{"p":480,"q":360}],"passed":true},{"actual":[["s"],{"p":60,"q":120,"r":60,"s":240}],"check":"normal control 7","expected":[["r"],{"p":60,"q":120,"r":300,"s":0}],"passed":false},{"actual":[["s","q","p"],{"p":480,"q":240,"r":240,"s":300}],"check":"normal control 8","expected":[["s","q","q"],{"p":240,"q":480,"r":240,"s":300}],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: daily maximum boundary 1\", \"actual\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 300, \"r\": 300, \"s\": 300}], \"expected\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 300, \"r\": 60, \"s\": 300}], \"passed\": false}, {\"check\": \"regression variant: daily maximum boundary 2\", \"actual\": [[\"p\", \"q\", \"r\"], {\"p\": 300, \"q\": 360, \"r\": 420}], \"expected\": [[\"p\", null, \"r\"], {\"p\": 180, \"q\": 240, \"r\": 420}], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"p\", \"q\", \"q\"], {\"p\": 360, \"q\": 720}], \"expected\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 720}], \"passed\": false}, {\"check\": \"normal control 4\", \"actual\": [[null, null, \"q\"], {\"p\": 420, \"q\": 360}], \"expected\": [[null, null, null], {\"p\": 540, \"q\": 120}], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[\"p\"], {\"p\": 240, \"q\": 120, \"r\": 120}], \"expected\": [[\"p\"], {\"p\": 240, \"q\": 120, \"r\": 120}], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[null, \"p\"], {\"p\": 480, \"q\": 360}], \"expected\": [[null, \"p\"], {\"p\": 480, \"q\": 360}], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"s\"], {\"p\": 60, \"q\": 120, \"r\": 60, \"s\": 240}], \"expected\": [[\"r\"], {\"p\": 60, \"q\": 120, \"r\": 300, \"s\": 0}], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"s\", \"q\", \"p\"], {\"p\": 480, \"q\": 240, \"r\": 240, \"s\": 300}], \"expected\": [[\"s\", \"q\", \"q\"], {\"p\": 240, \"q\": 480, \"r\": 240, \"s\": 300}], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.389,"exit_code":1,"observations":[{"actual":[["r","p"],{"p":360,"q":300,"r":60,"s":60}],"check":"regression: daily maximum boundary 1","expected":[["r","s"],{"p":120,"q":300,"r":60,"s":300}],"passed":false},{"actual":[[null,null,null],{"p":120,"q":240,"r":180}],"check":"regression variant: daily maximum boundary 2","expected":[["p",null,"r"],{"p":180,"q":240,"r":420}],"passed":false},{"actual":[[null,"q","q"],{"p":120,"q":720}],"check":"partial repair guard 3","expected":[[null,"q","q"],{"p":120,"q":720}],"passed":true},{"actual":[[null,null,null],{"p":540,"q":60}],"check":"normal control 4","expected":[[null,null,null],{"p":540,"q":120}],"passed":false},{"actual":[["p"],{"p":240,"q":120,"r":120}],"check":"normal control 5","expected":[["p"],{"p":240,"q":120,"r":120}],"passed":true},{"actual":[[null,"q"],{"p":240,"q":600}],"check":"normal control 6","expected":[[null,"p"],{"p":480,"q":360}],"passed":false},{"actual":[["p"],{"p":300,"q":120,"r":60,"s":0}],"check":"normal control 7","expected":[["r"],{"p":60,"q":120,"r":300,"s":0}],"passed":false},{"actual":[["s","q","q"],{"p":240,"q":480,"r":120,"s":300}],"check":"normal control 8","expected":[["s","q","q"],{"p":240,"q":480,"r":240,"s":300}],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: daily maximum boundary 1\", \"actual\": [[\"r\", \"p\"], {\"p\": 360, \"q\": 300, \"r\": 60, \"s\": 60}], \"expected\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 300, \"r\": 60, \"s\": 300}], \"passed\": false}, {\"check\": \"regression variant: daily maximum boundary 2\", \"actual\": [[null, null, null], {\"p\": 120, \"q\": 240, \"r\": 180}], \"expected\": [[\"p\", null, \"r\"], {\"p\": 180, \"q\": 240, \"r\": 420}], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 720}], \"expected\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 720}], \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": [[null, null, null], {\"p\": 540, \"q\": 60}], \"expected\": [[null, null, null], {\"p\": 540, \"q\": 120}], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[\"p\"], {\"p\": 240, \"q\": 120, \"r\": 120}], \"expected\": [[\"p\"], {\"p\": 240, \"q\": 120, \"r\": 120}], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[null, \"q\"], {\"p\": 240, \"q\": 600}], \"expected\": [[null, \"p\"], {\"p\": 480, \"q\": 360}], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"p\"], {\"p\": 300, \"q\": 120, \"r\": 60, \"s\": 0}], \"expected\": [[\"r\"], {\"p\": 60, \"q\": 120, \"r\": 300, \"s\": 0}], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"s\", \"q\", \"q\"], {\"p\": 240, \"q\": 480, \"r\": 120, \"s\": 300}], \"expected\": [[\"s\", \"q\", \"q\"], {\"p\": 240, \"q\": 480, \"r\": 240, \"s\": 300}], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}