{"abstract":"Splitting an exam across rooms multiplies its period penalty.","category":"Exam timetabling constraints","checks":8,"contract":"Assignment rows [exam, room, period] (a split exam has one row per room; rows may repeat). Each exam pays its period penalty once per distinct period it occupies and each room penalty once per distinct (exam, room). Return [period penalty, room penalty, total].","evaluation_group":"w2-exam-timetabling-constraints-period-and-room-penalties","failed_approach":"Keying by room as well still charges once per room.","family":"w2-exam-timetabling-constraints-period-and-room-penalties-split-period-charge","id":"FA-94651","implementations":{"attempt":{"sha256":"905a7bf41b11feacdfc1c2c227f64469ea54397ccab9c246fb6fb76f1d51ef8f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(assign, ppen, rpen):\n    seen_exam = set()\n    seen_room = set()\n    pp = rp = 0\n    for ex, r, p in assign:\n        if (ex, r, p) not in seen_exam:\n            seen_exam.add((ex, r, p))\n            pp += ppen[p]\n        if (ex, r) not in seen_room:\n            seen_room.add((ex, r))\n            rp += rpen[r]\n    return [pp, rp, pp + rp]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: split period charge 1', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}],\n   [5, 3, 8]),\n  ('regression variant: split period charge 2',\n   [[['CHEM120', 'R2', 3], ['PHYS110', 'R1', 0], ['PHYS110', 'R2', 1], ['PHYS110', 'R1', 0]], [1, 5, 1, 10],\n    {'R1': 0, 'R2': 3, 'R3': 2}],\n   [16, 6, 22]),\n  ('partial repair guard 3',\n   [[['CHEM120', 'R3', 1], ['PHYS110', 'R3', 2], ['CHEM120', 'R3', 2], ['CHEM120', 'R2', 2],\n     ['MATH101H', 'R2', 0], ['PHYS110', 'R3', 1], ['MATH101', 'R2', 3]],\n    [1, 1, 10, 10], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [33, 17, 50]),\n  ('boundary control 4', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 5',\n   [[['MATH101', 'R2', 2], ['PHYS110', 'R3', 2], ['MATH101', 'R1', 1], ['PHYS110', 'R1', 1],\n     ['PHYS110', 'R3', 2]],\n    [1, 0, 5, 10], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [10, 10, 20]),\n  ('normal control 6',\n   [[['MATH101', 'R2', 0], ['MATH101H', 'R3', 0], ['MATH101', 'R1', 1], ['CHEM120', 'R2', 0],\n     ['MATH101', 'R1', 1], ['CHEM120', 'R1', 1], ['MATH101', 'R1', 1]],\n    [5, 10, 1, 1], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [35, 9, 44]),\n  ('normal control 7',\n   [[['MATH101', 'R3', 1], ['CHEM120', 'R3', 1], ['MATH101H', 'R2', 2]], [5, 1, 10, 1],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [12, 5, 17]),\n  ('normal control 8',\n   [[['MATH101', 'R3', 1], ['CHEM120', 'R1', 3], ['MATH101', 'R2', 0], ['PHYS110', 'R2', 0],\n     ['MATH101', 'R2', 0], ['PHYS110', 'R2', 3], ['MATH101', 'R2', 0]],\n    [10, 1, 0, 1], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [23, 4, 27])],\n [('regression: split period charge 1', [[['A', 'R2', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}],\n   [5, 3, 8]),\n  ('regression variant: split period charge 2',\n   [[['MATH101', 'R3', 3], ['CHEM120', 'R3', 2], ['PHYS110', 'R1', 0], ['PHYS110', 'R1', 0]], [10, 10, 1, 10],\n    {'R1': 0, 'R2': 3, 'R3': 7}],\n   [21, 14, 35]),\n  ('partial repair guard 3',\n   [[['MATH101H', 'R2', 2], ['MATH101H', 'R3', 1], ['CHEM120', 'R1', 3], ['MATH101H', 'R1', 1],\n     ['MATH101H', 'R2', 2]],\n    [10, 10, 1, 10], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [21, 8, 29]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R3', 1], ['MATH101', 'R1', 2], ['MATH101H', 'R2', 2], ['MATH101H', 'R1', 0]], [1, 1, 0, 1],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [2, 3, 5]),\n  ('normal control 7',\n   [[['MATH101', 'R1', 1], ['MATH101', 'R3', 1], ['CHEM120', 'R1', 2], ['PHYS110', 'R1', 3],\n     ['CHEM120', 'R2', 0], ['CHEM120', 'R1', 0]],\n    [10, 5, 10, 10], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [35, 5, 40]),\n  ('normal control 8',\n   [[['CHEM120', 'R1', 3], ['MATH101H', 'R1', 1], ['CHEM120', 'R2', 0]], [0, 1, 0, 10],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [11, 1, 12])],\n [('regression: split period charge 1',\n   [[['MATH101H', 'R3', 1], ['MATH101', 'R1', 3], ['PHYS110', 'R1', 0], ['MATH101', 'R1', 0],\n     ['MATH101H', 'R1', 2], ['PHYS110', 'R1', 1], ['MATH101', 'R1', 3], ['MATH101H', 'R1', 2]],\n    [1, 0, 5, 10], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [17, 2, 19]),\n  ('regression variant: split period charge 2',\n   [[['MATH101H', 'R1', 0], ['CHEM120', 'R1', 3], ['PHYS110', 'R2', 3], ['MATH101H', 'R2', 0],\n     ['MATH101', 'R2', 2]],\n    [1, 0, 10, 10], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [31, 9, 40]),\n  ('partial repair guard 3',\n   [[['CHEM120', 'R3', 3], ['MATH101', 'R2', 0], ['PHYS110', 'R2', 1], ['CHEM120', 'R2', 3],\n     ['PHYS110', 'R3', 0], ['CHEM120', 'R2', 3], ['MATH101H', 'R1', 3]],\n    [1, 10, 10, 5], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [22, 13, 35]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R3', 0], ['CHEM120', 'R1', 3], ['MATH101', 'R3', 3], ['MATH101H', 'R2', 3],\n     ['MATH101', 'R2', 1], ['PHYS110', 'R2', 0], ['PHYS110', 'R3', 0]],\n    [1, 1, 10, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [3, 15, 18]),\n  ('normal control 7',\n   [[['MATH101H', 'R3', 2], ['CHEM120', 'R2', 2], ['MATH101H', 'R3', 0], ['CHEM120', 'R3', 2],\n     ['MATH101', 'R1', 3], ['MATH101', 'R2', 1], ['CHEM120', 'R3', 2]],\n    [10, 1, 1, 10], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [23, 6, 29]),\n  ('normal control 8',\n   [[['MATH101', 'R2', 2], ['CHEM120', 'R2', 0], ['CHEM120', 'R2', 1], ['MATH101H', 'R1', 3],\n     ['PHYS110', 'R1', 0], ['MATH101H', 'R3', 1], ['MATH101H', 'R1', 3]],\n    [0, 10, 1, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [21, 8, 29])],\n [('regression: split period charge 1',\n   [[['CHEM120', 'R2', 0], ['MATH101H', 'R1', 3], ['PHYS110', 'R2', 3], ['PHYS110', 'R2', 3],\n     ['PHYS110', 'R2', 3]],\n    [1, 1, 0, 1], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [3, 2, 5]),\n  ('regression variant: split period charge 2',\n   [[['MATH101', 'R1', 3], ['MATH101', 'R3', 0], ['MATH101', 'R1', 1], ['MATH101H', 'R3', 1],\n     ['CHEM120', 'R1', 3], ['CHEM120', 'R2', 1], ['MATH101', 'R2', 3], ['MATH101', 'R3', 0]],\n    [10, 10, 0, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [40, 10, 50]),\n  ('partial repair guard 3',\n   [[['MATH101H', 'R3', 1], ['MATH101H', 'R1', 1]], [0, 5, 5, 5], {'R1': 0, 'R2': 3, 'R3': 2}], [5, 2, 7]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['PHYS110', 'R3', 3], ['MATH101', 'R3', 0]], [5, 0, 1, 5], {'R1': 0, 'R2': 1, 'R3': 7}], [10, 14, 24]),\n  ('normal control 7',\n   [[['PHYS110', 'R1', 0], ['MATH101H', 'R1', 0]], [0, 5, 0, 10], {'R1': 0, 'R2': 3, 'R3': 2}], [0, 0, 0]),\n  ('normal control 8',\n   [[['MATH101', 'R1', 0], ['CHEM120', 'R1', 1], ['PHYS110', 'R2', 0], ['MATH101', 'R1', 0],\n     ['PHYS110', 'R2', 0]],\n    [10, 5, 1, 0], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [25, 3, 28])],\n [('regression: split period charge 1',\n   [[['CHEM120', 'R1', 2], ['MATH101', 'R2', 3], ['PHYS110', 'R2', 1], ['CHEM120', 'R1', 2]], [10, 5, 5, 1],\n    {'R1': 0, 'R2': 3, 'R3': 7}],\n   [11, 6, 17]),\n  ('regression variant: split period charge 2',\n   [[['MATH101H', 'R2', 3], ['CHEM120', 'R3', 3], ['CHEM120', 'R3', 2], ['MATH101', 'R1', 0],\n     ['MATH101', 'R2', 3], ['MATH101H', 'R2', 3]],\n    [0, 1, 0, 5], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [15, 13, 28]),\n  ('partial repair guard 3',\n   [[['MATH101', 'R2', 1], ['MATH101H', 'R1', 2], ['MATH101H', 'R1', 1], ['MATH101H', 'R2', 0],\n     ['MATH101H', 'R2', 2], ['MATH101', 'R2', 3], ['CHEM120', 'R1', 0], ['MATH101', 'R2', 1]],\n    [1, 1, 1, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [5, 6, 11]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R1', 1], ['MATH101', 'R2', 3], ['MATH101', 'R2', 2], ['MATH101', 'R1', 0],\n     ['MATH101H', 'R1', 1], ['MATH101', 'R1', 3], ['MATH101H', 'R2', 0]],\n    [5, 1, 10, 0], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [21, 2, 23]),\n  ('normal control 7',\n   [[['MATH101H', 'R3', 3], ['CHEM120', 'R3', 2]], [0, 1, 0, 5], {'R1': 0, 'R2': 3, 'R3': 7}], [5, 14, 19]),\n  ('normal control 8',\n   [[['CHEM120', 'R1', 2], ['MATH101H', 'R3', 0], ['CHEM120', 'R2', 1], ['MATH101', 'R2', 0],\n     ['MATH101', 'R3', 2]],\n    [1, 5, 10, 1], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [27, 10, 37])]]\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":"d9be034027e647c60eac000761d578bc0c512451bc703c7e3d0843ac636e0ad6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(assign, ppen, rpen):\n    seen_exam = set()\n    seen_room = set()\n    pp = rp = 0\n    for ex, r, p in assign:\n        pp += ppen[p]\n        if (ex, r) not in seen_room:\n            seen_room.add((ex, r))\n            rp += rpen[r]\n    return [pp, rp, pp + rp]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: split period charge 1', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}],\n   [5, 3, 8]),\n  ('regression variant: split period charge 2',\n   [[['CHEM120', 'R2', 3], ['PHYS110', 'R1', 0], ['PHYS110', 'R2', 1], ['PHYS110', 'R1', 0]], [1, 5, 1, 10],\n    {'R1': 0, 'R2': 3, 'R3': 2}],\n   [16, 6, 22]),\n  ('partial repair guard 3',\n   [[['CHEM120', 'R3', 1], ['PHYS110', 'R3', 2], ['CHEM120', 'R3', 2], ['CHEM120', 'R2', 2],\n     ['MATH101H', 'R2', 0], ['PHYS110', 'R3', 1], ['MATH101', 'R2', 3]],\n    [1, 1, 10, 10], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [33, 17, 50]),\n  ('boundary control 4', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 5',\n   [[['MATH101', 'R2', 2], ['PHYS110', 'R3', 2], ['MATH101', 'R1', 1], ['PHYS110', 'R1', 1],\n     ['PHYS110', 'R3', 2]],\n    [1, 0, 5, 10], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [10, 10, 20]),\n  ('normal control 6',\n   [[['MATH101', 'R2', 0], ['MATH101H', 'R3', 0], ['MATH101', 'R1', 1], ['CHEM120', 'R2', 0],\n     ['MATH101', 'R1', 1], ['CHEM120', 'R1', 1], ['MATH101', 'R1', 1]],\n    [5, 10, 1, 1], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [35, 9, 44]),\n  ('normal control 7',\n   [[['MATH101', 'R3', 1], ['CHEM120', 'R3', 1], ['MATH101H', 'R2', 2]], [5, 1, 10, 1],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [12, 5, 17]),\n  ('normal control 8',\n   [[['MATH101', 'R3', 1], ['CHEM120', 'R1', 3], ['MATH101', 'R2', 0], ['PHYS110', 'R2', 0],\n     ['MATH101', 'R2', 0], ['PHYS110', 'R2', 3], ['MATH101', 'R2', 0]],\n    [10, 1, 0, 1], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [23, 4, 27])],\n [('regression: split period charge 1', [[['A', 'R2', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}],\n   [5, 3, 8]),\n  ('regression variant: split period charge 2',\n   [[['MATH101', 'R3', 3], ['CHEM120', 'R3', 2], ['PHYS110', 'R1', 0], ['PHYS110', 'R1', 0]], [10, 10, 1, 10],\n    {'R1': 0, 'R2': 3, 'R3': 7}],\n   [21, 14, 35]),\n  ('partial repair guard 3',\n   [[['MATH101H', 'R2', 2], ['MATH101H', 'R3', 1], ['CHEM120', 'R1', 3], ['MATH101H', 'R1', 1],\n     ['MATH101H', 'R2', 2]],\n    [10, 10, 1, 10], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [21, 8, 29]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R3', 1], ['MATH101', 'R1', 2], ['MATH101H', 'R2', 2], ['MATH101H', 'R1', 0]], [1, 1, 0, 1],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [2, 3, 5]),\n  ('normal control 7',\n   [[['MATH101', 'R1', 1], ['MATH101', 'R3', 1], ['CHEM120', 'R1', 2], ['PHYS110', 'R1', 3],\n     ['CHEM120', 'R2', 0], ['CHEM120', 'R1', 0]],\n    [10, 5, 10, 10], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [35, 5, 40]),\n  ('normal control 8',\n   [[['CHEM120', 'R1', 3], ['MATH101H', 'R1', 1], ['CHEM120', 'R2', 0]], [0, 1, 0, 10],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [11, 1, 12])],\n [('regression: split period charge 1',\n   [[['MATH101H', 'R3', 1], ['MATH101', 'R1', 3], ['PHYS110', 'R1', 0], ['MATH101', 'R1', 0],\n     ['MATH101H', 'R1', 2], ['PHYS110', 'R1', 1], ['MATH101', 'R1', 3], ['MATH101H', 'R1', 2]],\n    [1, 0, 5, 10], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [17, 2, 19]),\n  ('regression variant: split period charge 2',\n   [[['MATH101H', 'R1', 0], ['CHEM120', 'R1', 3], ['PHYS110', 'R2', 3], ['MATH101H', 'R2', 0],\n     ['MATH101', 'R2', 2]],\n    [1, 0, 10, 10], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [31, 9, 40]),\n  ('partial repair guard 3',\n   [[['CHEM120', 'R3', 3], ['MATH101', 'R2', 0], ['PHYS110', 'R2', 1], ['CHEM120', 'R2', 3],\n     ['PHYS110', 'R3', 0], ['CHEM120', 'R2', 3], ['MATH101H', 'R1', 3]],\n    [1, 10, 10, 5], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [22, 13, 35]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R3', 0], ['CHEM120', 'R1', 3], ['MATH101', 'R3', 3], ['MATH101H', 'R2', 3],\n     ['MATH101', 'R2', 1], ['PHYS110', 'R2', 0], ['PHYS110', 'R3', 0]],\n    [1, 1, 10, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [3, 15, 18]),\n  ('normal control 7',\n   [[['MATH101H', 'R3', 2], ['CHEM120', 'R2', 2], ['MATH101H', 'R3', 0], ['CHEM120', 'R3', 2],\n     ['MATH101', 'R1', 3], ['MATH101', 'R2', 1], ['CHEM120', 'R3', 2]],\n    [10, 1, 1, 10], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [23, 6, 29]),\n  ('normal control 8',\n   [[['MATH101', 'R2', 2], ['CHEM120', 'R2', 0], ['CHEM120', 'R2', 1], ['MATH101H', 'R1', 3],\n     ['PHYS110', 'R1', 0], ['MATH101H', 'R3', 1], ['MATH101H', 'R1', 3]],\n    [0, 10, 1, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [21, 8, 29])],\n [('regression: split period charge 1',\n   [[['CHEM120', 'R2', 0], ['MATH101H', 'R1', 3], ['PHYS110', 'R2', 3], ['PHYS110', 'R2', 3],\n     ['PHYS110', 'R2', 3]],\n    [1, 1, 0, 1], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [3, 2, 5]),\n  ('regression variant: split period charge 2',\n   [[['MATH101', 'R1', 3], ['MATH101', 'R3', 0], ['MATH101', 'R1', 1], ['MATH101H', 'R3', 1],\n     ['CHEM120', 'R1', 3], ['CHEM120', 'R2', 1], ['MATH101', 'R2', 3], ['MATH101', 'R3', 0]],\n    [10, 10, 0, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [40, 10, 50]),\n  ('partial repair guard 3',\n   [[['MATH101H', 'R3', 1], ['MATH101H', 'R1', 1]], [0, 5, 5, 5], {'R1': 0, 'R2': 3, 'R3': 2}], [5, 2, 7]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['PHYS110', 'R3', 3], ['MATH101', 'R3', 0]], [5, 0, 1, 5], {'R1': 0, 'R2': 1, 'R3': 7}], [10, 14, 24]),\n  ('normal control 7',\n   [[['PHYS110', 'R1', 0], ['MATH101H', 'R1', 0]], [0, 5, 0, 10], {'R1': 0, 'R2': 3, 'R3': 2}], [0, 0, 0]),\n  ('normal control 8',\n   [[['MATH101', 'R1', 0], ['CHEM120', 'R1', 1], ['PHYS110', 'R2', 0], ['MATH101', 'R1', 0],\n     ['PHYS110', 'R2', 0]],\n    [10, 5, 1, 0], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [25, 3, 28])],\n [('regression: split period charge 1',\n   [[['CHEM120', 'R1', 2], ['MATH101', 'R2', 3], ['PHYS110', 'R2', 1], ['CHEM120', 'R1', 2]], [10, 5, 5, 1],\n    {'R1': 0, 'R2': 3, 'R3': 7}],\n   [11, 6, 17]),\n  ('regression variant: split period charge 2',\n   [[['MATH101H', 'R2', 3], ['CHEM120', 'R3', 3], ['CHEM120', 'R3', 2], ['MATH101', 'R1', 0],\n     ['MATH101', 'R2', 3], ['MATH101H', 'R2', 3]],\n    [0, 1, 0, 5], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [15, 13, 28]),\n  ('partial repair guard 3',\n   [[['MATH101', 'R2', 1], ['MATH101H', 'R1', 2], ['MATH101H', 'R1', 1], ['MATH101H', 'R2', 0],\n     ['MATH101H', 'R2', 2], ['MATH101', 'R2', 3], ['CHEM120', 'R1', 0], ['MATH101', 'R2', 1]],\n    [1, 1, 1, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [5, 6, 11]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R1', 1], ['MATH101', 'R2', 3], ['MATH101', 'R2', 2], ['MATH101', 'R1', 0],\n     ['MATH101H', 'R1', 1], ['MATH101', 'R1', 3], ['MATH101H', 'R2', 0]],\n    [5, 1, 10, 0], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [21, 2, 23]),\n  ('normal control 7',\n   [[['MATH101H', 'R3', 3], ['CHEM120', 'R3', 2]], [0, 1, 0, 5], {'R1': 0, 'R2': 3, 'R3': 7}], [5, 14, 19]),\n  ('normal control 8',\n   [[['CHEM120', 'R1', 2], ['MATH101H', 'R3', 0], ['CHEM120', 'R2', 1], ['MATH101', 'R2', 0],\n     ['MATH101', 'R3', 2]],\n    [1, 5, 10, 1], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [27, 10, 37])]]\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":"f79dc6f7b9e66fe7d925a2ff23fd7e5189218f8da83dcc76a81a8df09f061498","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(assign, ppen, rpen):\n    seen_exam = set()\n    seen_room = set()\n    pp = rp = 0\n    for ex, r, p in assign:\n        if (ex, p) not in seen_exam:\n            seen_exam.add((ex, p))\n            pp += ppen[p]\n        if (ex, r) not in seen_room:\n            seen_room.add((ex, r))\n            rp += rpen[r]\n    return [pp, rp, pp + rp]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: split period charge 1', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}],\n   [5, 3, 8]),\n  ('regression variant: split period charge 2',\n   [[['CHEM120', 'R2', 3], ['PHYS110', 'R1', 0], ['PHYS110', 'R2', 1], ['PHYS110', 'R1', 0]], [1, 5, 1, 10],\n    {'R1': 0, 'R2': 3, 'R3': 2}],\n   [16, 6, 22]),\n  ('partial repair guard 3',\n   [[['CHEM120', 'R3', 1], ['PHYS110', 'R3', 2], ['CHEM120', 'R3', 2], ['CHEM120', 'R2', 2],\n     ['MATH101H', 'R2', 0], ['PHYS110', 'R3', 1], ['MATH101', 'R2', 3]],\n    [1, 1, 10, 10], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [33, 17, 50]),\n  ('boundary control 4', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 5',\n   [[['MATH101', 'R2', 2], ['PHYS110', 'R3', 2], ['MATH101', 'R1', 1], ['PHYS110', 'R1', 1],\n     ['PHYS110', 'R3', 2]],\n    [1, 0, 5, 10], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [10, 10, 20]),\n  ('normal control 6',\n   [[['MATH101', 'R2', 0], ['MATH101H', 'R3', 0], ['MATH101', 'R1', 1], ['CHEM120', 'R2', 0],\n     ['MATH101', 'R1', 1], ['CHEM120', 'R1', 1], ['MATH101', 'R1', 1]],\n    [5, 10, 1, 1], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [35, 9, 44]),\n  ('normal control 7',\n   [[['MATH101', 'R3', 1], ['CHEM120', 'R3', 1], ['MATH101H', 'R2', 2]], [5, 1, 10, 1],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [12, 5, 17]),\n  ('normal control 8',\n   [[['MATH101', 'R3', 1], ['CHEM120', 'R1', 3], ['MATH101', 'R2', 0], ['PHYS110', 'R2', 0],\n     ['MATH101', 'R2', 0], ['PHYS110', 'R2', 3], ['MATH101', 'R2', 0]],\n    [10, 1, 0, 1], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [23, 4, 27])],\n [('regression: split period charge 1', [[['A', 'R2', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}],\n   [5, 3, 8]),\n  ('regression variant: split period charge 2',\n   [[['MATH101', 'R3', 3], ['CHEM120', 'R3', 2], ['PHYS110', 'R1', 0], ['PHYS110', 'R1', 0]], [10, 10, 1, 10],\n    {'R1': 0, 'R2': 3, 'R3': 7}],\n   [21, 14, 35]),\n  ('partial repair guard 3',\n   [[['MATH101H', 'R2', 2], ['MATH101H', 'R3', 1], ['CHEM120', 'R1', 3], ['MATH101H', 'R1', 1],\n     ['MATH101H', 'R2', 2]],\n    [10, 10, 1, 10], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [21, 8, 29]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R3', 1], ['MATH101', 'R1', 2], ['MATH101H', 'R2', 2], ['MATH101H', 'R1', 0]], [1, 1, 0, 1],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [2, 3, 5]),\n  ('normal control 7',\n   [[['MATH101', 'R1', 1], ['MATH101', 'R3', 1], ['CHEM120', 'R1', 2], ['PHYS110', 'R1', 3],\n     ['CHEM120', 'R2', 0], ['CHEM120', 'R1', 0]],\n    [10, 5, 10, 10], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [35, 5, 40]),\n  ('normal control 8',\n   [[['CHEM120', 'R1', 3], ['MATH101H', 'R1', 1], ['CHEM120', 'R2', 0]], [0, 1, 0, 10],\n    {'R1': 0, 'R2': 1, 'R3': 2}],\n   [11, 1, 12])],\n [('regression: split period charge 1',\n   [[['MATH101H', 'R3', 1], ['MATH101', 'R1', 3], ['PHYS110', 'R1', 0], ['MATH101', 'R1', 0],\n     ['MATH101H', 'R1', 2], ['PHYS110', 'R1', 1], ['MATH101', 'R1', 3], ['MATH101H', 'R1', 2]],\n    [1, 0, 5, 10], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [17, 2, 19]),\n  ('regression variant: split period charge 2',\n   [[['MATH101H', 'R1', 0], ['CHEM120', 'R1', 3], ['PHYS110', 'R2', 3], ['MATH101H', 'R2', 0],\n     ['MATH101', 'R2', 2]],\n    [1, 0, 10, 10], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [31, 9, 40]),\n  ('partial repair guard 3',\n   [[['CHEM120', 'R3', 3], ['MATH101', 'R2', 0], ['PHYS110', 'R2', 1], ['CHEM120', 'R2', 3],\n     ['PHYS110', 'R3', 0], ['CHEM120', 'R2', 3], ['MATH101H', 'R1', 3]],\n    [1, 10, 10, 5], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [22, 13, 35]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R3', 0], ['CHEM120', 'R1', 3], ['MATH101', 'R3', 3], ['MATH101H', 'R2', 3],\n     ['MATH101', 'R2', 1], ['PHYS110', 'R2', 0], ['PHYS110', 'R3', 0]],\n    [1, 1, 10, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [3, 15, 18]),\n  ('normal control 7',\n   [[['MATH101H', 'R3', 2], ['CHEM120', 'R2', 2], ['MATH101H', 'R3', 0], ['CHEM120', 'R3', 2],\n     ['MATH101', 'R1', 3], ['MATH101', 'R2', 1], ['CHEM120', 'R3', 2]],\n    [10, 1, 1, 10], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [23, 6, 29]),\n  ('normal control 8',\n   [[['MATH101', 'R2', 2], ['CHEM120', 'R2', 0], ['CHEM120', 'R2', 1], ['MATH101H', 'R1', 3],\n     ['PHYS110', 'R1', 0], ['MATH101H', 'R3', 1], ['MATH101H', 'R1', 3]],\n    [0, 10, 1, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [21, 8, 29])],\n [('regression: split period charge 1',\n   [[['CHEM120', 'R2', 0], ['MATH101H', 'R1', 3], ['PHYS110', 'R2', 3], ['PHYS110', 'R2', 3],\n     ['PHYS110', 'R2', 3]],\n    [1, 1, 0, 1], {'R1': 0, 'R2': 1, 'R3': 2}],\n   [3, 2, 5]),\n  ('regression variant: split period charge 2',\n   [[['MATH101', 'R1', 3], ['MATH101', 'R3', 0], ['MATH101', 'R1', 1], ['MATH101H', 'R3', 1],\n     ['CHEM120', 'R1', 3], ['CHEM120', 'R2', 1], ['MATH101', 'R2', 3], ['MATH101', 'R3', 0]],\n    [10, 10, 0, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [40, 10, 50]),\n  ('partial repair guard 3',\n   [[['MATH101H', 'R3', 1], ['MATH101H', 'R1', 1]], [0, 5, 5, 5], {'R1': 0, 'R2': 3, 'R3': 2}], [5, 2, 7]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['PHYS110', 'R3', 3], ['MATH101', 'R3', 0]], [5, 0, 1, 5], {'R1': 0, 'R2': 1, 'R3': 7}], [10, 14, 24]),\n  ('normal control 7',\n   [[['PHYS110', 'R1', 0], ['MATH101H', 'R1', 0]], [0, 5, 0, 10], {'R1': 0, 'R2': 3, 'R3': 2}], [0, 0, 0]),\n  ('normal control 8',\n   [[['MATH101', 'R1', 0], ['CHEM120', 'R1', 1], ['PHYS110', 'R2', 0], ['MATH101', 'R1', 0],\n     ['PHYS110', 'R2', 0]],\n    [10, 5, 1, 0], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [25, 3, 28])],\n [('regression: split period charge 1',\n   [[['CHEM120', 'R1', 2], ['MATH101', 'R2', 3], ['PHYS110', 'R2', 1], ['CHEM120', 'R1', 2]], [10, 5, 5, 1],\n    {'R1': 0, 'R2': 3, 'R3': 7}],\n   [11, 6, 17]),\n  ('regression variant: split period charge 2',\n   [[['MATH101H', 'R2', 3], ['CHEM120', 'R3', 3], ['CHEM120', 'R3', 2], ['MATH101', 'R1', 0],\n     ['MATH101', 'R2', 3], ['MATH101H', 'R2', 3]],\n    [0, 1, 0, 5], {'R1': 0, 'R2': 3, 'R3': 7}],\n   [15, 13, 28]),\n  ('partial repair guard 3',\n   [[['MATH101', 'R2', 1], ['MATH101H', 'R1', 2], ['MATH101H', 'R1', 1], ['MATH101H', 'R2', 0],\n     ['MATH101H', 'R2', 2], ['MATH101', 'R2', 3], ['CHEM120', 'R1', 0], ['MATH101', 'R2', 1]],\n    [1, 1, 1, 0], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [5, 6, 11]),\n  ('boundary control 4', [[['A', 'R1', 1], ['A', 'R2', 1]], [0, 5, 0, 0], {'R1': 0, 'R2': 3}], [5, 3, 8]),\n  ('boundary control 5', [[['A', 'R2', 0], ['B', 'R2', 0]], [2, 5, 0, 0], {'R1': 0, 'R2': 3}], [4, 6, 10]),\n  ('normal control 6',\n   [[['MATH101H', 'R1', 1], ['MATH101', 'R2', 3], ['MATH101', 'R2', 2], ['MATH101', 'R1', 0],\n     ['MATH101H', 'R1', 1], ['MATH101', 'R1', 3], ['MATH101H', 'R2', 0]],\n    [5, 1, 10, 0], {'R1': 0, 'R2': 1, 'R3': 7}],\n   [21, 2, 23]),\n  ('normal control 7',\n   [[['MATH101H', 'R3', 3], ['CHEM120', 'R3', 2]], [0, 1, 0, 5], {'R1': 0, 'R2': 3, 'R3': 7}], [5, 14, 19]),\n  ('normal control 8',\n   [[['CHEM120', 'R1', 2], ['MATH101H', 'R3', 0], ['CHEM120', 'R2', 1], ['MATH101', 'R2', 0],\n     ['MATH101', 'R3', 2]],\n    [1, 5, 10, 1], {'R1': 0, 'R2': 3, 'R3': 2}],\n   [27, 10, 37])]]\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-period-and-room-penalties-split-period-charge","generated_at":"2026-09-29T14:52:06.475732+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Period and room preferences are soft costs that must not be multiplied by exam splitting.","repair":"Charge the period penalty once per exam and period.","root_cause":"The period penalty is charged per assignment row.","sha256":"180a6d1972d03e7eb185a01867f1eb8232220555a6d2b83e9df2474f8e8a5dda","title":"Period penalty charged once per room of a split exam · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.769,"exit_code":1,"observations":[{"actual":[10,3,13],"check":"regression: split period charge 1","expected":[5,3,8],"passed":false},{"actual":[16,6,22],"check":"regression variant: split period charge 2","expected":[16,6,22],"passed":true},{"actual":[43,17,60],"check":"partial repair guard 3","expected":[33,17,50],"passed":false},{"actual":[4,6,10],"check":"boundary control 4","expected":[4,6,10],"passed":true},{"actual":[10,10,20],"check":"normal control 5","expected":[10,10,20],"passed":true},{"actual":[35,9,44],"check":"normal control 6","expected":[35,9,44],"passed":true},{"actual":[12,5,17],"check":"normal control 7","expected":[12,5,17],"passed":true},{"actual":[23,4,27],"check":"normal control 8","expected":[23,4,27],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: split period charge 1\", \"actual\": [10, 3, 13], \"expected\": [5, 3, 8], \"passed\": false}, {\"check\": \"regression variant: split period charge 2\", \"actual\": [16, 6, 22], \"expected\": [16, 6, 22], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [43, 17, 60], \"expected\": [33, 17, 50], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [4, 6, 10], \"expected\": [4, 6, 10], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [10, 10, 20], \"expected\": [10, 10, 20], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [35, 9, 44], \"expected\": [35, 9, 44], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [12, 5, 17], \"expected\": [12, 5, 17], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [23, 4, 27], \"expected\": [23, 4, 27], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.993,"exit_code":1,"observations":[{"actual":[10,3,13],"check":"regression: split period charge 1","expected":[5,3,8],"passed":false},{"actual":[17,6,23],"check":"regression variant: split period charge 2","expected":[16,6,22],"passed":false},{"actual":[43,17,60],"check":"partial repair guard 3","expected":[33,17,50],"passed":false},{"actual":[4,6,10],"check":"boundary control 4","expected":[4,6,10],"passed":true},{"actual":[15,10,25],"check":"normal control 5","expected":[10,10,20],"passed":false},{"actual":[55,9,64],"check":"normal control 6","expected":[35,9,44],"passed":false},{"actual":[12,5,17],"check":"normal control 7","expected":[12,5,17],"passed":true},{"actual":[43,4,47],"check":"normal control 8","expected":[23,4,27],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: split period charge 1\", \"actual\": [10, 3, 13], \"expected\": [5, 3, 8], \"passed\": false}, {\"check\": \"regression variant: split period charge 2\", \"actual\": [17, 6, 23], \"expected\": [16, 6, 22], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [43, 17, 60], \"expected\": [33, 17, 50], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [4, 6, 10], \"expected\": [4, 6, 10], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [15, 10, 25], \"expected\": [10, 10, 20], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [55, 9, 64], \"expected\": [35, 9, 44], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [12, 5, 17], \"expected\": [12, 5, 17], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [43, 4, 47], \"expected\": [23, 4, 27], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.388,"exit_code":0,"observations":[{"actual":[5,3,8],"check":"regression: split period charge 1","expected":[5,3,8],"passed":true},{"actual":[16,6,22],"check":"regression variant: split period charge 2","expected":[16,6,22],"passed":true},{"actual":[33,17,50],"check":"partial repair guard 3","expected":[33,17,50],"passed":true},{"actual":[4,6,10],"check":"boundary control 4","expected":[4,6,10],"passed":true},{"actual":[10,10,20],"check":"normal control 5","expected":[10,10,20],"passed":true},{"actual":[35,9,44],"check":"normal control 6","expected":[35,9,44],"passed":true},{"actual":[12,5,17],"check":"normal control 7","expected":[12,5,17],"passed":true},{"actual":[23,4,27],"check":"normal control 8","expected":[23,4,27],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: split period charge 1\", \"actual\": [5, 3, 8], \"expected\": [5, 3, 8], \"passed\": true}, {\"check\": \"regression variant: split period charge 2\", \"actual\": [16, 6, 22], \"expected\": [16, 6, 22], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [33, 17, 50], \"expected\": [33, 17, 50], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [4, 6, 10], \"expected\": [4, 6, 10], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [10, 10, 20], \"expected\": [10, 10, 20], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [35, 9, 44], \"expected\": [35, 9, 44], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [12, 5, 17], \"expected\": [12, 5, 17], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [23, 4, 27], \"expected\": [23, 4, 27], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}