{"abstract":"A 90-minute exam is seated in a room already running a 120-minute exam.","category":"Exam timetabling constraints","checks":8,"contract":"exams [id, size, duration, splittable], rooms [id, capacity]. Exams are placed largest first (ties by id). A room is compatible if empty or holding only exams of the same duration. Place whole in the compatible room with the least sufficient remaining capacity (ties by id); else if splittable and compatible rooms have enough total space, fill them by descending remaining capacity (ties by id), skipping full rooms; else unplaced. Return placements and unplaced ids.","evaluation_group":"w2-exam-timetabling-constraints-room-allocation-with-splitting","failed_approach":"A 30-minute tolerance still mixes durations.","family":"w2-exam-timetabling-constraints-room-allocation-with-splitting-duration-compatibility","id":"FA-94386","implementations":{"attempt":{"sha256":"30331c2139fc29b3cdfed11eb0be7015f5b4bb2c3309266d7c25c4b140b759ea","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(exams, rooms):\n    rem = {r: c for r, c in rooms}\n    dur = {}\n    place = {}\n    unplaced = []\n    for eid, size, d, split in sorted(exams, key=lambda x: (-x[1], x[0])):\n        ok = [r for r in rem if abs(dur.get(r, d) - d) <= 30]\n        fit = [r for r in ok if rem[r] >= size]\n        if fit:\n            r = min(fit, key=lambda r: (rem[r], r))\n            place[eid] = [[r, size]]\n            rem[r] -= size\n            dur[r] = d\n            continue\n        if split and sum(rem[r] for r in ok) >= size:\n            parts = []\n            left = size\n            for r in sorted(ok, key=lambda r: (-rem[r], r)):\n                if left == 0:\n                    break\n                take = min(rem[r], left)\n                parts.append([r, take])\n                rem[r] -= take\n                dur[r] = d\n                left -= take\n            place[eid] = parts\n            continue\n        unplaced.append(eid)\n    return {'placed': place, 'unplaced': unplaced}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: duration compatibility 1', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 60, 180, True], ['E1', 20, 90, False], ['E2', 80, 120, True], ['E3', 10, 120, False],\n     ['E4', 60, 120, False]],\n    [['R0', 60], ['R1', 40], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E2': [['R0', 60], ['R3', 20]], 'E0': [['R1', 40], ['R2', 20]], 'E3': [['R3', 10]]},\n    'unplaced': ['E4', 'E1']}),\n  ('partial repair guard 3',\n   [[['E0', 10, 90, True], ['E1', 20, 120, True], ['E2', 10, 120, False]], [['R0', 20], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 20]], 'E0': [['R1', 10]]}, 'unplaced': ['E2']}),\n  ('boundary control 4', [[['A', 40, 120, False], ['B', 20, 120, False]], [['R1', 60], ['R2', 40]]],\n   {'placed': {'A': [['R2', 40]], 'B': [['R1', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 10, 120, True]], [['R0', 30], ['R1', 60]]],\n   {'placed': {'E0': [['R0', 20]], 'E1': [['R1', 10]], 'E2': [['R1', 10]]}, 'unplaced': []}),\n  ('normal control 6', [[['E0', 30, 120, True], ['E1', 45, 120, True]], [['R0', 60], ['R1', 50]]],\n   {'placed': {'E1': [['R1', 45]], 'E0': [['R0', 30]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 45, 120, True], ['E1', 60, 120, False], ['E2', 30, 120, False]],\n    [['R0', 50], ['R1', 60], ['R2', 60]]],\n   {'placed': {'E1': [['R1', 60]], 'E0': [['R0', 45]], 'E2': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 80, 90, False], ['E1', 45, 90, True], ['E2', 80, 90, False], ['E3', 20, 120, True],\n     ['E4', 10, 90, True]],\n    [['R0', 50], ['R1', 60]]],\n   {'placed': {'E1': [['R0', 45]], 'E3': [['R1', 20]]}, 'unplaced': ['E0', 'E2', 'E4']})],\n [('regression: duration compatibility 1',\n   [[['E0', 80, 180, True], ['E1', 20, 90, True], ['E2', 80, 90, False], ['E3', 80, 90, True]],\n    [['R0', 60], ['R1', 60], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 60], ['R1', 20]], 'E1': [['R2', 20]]}, 'unplaced': ['E2', 'E3']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 10, 90, True], ['E1', 10, 120, True], ['E2', 30, 120, False], ['E3', 80, 90, False],\n     ['E4', 80, 120, True]],\n    [['R0', 30], ['R1', 40], ['R2', 50]]],\n   {'placed': {'E4': [['R2', 50], ['R1', 30]], 'E2': [['R0', 30]], 'E1': [['R1', 10]]},\n    'unplaced': ['E3', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 45, 90, True], ['E1', 80, 90, False], ['E2', 30, 120, True]], [['R0', 20], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 45]]}, 'unplaced': ['E1', 'E2']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 20]]],\n   {'placed': {'A': [['R1', 30], ['R2', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 80, 120, True], ['E1', 45, 120, True], ['E2', 60, 180, True]],\n    [['R0', 40], ['R1', 40], ['R2', 50]]],\n   {'placed': {'E0': [['R2', 50], ['R0', 30]], 'E1': [['R1', 40], ['R0', 5]]}, 'unplaced': ['E2']}),\n  ('normal control 6',\n   [[['E0', 60, 120, True], ['E1', 60, 120, True], ['E2', 80, 120, True], ['E3', 30, 180, False]],\n    [['R0', 20], ['R1', 40]]],\n   {'placed': {'E0': [['R1', 40], ['R0', 20]]}, 'unplaced': ['E2', 'E1', 'E3']}),\n  ('normal control 7', [[['E0', 20, 120, True], ['E1', 20, 120, False]], [['R0', 60], ['R1', 40]]],\n   {'placed': {'E0': [['R1', 20]], 'E1': [['R1', 20]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 45, 90, True], ['E1', 45, 90, False], ['E2', 80, 120, False]],\n    [['R0', 20], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E0': [['R2', 45]]}, 'unplaced': ['E2', 'E1']})],\n [('regression: duration compatibility 1',\n   [[['E0', 30, 120, True], ['E1', 10, 90, False]], [['R0', 60], ['R1', 60]]],\n   {'placed': {'E0': [['R0', 30]], 'E1': [['R1', 10]]}, 'unplaced': []}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 20, 90, False], ['E1', 30, 180, True], ['E2', 30, 120, True], ['E3', 45, 120, False],\n     ['E4', 10, 120, False]],\n    [['R0', 60], ['R1', 40]]],\n   {'placed': {'E3': [['R0', 45]], 'E1': [['R1', 30]], 'E4': [['R0', 10]]}, 'unplaced': ['E2', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 30, 90, True]],\n    [['R0', 30], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E2': [['R0', 30]], 'E0': [['R1', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('boundary control 4', [[['A', 30, 120, True], ['B', 30, 120, True]], [['R1', 30], ['R2', 40]]],\n   {'placed': {'A': [['R1', 30]], 'B': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, False]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E0': [['R1', 20]], 'E2': [['R0', 20]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 6', [[['E0', 45, 180, False], ['E1', 80, 90, False]], [['R0', 20], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 45]]}, 'unplaced': ['E1']}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 45, 180, True], ['E2', 60, 180, True], ['E3', 30, 120, True],\n     ['E4', 20, 180, True]],\n    [['R0', 40], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 60]], 'E3': [['R0', 30]]}, 'unplaced': ['E2', 'E1', 'E4']}),\n  ('normal control 8',\n   [[['E0', 60, 90, False], ['E1', 80, 90, True], ['E2', 30, 180, False]], [['R0', 40], ['R1', 30]]],\n   {'placed': {'E2': [['R1', 30]]}, 'unplaced': ['E1', 'E0']})],\n [('regression: duration compatibility 1',\n   [[['E0', 60, 180, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 45, 120, True],\n     ['E4', 45, 120, True]],\n    [['R0', 30], ['R1', 20], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E0': [['R3', 50], ['R0', 10]], 'E1': [['R1', 20]], 'E2': [['R2', 10]]},\n    'unplaced': ['E3', 'E4']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 60, 120, True], ['E1', 80, 180, True], ['E2', 10, 90, True]],\n    [['R0', 60], ['R1', 30], ['R2', 60]]],\n   {'placed': {'E1': [['R0', 60], ['R2', 20]], 'E2': [['R1', 10]]}, 'unplaced': ['E0']}),\n  ('partial repair guard 3', [[['E0', 60, 90, True], ['E1', 10, 120, False]], [['R0', 50], ['R1', 20]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 10]]}, 'unplaced': ['E1']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 19]]],\n   {'placed': {}, 'unplaced': ['A']}),\n  ('normal control 5',\n   [[['E0', 10, 180, True], ['E1', 20, 120, False], ['E2', 20, 120, True], ['E3', 10, 120, True],\n     ['E4', 30, 180, False]],\n    [['R0', 50], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E4': [['R1', 30]], 'E1': [['R2', 20]], 'E2': [['R0', 20]], 'E3': [['R2', 10]]},\n    'unplaced': ['E0']}),\n  ('normal control 6',\n   [[['E0', 45, 120, True], ['E1', 10, 120, True]], [['R0', 30], ['R1', 50], ['R2', 50], ['R3', 40]]],\n   {'placed': {'E0': [['R1', 45]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 45, 180, False], ['E2', 45, 180, True], ['E3', 30, 120, False],\n     ['E4', 20, 180, False]],\n    [['R0', 30], ['R1', 60], ['R2', 20], ['R3', 40]]],\n   {'placed': {'E0': [['R1', 60]], 'E2': [['R3', 40], ['R0', 5]], 'E4': [['R2', 20]]},\n    'unplaced': ['E1', 'E3']}),\n  ('normal control 8',\n   [[['E0', 10, 90, True], ['E1', 10, 120, True]], [['R0', 30], ['R1', 30], ['R2', 50], ['R3', 30]]],\n   {'placed': {'E0': [['R0', 10]], 'E1': [['R1', 10]]}, 'unplaced': []})],\n [('regression: duration compatibility 1',\n   [[['E0', 80, 120, True], ['E1', 80, 120, True], ['E2', 20, 180, True], ['E3', 10, 90, True],\n     ['E4', 80, 180, True]],\n    [['R0', 50], ['R1', 60], ['R2', 60]]],\n   {'placed': {'E0': [['R1', 60], ['R2', 20]], 'E1': [['R0', 50], ['R2', 30]]},\n    'unplaced': ['E4', 'E2', 'E3']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, True], ['E3', 20, 90, False],\n     ['E4', 20, 120, True]],\n    [['R0', 20], ['R1', 60], ['R2', 50]]],\n   {'placed': {'E0': [['R0', 20]],\n               'E2': [['R2', 20]],\n               'E3': [['R1', 20]],\n               'E4': [['R2', 20]],\n               'E1': [['R2', 10]]},\n    'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 10, 120, False], ['E1', 80, 180, True], ['E2', 20, 90, True]],\n    [['R0', 30], ['R1', 40], ['R2', 60]]],\n   {'placed': {'E1': [['R2', 60], ['R1', 20]], 'E2': [['R0', 20]]}, 'unplaced': ['E0']}),\n  ('boundary control 4', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('normal control 5', [[['E0', 30, 120, False], ['E1', 45, 120, True]], [['R0', 20], ['R1', 20]]],\n   {'placed': {}, 'unplaced': ['E1', 'E0']}),\n  ('normal control 6',\n   [[['E0', 60, 120, False], ['E1', 10, 120, True], ['E2', 10, 90, True], ['E3', 30, 90, False],\n     ['E4', 80, 120, False]],\n    [['R0', 20], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E3': [['R1', 30]], 'E1': [['R0', 10]], 'E2': [['R2', 10]]}, 'unplaced': ['E4', 'E0']}),\n  ('normal control 7',\n   [[['E0', 20, 120, True], ['E1', 20, 180, True], ['E2', 80, 180, True], ['E3', 80, 90, True],\n     ['E4', 60, 180, False]],\n    [['R0', 30], ['R1', 50]]],\n   {'placed': {'E2': [['R1', 50], ['R0', 30]]}, 'unplaced': ['E3', 'E4', 'E0', 'E1']}),\n  ('normal control 8',\n   [[['E0', 20, 120, True], ['E1', 60, 120, True]], [['R0', 30], ['R1', 40], ['R2', 20], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 40], ['R0', 20]], 'E0': [['R2', 20]]}, 'unplaced': []})]]\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":"b920f7024ed26992b750622e488db791deb6e29e71272a66d833a391af3e50da","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(exams, rooms):\n    rem = {r: c for r, c in rooms}\n    dur = {}\n    place = {}\n    unplaced = []\n    for eid, size, d, split in sorted(exams, key=lambda x: (-x[1], x[0])):\n        ok = [r for r in rem if dur.get(r, d) >= d]\n        fit = [r for r in ok if rem[r] >= size]\n        if fit:\n            r = min(fit, key=lambda r: (rem[r], r))\n            place[eid] = [[r, size]]\n            rem[r] -= size\n            dur[r] = d\n            continue\n        if split and sum(rem[r] for r in ok) >= size:\n            parts = []\n            left = size\n            for r in sorted(ok, key=lambda r: (-rem[r], r)):\n                if left == 0:\n                    break\n                take = min(rem[r], left)\n                parts.append([r, take])\n                rem[r] -= take\n                dur[r] = d\n                left -= take\n            place[eid] = parts\n            continue\n        unplaced.append(eid)\n    return {'placed': place, 'unplaced': unplaced}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: duration compatibility 1', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 60, 180, True], ['E1', 20, 90, False], ['E2', 80, 120, True], ['E3', 10, 120, False],\n     ['E4', 60, 120, False]],\n    [['R0', 60], ['R1', 40], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E2': [['R0', 60], ['R3', 20]], 'E0': [['R1', 40], ['R2', 20]], 'E3': [['R3', 10]]},\n    'unplaced': ['E4', 'E1']}),\n  ('partial repair guard 3',\n   [[['E0', 10, 90, True], ['E1', 20, 120, True], ['E2', 10, 120, False]], [['R0', 20], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 20]], 'E0': [['R1', 10]]}, 'unplaced': ['E2']}),\n  ('boundary control 4', [[['A', 40, 120, False], ['B', 20, 120, False]], [['R1', 60], ['R2', 40]]],\n   {'placed': {'A': [['R2', 40]], 'B': [['R1', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 10, 120, True]], [['R0', 30], ['R1', 60]]],\n   {'placed': {'E0': [['R0', 20]], 'E1': [['R1', 10]], 'E2': [['R1', 10]]}, 'unplaced': []}),\n  ('normal control 6', [[['E0', 30, 120, True], ['E1', 45, 120, True]], [['R0', 60], ['R1', 50]]],\n   {'placed': {'E1': [['R1', 45]], 'E0': [['R0', 30]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 45, 120, True], ['E1', 60, 120, False], ['E2', 30, 120, False]],\n    [['R0', 50], ['R1', 60], ['R2', 60]]],\n   {'placed': {'E1': [['R1', 60]], 'E0': [['R0', 45]], 'E2': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 80, 90, False], ['E1', 45, 90, True], ['E2', 80, 90, False], ['E3', 20, 120, True],\n     ['E4', 10, 90, True]],\n    [['R0', 50], ['R1', 60]]],\n   {'placed': {'E1': [['R0', 45]], 'E3': [['R1', 20]]}, 'unplaced': ['E0', 'E2', 'E4']})],\n [('regression: duration compatibility 1',\n   [[['E0', 80, 180, True], ['E1', 20, 90, True], ['E2', 80, 90, False], ['E3', 80, 90, True]],\n    [['R0', 60], ['R1', 60], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 60], ['R1', 20]], 'E1': [['R2', 20]]}, 'unplaced': ['E2', 'E3']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 10, 90, True], ['E1', 10, 120, True], ['E2', 30, 120, False], ['E3', 80, 90, False],\n     ['E4', 80, 120, True]],\n    [['R0', 30], ['R1', 40], ['R2', 50]]],\n   {'placed': {'E4': [['R2', 50], ['R1', 30]], 'E2': [['R0', 30]], 'E1': [['R1', 10]]},\n    'unplaced': ['E3', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 45, 90, True], ['E1', 80, 90, False], ['E2', 30, 120, True]], [['R0', 20], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 45]]}, 'unplaced': ['E1', 'E2']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 20]]],\n   {'placed': {'A': [['R1', 30], ['R2', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 80, 120, True], ['E1', 45, 120, True], ['E2', 60, 180, True]],\n    [['R0', 40], ['R1', 40], ['R2', 50]]],\n   {'placed': {'E0': [['R2', 50], ['R0', 30]], 'E1': [['R1', 40], ['R0', 5]]}, 'unplaced': ['E2']}),\n  ('normal control 6',\n   [[['E0', 60, 120, True], ['E1', 60, 120, True], ['E2', 80, 120, True], ['E3', 30, 180, False]],\n    [['R0', 20], ['R1', 40]]],\n   {'placed': {'E0': [['R1', 40], ['R0', 20]]}, 'unplaced': ['E2', 'E1', 'E3']}),\n  ('normal control 7', [[['E0', 20, 120, True], ['E1', 20, 120, False]], [['R0', 60], ['R1', 40]]],\n   {'placed': {'E0': [['R1', 20]], 'E1': [['R1', 20]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 45, 90, True], ['E1', 45, 90, False], ['E2', 80, 120, False]],\n    [['R0', 20], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E0': [['R2', 45]]}, 'unplaced': ['E2', 'E1']})],\n [('regression: duration compatibility 1',\n   [[['E0', 30, 120, True], ['E1', 10, 90, False]], [['R0', 60], ['R1', 60]]],\n   {'placed': {'E0': [['R0', 30]], 'E1': [['R1', 10]]}, 'unplaced': []}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 20, 90, False], ['E1', 30, 180, True], ['E2', 30, 120, True], ['E3', 45, 120, False],\n     ['E4', 10, 120, False]],\n    [['R0', 60], ['R1', 40]]],\n   {'placed': {'E3': [['R0', 45]], 'E1': [['R1', 30]], 'E4': [['R0', 10]]}, 'unplaced': ['E2', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 30, 90, True]],\n    [['R0', 30], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E2': [['R0', 30]], 'E0': [['R1', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('boundary control 4', [[['A', 30, 120, True], ['B', 30, 120, True]], [['R1', 30], ['R2', 40]]],\n   {'placed': {'A': [['R1', 30]], 'B': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, False]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E0': [['R1', 20]], 'E2': [['R0', 20]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 6', [[['E0', 45, 180, False], ['E1', 80, 90, False]], [['R0', 20], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 45]]}, 'unplaced': ['E1']}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 45, 180, True], ['E2', 60, 180, True], ['E3', 30, 120, True],\n     ['E4', 20, 180, True]],\n    [['R0', 40], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 60]], 'E3': [['R0', 30]]}, 'unplaced': ['E2', 'E1', 'E4']}),\n  ('normal control 8',\n   [[['E0', 60, 90, False], ['E1', 80, 90, True], ['E2', 30, 180, False]], [['R0', 40], ['R1', 30]]],\n   {'placed': {'E2': [['R1', 30]]}, 'unplaced': ['E1', 'E0']})],\n [('regression: duration compatibility 1',\n   [[['E0', 60, 180, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 45, 120, True],\n     ['E4', 45, 120, True]],\n    [['R0', 30], ['R1', 20], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E0': [['R3', 50], ['R0', 10]], 'E1': [['R1', 20]], 'E2': [['R2', 10]]},\n    'unplaced': ['E3', 'E4']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 60, 120, True], ['E1', 80, 180, True], ['E2', 10, 90, True]],\n    [['R0', 60], ['R1', 30], ['R2', 60]]],\n   {'placed': {'E1': [['R0', 60], ['R2', 20]], 'E2': [['R1', 10]]}, 'unplaced': ['E0']}),\n  ('partial repair guard 3', [[['E0', 60, 90, True], ['E1', 10, 120, False]], [['R0', 50], ['R1', 20]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 10]]}, 'unplaced': ['E1']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 19]]],\n   {'placed': {}, 'unplaced': ['A']}),\n  ('normal control 5',\n   [[['E0', 10, 180, True], ['E1', 20, 120, False], ['E2', 20, 120, True], ['E3', 10, 120, True],\n     ['E4', 30, 180, False]],\n    [['R0', 50], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E4': [['R1', 30]], 'E1': [['R2', 20]], 'E2': [['R0', 20]], 'E3': [['R2', 10]]},\n    'unplaced': ['E0']}),\n  ('normal control 6',\n   [[['E0', 45, 120, True], ['E1', 10, 120, True]], [['R0', 30], ['R1', 50], ['R2', 50], ['R3', 40]]],\n   {'placed': {'E0': [['R1', 45]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 45, 180, False], ['E2', 45, 180, True], ['E3', 30, 120, False],\n     ['E4', 20, 180, False]],\n    [['R0', 30], ['R1', 60], ['R2', 20], ['R3', 40]]],\n   {'placed': {'E0': [['R1', 60]], 'E2': [['R3', 40], ['R0', 5]], 'E4': [['R2', 20]]},\n    'unplaced': ['E1', 'E3']}),\n  ('normal control 8',\n   [[['E0', 10, 90, True], ['E1', 10, 120, True]], [['R0', 30], ['R1', 30], ['R2', 50], ['R3', 30]]],\n   {'placed': {'E0': [['R0', 10]], 'E1': [['R1', 10]]}, 'unplaced': []})],\n [('regression: duration compatibility 1',\n   [[['E0', 80, 120, True], ['E1', 80, 120, True], ['E2', 20, 180, True], ['E3', 10, 90, True],\n     ['E4', 80, 180, True]],\n    [['R0', 50], ['R1', 60], ['R2', 60]]],\n   {'placed': {'E0': [['R1', 60], ['R2', 20]], 'E1': [['R0', 50], ['R2', 30]]},\n    'unplaced': ['E4', 'E2', 'E3']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, True], ['E3', 20, 90, False],\n     ['E4', 20, 120, True]],\n    [['R0', 20], ['R1', 60], ['R2', 50]]],\n   {'placed': {'E0': [['R0', 20]],\n               'E2': [['R2', 20]],\n               'E3': [['R1', 20]],\n               'E4': [['R2', 20]],\n               'E1': [['R2', 10]]},\n    'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 10, 120, False], ['E1', 80, 180, True], ['E2', 20, 90, True]],\n    [['R0', 30], ['R1', 40], ['R2', 60]]],\n   {'placed': {'E1': [['R2', 60], ['R1', 20]], 'E2': [['R0', 20]]}, 'unplaced': ['E0']}),\n  ('boundary control 4', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('normal control 5', [[['E0', 30, 120, False], ['E1', 45, 120, True]], [['R0', 20], ['R1', 20]]],\n   {'placed': {}, 'unplaced': ['E1', 'E0']}),\n  ('normal control 6',\n   [[['E0', 60, 120, False], ['E1', 10, 120, True], ['E2', 10, 90, True], ['E3', 30, 90, False],\n     ['E4', 80, 120, False]],\n    [['R0', 20], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E3': [['R1', 30]], 'E1': [['R0', 10]], 'E2': [['R2', 10]]}, 'unplaced': ['E4', 'E0']}),\n  ('normal control 7',\n   [[['E0', 20, 120, True], ['E1', 20, 180, True], ['E2', 80, 180, True], ['E3', 80, 90, True],\n     ['E4', 60, 180, False]],\n    [['R0', 30], ['R1', 50]]],\n   {'placed': {'E2': [['R1', 50], ['R0', 30]]}, 'unplaced': ['E3', 'E4', 'E0', 'E1']}),\n  ('normal control 8',\n   [[['E0', 20, 120, True], ['E1', 60, 120, True]], [['R0', 30], ['R1', 40], ['R2', 20], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 40], ['R0', 20]], 'E0': [['R2', 20]]}, 'unplaced': []})]]\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":"c3f1f958ea3d159e06914caebe4baef89f64c1e1f3f73086163ab3413781c35b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(exams, rooms):\n    rem = {r: c for r, c in rooms}\n    dur = {}\n    place = {}\n    unplaced = []\n    for eid, size, d, split in sorted(exams, key=lambda x: (-x[1], x[0])):\n        ok = [r for r in rem if dur.get(r, d) == d]\n        fit = [r for r in ok if rem[r] >= size]\n        if fit:\n            r = min(fit, key=lambda r: (rem[r], r))\n            place[eid] = [[r, size]]\n            rem[r] -= size\n            dur[r] = d\n            continue\n        if split and sum(rem[r] for r in ok) >= size:\n            parts = []\n            left = size\n            for r in sorted(ok, key=lambda r: (-rem[r], r)):\n                if left == 0:\n                    break\n                take = min(rem[r], left)\n                parts.append([r, take])\n                rem[r] -= take\n                dur[r] = d\n                left -= take\n            place[eid] = parts\n            continue\n        unplaced.append(eid)\n    return {'placed': place, 'unplaced': unplaced}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: duration compatibility 1', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 60, 180, True], ['E1', 20, 90, False], ['E2', 80, 120, True], ['E3', 10, 120, False],\n     ['E4', 60, 120, False]],\n    [['R0', 60], ['R1', 40], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E2': [['R0', 60], ['R3', 20]], 'E0': [['R1', 40], ['R2', 20]], 'E3': [['R3', 10]]},\n    'unplaced': ['E4', 'E1']}),\n  ('partial repair guard 3',\n   [[['E0', 10, 90, True], ['E1', 20, 120, True], ['E2', 10, 120, False]], [['R0', 20], ['R1', 30]]],\n   {'placed': {'E1': [['R0', 20]], 'E0': [['R1', 10]]}, 'unplaced': ['E2']}),\n  ('boundary control 4', [[['A', 40, 120, False], ['B', 20, 120, False]], [['R1', 60], ['R2', 40]]],\n   {'placed': {'A': [['R2', 40]], 'B': [['R1', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 10, 120, True]], [['R0', 30], ['R1', 60]]],\n   {'placed': {'E0': [['R0', 20]], 'E1': [['R1', 10]], 'E2': [['R1', 10]]}, 'unplaced': []}),\n  ('normal control 6', [[['E0', 30, 120, True], ['E1', 45, 120, True]], [['R0', 60], ['R1', 50]]],\n   {'placed': {'E1': [['R1', 45]], 'E0': [['R0', 30]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 45, 120, True], ['E1', 60, 120, False], ['E2', 30, 120, False]],\n    [['R0', 50], ['R1', 60], ['R2', 60]]],\n   {'placed': {'E1': [['R1', 60]], 'E0': [['R0', 45]], 'E2': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 80, 90, False], ['E1', 45, 90, True], ['E2', 80, 90, False], ['E3', 20, 120, True],\n     ['E4', 10, 90, True]],\n    [['R0', 50], ['R1', 60]]],\n   {'placed': {'E1': [['R0', 45]], 'E3': [['R1', 20]]}, 'unplaced': ['E0', 'E2', 'E4']})],\n [('regression: duration compatibility 1',\n   [[['E0', 80, 180, True], ['E1', 20, 90, True], ['E2', 80, 90, False], ['E3', 80, 90, True]],\n    [['R0', 60], ['R1', 60], ['R2', 20], ['R3', 20]]],\n   {'placed': {'E0': [['R0', 60], ['R1', 20]], 'E1': [['R2', 20]]}, 'unplaced': ['E2', 'E3']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 10, 90, True], ['E1', 10, 120, True], ['E2', 30, 120, False], ['E3', 80, 90, False],\n     ['E4', 80, 120, True]],\n    [['R0', 30], ['R1', 40], ['R2', 50]]],\n   {'placed': {'E4': [['R2', 50], ['R1', 30]], 'E2': [['R0', 30]], 'E1': [['R1', 10]]},\n    'unplaced': ['E3', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 45, 90, True], ['E1', 80, 90, False], ['E2', 30, 120, True]], [['R0', 20], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 45]]}, 'unplaced': ['E1', 'E2']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 20]]],\n   {'placed': {'A': [['R1', 30], ['R2', 20]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 80, 120, True], ['E1', 45, 120, True], ['E2', 60, 180, True]],\n    [['R0', 40], ['R1', 40], ['R2', 50]]],\n   {'placed': {'E0': [['R2', 50], ['R0', 30]], 'E1': [['R1', 40], ['R0', 5]]}, 'unplaced': ['E2']}),\n  ('normal control 6',\n   [[['E0', 60, 120, True], ['E1', 60, 120, True], ['E2', 80, 120, True], ['E3', 30, 180, False]],\n    [['R0', 20], ['R1', 40]]],\n   {'placed': {'E0': [['R1', 40], ['R0', 20]]}, 'unplaced': ['E2', 'E1', 'E3']}),\n  ('normal control 7', [[['E0', 20, 120, True], ['E1', 20, 120, False]], [['R0', 60], ['R1', 40]]],\n   {'placed': {'E0': [['R1', 20]], 'E1': [['R1', 20]]}, 'unplaced': []}),\n  ('normal control 8',\n   [[['E0', 45, 90, True], ['E1', 45, 90, False], ['E2', 80, 120, False]],\n    [['R0', 20], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E0': [['R2', 45]]}, 'unplaced': ['E2', 'E1']})],\n [('regression: duration compatibility 1',\n   [[['E0', 30, 120, True], ['E1', 10, 90, False]], [['R0', 60], ['R1', 60]]],\n   {'placed': {'E0': [['R0', 30]], 'E1': [['R1', 10]]}, 'unplaced': []}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 20, 90, False], ['E1', 30, 180, True], ['E2', 30, 120, True], ['E3', 45, 120, False],\n     ['E4', 10, 120, False]],\n    [['R0', 60], ['R1', 40]]],\n   {'placed': {'E3': [['R0', 45]], 'E1': [['R1', 30]], 'E4': [['R0', 10]]}, 'unplaced': ['E2', 'E0']}),\n  ('partial repair guard 3',\n   [[['E0', 20, 90, True], ['E1', 10, 120, True], ['E2', 30, 90, True]],\n    [['R0', 30], ['R1', 30], ['R2', 50]]],\n   {'placed': {'E2': [['R0', 30]], 'E0': [['R1', 20]], 'E1': [['R2', 10]]}, 'unplaced': []}),\n  ('boundary control 4', [[['A', 30, 120, True], ['B', 30, 120, True]], [['R1', 30], ['R2', 40]]],\n   {'placed': {'A': [['R1', 30]], 'B': [['R2', 30]]}, 'unplaced': []}),\n  ('normal control 5',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, False]], [['R0', 30], ['R1', 20]]],\n   {'placed': {'E0': [['R1', 20]], 'E2': [['R0', 20]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 6', [[['E0', 45, 180, False], ['E1', 80, 90, False]], [['R0', 20], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 45]]}, 'unplaced': ['E1']}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 45, 180, True], ['E2', 60, 180, True], ['E3', 30, 120, True],\n     ['E4', 20, 180, True]],\n    [['R0', 40], ['R1', 60]]],\n   {'placed': {'E0': [['R1', 60]], 'E3': [['R0', 30]]}, 'unplaced': ['E2', 'E1', 'E4']}),\n  ('normal control 8',\n   [[['E0', 60, 90, False], ['E1', 80, 90, True], ['E2', 30, 180, False]], [['R0', 40], ['R1', 30]]],\n   {'placed': {'E2': [['R1', 30]]}, 'unplaced': ['E1', 'E0']})],\n [('regression: duration compatibility 1',\n   [[['E0', 60, 180, True], ['E1', 20, 120, True], ['E2', 10, 120, True], ['E3', 45, 120, True],\n     ['E4', 45, 120, True]],\n    [['R0', 30], ['R1', 20], ['R2', 20], ['R3', 50]]],\n   {'placed': {'E0': [['R3', 50], ['R0', 10]], 'E1': [['R1', 20]], 'E2': [['R2', 10]]},\n    'unplaced': ['E3', 'E4']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 60, 120, True], ['E1', 80, 180, True], ['E2', 10, 90, True]],\n    [['R0', 60], ['R1', 30], ['R2', 60]]],\n   {'placed': {'E1': [['R0', 60], ['R2', 20]], 'E2': [['R1', 10]]}, 'unplaced': ['E0']}),\n  ('partial repair guard 3', [[['E0', 60, 90, True], ['E1', 10, 120, False]], [['R0', 50], ['R1', 20]]],\n   {'placed': {'E0': [['R0', 50], ['R1', 10]]}, 'unplaced': ['E1']}),\n  ('boundary control 4', [[['A', 50, 120, True]], [['R1', 30], ['R2', 19]]],\n   {'placed': {}, 'unplaced': ['A']}),\n  ('normal control 5',\n   [[['E0', 10, 180, True], ['E1', 20, 120, False], ['E2', 20, 120, True], ['E3', 10, 120, True],\n     ['E4', 30, 180, False]],\n    [['R0', 50], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E4': [['R1', 30]], 'E1': [['R2', 20]], 'E2': [['R0', 20]], 'E3': [['R2', 10]]},\n    'unplaced': ['E0']}),\n  ('normal control 6',\n   [[['E0', 45, 120, True], ['E1', 10, 120, True]], [['R0', 30], ['R1', 50], ['R2', 50], ['R3', 40]]],\n   {'placed': {'E0': [['R1', 45]], 'E1': [['R0', 10]]}, 'unplaced': []}),\n  ('normal control 7',\n   [[['E0', 60, 120, False], ['E1', 45, 180, False], ['E2', 45, 180, True], ['E3', 30, 120, False],\n     ['E4', 20, 180, False]],\n    [['R0', 30], ['R1', 60], ['R2', 20], ['R3', 40]]],\n   {'placed': {'E0': [['R1', 60]], 'E2': [['R3', 40], ['R0', 5]], 'E4': [['R2', 20]]},\n    'unplaced': ['E1', 'E3']}),\n  ('normal control 8',\n   [[['E0', 10, 90, True], ['E1', 10, 120, True]], [['R0', 30], ['R1', 30], ['R2', 50], ['R3', 30]]],\n   {'placed': {'E0': [['R0', 10]], 'E1': [['R1', 10]]}, 'unplaced': []})],\n [('regression: duration compatibility 1',\n   [[['E0', 80, 120, True], ['E1', 80, 120, True], ['E2', 20, 180, True], ['E3', 10, 90, True],\n     ['E4', 80, 180, True]],\n    [['R0', 50], ['R1', 60], ['R2', 60]]],\n   {'placed': {'E0': [['R1', 60], ['R2', 20]], 'E1': [['R0', 50], ['R2', 30]]},\n    'unplaced': ['E4', 'E2', 'E3']}),\n  ('regression variant: duration compatibility 2',\n   [[['E0', 20, 90, False], ['E1', 10, 120, False], ['E2', 20, 120, True], ['E3', 20, 90, False],\n     ['E4', 20, 120, True]],\n    [['R0', 20], ['R1', 60], ['R2', 50]]],\n   {'placed': {'E0': [['R0', 20]],\n               'E2': [['R2', 20]],\n               'E3': [['R1', 20]],\n               'E4': [['R2', 20]],\n               'E1': [['R2', 10]]},\n    'unplaced': []}),\n  ('partial repair guard 3',\n   [[['E0', 10, 120, False], ['E1', 80, 180, True], ['E2', 20, 90, True]],\n    [['R0', 30], ['R1', 40], ['R2', 60]]],\n   {'placed': {'E1': [['R2', 60], ['R1', 20]], 'E2': [['R0', 20]]}, 'unplaced': ['E0']}),\n  ('boundary control 4', [[['A', 30, 120, False], ['B', 30, 90, False]], [['R1', 60]]],\n   {'placed': {'A': [['R1', 30]]}, 'unplaced': ['B']}),\n  ('normal control 5', [[['E0', 30, 120, False], ['E1', 45, 120, True]], [['R0', 20], ['R1', 20]]],\n   {'placed': {}, 'unplaced': ['E1', 'E0']}),\n  ('normal control 6',\n   [[['E0', 60, 120, False], ['E1', 10, 120, True], ['E2', 10, 90, True], ['E3', 30, 90, False],\n     ['E4', 80, 120, False]],\n    [['R0', 20], ['R1', 30], ['R2', 30]]],\n   {'placed': {'E3': [['R1', 30]], 'E1': [['R0', 10]], 'E2': [['R2', 10]]}, 'unplaced': ['E4', 'E0']}),\n  ('normal control 7',\n   [[['E0', 20, 120, True], ['E1', 20, 180, True], ['E2', 80, 180, True], ['E3', 80, 90, True],\n     ['E4', 60, 180, False]],\n    [['R0', 30], ['R1', 50]]],\n   {'placed': {'E2': [['R1', 50], ['R0', 30]]}, 'unplaced': ['E3', 'E4', 'E0', 'E1']}),\n  ('normal control 8',\n   [[['E0', 20, 120, True], ['E1', 60, 120, True]], [['R0', 30], ['R1', 40], ['R2', 20], ['R3', 30]]],\n   {'placed': {'E1': [['R1', 40], ['R0', 20]], 'E0': [['R2', 20]]}, 'unplaced': []})]]\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 exam-timetabling rule set for a bounded model; it does not claim conformance with any institution's regulations or a benchmark specification, and it performs no search or optimisation. 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-exam-timetabling-constraints-room-allocation-with-splitting-duration-compatibility","generated_at":"2026-09-29T14:52:03.922564+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Room allocation rules (mixed durations, best fit, splitting) are the second hard-constraint family of exam timetabling.","repair":"Share rooms only between exams of identical duration.","root_cause":"Room compatibility accepts any exam no longer than the room's current duration.","sha256":"e2ed3ca59564679b55a5ca1fa4e3249220c57305aab0af0b61d7f5b12f391287","title":"Shorter exam shares a room with a longer exam · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.059,"exit_code":1,"observations":[{"actual":{"placed":{"A":[["R1",30]],"B":[["R1",30]]},"unplaced":[]},"check":"regression: duration compatibility 1","expected":{"placed":{"A":[["R1",30]]},"unplaced":["B"]},"passed":false},{"actual":{"placed":{"E0":[["R1",40],["R2",20]],"E1":[["R3",20]],"E2":[["R0",60],["R3",20]],"E3":[["R3",10]]},"unplaced":["E4"]},"check":"regression variant: duration compatibility 2","expected":{"placed":{"E0":[["R1",40],["R2",20]],"E2":[["R0",60],["R3",20]],"E3":[["R3",10]]},"unplaced":["E4","E1"]},"passed":false},{"actual":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]],"E2":[["R1",10]]},"unplaced":[]},"check":"partial repair guard 3","expected":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]]},"unplaced":["E2"]},"passed":false},{"actual":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"check":"boundary control 4","expected":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",20]],"E1":[["R0",10]],"E2":[["R1",10]]},"unplaced":[]},"check":"normal control 5","expected":{"placed":{"E0":[["R0",20]],"E1":[["R1",10]],"E2":[["R1",10]]},"unplaced":[]},"passed":false},{"actual":{"placed":{"E0":[["R0",30]],"E1":[["R1",45]]},"unplaced":[]},"check":"normal control 6","expected":{"placed":{"E0":[["R0",30]],"E1":[["R1",45]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",45]],"E1":[["R1",60]],"E2":[["R2",30]]},"unplaced":[]},"check":"normal control 7","expected":{"placed":{"E0":[["R0",45]],"E1":[["R1",60]],"E2":[["R2",30]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E1":[["R0",45]],"E3":[["R1",20]],"E4":[["R1",10]]},"unplaced":["E0","E2"]},"check":"normal control 8","expected":{"placed":{"E1":[["R0",45]],"E3":[["R1",20]]},"unplaced":["E0","E2","E4"]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: duration compatibility 1\", \"actual\": {\"placed\": {\"A\": [[\"R1\", 30]], \"B\": [[\"R1\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R1\", 30]]}, \"unplaced\": [\"B\"]}, \"passed\": false}, {\"check\": \"regression variant: duration compatibility 2\", \"actual\": {\"placed\": {\"E2\": [[\"R0\", 60], [\"R3\", 20]], \"E0\": [[\"R1\", 40], [\"R2\", 20]], \"E1\": [[\"R3\", 20]], \"E3\": [[\"R3\", 10]]}, \"unplaced\": [\"E4\"]}, \"expected\": {\"placed\": {\"E2\": [[\"R0\", 60], [\"R3\", 20]], \"E0\": [[\"R1\", 40], [\"R2\", 20]], \"E3\": [[\"R3\", 10]]}, \"unplaced\": [\"E4\", \"E1\"]}, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": [\"E2\"]}, \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 20]], \"E1\": [[\"R0\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E0\": [[\"R0\", 20]], \"E1\": [[\"R1\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 45]], \"E0\": [[\"R0\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 45]], \"E0\": [[\"R0\", 30]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 60]], \"E0\": [[\"R0\", 45]], \"E2\": [[\"R2\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 60]], \"E0\": [[\"R0\", 45]], \"E2\": [[\"R2\", 30]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 45]], \"E3\": [[\"R1\", 20]], \"E4\": [[\"R1\", 10]]}, \"unplaced\": [\"E0\", \"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 45]], \"E3\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\", \"E2\", \"E4\"]}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.328,"exit_code":1,"observations":[{"actual":{"placed":{"A":[["R1",30]],"B":[["R1",30]]},"unplaced":[]},"check":"regression: duration compatibility 1","expected":{"placed":{"A":[["R1",30]]},"unplaced":["B"]},"passed":false},{"actual":{"placed":{"E0":[["R1",40],["R2",20]],"E1":[["R3",20]],"E2":[["R0",60],["R3",20]]},"unplaced":["E4","E3"]},"check":"regression variant: duration compatibility 2","expected":{"placed":{"E0":[["R1",40],["R2",20]],"E2":[["R0",60],["R3",20]],"E3":[["R3",10]]},"unplaced":["E4","E1"]},"passed":false},{"actual":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]]},"unplaced":["E2"]},"check":"partial repair guard 3","expected":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]]},"unplaced":["E2"]},"passed":true},{"actual":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"check":"boundary control 4","expected":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",20]],"E1":[["R1",10]],"E2":[["R1",10]]},"unplaced":[]},"check":"normal control 5","expected":{"placed":{"E0":[["R0",20]],"E1":[["R1",10]],"E2":[["R1",10]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",30]],"E1":[["R1",45]]},"unplaced":[]},"check":"normal control 6","expected":{"placed":{"E0":[["R0",30]],"E1":[["R1",45]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",45]],"E1":[["R1",60]],"E2":[["R2",30]]},"unplaced":[]},"check":"normal control 7","expected":{"placed":{"E0":[["R0",45]],"E1":[["R1",60]],"E2":[["R2",30]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E1":[["R0",45]],"E3":[["R1",20]],"E4":[["R1",10]]},"unplaced":["E0","E2"]},"check":"normal control 8","expected":{"placed":{"E1":[["R0",45]],"E3":[["R1",20]]},"unplaced":["E0","E2","E4"]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: duration compatibility 1\", \"actual\": {\"placed\": {\"A\": [[\"R1\", 30]], \"B\": [[\"R1\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R1\", 30]]}, \"unplaced\": [\"B\"]}, \"passed\": false}, {\"check\": \"regression variant: duration compatibility 2\", \"actual\": {\"placed\": {\"E2\": [[\"R0\", 60], [\"R3\", 20]], \"E0\": [[\"R1\", 40], [\"R2\", 20]], \"E1\": [[\"R3\", 20]]}, \"unplaced\": [\"E4\", \"E3\"]}, \"expected\": {\"placed\": {\"E2\": [[\"R0\", 60], [\"R3\", 20]], \"E0\": [[\"R1\", 40], [\"R2\", 20]], \"E3\": [[\"R3\", 10]]}, \"unplaced\": [\"E4\", \"E1\"]}, \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": [\"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": [\"E2\"]}, \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 20]], \"E1\": [[\"R1\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E0\": [[\"R0\", 20]], \"E1\": [[\"R1\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 45]], \"E0\": [[\"R0\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 45]], \"E0\": [[\"R0\", 30]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 60]], \"E0\": [[\"R0\", 45]], \"E2\": [[\"R2\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 60]], \"E0\": [[\"R0\", 45]], \"E2\": [[\"R2\", 30]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 45]], \"E3\": [[\"R1\", 20]], \"E4\": [[\"R1\", 10]]}, \"unplaced\": [\"E0\", \"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 45]], \"E3\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\", \"E2\", \"E4\"]}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.328,"exit_code":0,"observations":[{"actual":{"placed":{"A":[["R1",30]]},"unplaced":["B"]},"check":"regression: duration compatibility 1","expected":{"placed":{"A":[["R1",30]]},"unplaced":["B"]},"passed":true},{"actual":{"placed":{"E0":[["R1",40],["R2",20]],"E2":[["R0",60],["R3",20]],"E3":[["R3",10]]},"unplaced":["E4","E1"]},"check":"regression variant: duration compatibility 2","expected":{"placed":{"E0":[["R1",40],["R2",20]],"E2":[["R0",60],["R3",20]],"E3":[["R3",10]]},"unplaced":["E4","E1"]},"passed":true},{"actual":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]]},"unplaced":["E2"]},"check":"partial repair guard 3","expected":{"placed":{"E0":[["R1",10]],"E1":[["R0",20]]},"unplaced":["E2"]},"passed":true},{"actual":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"check":"boundary control 4","expected":{"placed":{"A":[["R2",40]],"B":[["R1",20]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",20]],"E1":[["R1",10]],"E2":[["R1",10]]},"unplaced":[]},"check":"normal control 5","expected":{"placed":{"E0":[["R0",20]],"E1":[["R1",10]],"E2":[["R1",10]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",30]],"E1":[["R1",45]]},"unplaced":[]},"check":"normal control 6","expected":{"placed":{"E0":[["R0",30]],"E1":[["R1",45]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E0":[["R0",45]],"E1":[["R1",60]],"E2":[["R2",30]]},"unplaced":[]},"check":"normal control 7","expected":{"placed":{"E0":[["R0",45]],"E1":[["R1",60]],"E2":[["R2",30]]},"unplaced":[]},"passed":true},{"actual":{"placed":{"E1":[["R0",45]],"E3":[["R1",20]]},"unplaced":["E0","E2","E4"]},"check":"normal control 8","expected":{"placed":{"E1":[["R0",45]],"E3":[["R1",20]]},"unplaced":["E0","E2","E4"]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: duration compatibility 1\", \"actual\": {\"placed\": {\"A\": [[\"R1\", 30]]}, \"unplaced\": [\"B\"]}, \"expected\": {\"placed\": {\"A\": [[\"R1\", 30]]}, \"unplaced\": [\"B\"]}, \"passed\": true}, {\"check\": \"regression variant: duration compatibility 2\", \"actual\": {\"placed\": {\"E2\": [[\"R0\", 60], [\"R3\", 20]], \"E0\": [[\"R1\", 40], [\"R2\", 20]], \"E3\": [[\"R3\", 10]]}, \"unplaced\": [\"E4\", \"E1\"]}, \"expected\": {\"placed\": {\"E2\": [[\"R0\", 60], [\"R3\", 20]], \"E0\": [[\"R1\", 40], [\"R2\", 20]], \"E3\": [[\"R3\", 10]]}, \"unplaced\": [\"E4\", \"E1\"]}, \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": [\"E2\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 20]], \"E0\": [[\"R1\", 10]]}, \"unplaced\": [\"E2\"]}, \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"A\": [[\"R2\", 40]], \"B\": [[\"R1\", 20]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": {\"placed\": {\"E0\": [[\"R0\", 20]], \"E1\": [[\"R1\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E0\": [[\"R0\", 20]], \"E1\": [[\"R1\", 10]], \"E2\": [[\"R1\", 10]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 45]], \"E0\": [[\"R0\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 45]], \"E0\": [[\"R0\", 30]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": {\"placed\": {\"E1\": [[\"R1\", 60]], \"E0\": [[\"R0\", 45]], \"E2\": [[\"R2\", 30]]}, \"unplaced\": []}, \"expected\": {\"placed\": {\"E1\": [[\"R1\", 60]], \"E0\": [[\"R0\", 45]], \"E2\": [[\"R2\", 30]]}, \"unplaced\": []}, \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": {\"placed\": {\"E1\": [[\"R0\", 45]], \"E3\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\", \"E2\", \"E4\"]}, \"expected\": {\"placed\": {\"E1\": [[\"R0\", 45]], \"E3\": [[\"R1\", 20]]}, \"unplaced\": [\"E0\", \"E2\", \"E4\"]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}