{"abstract":"Students with exactly the allowed number of exams in a day are listed.","category":"Exam timetabling constraints","checks":8,"contract":"sits [student, exam, start minute] (rows may repeat an exam). A student violates the limit if more than limit distinct exams start inside some half-open 24-hour window [t, t + 1440). Return [student, maximum count] for violators, by student.","contract_signature":"sits, limit","evaluation_group":"w2-exam-timetabling-constraints-rolling-day-exam-load","failed_approach":"Counting all of a student's exams ignores the window.","family":"w2-exam-timetabling-constraints-rolling-day-exam-load-limit-comparison","id":"FA-94516","implementations":{"attempt":{"sha256":"56b6de7b89e099f3dd1d3e4f447d3dcc933eab39378b869858e5cb98c4a2a428","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sits, limit):\n    by = {}\n    for st, ex, t in sits:\n        by.setdefault(st, {})[ex] = t\n    out = []\n    for st in sorted(by):\n        ts = sorted(by[st].values())\n        best = 0\n        j = 0\n        for i in range(len(ts)):\n            while ts[i] - ts[j] >= 1440:\n                j += 1\n            best = max(best, i - j + 1)\n        if len(ts) > limit:\n            out.append([st, best])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: limit comparison 1', [[['s1', 'A', 540], ['s1', 'B', 1980], ['s1', 'C', 2000]], 2], []),\n  ('regression variant: limit comparison 2',\n   [[['s1', 'PHYS110', 540], ['s2', 'PHYS110', 900], ['s2', 'HIST140', 600], ['s1', 'ECON150', 1800],\n     ['s1', 'CHEM120', 540]],\n    2],\n   [['s1', 3]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 600], ['s2', 'MATH101H', 2760], ['s1', 'ECON150', 3420], ['s2', 'ECON150', 2040],\n     ['s1', 'BIO130', 4861], ['s2', 'ECON150', 2040], ['s1', 'MATH101', 540], ['s2', 'PHYS110', 1860]],\n    2],\n   [['s2', 3]]),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'A', 600], ['s1', 'B', 900]], 1], [['s1', 2]]),\n  ('normal control 5',\n   [[['s5', 'BIO130', 3420], ['s5', 'PHYS110', 540], ['s4', 'MATH101H', 840], ['s4', 'MATH101', 540],\n     ['s5', 'MATH101', 4680]],\n    2],\n   []),\n  ('normal control 6', [[['s4', 'CHEM120', 1800], ['s4', 'ECON150', 540], ['s4', 'ECON150', 540]], 2], []),\n  ('normal control 7',\n   [[['s2', 'PHYS110', 2699], ['s2', 'MATH101', 1260], ['s2', 'ECON150', 540], ['s5', 'HIST140', 6899],\n     ['s5', 'MATH101H', 3299], ['s5', 'PHYS110', 1860], ['s2', 'MATH101H', 540], ['s2', 'PHYS110', 2699],\n     ['s5', 'CHEM120', 6179], ['s5', 'MATH101', 600]],\n    3],\n   []),\n  ('normal control 8',\n   [[['s3', 'BIO130', 5220], ['s3', 'HIST140', 1860], ['s2', 'BIO130', 720], ['s3', 'ECON150', 4920],\n     ['s2', 'MATH101H', 3600], ['s3', 'MATH101H', 600], ['s5', 'MATH101H', 600], ['s3', 'CHEM120', 4740],\n     ['s5', 'HIST140', 1440], ['s2', 'HIST140', 540]],\n    3],\n   [])],\n [('regression: limit comparison 1', [[['s1', 'A', 540], ['s1', 'B', 1979], ['s1', 'C', 1990]], 2], []),\n  ('regression variant: limit comparison 2',\n   [[['s3', 'PHYS110', 600], ['s3', 'MATH101H', 2280], ['s3', 'HIST140', 1440], ['s3', 'MATH101', 5160]], 2],\n   []),\n  ('partial repair guard 3',\n   [[['s2', 'CHEM120', 600], ['s1', 'HIST140', 780], ['s3', 'HIST140', 2040], ['s1', 'MATH101H', 2520],\n     ['s1', 'CHEM120', 600], ['s2', 'ECON150', 5941], ['s2', 'BIO130', 900], ['s2', 'HIST140', 5221],\n     ['s3', 'PHYS110', 600], ['s2', 'PHYS110', 3780], ['s1', 'PHYS110', 1080]],\n    2],\n   [['s1', 3]]),\n  ('normal control 4', [[['s4', 'ECON150', 600], ['s4', 'MATH101H', 780], ['s4', 'PHYS110', 3660]], 2], []),\n  ('normal control 5',\n   [[['s1', 'HIST140', 6600], ['s1', 'ECON150', 6300], ['s1', 'CHEM120', 540], ['s1', 'MATH101', 6300],\n     ['s1', 'HIST140', 6600], ['s1', 'BIO130', 3420]],\n    1],\n   [['s1', 3]]),\n  ('normal control 6',\n   [[['s2', 'CHEM120', 2041], ['s3', 'BIO130', 540], ['s3', 'MATH101', 1380], ['s3', 'MATH101H', 3661],\n     ['s2', 'MATH101', 3301], ['s1', 'MATH101H', 600], ['s3', 'CHEM120', 2220], ['s2', 'MATH101H', 4021],\n     ['s3', 'BIO130', 540], ['s1', 'PHYS110', 600], ['s1', 'CHEM120', 780], ['s2', 'PHYS110', 600],\n     ['s2', 'HIST140', 600]],\n    3],\n   []),\n  ('normal control 7',\n   [[['s3', 'MATH101H', 600], ['s3', 'HIST140', 5761], ['s3', 'PHYS110', 2041], ['s3', 'CHEM120', 4921]], 2],\n   []),\n  ('normal control 8', [[['s4', 'CHEM120', 1800], ['s4', 'ECON150', 540], ['s4', 'ECON150', 540]], 2], [])],\n [('regression: limit comparison 1', [[['s5', 'PHYS110', 1380], ['s5', 'CHEM120', 540]], 2], []),\n  ('regression variant: limit comparison 2',\n   [[['s2', 'MATH101', 1440], ['s1', 'HIST140', 720], ['s4', 'HIST140', 600], ['s1', 'MATH101H', 540],\n     ['s1', 'CHEM120', 900], ['s2', 'CHEM120', 1440], ['s1', 'MATH101', 2341], ['s2', 'PHYS110', 2881],\n     ['s2', 'MATH101H', 600], ['s4', 'ECON150', 780]],\n    2],\n   [['s1', 3], ['s2', 3]]),\n  ('partial repair guard 3',\n   [[['s5', 'MATH101', 3481], ['s5', 'PHYS110', 600], ['s5', 'MATH101', 3481], ['s1', 'ECON150', 540],\n     ['s5', 'BIO130', 2040], ['s1', 'BIO130', 1380], ['s5', 'MATH101H', 1860], ['s5', 'CHEM120', 600]],\n    3],\n   []),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'B', 600], ['s1', 'C', 900]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s2', 'HIST140', 4860], ['s2', 'MATH101', 5160], ['s3', 'BIO130', 3060], ['s2', 'MATH101H', 1980],\n     ['s3', 'HIST140', 2760], ['s3', 'ECON150', 600], ['s2', 'ECON150', 5460], ['s3', 'MATH101H', 3240],\n     ['s3', 'PHYS110', 1320], ['s2', 'CHEM120', 540], ['s2', 'MATH101', 5160]],\n    3],\n   []),\n  ('normal control 6',\n   [[['s4', 'BIO130', 4920], ['s4', 'CHEM120', 2040], ['s4', 'MATH101H', 600], ['s4', 'HIST140', 6359],\n     ['s4', 'PHYS110', 2040]],\n    2],\n   []),\n  ('normal control 7',\n   [[['s2', 'BIO130', 600], ['s2', 'HIST140', 6179], ['s2', 'ECON150', 3480], ['s2', 'HIST140', 6179],\n     ['s2', 'MATH101H', 2041], ['s2', 'PHYS110', 4919]],\n    1],\n   [['s2', 2]]),\n  ('normal control 8',\n   [[['s2', 'PHYS110', 2880], ['s2', 'HIST140', 600], ['s2', 'MATH101', 2880], ['s2', 'BIO130', 1440]], 2],\n   [])],\n [('regression: limit comparison 1',\n   [[['s3', 'HIST140', 2039], ['s3', 'BIO130', 600], ['s3', 'HIST140', 2039], ['s3', 'MATH101', 3299]], 2],\n   []),\n  ('regression variant: limit comparison 2',\n   [[['s3', 'BIO130', 540], ['s5', 'PHYS110', 1320], ['s4', 'BIO130', 1980], ['s3', 'PHYS110', 1380],\n     ['s5', 'BIO130', 600], ['s4', 'ECON150', 540]],\n    1],\n   [['s3', 2], ['s5', 2]]),\n  ('partial repair guard 3',\n   [[['s3', 'PHYS110', 3059], ['s4', 'MATH101H', 1320], ['s3', 'HIST140', 900], ['s4', 'BIO130', 600],\n     ['s3', 'BIO130', 1620], ['s3', 'MATH101H', 600], ['s4', 'PHYS110', 1500]],\n    3],\n   []),\n  ('boundary control 4', [[['s1', 'A', 1300], ['s1', 'B', 1500], ['s1', 'C', 1600]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s1', 'CHEM120', 540], ['s4', 'MATH101', 3422], ['s4', 'PHYS110', 1981], ['s4', 'ECON150', 540],\n     ['s2', 'MATH101H', 540], ['s2', 'BIO130', 1680], ['s1', 'MATH101', 540], ['s1', 'MATH101H', 720],\n     ['s2', 'HIST140', 1380]],\n    3],\n   []),\n  ('normal control 6',\n   [[['s2', 'BIO130', 600], ['s2', 'HIST140', 6179], ['s2', 'ECON150', 3480], ['s2', 'HIST140', 6179],\n     ['s2', 'MATH101H', 2041], ['s2', 'PHYS110', 4919]],\n    1],\n   [['s2', 2]]),\n  ('normal control 7',\n   [[['s5', 'CHEM120', 4500], ['s2', 'PHYS110', 3300], ['s5', 'MATH101H', 600], ['s2', 'HIST140', 6180],\n     ['s5', 'PHYS110', 1440], ['s2', 'ECON150', 600], ['s5', 'HIST140', 1620], ['s2', 'MATH101', 6900],\n     ['s5', 'MATH101', 5941], ['s2', 'BIO130', 1860], ['s5', 'MATH101', 5941]],\n    1],\n   [['s2', 2], ['s5', 3]]),\n  ('normal control 8', [[['s4', 'CHEM120', 600], ['s4', 'CHEM120', 600], ['s4', 'MATH101H', 2040]], 2], [])],\n [('regression: limit comparison 1',\n   [[['s5', 'ECON150', 1980], ['s5', 'CHEM120', 3000], ['s2', 'MATH101H', 2041], ['s2', 'HIST140', 2761],\n     ['s2', 'BIO130', 600], ['s1', 'PHYS110', 540], ['s2', 'CHEM120', 3601], ['s1', 'HIST140', 1380],\n     ['s5', 'MATH101H', 540], ['s5', 'PHYS110', 2280]],\n    2],\n   [['s5', 3]]),\n  ('regression variant: limit comparison 2',\n   [[['s4', 'ECON150', 1979], ['s4', 'CHEM120', 4859], ['s1', 'CHEM120', 2761], ['s4', 'MATH101H', 540],\n     ['s1', 'BIO130', 4321], ['s4', 'PHYS110', 1979], ['s1', 'ECON150', 3481], ['s1', 'PHYS110', 600],\n     ['s1', 'MATH101', 1320], ['s4', 'MATH101H', 540], ['s4', 'HIST140', 7739]],\n    2],\n   [['s4', 3]]),\n  ('partial repair guard 3', [[['s1', 'HIST140', 3300], ['s1', 'ECON150', 600], ['s1', 'MATH101', 2040]], 2],\n   []),\n  ('boundary control 4', [[['s1', 'A', 540], ['s1', 'B', 1980], ['s1', 'C', 2000]], 2], []),\n  ('normal control 5',\n   [[['s2', 'PHYS110', 540], ['s3', 'MATH101', 2040], ['s2', 'CHEM120', 1979], ['s1', 'CHEM120', 1980],\n     ['s1', 'BIO130', 3419], ['s2', 'BIO130', 5759], ['s1', 'HIST140', 540], ['s2', 'MATH101', 5579],\n     ['s2', 'MATH101H', 4859], ['s3', 'HIST140', 600]],\n    3],\n   []),\n  ('normal control 6',\n   [[['s2', 'MATH101H', 2160], ['s2', 'PHYS110', 3599], ['s2', 'HIST140', 540], ['s2', 'BIO130', 720],\n     ['s2', 'ECON150', 720]],\n    3],\n   []),\n  ('normal control 7',\n   [[['s4', 'CHEM120', 600], ['s4', 'ECON150', 1860], ['s4', 'MATH101H', 4920], ['s4', 'HIST140', 4740]], 1],\n   [['s4', 2]]),\n  ('normal control 8',\n   [[['s2', 'CHEM120', 3301], ['s2', 'CHEM120', 3301], ['s2', 'HIST140', 600], ['s2', 'ECON150', 1860],\n     ['s5', 'ECON150', 1981], ['s2', 'PHYS110', 4740], ['s5', 'MATH101H', 540]],\n    2],\n   [])]]\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":"37e3f36394bc71ccb418855e8af85733458e0adeacf2f5460f12a9047ed75db5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sits, limit):\n    by = {}\n    for st, ex, t in sits:\n        by.setdefault(st, {})[ex] = t\n    out = []\n    for st in sorted(by):\n        ts = sorted(by[st].values())\n        best = 0\n        j = 0\n        for i in range(len(ts)):\n            while ts[i] - ts[j] >= 1440:\n                j += 1\n            best = max(best, i - j + 1)\n        if best >= limit:\n            out.append([st, best])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: limit comparison 1', [[['s1', 'A', 540], ['s1', 'B', 1980], ['s1', 'C', 2000]], 2], []),\n  ('regression variant: limit comparison 2',\n   [[['s1', 'PHYS110', 540], ['s2', 'PHYS110', 900], ['s2', 'HIST140', 600], ['s1', 'ECON150', 1800],\n     ['s1', 'CHEM120', 540]],\n    2],\n   [['s1', 3]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 600], ['s2', 'MATH101H', 2760], ['s1', 'ECON150', 3420], ['s2', 'ECON150', 2040],\n     ['s1', 'BIO130', 4861], ['s2', 'ECON150', 2040], ['s1', 'MATH101', 540], ['s2', 'PHYS110', 1860]],\n    2],\n   [['s2', 3]]),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'A', 600], ['s1', 'B', 900]], 1], [['s1', 2]]),\n  ('normal control 5',\n   [[['s5', 'BIO130', 3420], ['s5', 'PHYS110', 540], ['s4', 'MATH101H', 840], ['s4', 'MATH101', 540],\n     ['s5', 'MATH101', 4680]],\n    2],\n   []),\n  ('normal control 6', [[['s4', 'CHEM120', 1800], ['s4', 'ECON150', 540], ['s4', 'ECON150', 540]], 2], []),\n  ('normal control 7',\n   [[['s2', 'PHYS110', 2699], ['s2', 'MATH101', 1260], ['s2', 'ECON150', 540], ['s5', 'HIST140', 6899],\n     ['s5', 'MATH101H', 3299], ['s5', 'PHYS110', 1860], ['s2', 'MATH101H', 540], ['s2', 'PHYS110', 2699],\n     ['s5', 'CHEM120', 6179], ['s5', 'MATH101', 600]],\n    3],\n   []),\n  ('normal control 8',\n   [[['s3', 'BIO130', 5220], ['s3', 'HIST140', 1860], ['s2', 'BIO130', 720], ['s3', 'ECON150', 4920],\n     ['s2', 'MATH101H', 3600], ['s3', 'MATH101H', 600], ['s5', 'MATH101H', 600], ['s3', 'CHEM120', 4740],\n     ['s5', 'HIST140', 1440], ['s2', 'HIST140', 540]],\n    3],\n   [])],\n [('regression: limit comparison 1', [[['s1', 'A', 540], ['s1', 'B', 1979], ['s1', 'C', 1990]], 2], []),\n  ('regression variant: limit comparison 2',\n   [[['s3', 'PHYS110', 600], ['s3', 'MATH101H', 2280], ['s3', 'HIST140', 1440], ['s3', 'MATH101', 5160]], 2],\n   []),\n  ('partial repair guard 3',\n   [[['s2', 'CHEM120', 600], ['s1', 'HIST140', 780], ['s3', 'HIST140', 2040], ['s1', 'MATH101H', 2520],\n     ['s1', 'CHEM120', 600], ['s2', 'ECON150', 5941], ['s2', 'BIO130', 900], ['s2', 'HIST140', 5221],\n     ['s3', 'PHYS110', 600], ['s2', 'PHYS110', 3780], ['s1', 'PHYS110', 1080]],\n    2],\n   [['s1', 3]]),\n  ('normal control 4', [[['s4', 'ECON150', 600], ['s4', 'MATH101H', 780], ['s4', 'PHYS110', 3660]], 2], []),\n  ('normal control 5',\n   [[['s1', 'HIST140', 6600], ['s1', 'ECON150', 6300], ['s1', 'CHEM120', 540], ['s1', 'MATH101', 6300],\n     ['s1', 'HIST140', 6600], ['s1', 'BIO130', 3420]],\n    1],\n   [['s1', 3]]),\n  ('normal control 6',\n   [[['s2', 'CHEM120', 2041], ['s3', 'BIO130', 540], ['s3', 'MATH101', 1380], ['s3', 'MATH101H', 3661],\n     ['s2', 'MATH101', 3301], ['s1', 'MATH101H', 600], ['s3', 'CHEM120', 2220], ['s2', 'MATH101H', 4021],\n     ['s3', 'BIO130', 540], ['s1', 'PHYS110', 600], ['s1', 'CHEM120', 780], ['s2', 'PHYS110', 600],\n     ['s2', 'HIST140', 600]],\n    3],\n   []),\n  ('normal control 7',\n   [[['s3', 'MATH101H', 600], ['s3', 'HIST140', 5761], ['s3', 'PHYS110', 2041], ['s3', 'CHEM120', 4921]], 2],\n   []),\n  ('normal control 8', [[['s4', 'CHEM120', 1800], ['s4', 'ECON150', 540], ['s4', 'ECON150', 540]], 2], [])],\n [('regression: limit comparison 1', [[['s5', 'PHYS110', 1380], ['s5', 'CHEM120', 540]], 2], []),\n  ('regression variant: limit comparison 2',\n   [[['s2', 'MATH101', 1440], ['s1', 'HIST140', 720], ['s4', 'HIST140', 600], ['s1', 'MATH101H', 540],\n     ['s1', 'CHEM120', 900], ['s2', 'CHEM120', 1440], ['s1', 'MATH101', 2341], ['s2', 'PHYS110', 2881],\n     ['s2', 'MATH101H', 600], ['s4', 'ECON150', 780]],\n    2],\n   [['s1', 3], ['s2', 3]]),\n  ('partial repair guard 3',\n   [[['s5', 'MATH101', 3481], ['s5', 'PHYS110', 600], ['s5', 'MATH101', 3481], ['s1', 'ECON150', 540],\n     ['s5', 'BIO130', 2040], ['s1', 'BIO130', 1380], ['s5', 'MATH101H', 1860], ['s5', 'CHEM120', 600]],\n    3],\n   []),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'B', 600], ['s1', 'C', 900]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s2', 'HIST140', 4860], ['s2', 'MATH101', 5160], ['s3', 'BIO130', 3060], ['s2', 'MATH101H', 1980],\n     ['s3', 'HIST140', 2760], ['s3', 'ECON150', 600], ['s2', 'ECON150', 5460], ['s3', 'MATH101H', 3240],\n     ['s3', 'PHYS110', 1320], ['s2', 'CHEM120', 540], ['s2', 'MATH101', 5160]],\n    3],\n   []),\n  ('normal control 6',\n   [[['s4', 'BIO130', 4920], ['s4', 'CHEM120', 2040], ['s4', 'MATH101H', 600], ['s4', 'HIST140', 6359],\n     ['s4', 'PHYS110', 2040]],\n    2],\n   []),\n  ('normal control 7',\n   [[['s2', 'BIO130', 600], ['s2', 'HIST140', 6179], ['s2', 'ECON150', 3480], ['s2', 'HIST140', 6179],\n     ['s2', 'MATH101H', 2041], ['s2', 'PHYS110', 4919]],\n    1],\n   [['s2', 2]]),\n  ('normal control 8',\n   [[['s2', 'PHYS110', 2880], ['s2', 'HIST140', 600], ['s2', 'MATH101', 2880], ['s2', 'BIO130', 1440]], 2],\n   [])],\n [('regression: limit comparison 1',\n   [[['s3', 'HIST140', 2039], ['s3', 'BIO130', 600], ['s3', 'HIST140', 2039], ['s3', 'MATH101', 3299]], 2],\n   []),\n  ('regression variant: limit comparison 2',\n   [[['s3', 'BIO130', 540], ['s5', 'PHYS110', 1320], ['s4', 'BIO130', 1980], ['s3', 'PHYS110', 1380],\n     ['s5', 'BIO130', 600], ['s4', 'ECON150', 540]],\n    1],\n   [['s3', 2], ['s5', 2]]),\n  ('partial repair guard 3',\n   [[['s3', 'PHYS110', 3059], ['s4', 'MATH101H', 1320], ['s3', 'HIST140', 900], ['s4', 'BIO130', 600],\n     ['s3', 'BIO130', 1620], ['s3', 'MATH101H', 600], ['s4', 'PHYS110', 1500]],\n    3],\n   []),\n  ('boundary control 4', [[['s1', 'A', 1300], ['s1', 'B', 1500], ['s1', 'C', 1600]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s1', 'CHEM120', 540], ['s4', 'MATH101', 3422], ['s4', 'PHYS110', 1981], ['s4', 'ECON150', 540],\n     ['s2', 'MATH101H', 540], ['s2', 'BIO130', 1680], ['s1', 'MATH101', 540], ['s1', 'MATH101H', 720],\n     ['s2', 'HIST140', 1380]],\n    3],\n   []),\n  ('normal control 6',\n   [[['s2', 'BIO130', 600], ['s2', 'HIST140', 6179], ['s2', 'ECON150', 3480], ['s2', 'HIST140', 6179],\n     ['s2', 'MATH101H', 2041], ['s2', 'PHYS110', 4919]],\n    1],\n   [['s2', 2]]),\n  ('normal control 7',\n   [[['s5', 'CHEM120', 4500], ['s2', 'PHYS110', 3300], ['s5', 'MATH101H', 600], ['s2', 'HIST140', 6180],\n     ['s5', 'PHYS110', 1440], ['s2', 'ECON150', 600], ['s5', 'HIST140', 1620], ['s2', 'MATH101', 6900],\n     ['s5', 'MATH101', 5941], ['s2', 'BIO130', 1860], ['s5', 'MATH101', 5941]],\n    1],\n   [['s2', 2], ['s5', 3]]),\n  ('normal control 8', [[['s4', 'CHEM120', 600], ['s4', 'CHEM120', 600], ['s4', 'MATH101H', 2040]], 2], [])],\n [('regression: limit comparison 1',\n   [[['s5', 'ECON150', 1980], ['s5', 'CHEM120', 3000], ['s2', 'MATH101H', 2041], ['s2', 'HIST140', 2761],\n     ['s2', 'BIO130', 600], ['s1', 'PHYS110', 540], ['s2', 'CHEM120', 3601], ['s1', 'HIST140', 1380],\n     ['s5', 'MATH101H', 540], ['s5', 'PHYS110', 2280]],\n    2],\n   [['s5', 3]]),\n  ('regression variant: limit comparison 2',\n   [[['s4', 'ECON150', 1979], ['s4', 'CHEM120', 4859], ['s1', 'CHEM120', 2761], ['s4', 'MATH101H', 540],\n     ['s1', 'BIO130', 4321], ['s4', 'PHYS110', 1979], ['s1', 'ECON150', 3481], ['s1', 'PHYS110', 600],\n     ['s1', 'MATH101', 1320], ['s4', 'MATH101H', 540], ['s4', 'HIST140', 7739]],\n    2],\n   [['s4', 3]]),\n  ('partial repair guard 3', [[['s1', 'HIST140', 3300], ['s1', 'ECON150', 600], ['s1', 'MATH101', 2040]], 2],\n   []),\n  ('boundary control 4', [[['s1', 'A', 540], ['s1', 'B', 1980], ['s1', 'C', 2000]], 2], []),\n  ('normal control 5',\n   [[['s2', 'PHYS110', 540], ['s3', 'MATH101', 2040], ['s2', 'CHEM120', 1979], ['s1', 'CHEM120', 1980],\n     ['s1', 'BIO130', 3419], ['s2', 'BIO130', 5759], ['s1', 'HIST140', 540], ['s2', 'MATH101', 5579],\n     ['s2', 'MATH101H', 4859], ['s3', 'HIST140', 600]],\n    3],\n   []),\n  ('normal control 6',\n   [[['s2', 'MATH101H', 2160], ['s2', 'PHYS110', 3599], ['s2', 'HIST140', 540], ['s2', 'BIO130', 720],\n     ['s2', 'ECON150', 720]],\n    3],\n   []),\n  ('normal control 7',\n   [[['s4', 'CHEM120', 600], ['s4', 'ECON150', 1860], ['s4', 'MATH101H', 4920], ['s4', 'HIST140', 4740]], 1],\n   [['s4', 2]]),\n  ('normal control 8',\n   [[['s2', 'CHEM120', 3301], ['s2', 'CHEM120', 3301], ['s2', 'HIST140', 600], ['s2', 'ECON150', 1860],\n     ['s5', 'ECON150', 1981], ['s2', 'PHYS110', 4740], ['s5', 'MATH101H', 540]],\n    2],\n   [])]]\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-rolling-day-exam-load-limit-comparison","generated_at":"2026-09-29T14:52:05.180758+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Maximum-exams-per-day rules are stated as rolling windows; calendar bucketing and inclusive windows both misreport.","root_cause":"The limit comparison is inclusive.","sha256":"69a2477b3dbd1e6fcf7558402624e62831bf5857115fc5745260c2853726103f","title":"Student at exactly the daily limit reported · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":38.446,"exit_code":1,"observations":[{"actual":[["s1",2]],"check":"regression: limit comparison 1","expected":[],"passed":false},{"actual":[["s1",3]],"check":"regression variant: limit comparison 2","expected":[["s1",3]],"passed":true},{"actual":[["s1",1],["s2",3]],"check":"partial repair guard 3","expected":[["s2",3]],"passed":false},{"actual":[["s1",2]],"check":"boundary control 4","expected":[["s1",2]],"passed":true},{"actual":[["s5",2]],"check":"normal control 5","expected":[],"passed":false},{"actual":[],"check":"normal control 6","expected":[],"passed":true},{"actual":[["s2",3],["s5",2]],"check":"normal control 7","expected":[],"passed":false},{"actual":[["s3",3]],"check":"normal control 8","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: limit comparison 1\", \"actual\": [[\"s1\", 2]], \"expected\": [], \"passed\": false}, {\"check\": \"regression variant: limit comparison 2\", \"actual\": [[\"s1\", 3]], \"expected\": [[\"s1\", 3]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s1\", 1], [\"s2\", 3]], \"expected\": [[\"s2\", 3]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", 2]], \"expected\": [[\"s1\", 2]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"s5\", 2]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"s2\", 3], [\"s5\", 2]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"s3\", 3]], \"expected\": [], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.285,"exit_code":1,"observations":[{"actual":[["s1",2]],"check":"regression: limit comparison 1","expected":[],"passed":false},{"actual":[["s1",3],["s2",2]],"check":"regression variant: limit comparison 2","expected":[["s1",3]],"passed":false},{"actual":[["s2",3]],"check":"partial repair guard 3","expected":[["s2",3]],"passed":true},{"actual":[["s1",2]],"check":"boundary control 4","expected":[["s1",2]],"passed":true},{"actual":[["s4",2],["s5",2]],"check":"normal control 5","expected":[],"passed":false},{"actual":[["s4",2]],"check":"normal control 6","expected":[],"passed":false},{"actual":[["s2",3]],"check":"normal control 7","expected":[],"passed":false},{"actual":[["s3",3]],"check":"normal control 8","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: limit comparison 1\", \"actual\": [[\"s1\", 2]], \"expected\": [], \"passed\": false}, {\"check\": \"regression variant: limit comparison 2\", \"actual\": [[\"s1\", 3], [\"s2\", 2]], \"expected\": [[\"s1\", 3]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s2\", 3]], \"expected\": [[\"s2\", 3]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", 2]], \"expected\": [[\"s1\", 2]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"s4\", 2], [\"s5\", 2]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[\"s4\", 2]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"s2\", 3]], \"expected\": [], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"s3\", 3]], \"expected\": [], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}