{"abstract":"Rooms with fewer candidates than the ratio get no invigilator.","category":"Exam timetabling constraints","checks":8,"contract":"rooms [room, venue, candidates, has access-arrangement candidate]. A room with candidates needs ceil(candidates / ratio) invigilators plus one if it has an access arrangement; an empty room needs none. Each venue with any invigilators also needs one chief invigilator. Return [per room, per venue including chief, grand total].","evaluation_group":"w2-exam-timetabling-constraints-invigilator-requirement","failed_approach":"Adding one to the floor over-staffs rooms at exact multiples.","family":"w2-exam-timetabling-constraints-invigilator-requirement-ratio-ceiling","id":"FA-94461","implementations":{"attempt":{"sha256":"5d1d9e68fb379d9feecc4279e57da69dabf96290b8e8d0182de64e6c9868f2bf","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rooms, ratio):\n    per = {}\n    venue = {}\n    for r, v, n, acc in rooms:\n        k = 0\n        if n > 0:\n            k = n // ratio + 1\n            if acc:\n                k += 1\n        per[r] = k\n        venue.setdefault(v, 0)\n        venue[v] += k\n    for v in venue:\n        if venue[v] > 0:\n            venue[v] += 1\n    return [per, venue, sum(venue.values())]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ratio ceiling 1', [[['R1', 'main', 31, False]], 30], [{'R1': 2}, {'main': 3}, 3]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'lab', 25, False], ['R1', 'main', 1, False], ['R2', 'main', 0, True], ['R3', 'annex', 31, False],\n     ['R4', 'annex', 60, True]],\n    25],\n   [{'R0': 1, 'R1': 1, 'R2': 0, 'R3': 2, 'R4': 4}, {'lab': 2, 'main': 2, 'annex': 7}, 11]),\n  ('partial repair guard 3',\n   [[['R0', 'main', 60, False], ['R1', 'main', 0, False], ['R2', 'lab', 15, True],\n     ['R3', 'annex', 30, False]],\n    30],\n   [{'R0': 2, 'R1': 0, 'R2': 2, 'R3': 1}, {'main': 3, 'lab': 3, 'annex': 2}, 8]),\n  ('boundary control 4', [[['R1', 'main', 0, False], ['R2', 'annex', 5, False]], 30],\n   [{'R1': 0, 'R2': 1}, {'main': 0, 'annex': 2}, 2]),\n  ('normal control 5',\n   [[['R0', 'annex', 31, True], ['R1', 'main', 25, False], ['R2', 'main', 25, False],\n     ['R3', 'annex', 31, False]],\n    25],\n   [{'R0': 3, 'R1': 1, 'R2': 1, 'R3': 2}, {'annex': 6, 'main': 3}, 9]),\n  ('normal control 6', [[['R0', 'annex', 61, False]], 30], [{'R0': 3}, {'annex': 4}, 4]),\n  ('normal control 7',\n   [[['R0', 'main', 31, False], ['R1', 'main', 31, False], ['R2', 'lab', 60, True],\n     ['R3', 'annex', 60, False]],\n    25],\n   [{'R0': 2, 'R1': 2, 'R2': 4, 'R3': 3}, {'main': 5, 'lab': 5, 'annex': 4}, 14]),\n  ('normal control 8', [[['R0', 'main', 60, True], ['R1', 'lab', 61, False], ['R2', 'lab', 25, False]], 30],\n   [{'R0': 3, 'R1': 3, 'R2': 1}, {'main': 4, 'lab': 5}, 9])],\n [('regression: ratio ceiling 1', [[['R1', 'main', 0, False], ['R2', 'annex', 5, False]], 30],\n   [{'R1': 0, 'R2': 1}, {'main': 0, 'annex': 2}, 2]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'lab', 1, True], ['R1', 'lab', 31, True], ['R2', 'lab', 0, True]], 30],\n   [{'R0': 2, 'R1': 3, 'R2': 0}, {'lab': 6}, 6]),\n  ('partial repair guard 3', [[['R0', 'annex', 0, True], ['R1', 'lab', 30, False]], 30],\n   [{'R0': 0, 'R1': 1}, {'annex': 0, 'lab': 2}, 2]),\n  ('boundary control 4', [[['R1', 'main', 31, False]], 30], [{'R1': 2}, {'main': 3}, 3]),\n  ('normal control 5',\n   [[['R0', 'main', 0, False], ['R1', 'main', 60, False], ['R2', 'main', 0, False],\n     ['R3', 'annex', 30, False]],\n    30],\n   [{'R0': 0, 'R1': 2, 'R2': 0, 'R3': 1}, {'main': 3, 'annex': 2}, 5]),\n  ('normal control 6',\n   [[['R0', 'main', 31, False], ['R1', 'main', 15, False], ['R2', 'annex', 31, False],\n     ['R3', 'main', 0, True], ['R4', 'main', 0, False]],\n    25],\n   [{'R0': 2, 'R1': 1, 'R2': 2, 'R3': 0, 'R4': 0}, {'main': 4, 'annex': 3}, 7]),\n  ('normal control 7',\n   [[['R0', 'lab', 0, False], ['R1', 'main', 25, False], ['R2', 'lab', 60, False], ['R3', 'annex', 0, False],\n     ['R4', 'annex', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 3, 'R3': 0, 'R4': 2}, {'lab': 4, 'main': 2, 'annex': 3}, 9]),\n  ('normal control 8',\n   [[['R0', 'lab', 0, False], ['R1', 'lab', 15, False], ['R2', 'annex', 0, False], ['R3', 'annex', 30, False],\n     ['R4', 'main', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 0, 'R3': 2, 'R4': 2}, {'lab': 2, 'annex': 3, 'main': 3}, 8])],\n [('regression: ratio ceiling 1', [[['R1', 'main', 12, True], ['R2', 'main', 40, False]], 25],\n   [{'R1': 2, 'R2': 2}, {'main': 5}, 5]),\n  ('regression variant: ratio ceiling 2', [[['R0', 'lab', 0, False], ['R1', 'main', 31, False]], 30],\n   [{'R0': 0, 'R1': 2}, {'lab': 0, 'main': 3}, 3]),\n  ('partial repair guard 3',\n   [[['R0', 'lab', 31, False], ['R1', 'main', 60, True], ['R2', 'lab', 0, False], ['R3', 'annex', 1, False],\n     ['R4', 'annex', 15, False]],\n    30],\n   [{'R0': 2, 'R1': 3, 'R2': 0, 'R3': 1, 'R4': 1}, {'lab': 3, 'main': 4, 'annex': 3}, 10]),\n  ('normal control 4',\n   [[['R0', 'lab', 25, False], ['R1', 'annex', 61, True], ['R2', 'annex', 1, False],\n     ['R3', 'main', 0, False]],\n    25],\n   [{'R0': 1, 'R1': 4, 'R2': 1, 'R3': 0}, {'lab': 2, 'annex': 6, 'main': 0}, 8]),\n  ('normal control 5', [[['R0', 'main', 0, False]], 30], [{'R0': 0}, {'main': 0}, 0]),\n  ('normal control 6',\n   [[['R0', 'main', 0, False], ['R1', 'annex', 1, False], ['R2', 'main', 15, False], ['R3', 'lab', 0, False],\n     ['R4', 'main', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 1, 'R3': 0, 'R4': 2}, {'main': 4, 'annex': 2, 'lab': 0}, 6]),\n  ('normal control 7',\n   [[['R0', 'main', 61, False], ['R1', 'lab', 60, True], ['R2', 'annex', 30, False], ['R3', 'lab', 25, False],\n     ['R4', 'main', 61, False]],\n    25],\n   [{'R0': 3, 'R1': 4, 'R2': 2, 'R3': 1, 'R4': 3}, {'main': 7, 'lab': 6, 'annex': 3}, 16]),\n  ('normal control 8',\n   [[['R0', 'annex', 30, False], ['R1', 'annex', 0, True], ['R2', 'main', 0, True], ['R3', 'lab', 0, False],\n     ['R4', 'annex', 0, False]],\n    25],\n   [{'R0': 2, 'R1': 0, 'R2': 0, 'R3': 0, 'R4': 0}, {'annex': 3, 'main': 0, 'lab': 0}, 3])],\n [('regression: ratio ceiling 1', [[['R0', 'lab', 60, False], ['R1', 'lab', 25, True]], 30],\n   [{'R0': 2, 'R1': 2}, {'lab': 5}, 5]),\n  ('regression variant: ratio ceiling 2', [[['R0', 'annex', 25, True]], 30], [{'R0': 2}, {'annex': 3}, 3]),\n  ('partial repair guard 3', [[['R0', 'annex', 30, True], ['R1', 'annex', 15, False]], 30],\n   [{'R0': 2, 'R1': 1}, {'annex': 4}, 4]),\n  ('boundary control 4', [[['R1', 'main', 0, True]], 30], [{'R1': 0}, {'main': 0}, 0]),\n  ('normal control 5', [[['R0', 'main', 0, False], ['R1', 'main', 15, False], ['R2', 'lab', 61, True]], 25],\n   [{'R0': 0, 'R1': 1, 'R2': 4}, {'main': 2, 'lab': 5}, 7]),\n  ('normal control 6',\n   [[['R0', 'annex', 15, False], ['R1', 'lab', 1, False], ['R2', 'lab', 0, False],\n     ['R3', 'annex', 25, False]],\n    30],\n   [{'R0': 1, 'R1': 1, 'R2': 0, 'R3': 1}, {'annex': 3, 'lab': 2}, 5]),\n  ('normal control 7',\n   [[['R0', 'annex', 31, False], ['R1', 'lab', 60, False], ['R2', 'main', 0, False], ['R3', 'lab', 1, False],\n     ['R4', 'annex', 15, False]],\n    25],\n   [{'R0': 2, 'R1': 3, 'R2': 0, 'R3': 1, 'R4': 1}, {'annex': 4, 'lab': 5, 'main': 0}, 9]),\n  ('normal control 8',\n   [[['R0', 'main', 30, False], ['R1', 'annex', 61, False], ['R2', 'main', 61, True],\n     ['R3', 'annex', 60, False], ['R4', 'annex', 1, True]],\n    30],\n   [{'R0': 1, 'R1': 3, 'R2': 4, 'R3': 2, 'R4': 2}, {'main': 6, 'annex': 8}, 14])],\n [('regression: ratio ceiling 1',\n   [[['R0', 'annex', 31, False], ['R1', 'lab', 25, True], ['R2', 'lab', 61, False], ['R3', 'annex', 1, True]],\n    30],\n   [{'R0': 2, 'R1': 2, 'R2': 3, 'R3': 2}, {'annex': 5, 'lab': 6}, 11]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'annex', 61, False], ['R1', 'lab', 15, False], ['R2', 'annex', 1, True],\n     ['R3', 'annex', 61, False]],\n    30],\n   [{'R0': 3, 'R1': 1, 'R2': 2, 'R3': 3}, {'annex': 9, 'lab': 2}, 11]),\n  ('partial repair guard 3',\n   [[['R0', 'main', 25, False], ['R1', 'lab', 0, False], ['R2', 'main', 1, False], ['R3', 'main', 60, True],\n     ['R4', 'main', 15, True]],\n    25],\n   [{'R0': 1, 'R1': 0, 'R2': 1, 'R3': 4, 'R4': 2}, {'main': 9, 'lab': 0}, 9]),\n  ('boundary control 4', [[['R1', 'main', 30, False]], 30], [{'R1': 1}, {'main': 2}, 2]),\n  ('normal control 5',\n   [[['R0', 'main', 61, True], ['R1', 'annex', 15, False], ['R2', 'main', 30, False], ['R3', 'lab', 1, False],\n     ['R4', 'main', 31, True]],\n    30],\n   [{'R0': 4, 'R1': 1, 'R2': 1, 'R3': 1, 'R4': 3}, {'main': 9, 'annex': 2, 'lab': 2}, 13]),\n  ('normal control 6', [[['R0', 'lab', 0, False], ['R1', 'main', 25, True]], 30],\n   [{'R0': 0, 'R1': 2}, {'lab': 0, 'main': 3}, 3]),\n  ('normal control 7', [[['R0', 'lab', 31, True], ['R1', 'lab', 61, False], ['R2', 'main', 61, False]], 25],\n   [{'R0': 3, 'R1': 3, 'R2': 3}, {'lab': 7, 'main': 4}, 11]),\n  ('normal control 8',\n   [[['R0', 'annex', 0, True], ['R1', 'main', 0, False], ['R2', 'main', 15, False], ['R3', 'lab', 1, True],\n     ['R4', 'annex', 25, False]],\n    30],\n   [{'R0': 0, 'R1': 0, 'R2': 1, 'R3': 2, 'R4': 1}, {'annex': 2, 'main': 2, 'lab': 3}, 7])]]\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":"ded634fca8615ad9e5cef454ac5b64bf83ec7f449c61f16214283495a104753f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rooms, ratio):\n    per = {}\n    venue = {}\n    for r, v, n, acc in rooms:\n        k = 0\n        if n > 0:\n            k = n // ratio\n            if acc:\n                k += 1\n        per[r] = k\n        venue.setdefault(v, 0)\n        venue[v] += k\n    for v in venue:\n        if venue[v] > 0:\n            venue[v] += 1\n    return [per, venue, sum(venue.values())]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ratio ceiling 1', [[['R1', 'main', 31, False]], 30], [{'R1': 2}, {'main': 3}, 3]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'lab', 25, False], ['R1', 'main', 1, False], ['R2', 'main', 0, True], ['R3', 'annex', 31, False],\n     ['R4', 'annex', 60, True]],\n    25],\n   [{'R0': 1, 'R1': 1, 'R2': 0, 'R3': 2, 'R4': 4}, {'lab': 2, 'main': 2, 'annex': 7}, 11]),\n  ('partial repair guard 3',\n   [[['R0', 'main', 60, False], ['R1', 'main', 0, False], ['R2', 'lab', 15, True],\n     ['R3', 'annex', 30, False]],\n    30],\n   [{'R0': 2, 'R1': 0, 'R2': 2, 'R3': 1}, {'main': 3, 'lab': 3, 'annex': 2}, 8]),\n  ('boundary control 4', [[['R1', 'main', 0, False], ['R2', 'annex', 5, False]], 30],\n   [{'R1': 0, 'R2': 1}, {'main': 0, 'annex': 2}, 2]),\n  ('normal control 5',\n   [[['R0', 'annex', 31, True], ['R1', 'main', 25, False], ['R2', 'main', 25, False],\n     ['R3', 'annex', 31, False]],\n    25],\n   [{'R0': 3, 'R1': 1, 'R2': 1, 'R3': 2}, {'annex': 6, 'main': 3}, 9]),\n  ('normal control 6', [[['R0', 'annex', 61, False]], 30], [{'R0': 3}, {'annex': 4}, 4]),\n  ('normal control 7',\n   [[['R0', 'main', 31, False], ['R1', 'main', 31, False], ['R2', 'lab', 60, True],\n     ['R3', 'annex', 60, False]],\n    25],\n   [{'R0': 2, 'R1': 2, 'R2': 4, 'R3': 3}, {'main': 5, 'lab': 5, 'annex': 4}, 14]),\n  ('normal control 8', [[['R0', 'main', 60, True], ['R1', 'lab', 61, False], ['R2', 'lab', 25, False]], 30],\n   [{'R0': 3, 'R1': 3, 'R2': 1}, {'main': 4, 'lab': 5}, 9])],\n [('regression: ratio ceiling 1', [[['R1', 'main', 0, False], ['R2', 'annex', 5, False]], 30],\n   [{'R1': 0, 'R2': 1}, {'main': 0, 'annex': 2}, 2]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'lab', 1, True], ['R1', 'lab', 31, True], ['R2', 'lab', 0, True]], 30],\n   [{'R0': 2, 'R1': 3, 'R2': 0}, {'lab': 6}, 6]),\n  ('partial repair guard 3', [[['R0', 'annex', 0, True], ['R1', 'lab', 30, False]], 30],\n   [{'R0': 0, 'R1': 1}, {'annex': 0, 'lab': 2}, 2]),\n  ('boundary control 4', [[['R1', 'main', 31, False]], 30], [{'R1': 2}, {'main': 3}, 3]),\n  ('normal control 5',\n   [[['R0', 'main', 0, False], ['R1', 'main', 60, False], ['R2', 'main', 0, False],\n     ['R3', 'annex', 30, False]],\n    30],\n   [{'R0': 0, 'R1': 2, 'R2': 0, 'R3': 1}, {'main': 3, 'annex': 2}, 5]),\n  ('normal control 6',\n   [[['R0', 'main', 31, False], ['R1', 'main', 15, False], ['R2', 'annex', 31, False],\n     ['R3', 'main', 0, True], ['R4', 'main', 0, False]],\n    25],\n   [{'R0': 2, 'R1': 1, 'R2': 2, 'R3': 0, 'R4': 0}, {'main': 4, 'annex': 3}, 7]),\n  ('normal control 7',\n   [[['R0', 'lab', 0, False], ['R1', 'main', 25, False], ['R2', 'lab', 60, False], ['R3', 'annex', 0, False],\n     ['R4', 'annex', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 3, 'R3': 0, 'R4': 2}, {'lab': 4, 'main': 2, 'annex': 3}, 9]),\n  ('normal control 8',\n   [[['R0', 'lab', 0, False], ['R1', 'lab', 15, False], ['R2', 'annex', 0, False], ['R3', 'annex', 30, False],\n     ['R4', 'main', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 0, 'R3': 2, 'R4': 2}, {'lab': 2, 'annex': 3, 'main': 3}, 8])],\n [('regression: ratio ceiling 1', [[['R1', 'main', 12, True], ['R2', 'main', 40, False]], 25],\n   [{'R1': 2, 'R2': 2}, {'main': 5}, 5]),\n  ('regression variant: ratio ceiling 2', [[['R0', 'lab', 0, False], ['R1', 'main', 31, False]], 30],\n   [{'R0': 0, 'R1': 2}, {'lab': 0, 'main': 3}, 3]),\n  ('partial repair guard 3',\n   [[['R0', 'lab', 31, False], ['R1', 'main', 60, True], ['R2', 'lab', 0, False], ['R3', 'annex', 1, False],\n     ['R4', 'annex', 15, False]],\n    30],\n   [{'R0': 2, 'R1': 3, 'R2': 0, 'R3': 1, 'R4': 1}, {'lab': 3, 'main': 4, 'annex': 3}, 10]),\n  ('normal control 4',\n   [[['R0', 'lab', 25, False], ['R1', 'annex', 61, True], ['R2', 'annex', 1, False],\n     ['R3', 'main', 0, False]],\n    25],\n   [{'R0': 1, 'R1': 4, 'R2': 1, 'R3': 0}, {'lab': 2, 'annex': 6, 'main': 0}, 8]),\n  ('normal control 5', [[['R0', 'main', 0, False]], 30], [{'R0': 0}, {'main': 0}, 0]),\n  ('normal control 6',\n   [[['R0', 'main', 0, False], ['R1', 'annex', 1, False], ['R2', 'main', 15, False], ['R3', 'lab', 0, False],\n     ['R4', 'main', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 1, 'R3': 0, 'R4': 2}, {'main': 4, 'annex': 2, 'lab': 0}, 6]),\n  ('normal control 7',\n   [[['R0', 'main', 61, False], ['R1', 'lab', 60, True], ['R2', 'annex', 30, False], ['R3', 'lab', 25, False],\n     ['R4', 'main', 61, False]],\n    25],\n   [{'R0': 3, 'R1': 4, 'R2': 2, 'R3': 1, 'R4': 3}, {'main': 7, 'lab': 6, 'annex': 3}, 16]),\n  ('normal control 8',\n   [[['R0', 'annex', 30, False], ['R1', 'annex', 0, True], ['R2', 'main', 0, True], ['R3', 'lab', 0, False],\n     ['R4', 'annex', 0, False]],\n    25],\n   [{'R0': 2, 'R1': 0, 'R2': 0, 'R3': 0, 'R4': 0}, {'annex': 3, 'main': 0, 'lab': 0}, 3])],\n [('regression: ratio ceiling 1', [[['R0', 'lab', 60, False], ['R1', 'lab', 25, True]], 30],\n   [{'R0': 2, 'R1': 2}, {'lab': 5}, 5]),\n  ('regression variant: ratio ceiling 2', [[['R0', 'annex', 25, True]], 30], [{'R0': 2}, {'annex': 3}, 3]),\n  ('partial repair guard 3', [[['R0', 'annex', 30, True], ['R1', 'annex', 15, False]], 30],\n   [{'R0': 2, 'R1': 1}, {'annex': 4}, 4]),\n  ('boundary control 4', [[['R1', 'main', 0, True]], 30], [{'R1': 0}, {'main': 0}, 0]),\n  ('normal control 5', [[['R0', 'main', 0, False], ['R1', 'main', 15, False], ['R2', 'lab', 61, True]], 25],\n   [{'R0': 0, 'R1': 1, 'R2': 4}, {'main': 2, 'lab': 5}, 7]),\n  ('normal control 6',\n   [[['R0', 'annex', 15, False], ['R1', 'lab', 1, False], ['R2', 'lab', 0, False],\n     ['R3', 'annex', 25, False]],\n    30],\n   [{'R0': 1, 'R1': 1, 'R2': 0, 'R3': 1}, {'annex': 3, 'lab': 2}, 5]),\n  ('normal control 7',\n   [[['R0', 'annex', 31, False], ['R1', 'lab', 60, False], ['R2', 'main', 0, False], ['R3', 'lab', 1, False],\n     ['R4', 'annex', 15, False]],\n    25],\n   [{'R0': 2, 'R1': 3, 'R2': 0, 'R3': 1, 'R4': 1}, {'annex': 4, 'lab': 5, 'main': 0}, 9]),\n  ('normal control 8',\n   [[['R0', 'main', 30, False], ['R1', 'annex', 61, False], ['R2', 'main', 61, True],\n     ['R3', 'annex', 60, False], ['R4', 'annex', 1, True]],\n    30],\n   [{'R0': 1, 'R1': 3, 'R2': 4, 'R3': 2, 'R4': 2}, {'main': 6, 'annex': 8}, 14])],\n [('regression: ratio ceiling 1',\n   [[['R0', 'annex', 31, False], ['R1', 'lab', 25, True], ['R2', 'lab', 61, False], ['R3', 'annex', 1, True]],\n    30],\n   [{'R0': 2, 'R1': 2, 'R2': 3, 'R3': 2}, {'annex': 5, 'lab': 6}, 11]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'annex', 61, False], ['R1', 'lab', 15, False], ['R2', 'annex', 1, True],\n     ['R3', 'annex', 61, False]],\n    30],\n   [{'R0': 3, 'R1': 1, 'R2': 2, 'R3': 3}, {'annex': 9, 'lab': 2}, 11]),\n  ('partial repair guard 3',\n   [[['R0', 'main', 25, False], ['R1', 'lab', 0, False], ['R2', 'main', 1, False], ['R3', 'main', 60, True],\n     ['R4', 'main', 15, True]],\n    25],\n   [{'R0': 1, 'R1': 0, 'R2': 1, 'R3': 4, 'R4': 2}, {'main': 9, 'lab': 0}, 9]),\n  ('boundary control 4', [[['R1', 'main', 30, False]], 30], [{'R1': 1}, {'main': 2}, 2]),\n  ('normal control 5',\n   [[['R0', 'main', 61, True], ['R1', 'annex', 15, False], ['R2', 'main', 30, False], ['R3', 'lab', 1, False],\n     ['R4', 'main', 31, True]],\n    30],\n   [{'R0': 4, 'R1': 1, 'R2': 1, 'R3': 1, 'R4': 3}, {'main': 9, 'annex': 2, 'lab': 2}, 13]),\n  ('normal control 6', [[['R0', 'lab', 0, False], ['R1', 'main', 25, True]], 30],\n   [{'R0': 0, 'R1': 2}, {'lab': 0, 'main': 3}, 3]),\n  ('normal control 7', [[['R0', 'lab', 31, True], ['R1', 'lab', 61, False], ['R2', 'main', 61, False]], 25],\n   [{'R0': 3, 'R1': 3, 'R2': 3}, {'lab': 7, 'main': 4}, 11]),\n  ('normal control 8',\n   [[['R0', 'annex', 0, True], ['R1', 'main', 0, False], ['R2', 'main', 15, False], ['R3', 'lab', 1, True],\n     ['R4', 'annex', 25, False]],\n    30],\n   [{'R0': 0, 'R1': 0, 'R2': 1, 'R3': 2, 'R4': 1}, {'annex': 2, 'main': 2, 'lab': 3}, 7])]]\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":"9001eb719db0f24f2dcc9400a698da90336cc61c5fae3f8ad402f94c7266c2d4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(rooms, ratio):\n    per = {}\n    venue = {}\n    for r, v, n, acc in rooms:\n        k = 0\n        if n > 0:\n            k = -(-n // ratio)\n            if acc:\n                k += 1\n        per[r] = k\n        venue.setdefault(v, 0)\n        venue[v] += k\n    for v in venue:\n        if venue[v] > 0:\n            venue[v] += 1\n    return [per, venue, sum(venue.values())]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: ratio ceiling 1', [[['R1', 'main', 31, False]], 30], [{'R1': 2}, {'main': 3}, 3]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'lab', 25, False], ['R1', 'main', 1, False], ['R2', 'main', 0, True], ['R3', 'annex', 31, False],\n     ['R4', 'annex', 60, True]],\n    25],\n   [{'R0': 1, 'R1': 1, 'R2': 0, 'R3': 2, 'R4': 4}, {'lab': 2, 'main': 2, 'annex': 7}, 11]),\n  ('partial repair guard 3',\n   [[['R0', 'main', 60, False], ['R1', 'main', 0, False], ['R2', 'lab', 15, True],\n     ['R3', 'annex', 30, False]],\n    30],\n   [{'R0': 2, 'R1': 0, 'R2': 2, 'R3': 1}, {'main': 3, 'lab': 3, 'annex': 2}, 8]),\n  ('boundary control 4', [[['R1', 'main', 0, False], ['R2', 'annex', 5, False]], 30],\n   [{'R1': 0, 'R2': 1}, {'main': 0, 'annex': 2}, 2]),\n  ('normal control 5',\n   [[['R0', 'annex', 31, True], ['R1', 'main', 25, False], ['R2', 'main', 25, False],\n     ['R3', 'annex', 31, False]],\n    25],\n   [{'R0': 3, 'R1': 1, 'R2': 1, 'R3': 2}, {'annex': 6, 'main': 3}, 9]),\n  ('normal control 6', [[['R0', 'annex', 61, False]], 30], [{'R0': 3}, {'annex': 4}, 4]),\n  ('normal control 7',\n   [[['R0', 'main', 31, False], ['R1', 'main', 31, False], ['R2', 'lab', 60, True],\n     ['R3', 'annex', 60, False]],\n    25],\n   [{'R0': 2, 'R1': 2, 'R2': 4, 'R3': 3}, {'main': 5, 'lab': 5, 'annex': 4}, 14]),\n  ('normal control 8', [[['R0', 'main', 60, True], ['R1', 'lab', 61, False], ['R2', 'lab', 25, False]], 30],\n   [{'R0': 3, 'R1': 3, 'R2': 1}, {'main': 4, 'lab': 5}, 9])],\n [('regression: ratio ceiling 1', [[['R1', 'main', 0, False], ['R2', 'annex', 5, False]], 30],\n   [{'R1': 0, 'R2': 1}, {'main': 0, 'annex': 2}, 2]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'lab', 1, True], ['R1', 'lab', 31, True], ['R2', 'lab', 0, True]], 30],\n   [{'R0': 2, 'R1': 3, 'R2': 0}, {'lab': 6}, 6]),\n  ('partial repair guard 3', [[['R0', 'annex', 0, True], ['R1', 'lab', 30, False]], 30],\n   [{'R0': 0, 'R1': 1}, {'annex': 0, 'lab': 2}, 2]),\n  ('boundary control 4', [[['R1', 'main', 31, False]], 30], [{'R1': 2}, {'main': 3}, 3]),\n  ('normal control 5',\n   [[['R0', 'main', 0, False], ['R1', 'main', 60, False], ['R2', 'main', 0, False],\n     ['R3', 'annex', 30, False]],\n    30],\n   [{'R0': 0, 'R1': 2, 'R2': 0, 'R3': 1}, {'main': 3, 'annex': 2}, 5]),\n  ('normal control 6',\n   [[['R0', 'main', 31, False], ['R1', 'main', 15, False], ['R2', 'annex', 31, False],\n     ['R3', 'main', 0, True], ['R4', 'main', 0, False]],\n    25],\n   [{'R0': 2, 'R1': 1, 'R2': 2, 'R3': 0, 'R4': 0}, {'main': 4, 'annex': 3}, 7]),\n  ('normal control 7',\n   [[['R0', 'lab', 0, False], ['R1', 'main', 25, False], ['R2', 'lab', 60, False], ['R3', 'annex', 0, False],\n     ['R4', 'annex', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 3, 'R3': 0, 'R4': 2}, {'lab': 4, 'main': 2, 'annex': 3}, 9]),\n  ('normal control 8',\n   [[['R0', 'lab', 0, False], ['R1', 'lab', 15, False], ['R2', 'annex', 0, False], ['R3', 'annex', 30, False],\n     ['R4', 'main', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 0, 'R3': 2, 'R4': 2}, {'lab': 2, 'annex': 3, 'main': 3}, 8])],\n [('regression: ratio ceiling 1', [[['R1', 'main', 12, True], ['R2', 'main', 40, False]], 25],\n   [{'R1': 2, 'R2': 2}, {'main': 5}, 5]),\n  ('regression variant: ratio ceiling 2', [[['R0', 'lab', 0, False], ['R1', 'main', 31, False]], 30],\n   [{'R0': 0, 'R1': 2}, {'lab': 0, 'main': 3}, 3]),\n  ('partial repair guard 3',\n   [[['R0', 'lab', 31, False], ['R1', 'main', 60, True], ['R2', 'lab', 0, False], ['R3', 'annex', 1, False],\n     ['R4', 'annex', 15, False]],\n    30],\n   [{'R0': 2, 'R1': 3, 'R2': 0, 'R3': 1, 'R4': 1}, {'lab': 3, 'main': 4, 'annex': 3}, 10]),\n  ('normal control 4',\n   [[['R0', 'lab', 25, False], ['R1', 'annex', 61, True], ['R2', 'annex', 1, False],\n     ['R3', 'main', 0, False]],\n    25],\n   [{'R0': 1, 'R1': 4, 'R2': 1, 'R3': 0}, {'lab': 2, 'annex': 6, 'main': 0}, 8]),\n  ('normal control 5', [[['R0', 'main', 0, False]], 30], [{'R0': 0}, {'main': 0}, 0]),\n  ('normal control 6',\n   [[['R0', 'main', 0, False], ['R1', 'annex', 1, False], ['R2', 'main', 15, False], ['R3', 'lab', 0, False],\n     ['R4', 'main', 31, False]],\n    25],\n   [{'R0': 0, 'R1': 1, 'R2': 1, 'R3': 0, 'R4': 2}, {'main': 4, 'annex': 2, 'lab': 0}, 6]),\n  ('normal control 7',\n   [[['R0', 'main', 61, False], ['R1', 'lab', 60, True], ['R2', 'annex', 30, False], ['R3', 'lab', 25, False],\n     ['R4', 'main', 61, False]],\n    25],\n   [{'R0': 3, 'R1': 4, 'R2': 2, 'R3': 1, 'R4': 3}, {'main': 7, 'lab': 6, 'annex': 3}, 16]),\n  ('normal control 8',\n   [[['R0', 'annex', 30, False], ['R1', 'annex', 0, True], ['R2', 'main', 0, True], ['R3', 'lab', 0, False],\n     ['R4', 'annex', 0, False]],\n    25],\n   [{'R0': 2, 'R1': 0, 'R2': 0, 'R3': 0, 'R4': 0}, {'annex': 3, 'main': 0, 'lab': 0}, 3])],\n [('regression: ratio ceiling 1', [[['R0', 'lab', 60, False], ['R1', 'lab', 25, True]], 30],\n   [{'R0': 2, 'R1': 2}, {'lab': 5}, 5]),\n  ('regression variant: ratio ceiling 2', [[['R0', 'annex', 25, True]], 30], [{'R0': 2}, {'annex': 3}, 3]),\n  ('partial repair guard 3', [[['R0', 'annex', 30, True], ['R1', 'annex', 15, False]], 30],\n   [{'R0': 2, 'R1': 1}, {'annex': 4}, 4]),\n  ('boundary control 4', [[['R1', 'main', 0, True]], 30], [{'R1': 0}, {'main': 0}, 0]),\n  ('normal control 5', [[['R0', 'main', 0, False], ['R1', 'main', 15, False], ['R2', 'lab', 61, True]], 25],\n   [{'R0': 0, 'R1': 1, 'R2': 4}, {'main': 2, 'lab': 5}, 7]),\n  ('normal control 6',\n   [[['R0', 'annex', 15, False], ['R1', 'lab', 1, False], ['R2', 'lab', 0, False],\n     ['R3', 'annex', 25, False]],\n    30],\n   [{'R0': 1, 'R1': 1, 'R2': 0, 'R3': 1}, {'annex': 3, 'lab': 2}, 5]),\n  ('normal control 7',\n   [[['R0', 'annex', 31, False], ['R1', 'lab', 60, False], ['R2', 'main', 0, False], ['R3', 'lab', 1, False],\n     ['R4', 'annex', 15, False]],\n    25],\n   [{'R0': 2, 'R1': 3, 'R2': 0, 'R3': 1, 'R4': 1}, {'annex': 4, 'lab': 5, 'main': 0}, 9]),\n  ('normal control 8',\n   [[['R0', 'main', 30, False], ['R1', 'annex', 61, False], ['R2', 'main', 61, True],\n     ['R3', 'annex', 60, False], ['R4', 'annex', 1, True]],\n    30],\n   [{'R0': 1, 'R1': 3, 'R2': 4, 'R3': 2, 'R4': 2}, {'main': 6, 'annex': 8}, 14])],\n [('regression: ratio ceiling 1',\n   [[['R0', 'annex', 31, False], ['R1', 'lab', 25, True], ['R2', 'lab', 61, False], ['R3', 'annex', 1, True]],\n    30],\n   [{'R0': 2, 'R1': 2, 'R2': 3, 'R3': 2}, {'annex': 5, 'lab': 6}, 11]),\n  ('regression variant: ratio ceiling 2',\n   [[['R0', 'annex', 61, False], ['R1', 'lab', 15, False], ['R2', 'annex', 1, True],\n     ['R3', 'annex', 61, False]],\n    30],\n   [{'R0': 3, 'R1': 1, 'R2': 2, 'R3': 3}, {'annex': 9, 'lab': 2}, 11]),\n  ('partial repair guard 3',\n   [[['R0', 'main', 25, False], ['R1', 'lab', 0, False], ['R2', 'main', 1, False], ['R3', 'main', 60, True],\n     ['R4', 'main', 15, True]],\n    25],\n   [{'R0': 1, 'R1': 0, 'R2': 1, 'R3': 4, 'R4': 2}, {'main': 9, 'lab': 0}, 9]),\n  ('boundary control 4', [[['R1', 'main', 30, False]], 30], [{'R1': 1}, {'main': 2}, 2]),\n  ('normal control 5',\n   [[['R0', 'main', 61, True], ['R1', 'annex', 15, False], ['R2', 'main', 30, False], ['R3', 'lab', 1, False],\n     ['R4', 'main', 31, True]],\n    30],\n   [{'R0': 4, 'R1': 1, 'R2': 1, 'R3': 1, 'R4': 3}, {'main': 9, 'annex': 2, 'lab': 2}, 13]),\n  ('normal control 6', [[['R0', 'lab', 0, False], ['R1', 'main', 25, True]], 30],\n   [{'R0': 0, 'R1': 2}, {'lab': 0, 'main': 3}, 3]),\n  ('normal control 7', [[['R0', 'lab', 31, True], ['R1', 'lab', 61, False], ['R2', 'main', 61, False]], 25],\n   [{'R0': 3, 'R1': 3, 'R2': 3}, {'lab': 7, 'main': 4}, 11]),\n  ('normal control 8',\n   [[['R0', 'annex', 0, True], ['R1', 'main', 0, False], ['R2', 'main', 15, False], ['R3', 'lab', 1, True],\n     ['R4', 'annex', 25, False]],\n    30],\n   [{'R0': 0, 'R1': 0, 'R2': 1, 'R3': 2, 'R4': 1}, {'annex': 2, 'main': 2, 'lab': 3}, 7])]]\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-invigilator-requirement-ratio-ceiling","generated_at":"2026-09-29T14:52:04.610064+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Invigilation staffing follows directly from the room plan of a timetable.","repair":"Use ceiling division of candidates by ratio.","root_cause":"Floor division is used for the ratio.","sha256":"0d6ae2f6535941500683dc8712f70b0c62ca0b053d071905b928a89cd2cd3545","title":"Invigilator count floors the candidate ratio · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.013,"exit_code":1,"observations":[{"actual":[{"R1":2},{"main":3},3],"check":"regression: ratio ceiling 1","expected":[{"R1":2},{"main":3},3],"passed":true},{"actual":[{"R0":2,"R1":1,"R2":0,"R3":2,"R4":4},{"annex":7,"lab":3,"main":2},12],"check":"regression variant: ratio ceiling 2","expected":[{"R0":1,"R1":1,"R2":0,"R3":2,"R4":4},{"annex":7,"lab":2,"main":2},11],"passed":false},{"actual":[{"R0":3,"R1":0,"R2":2,"R3":2},{"annex":3,"lab":3,"main":4},10],"check":"partial repair guard 3","expected":[{"R0":2,"R1":0,"R2":2,"R3":1},{"annex":2,"lab":3,"main":3},8],"passed":false},{"actual":[{"R1":0,"R2":1},{"annex":2,"main":0},2],"check":"boundary control 4","expected":[{"R1":0,"R2":1},{"annex":2,"main":0},2],"passed":true},{"actual":[{"R0":3,"R1":2,"R2":2,"R3":2},{"annex":6,"main":5},11],"check":"normal control 5","expected":[{"R0":3,"R1":1,"R2":1,"R3":2},{"annex":6,"main":3},9],"passed":false},{"actual":[{"R0":3},{"annex":4},4],"check":"normal control 6","expected":[{"R0":3},{"annex":4},4],"passed":true},{"actual":[{"R0":2,"R1":2,"R2":4,"R3":3},{"annex":4,"lab":5,"main":5},14],"check":"normal control 7","expected":[{"R0":2,"R1":2,"R2":4,"R3":3},{"annex":4,"lab":5,"main":5},14],"passed":true},{"actual":[{"R0":4,"R1":3,"R2":1},{"lab":5,"main":5},10],"check":"normal control 8","expected":[{"R0":3,"R1":3,"R2":1},{"lab":5,"main":4},9],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ratio ceiling 1\", \"actual\": [{\"R1\": 2}, {\"main\": 3}, 3], \"expected\": [{\"R1\": 2}, {\"main\": 3}, 3], \"passed\": true}, {\"check\": \"regression variant: ratio ceiling 2\", \"actual\": [{\"R0\": 2, \"R1\": 1, \"R2\": 0, \"R3\": 2, \"R4\": 4}, {\"lab\": 3, \"main\": 2, \"annex\": 7}, 12], \"expected\": [{\"R0\": 1, \"R1\": 1, \"R2\": 0, \"R3\": 2, \"R4\": 4}, {\"lab\": 2, \"main\": 2, \"annex\": 7}, 11], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [{\"R0\": 3, \"R1\": 0, \"R2\": 2, \"R3\": 2}, {\"main\": 4, \"lab\": 3, \"annex\": 3}, 10], \"expected\": [{\"R0\": 2, \"R1\": 0, \"R2\": 2, \"R3\": 1}, {\"main\": 3, \"lab\": 3, \"annex\": 2}, 8], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [{\"R1\": 0, \"R2\": 1}, {\"main\": 0, \"annex\": 2}, 2], \"expected\": [{\"R1\": 0, \"R2\": 1}, {\"main\": 0, \"annex\": 2}, 2], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [{\"R0\": 3, \"R1\": 2, \"R2\": 2, \"R3\": 2}, {\"annex\": 6, \"main\": 5}, 11], \"expected\": [{\"R0\": 3, \"R1\": 1, \"R2\": 1, \"R3\": 2}, {\"annex\": 6, \"main\": 3}, 9], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [{\"R0\": 3}, {\"annex\": 4}, 4], \"expected\": [{\"R0\": 3}, {\"annex\": 4}, 4], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [{\"R0\": 2, \"R1\": 2, \"R2\": 4, \"R3\": 3}, {\"main\": 5, \"lab\": 5, \"annex\": 4}, 14], \"expected\": [{\"R0\": 2, \"R1\": 2, \"R2\": 4, \"R3\": 3}, {\"main\": 5, \"lab\": 5, \"annex\": 4}, 14], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [{\"R0\": 4, \"R1\": 3, \"R2\": 1}, {\"main\": 5, \"lab\": 5}, 10], \"expected\": [{\"R0\": 3, \"R1\": 3, \"R2\": 1}, {\"main\": 4, \"lab\": 5}, 9], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.308,"exit_code":1,"observations":[{"actual":[{"R1":1},{"main":2},2],"check":"regression: ratio ceiling 1","expected":[{"R1":2},{"main":3},3],"passed":false},{"actual":[{"R0":1,"R1":0,"R2":0,"R3":1,"R4":3},{"annex":5,"lab":2,"main":0},7],"check":"regression variant: ratio ceiling 2","expected":[{"R0":1,"R1":1,"R2":0,"R3":2,"R4":4},{"annex":7,"lab":2,"main":2},11],"passed":false},{"actual":[{"R0":2,"R1":0,"R2":1,"R3":1},{"annex":2,"lab":2,"main":3},7],"check":"partial repair guard 3","expected":[{"R0":2,"R1":0,"R2":2,"R3":1},{"annex":2,"lab":3,"main":3},8],"passed":false},{"actual":[{"R1":0,"R2":0},{"annex":0,"main":0},0],"check":"boundary control 4","expected":[{"R1":0,"R2":1},{"annex":2,"main":0},2],"passed":false},{"actual":[{"R0":2,"R1":1,"R2":1,"R3":1},{"annex":4,"main":3},7],"check":"normal control 5","expected":[{"R0":3,"R1":1,"R2":1,"R3":2},{"annex":6,"main":3},9],"passed":false},{"actual":[{"R0":2},{"annex":3},3],"check":"normal control 6","expected":[{"R0":3},{"annex":4},4],"passed":false},{"actual":[{"R0":1,"R1":1,"R2":3,"R3":2},{"annex":3,"lab":4,"main":3},10],"check":"normal control 7","expected":[{"R0":2,"R1":2,"R2":4,"R3":3},{"annex":4,"lab":5,"main":5},14],"passed":false},{"actual":[{"R0":3,"R1":2,"R2":0},{"lab":3,"main":4},7],"check":"normal control 8","expected":[{"R0":3,"R1":3,"R2":1},{"lab":5,"main":4},9],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ratio ceiling 1\", \"actual\": [{\"R1\": 1}, {\"main\": 2}, 2], \"expected\": [{\"R1\": 2}, {\"main\": 3}, 3], \"passed\": false}, {\"check\": \"regression variant: ratio ceiling 2\", \"actual\": [{\"R0\": 1, \"R1\": 0, \"R2\": 0, \"R3\": 1, \"R4\": 3}, {\"lab\": 2, \"main\": 0, \"annex\": 5}, 7], \"expected\": [{\"R0\": 1, \"R1\": 1, \"R2\": 0, \"R3\": 2, \"R4\": 4}, {\"lab\": 2, \"main\": 2, \"annex\": 7}, 11], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [{\"R0\": 2, \"R1\": 0, \"R2\": 1, \"R3\": 1}, {\"main\": 3, \"lab\": 2, \"annex\": 2}, 7], \"expected\": [{\"R0\": 2, \"R1\": 0, \"R2\": 2, \"R3\": 1}, {\"main\": 3, \"lab\": 3, \"annex\": 2}, 8], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [{\"R1\": 0, \"R2\": 0}, {\"main\": 0, \"annex\": 0}, 0], \"expected\": [{\"R1\": 0, \"R2\": 1}, {\"main\": 0, \"annex\": 2}, 2], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [{\"R0\": 2, \"R1\": 1, \"R2\": 1, \"R3\": 1}, {\"annex\": 4, \"main\": 3}, 7], \"expected\": [{\"R0\": 3, \"R1\": 1, \"R2\": 1, \"R3\": 2}, {\"annex\": 6, \"main\": 3}, 9], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [{\"R0\": 2}, {\"annex\": 3}, 3], \"expected\": [{\"R0\": 3}, {\"annex\": 4}, 4], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [{\"R0\": 1, \"R1\": 1, \"R2\": 3, \"R3\": 2}, {\"main\": 3, \"lab\": 4, \"annex\": 3}, 10], \"expected\": [{\"R0\": 2, \"R1\": 2, \"R2\": 4, \"R3\": 3}, {\"main\": 5, \"lab\": 5, \"annex\": 4}, 14], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [{\"R0\": 3, \"R1\": 2, \"R2\": 0}, {\"main\": 4, \"lab\": 3}, 7], \"expected\": [{\"R0\": 3, \"R1\": 3, \"R2\": 1}, {\"main\": 4, \"lab\": 5}, 9], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.664,"exit_code":0,"observations":[{"actual":[{"R1":2},{"main":3},3],"check":"regression: ratio ceiling 1","expected":[{"R1":2},{"main":3},3],"passed":true},{"actual":[{"R0":1,"R1":1,"R2":0,"R3":2,"R4":4},{"annex":7,"lab":2,"main":2},11],"check":"regression variant: ratio ceiling 2","expected":[{"R0":1,"R1":1,"R2":0,"R3":2,"R4":4},{"annex":7,"lab":2,"main":2},11],"passed":true},{"actual":[{"R0":2,"R1":0,"R2":2,"R3":1},{"annex":2,"lab":3,"main":3},8],"check":"partial repair guard 3","expected":[{"R0":2,"R1":0,"R2":2,"R3":1},{"annex":2,"lab":3,"main":3},8],"passed":true},{"actual":[{"R1":0,"R2":1},{"annex":2,"main":0},2],"check":"boundary control 4","expected":[{"R1":0,"R2":1},{"annex":2,"main":0},2],"passed":true},{"actual":[{"R0":3,"R1":1,"R2":1,"R3":2},{"annex":6,"main":3},9],"check":"normal control 5","expected":[{"R0":3,"R1":1,"R2":1,"R3":2},{"annex":6,"main":3},9],"passed":true},{"actual":[{"R0":3},{"annex":4},4],"check":"normal control 6","expected":[{"R0":3},{"annex":4},4],"passed":true},{"actual":[{"R0":2,"R1":2,"R2":4,"R3":3},{"annex":4,"lab":5,"main":5},14],"check":"normal control 7","expected":[{"R0":2,"R1":2,"R2":4,"R3":3},{"annex":4,"lab":5,"main":5},14],"passed":true},{"actual":[{"R0":3,"R1":3,"R2":1},{"lab":5,"main":4},9],"check":"normal control 8","expected":[{"R0":3,"R1":3,"R2":1},{"lab":5,"main":4},9],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: ratio ceiling 1\", \"actual\": [{\"R1\": 2}, {\"main\": 3}, 3], \"expected\": [{\"R1\": 2}, {\"main\": 3}, 3], \"passed\": true}, {\"check\": \"regression variant: ratio ceiling 2\", \"actual\": [{\"R0\": 1, \"R1\": 1, \"R2\": 0, \"R3\": 2, \"R4\": 4}, {\"lab\": 2, \"main\": 2, \"annex\": 7}, 11], \"expected\": [{\"R0\": 1, \"R1\": 1, \"R2\": 0, \"R3\": 2, \"R4\": 4}, {\"lab\": 2, \"main\": 2, \"annex\": 7}, 11], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [{\"R0\": 2, \"R1\": 0, \"R2\": 2, \"R3\": 1}, {\"main\": 3, \"lab\": 3, \"annex\": 2}, 8], \"expected\": [{\"R0\": 2, \"R1\": 0, \"R2\": 2, \"R3\": 1}, {\"main\": 3, \"lab\": 3, \"annex\": 2}, 8], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [{\"R1\": 0, \"R2\": 1}, {\"main\": 0, \"annex\": 2}, 2], \"expected\": [{\"R1\": 0, \"R2\": 1}, {\"main\": 0, \"annex\": 2}, 2], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [{\"R0\": 3, \"R1\": 1, \"R2\": 1, \"R3\": 2}, {\"annex\": 6, \"main\": 3}, 9], \"expected\": [{\"R0\": 3, \"R1\": 1, \"R2\": 1, \"R3\": 2}, {\"annex\": 6, \"main\": 3}, 9], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [{\"R0\": 3}, {\"annex\": 4}, 4], \"expected\": [{\"R0\": 3}, {\"annex\": 4}, 4], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [{\"R0\": 2, \"R1\": 2, \"R2\": 4, \"R3\": 3}, {\"main\": 5, \"lab\": 5, \"annex\": 4}, 14], \"expected\": [{\"R0\": 2, \"R1\": 2, \"R2\": 4, \"R3\": 3}, {\"main\": 5, \"lab\": 5, \"annex\": 4}, 14], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [{\"R0\": 3, \"R1\": 3, \"R2\": 1}, {\"main\": 4, \"lab\": 5}, 9], \"expected\": [{\"R0\": 3, \"R1\": 3, \"R2\": 1}, {\"main\": 4, \"lab\": 5}, 9], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}