{"abstract":"Workers who always refuse stay at the top of the offer list.","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":"Charging half the offer still distorts the rotation.","family":"w2-shift-rostering-labor-rules-overtime-equalization-offers-refusal-charge","id":"FA-94321","implementations":{"attempt":{"sha256":"92c49a892444222bb7313dbacb752a0fd1f4a939a901ba9decb1ada14b1f2956","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 // 2\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: refusal charge 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: refusal charge 2',\n   [{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],\n   [[None, 'q', 'q'], {'p': 120, 'q': 720}]),\n  ('partial repair guard 3',\n   [{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],\n   [[None, 'q', None, None], {'p': 240, 'q': 300}]),\n  ('normal control 4',\n   [{'q': [0, 1, 0], 'r': [60, 2, 600], 's': [0, 3, 240], 'p': [60, 4, 480]},\n    [[120, ['p', 'q']], [240, ['r']], [240, []], [60, ['p']]]],\n   [['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}]),\n  ('normal control 5', [{'p': [60, 1, 480], 'r': [240, 2, 660], 'q': [0, 3, 600]}, [[120, []]]],\n   [['q'], {'p': 60, 'q': 120, 'r': 240}]),\n  ('normal control 6',\n   [{'q': [60, 1, 600], 'p': [240, 2, 240], 's': [120, 3, 240], 'r': [120, 4, 0]},\n    [[120, ['p']], [120, ['r']], [240, ['q', 'p']], [120, ['p']]]],\n   [['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}]),\n  ('normal control 7', [{'p': [0, 1, 660], 'q': [60, 2, 660]}, [[120, ['p']], [120, []], [60, ['q', 'p']]]],\n   [[None, None, None], {'p': 60, 'q': 120}]),\n  ('normal control 8',\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 [('regression: refusal charge 1',\n   [{'p': [60, 1, 480], 'q': [120, 2, 600]}, [[60, ['p', 'q']], [60, ['q', 'p']], [60, ['p', 'q']]]],\n   [[None, None, None], {'p': 240, 'q': 300}]),\n  ('regression variant: refusal charge 2',\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  ('partial repair guard 3',\n   [{'q': [120, 1, 0], 'r': [240, 2, 240], 'p': [0, 3, 0]},\n    [[120, []], [60, ['q', 'r']], [60, ['p']], [60, ['q']]]],\n   [['p', 'p', 'q', 'p'], {'p': 240, 'q': 240, 'r': 240}]),\n  ('normal control 4', [{'p': [60, 1, 240], 'q': [120, 2, 0]}, [[60, ['q']]]], [['p'], {'p': 120, 'q': 120}]),\n  ('normal control 5', [{'r': [120, 1, 240], 'p': [60, 2, 600], 'q': [240, 3, 660]}, [[60, []], [60, []]]],\n   [['p', 'r'], {'p': 120, 'q': 240, 'r': 180}]),\n  ('normal control 6',\n   [{'r': [240, 1, 0], 's': [0, 2, 0], 'p': [120, 3, 660], 'q': [120, 4, 0]},\n    [[60, ['p', 's']], [240, ['r']], [60, ['s', 'r']], [240, ['r']]]],\n   [['q', 's', 'p', 'q'], {'p': 240, 'q': 420, 'r': 240, 's': 300}]),\n  ('normal control 7',\n   [{'r': [240, 1, 600], 'p': [120, 2, 600], 's': [120, 3, 660], 'q': [120, 4, 600]},\n    [[120, []], [240, ['p', 's']], [60, ['s']]]],\n   [['p', None, 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 180}]),\n  ('normal control 8', [{'r': [60, 1, 240], 'q': [120, 2, 240], 'p': [60, 3, 480]}, [[60, ['r', 'p']]]],\n   [['q'], {'p': 120, 'q': 180, 'r': 120}])],\n [('regression: refusal charge 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: refusal charge 2',\n   [{'q': [120, 1, 600], 'p': [240, 2, 0]}, [[120, []], [60, ['p']], [240, []], [120, ['p']]]],\n   [['q', None, 'p', None], {'p': 660, 'q': 240}]),\n  ('partial repair guard 3', [{'q': [120, 1, 480], 'p': [120, 2, 660]}, [[240, ['q', 'p']]]],\n   [[None], {'p': 120, 'q': 360}]),\n  ('normal control 4',\n   [{'q': [0, 1, 240], 'p': [0, 2, 240], 'r': [60, 3, 660]},\n    [[240, ['p']], [120, ['r']], [240, []], [120, ['q']]]],\n   [['q', 'p', 'p', 'p'], {'p': 480, 'q': 360, 'r': 60}]),\n  ('normal control 5',\n   [{'q': [120, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 480]},\n    [[60, ['p']], [60, ['r', 'q']], [60, ['q', 'r']], [120, ['r', 'q']]]],\n   [['q', 'p', 'p', 'p'], {'p': 360, 'q': 360, 'r': 300}]),\n  ('normal control 6', [{'p': [0, 1, 0], 'q': [60, 2, 660], 'r': [0, 3, 0]}, [[60, []]]],\n   [['p'], {'p': 60, 'q': 60, 'r': 0}]),\n  ('normal control 7', [{'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 8', [{'r': [120, 1, 0], 'p': [0, 2, 0], 'q': [120, 3, 480]}, [[60, ['r']], [60, []]]],\n   [['p', 'p'], {'p': 120, 'q': 120, 'r': 120}])],\n [('regression: refusal charge 1', [{'q': [0, 1, 240], 'p': [120, 2, 0]}, [[120, ['p', 'q']], [240, []]]],\n   [[None, 'q'], {'p': 240, 'q': 360}]),\n  ('regression variant: refusal charge 2',\n   [{'r': [0, 1, 600], 'p': [120, 2, 660], 'q': [0, 3, 660]},\n    [[60, ['p', 'r']], [120, ['p', 'r']], [60, ['r', 'p']]]],\n   [['q', None, None], {'p': 180, 'q': 60, 'r': 240}]),\n  ('partial repair guard 3',\n   [{'p': [0, 1, 660], 'q': [120, 2, 480]}, [[60, []], [60, ['p', 'q']], [240, []], [240, ['q']]]],\n   [['p', None, 'q', None], {'p': 60, 'q': 420}]),\n  ('normal control 4',\n   [{'p': [120, 1, 480], 'q': [120, 2, 660], 'r': [120, 3, 0]}, [[240, ['r', 'p']], [240, []]]],\n   [[None, 'p'], {'p': 600, 'q': 120, 'r': 360}]),\n  ('normal control 5',\n   [{'p': [60, 1, 0], 's': [120, 2, 240], 'r': [240, 3, 600], 'q': [240, 4, 480]},\n    [[120, ['r', 's']], [120, []]]],\n   [['p', 's'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),\n  ('normal control 6',\n   [{'p': [120, 1, 600], 'q': [0, 2, 600]}, [[120, ['p']], [240, ['q']], [60, ['p']], [240, ['q']]]],\n   [['q', None, None, None], {'p': 180, 'q': 120}]),\n  ('normal control 7',\n   [{'q': [60, 1, 240], 'p': [60, 2, 480], 'r': [60, 3, 0]},\n    [[120, []], [240, ['r', 'p']], [60, ['q', 'p']]]],\n   [['q', 'q', 'r'], {'p': 360, 'q': 420, 'r': 360}]),\n  ('normal control 8',\n   [{'q': [0, 1, 660], 'p': [120, 2, 480]}, [[60, ['p']], [60, ['p']], [240, []], [60, ['q', 'p']]]],\n   [['q', None, 'p', None], {'p': 420, 'q': 60}])],\n [('regression: refusal charge 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: refusal charge 2',\n   [{'p': [120, 1, 480], 'q': [0, 2, 240]}, [[240, []], [120, ['p']], [60, []], [60, []]]],\n   [['q', 'q', 'p', 'p'], {'p': 360, 'q': 360}]),\n  ('partial repair guard 3',\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 4', [{'p': [60, 1, 600], 'q': [240, 2, 660]}, [[240, ['q']], [60, []]]],\n   [[None, 'p'], {'p': 120, 'q': 240}]),\n  ('normal control 5',\n   [{'p': [0, 1, 600], 'r': [120, 2, 0], 'q': [120, 3, 0], 's': [0, 4, 240]},\n    [[60, ['r']], [60, ['q', 's']]]],\n   [['p', 'p'], {'p': 120, 'q': 120, 'r': 120, 's': 60}]),\n  ('normal control 6',\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}]),\n  ('normal control 7',\n   [{'s': [60, 1, 660], 'r': [0, 2, 660], 'p': [0, 3, 0], 'q': [120, 4, 240]},\n    [[60, []], [120, ['s', 'q']], [240, ['q', 'p']], [240, ['r']]]],\n   [['r', 'p', None, 'p'], {'p': 600, 'q': 360, 'r': 60, 's': 60}]),\n  ('normal control 8',\n   [{'q': [0, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 660]}, [[60, []], [120, []], [240, []]]],\n   [['q', 'q', 'p'], {'p': 360, 'q': 180, 'r': 120}])]]\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":"9cfe2edae258f8761af912aa8ef9efac69de6c9ca01e9a00e4ff1f87d3a04e36","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                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: refusal charge 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: refusal charge 2',\n   [{'q': [120, 1, 0], 'p': [120, 2, 660]}, [[240, ['q']], [240, []], [120, []]]],\n   [[None, 'q', 'q'], {'p': 120, 'q': 720}]),\n  ('partial repair guard 3',\n   [{'q': [120, 1, 600], 'p': [240, 2, 660]}, [[120, ['q']], [60, []], [120, []], [240, []]]],\n   [[None, 'q', None, None], {'p': 240, 'q': 300}]),\n  ('normal control 4',\n   [{'q': [0, 1, 0], 'r': [60, 2, 600], 's': [0, 3, 240], 'p': [60, 4, 480]},\n    [[120, ['p', 'q']], [240, ['r']], [240, []], [60, ['p']]]],\n   [['s', 'p', 'q', 'r'], {'p': 300, 'q': 360, 'r': 120, 's': 120}]),\n  ('normal control 5', [{'p': [60, 1, 480], 'r': [240, 2, 660], 'q': [0, 3, 600]}, [[120, []]]],\n   [['q'], {'p': 60, 'q': 120, 'r': 240}]),\n  ('normal control 6',\n   [{'q': [60, 1, 600], 'p': [240, 2, 240], 's': [120, 3, 240], 'r': [120, 4, 0]},\n    [[120, ['p']], [120, ['r']], [240, ['q', 'p']], [120, ['p']]]],\n   [['q', 's', 'r', 's'], {'p': 360, 'q': 180, 'r': 360, 's': 360}]),\n  ('normal control 7', [{'p': [0, 1, 660], 'q': [60, 2, 660]}, [[120, ['p']], [120, []], [60, ['q', 'p']]]],\n   [[None, None, None], {'p': 60, 'q': 120}]),\n  ('normal control 8',\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 [('regression: refusal charge 1',\n   [{'p': [60, 1, 480], 'q': [120, 2, 600]}, [[60, ['p', 'q']], [60, ['q', 'p']], [60, ['p', 'q']]]],\n   [[None, None, None], {'p': 240, 'q': 300}]),\n  ('regression variant: refusal charge 2',\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  ('partial repair guard 3',\n   [{'q': [120, 1, 0], 'r': [240, 2, 240], 'p': [0, 3, 0]},\n    [[120, []], [60, ['q', 'r']], [60, ['p']], [60, ['q']]]],\n   [['p', 'p', 'q', 'p'], {'p': 240, 'q': 240, 'r': 240}]),\n  ('normal control 4', [{'p': [60, 1, 240], 'q': [120, 2, 0]}, [[60, ['q']]]], [['p'], {'p': 120, 'q': 120}]),\n  ('normal control 5', [{'r': [120, 1, 240], 'p': [60, 2, 600], 'q': [240, 3, 660]}, [[60, []], [60, []]]],\n   [['p', 'r'], {'p': 120, 'q': 240, 'r': 180}]),\n  ('normal control 6',\n   [{'r': [240, 1, 0], 's': [0, 2, 0], 'p': [120, 3, 660], 'q': [120, 4, 0]},\n    [[60, ['p', 's']], [240, ['r']], [60, ['s', 'r']], [240, ['r']]]],\n   [['q', 's', 'p', 'q'], {'p': 240, 'q': 420, 'r': 240, 's': 300}]),\n  ('normal control 7',\n   [{'r': [240, 1, 600], 'p': [120, 2, 600], 's': [120, 3, 660], 'q': [120, 4, 600]},\n    [[120, []], [240, ['p', 's']], [60, ['s']]]],\n   [['p', None, 'q'], {'p': 240, 'q': 180, 'r': 240, 's': 180}]),\n  ('normal control 8', [{'r': [60, 1, 240], 'q': [120, 2, 240], 'p': [60, 3, 480]}, [[60, ['r', 'p']]]],\n   [['q'], {'p': 120, 'q': 180, 'r': 120}])],\n [('regression: refusal charge 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: refusal charge 2',\n   [{'q': [120, 1, 600], 'p': [240, 2, 0]}, [[120, []], [60, ['p']], [240, []], [120, ['p']]]],\n   [['q', None, 'p', None], {'p': 660, 'q': 240}]),\n  ('partial repair guard 3', [{'q': [120, 1, 480], 'p': [120, 2, 660]}, [[240, ['q', 'p']]]],\n   [[None], {'p': 120, 'q': 360}]),\n  ('normal control 4',\n   [{'q': [0, 1, 240], 'p': [0, 2, 240], 'r': [60, 3, 660]},\n    [[240, ['p']], [120, ['r']], [240, []], [120, ['q']]]],\n   [['q', 'p', 'p', 'p'], {'p': 480, 'q': 360, 'r': 60}]),\n  ('normal control 5',\n   [{'q': [120, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 480]},\n    [[60, ['p']], [60, ['r', 'q']], [60, ['q', 'r']], [120, ['r', 'q']]]],\n   [['q', 'p', 'p', 'p'], {'p': 360, 'q': 360, 'r': 300}]),\n  ('normal control 6', [{'p': [0, 1, 0], 'q': [60, 2, 660], 'r': [0, 3, 0]}, [[60, []]]],\n   [['p'], {'p': 60, 'q': 60, 'r': 0}]),\n  ('normal control 7', [{'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 8', [{'r': [120, 1, 0], 'p': [0, 2, 0], 'q': [120, 3, 480]}, [[60, ['r']], [60, []]]],\n   [['p', 'p'], {'p': 120, 'q': 120, 'r': 120}])],\n [('regression: refusal charge 1', [{'q': [0, 1, 240], 'p': [120, 2, 0]}, [[120, ['p', 'q']], [240, []]]],\n   [[None, 'q'], {'p': 240, 'q': 360}]),\n  ('regression variant: refusal charge 2',\n   [{'r': [0, 1, 600], 'p': [120, 2, 660], 'q': [0, 3, 660]},\n    [[60, ['p', 'r']], [120, ['p', 'r']], [60, ['r', 'p']]]],\n   [['q', None, None], {'p': 180, 'q': 60, 'r': 240}]),\n  ('partial repair guard 3',\n   [{'p': [0, 1, 660], 'q': [120, 2, 480]}, [[60, []], [60, ['p', 'q']], [240, []], [240, ['q']]]],\n   [['p', None, 'q', None], {'p': 60, 'q': 420}]),\n  ('normal control 4',\n   [{'p': [120, 1, 480], 'q': [120, 2, 660], 'r': [120, 3, 0]}, [[240, ['r', 'p']], [240, []]]],\n   [[None, 'p'], {'p': 600, 'q': 120, 'r': 360}]),\n  ('normal control 5',\n   [{'p': [60, 1, 0], 's': [120, 2, 240], 'r': [240, 3, 600], 'q': [240, 4, 480]},\n    [[120, ['r', 's']], [120, []]]],\n   [['p', 's'], {'p': 180, 'q': 240, 'r': 240, 's': 240}]),\n  ('normal control 6',\n   [{'p': [120, 1, 600], 'q': [0, 2, 600]}, [[120, ['p']], [240, ['q']], [60, ['p']], [240, ['q']]]],\n   [['q', None, None, None], {'p': 180, 'q': 120}]),\n  ('normal control 7',\n   [{'q': [60, 1, 240], 'p': [60, 2, 480], 'r': [60, 3, 0]},\n    [[120, []], [240, ['r', 'p']], [60, ['q', 'p']]]],\n   [['q', 'q', 'r'], {'p': 360, 'q': 420, 'r': 360}]),\n  ('normal control 8',\n   [{'q': [0, 1, 660], 'p': [120, 2, 480]}, [[60, ['p']], [60, ['p']], [240, []], [60, ['q', 'p']]]],\n   [['q', None, 'p', None], {'p': 420, 'q': 60}])],\n [('regression: refusal charge 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: refusal charge 2',\n   [{'p': [120, 1, 480], 'q': [0, 2, 240]}, [[240, []], [120, ['p']], [60, []], [60, []]]],\n   [['q', 'q', 'p', 'p'], {'p': 360, 'q': 360}]),\n  ('partial repair guard 3',\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 4', [{'p': [60, 1, 600], 'q': [240, 2, 660]}, [[240, ['q']], [60, []]]],\n   [[None, 'p'], {'p': 120, 'q': 240}]),\n  ('normal control 5',\n   [{'p': [0, 1, 600], 'r': [120, 2, 0], 'q': [120, 3, 0], 's': [0, 4, 240]},\n    [[60, ['r']], [60, ['q', 's']]]],\n   [['p', 'p'], {'p': 120, 'q': 120, 'r': 120, 's': 60}]),\n  ('normal control 6',\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}]),\n  ('normal control 7',\n   [{'s': [60, 1, 660], 'r': [0, 2, 660], 'p': [0, 3, 0], 'q': [120, 4, 240]},\n    [[60, []], [120, ['s', 'q']], [240, ['q', 'p']], [240, ['r']]]],\n   [['r', 'p', None, 'p'], {'p': 600, 'q': 360, 'r': 60, 's': 60}]),\n  ('normal control 8',\n   [{'q': [0, 1, 0], 'p': [120, 2, 240], 'r': [120, 3, 660]}, [[60, []], [120, []], [240, []]]],\n   [['q', 'q', 'p'], {'p': 360, 'q': 180, 'r': 120}])]]\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-refusal-charge","generated_at":"2026-09-29T14:52:03.279284+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":"Refusals skip the worker without charging the offered minutes.","sha256":"c165e1d2a84ee72b863e98ca30ff3f29f7e9a28e09ca92a44e68f4480a883f08","title":"Refused overtime offers not charged to the ledger · 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.03,"exit_code":1,"observations":[{"actual":[["r","s"],{"p":120,"q":180,"r":60,"s":300}],"check":"regression: refusal charge 1","expected":[["r","s"],{"p":120,"q":300,"r":60,"s":300}],"passed":false},{"actual":[[null,"q","q"],{"p":120,"q":600}],"check":"regression variant: refusal charge 2","expected":[[null,"q","q"],{"p":120,"q":720}],"passed":false},{"actual":[[null,"q",null,null],{"p":240,"q":240}],"check":"partial repair guard 3","expected":[[null,"q",null,null],{"p":240,"q":300}],"passed":false},{"actual":[["s","q","p","r"],{"p":300,"q":300,"r":120,"s":120}],"check":"normal control 4","expected":[["s","p","q","r"],{"p":300,"q":360,"r":120,"s":120}],"passed":false},{"actual":[["q"],{"p":60,"q":120,"r":240}],"check":"normal control 5","expected":[["q"],{"p":60,"q":120,"r":240}],"passed":true},{"actual":[["q","s","r","s"],{"p":300,"q":180,"r":360,"s":360}],"check":"normal control 6","expected":[["q","s","r","s"],{"p":360,"q":180,"r":360,"s":360}],"passed":false},{"actual":[[null,null,null],{"p":30,"q":90}],"check":"normal control 7","expected":[[null,null,null],{"p":60,"q":120}],"passed":false},{"actual":[["q","p",null,null],{"p":480,"q":120}],"check":"normal control 8","expected":[["q","p",null,null],{"p":660,"q":120}],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: refusal charge 1\", \"actual\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 180, \"r\": 60, \"s\": 300}], \"expected\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 300, \"r\": 60, \"s\": 300}], \"passed\": false}, {\"check\": \"regression variant: refusal charge 2\", \"actual\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 600}], \"expected\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 720}], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[null, \"q\", null, null], {\"p\": 240, \"q\": 240}], \"expected\": [[null, \"q\", null, null], {\"p\": 240, \"q\": 300}], \"passed\": false}, {\"check\": \"normal control 4\", \"actual\": [[\"s\", \"q\", \"p\", \"r\"], {\"p\": 300, \"q\": 300, \"r\": 120, \"s\": 120}], \"expected\": [[\"s\", \"p\", \"q\", \"r\"], {\"p\": 300, \"q\": 360, \"r\": 120, \"s\": 120}], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[\"q\"], {\"p\": 60, \"q\": 120, \"r\": 240}], \"expected\": [[\"q\"], {\"p\": 60, \"q\": 120, \"r\": 240}], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"q\", \"s\", \"r\", \"s\"], {\"p\": 300, \"q\": 180, \"r\": 360, \"s\": 360}], \"expected\": [[\"q\", \"s\", \"r\", \"s\"], {\"p\": 360, \"q\": 180, \"r\": 360, \"s\": 360}], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[null, null, null], {\"p\": 30, \"q\": 90}], \"expected\": [[null, null, null], {\"p\": 60, \"q\": 120}], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"q\", \"p\", null, null], {\"p\": 480, \"q\": 120}], \"expected\": [[\"q\", \"p\", null, null], {\"p\": 660, \"q\": 120}], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.916,"exit_code":1,"observations":[{"actual":[["r","s"],{"p":120,"q":60,"r":60,"s":300}],"check":"regression: refusal charge 1","expected":[["r","s"],{"p":120,"q":300,"r":60,"s":300}],"passed":false},{"actual":[[null,"q","q"],{"p":120,"q":480}],"check":"regression variant: refusal charge 2","expected":[[null,"q","q"],{"p":120,"q":720}],"passed":false},{"actual":[[null,"q",null,null],{"p":240,"q":180}],"check":"partial repair guard 3","expected":[[null,"q",null,null],{"p":240,"q":300}],"passed":false},{"actual":[["s","q","p","r"],{"p":300,"q":240,"r":120,"s":120}],"check":"normal control 4","expected":[["s","p","q","r"],{"p":300,"q":360,"r":120,"s":120}],"passed":false},{"actual":[["q"],{"p":60,"q":120,"r":240}],"check":"normal control 5","expected":[["q"],{"p":60,"q":120,"r":240}],"passed":true},{"actual":[["q","s","r","s"],{"p":240,"q":180,"r":360,"s":360}],"check":"normal control 6","expected":[["q","s","r","s"],{"p":360,"q":180,"r":360,"s":360}],"passed":false},{"actual":[[null,null,null],{"p":0,"q":60}],"check":"normal control 7","expected":[[null,null,null],{"p":60,"q":120}],"passed":false},{"actual":[["q","p",null,null],{"p":300,"q":120}],"check":"normal control 8","expected":[["q","p",null,null],{"p":660,"q":120}],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: refusal charge 1\", \"actual\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 60, \"r\": 60, \"s\": 300}], \"expected\": [[\"r\", \"s\"], {\"p\": 120, \"q\": 300, \"r\": 60, \"s\": 300}], \"passed\": false}, {\"check\": \"regression variant: refusal charge 2\", \"actual\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 480}], \"expected\": [[null, \"q\", \"q\"], {\"p\": 120, \"q\": 720}], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[null, \"q\", null, null], {\"p\": 240, \"q\": 180}], \"expected\": [[null, \"q\", null, null], {\"p\": 240, \"q\": 300}], \"passed\": false}, {\"check\": \"normal control 4\", \"actual\": [[\"s\", \"q\", \"p\", \"r\"], {\"p\": 300, \"q\": 240, \"r\": 120, \"s\": 120}], \"expected\": [[\"s\", \"p\", \"q\", \"r\"], {\"p\": 300, \"q\": 360, \"r\": 120, \"s\": 120}], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[\"q\"], {\"p\": 60, \"q\": 120, \"r\": 240}], \"expected\": [[\"q\"], {\"p\": 60, \"q\": 120, \"r\": 240}], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"q\", \"s\", \"r\", \"s\"], {\"p\": 240, \"q\": 180, \"r\": 360, \"s\": 360}], \"expected\": [[\"q\", \"s\", \"r\", \"s\"], {\"p\": 360, \"q\": 180, \"r\": 360, \"s\": 360}], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[null, null, null], {\"p\": 0, \"q\": 60}], \"expected\": [[null, null, null], {\"p\": 60, \"q\": 120}], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"q\", \"p\", null, null], {\"p\": 300, \"q\": 120}], \"expected\": [[\"q\", \"p\", null, null], {\"p\": 660, \"q\": 120}], \"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."}}