{"abstract":"An evening exam followed by two next-morning exams is not reported.","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":"Half-day buckets are still calendar-aligned.","family":"w2-exam-timetabling-constraints-rolling-day-exam-load-calendar-day-bucket","id":"FA-94506","implementations":{"attempt":{"sha256":"b45ece4aa267a3775a83696877169af2c341a4dee176ec5cbd48138088caeeea","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] // 720 - ts[j] // 720 >= 2:\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: calendar day bucket 1', [[['s1', 'A', 1300], ['s1', 'B', 1500], ['s1', 'C', 1600]], 2],\n   [['s1', 3]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s5', 'ECON150', 1380], ['s5', 'BIO130', 540], ['s2', 'MATH101', 5159], ['s5', 'PHYS110', 1680],\n     ['s3', 'HIST140', 2761], ['s2', 'MATH101H', 1979], ['s3', 'ECON150', 3061], ['s2', 'HIST140', 540],\n     ['s2', 'ECON150', 4859], ['s5', 'HIST140', 3120], ['s3', 'CHEM120', 1320], ['s2', 'PHYS110', 6598],\n     ['s2', 'HIST140', 540], ['s3', 'BIO130', 600]],\n    1],\n   [['s2', 2], ['s3', 2], ['s5', 3]]),\n  ('partial repair guard 3',\n   [[['s2', 'PHYS110', 2039], ['s5', 'ECON150', 3000], ['s5', 'ECON150', 3000], ['s2', 'HIST140', 600],\n     ['s5', 'MATH101H', 1260], ['s5', 'CHEM120', 540], ['s5', 'PHYS110', 1560]],\n    1],\n   [['s2', 2], ['s5', 3]]),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'A', 600], ['s1', 'B', 900]], 1], [['s1', 2]]),\n  ('normal control 5',\n   [[['s5', 'ECON150', 1981], ['s5', 'HIST140', 540], ['s5', 'BIO130', 540], ['s5', 'MATH101H', 3422],\n     ['s5', 'PHYS110', 6302]],\n    2],\n   []),\n  ('normal control 6',\n   [[['s5', 'ECON150', 1260], ['s5', 'MATH101H', 3539], ['s5', 'HIST140', 1260], ['s5', 'PHYS110', 540],\n     ['s5', 'MATH101', 2100]],\n    1],\n   [['s5', 3]]),\n  ('normal control 7', [[['s5', 'HIST140', 1981], ['s5', 'MATH101', 540]], 2], []),\n  ('normal control 8',\n   [[['s4', 'MATH101H', 2160], ['s4', 'ECON150', 1320], ['s4', 'CHEM120', 3420], ['s4', 'HIST140', 3600],\n     ['s4', 'PHYS110', 600], ['s4', 'CHEM120', 3420]],\n    3],\n   [])],\n [('regression: calendar day bucket 1',\n   [[['s4', 'MATH101', 3120], ['s4', 'PHYS110', 840], ['s2', 'ECON150', 540], ['s2', 'BIO130', 2640],\n     ['s5', 'MATH101', 600], ['s5', 'BIO130', 2040], ['s4', 'CHEM120', 540], ['s5', 'CHEM120', 2760],\n     ['s4', 'MATH101H', 840], ['s4', 'ECON150', 1680], ['s2', 'MATH101', 1380]],\n    3],\n   [['s4', 4]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s4', 'PHYS110', 1800], ['s2', 'HIST140', 1860], ['s5', 'MATH101', 3240], ['s2', 'ECON150', 600],\n     ['s5', 'HIST140', 3240], ['s2', 'CHEM120', 2160], ['s5', 'MATH101H', 1800], ['s5', 'CHEM120', 1800],\n     ['s4', 'BIO130', 540], ['s2', 'BIO130', 3420], ['s5', 'BIO130', 540], ['s4', 'CHEM120', 3060],\n     ['s4', 'CHEM120', 3060]],\n    1],\n   [['s2', 2], ['s4', 2], ['s5', 3]]),\n  ('partial repair guard 3',\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  ('boundary control 4', [[['s1', 'A', 540], ['s1', 'B', 1979], ['s1', 'C', 1990]], 2], []),\n  ('normal control 5',\n   [[['s4', 'ECON150', 540], ['s5', 'ECON150', 3480], ['s5', 'BIO130', 2040], ['s5', 'MATH101H', 3480],\n     ['s4', 'MATH101', 3420], ['s5', 'HIST140', 3660], ['s4', 'CHEM120', 540], ['s5', 'CHEM120', 600],\n     ['s4', 'MATH101H', 3720]],\n    2],\n   [['s5', 3]]),\n  ('normal control 6',\n   [[['s5', 'HIST140', 3478], ['s4', 'PHYS110', 2880], ['s4', 'BIO130', 720], ['s5', 'CHEM120', 600],\n     ['s4', 'MATH101H', 2160], ['s3', 'MATH101H', 600], ['s4', 'CHEM120', 540], ['s5', 'MATH101H', 6358],\n     ['s4', 'MATH101', 4140], ['s3', 'PHYS110', 1320], ['s5', 'MATH101', 2039]],\n    1],\n   [['s3', 2], ['s4', 2], ['s5', 2]]),\n  ('normal control 7',\n   [[['s2', 'ECON150', 1440], ['s3', 'PHYS110', 1860], ['s2', 'MATH101H', 3720], ['s3', 'MATH101H', 1560],\n     ['s2', 'BIO130', 2880], ['s3', 'MATH101', 1380], ['s3', 'BIO130', 2700], ['s2', 'HIST140', 600],\n     ['s3', 'HIST140', 540]],\n    1],\n   [['s2', 2], ['s3', 4]]),\n  ('normal control 8',\n   [[['s1', 'PHYS110', 540], ['s2', 'PHYS110', 900], ['s2', 'HIST140', 600], ['s1', 'ECON150', 1800],\n     ['s1', 'CHEM120', 540]],\n    2],\n   [['s1', 3]])],\n [('regression: calendar day bucket 1',\n   [[['s5', 'HIST140', 600], ['s5', 'HIST140', 600], ['s5', 'MATH101H', 1440]], 1], [['s5', 2]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s2', 'CHEM120', 600], ['s1', 'CHEM120', 2339], ['s5', 'MATH101', 4739], ['s1', 'HIST140', 600],\n     ['s5', 'PHYS110', 3299], ['s2', 'MATH101', 7019], ['s1', 'ECON150', 2339], ['s1', 'PHYS110', 900],\n     ['s2', 'BIO130', 1440], ['s5', 'MATH101H', 1860], ['s2', 'MATH101H', 4320], ['s1', 'MATH101', 3778],\n     ['s2', 'HIST140', 5580], ['s5', 'CHEM120', 5579], ['s5', 'ECON150', 600]],\n    2],\n   [['s1', 3]]),\n  ('partial repair guard 3',\n   [[['s3', 'PHYS110', 1860], ['s3', 'HIST140', 1260], ['s3', 'BIO130', 1560], ['s3', 'CHEM120', 540]], 1],\n   [['s3', 4]]),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'B', 600], ['s1', 'C', 900]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s4', 'HIST140', 2160], ['s4', 'MATH101', 2460], ['s4', 'CHEM120', 2640], ['s4', 'ECON150', 600],\n     ['s4', 'BIO130', 1860]],\n    2],\n   [['s4', 4]]),\n  ('normal control 6',\n   [[['s1', 'ECON150', 840], ['s2', 'ECON150', 3420], ['s2', 'MATH101H', 3600], ['s1', 'CHEM120', 1140],\n     ['s1', 'BIO130', 540], ['s5', 'CHEM120', 600], ['s5', 'PHYS110', 2039], ['s2', 'HIST140', 4860],\n     ['s2', 'BIO130', 540], ['s1', 'HIST140', 1980], ['s1', 'PHYS110', 840], ['s5', 'PHYS110', 2039]],\n    2],\n   [['s1', 4]]),\n  ('normal control 7',\n   [[['s5', 'HIST140', 600], ['s3', 'CHEM120', 540], ['s5', 'MATH101H', 3481], ['s3', 'MATH101H', 3661],\n     ['s1', 'HIST140', 3480], ['s1', 'BIO130', 600], ['s5', 'ECON150', 2221], ['s3', 'MATH101', 1981],\n     ['s3', 'HIST140', 2821], ['s5', 'BIO130', 780], ['s1', 'ECON150', 9061], ['s1', 'PHYS110', 6360],\n     ['s5', 'CHEM120', 780], ['s1', 'MATH101', 7620]],\n    2],\n   [['s5', 3]]),\n  ('normal control 8', [[['s5', 'HIST140', 1981], ['s5', 'MATH101', 540]], 2], [])],\n [('regression: calendar day bucket 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: calendar day bucket 2',\n   [[['s2', 'ECON150', 540], ['s2', 'ECON150', 540], ['s1', 'BIO130', 1380], ['s2', 'PHYS110', 3001],\n     ['s2', 'CHEM120', 3301], ['s2', 'MATH101H', 2281], ['s4', 'MATH101H', 1981], ['s1', 'HIST140', 2819],\n     ['s1', 'ECON150', 540], ['s2', 'BIO130', 1981], ['s4', 'MATH101', 540], ['s4', 'ECON150', 3422]],\n    2],\n   [['s2', 4]]),\n  ('partial repair guard 3',\n   [[['s4', 'BIO130', 540], ['s3', 'PHYS110', 840], ['s1', 'PHYS110', 1440], ['s3', 'CHEM120', 540],\n     ['s1', 'MATH101', 1440], ['s4', 'PHYS110', 1380], ['s1', 'MATH101H', 1440], ['s3', 'ECON150', 1680],\n     ['s3', 'CHEM120', 540], ['s1', 'ECON150', 600]],\n    1],\n   [['s1', 4], ['s3', 3], ['s4', 2]]),\n  ('boundary control 4', [[['s1', 'A', 1300], ['s1', 'B', 1500], ['s1', 'C', 1600]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s5', 'CHEM120', 4740], ['s3', 'PHYS110', 1860], ['s5', 'PHYS110', 3480], ['s1', 'HIST140', 2040],\n     ['s3', 'BIO130', 600], ['s5', 'HIST140', 600], ['s3', 'ECON150', 600], ['s5', 'CHEM120', 4740],\n     ['s1', 'MATH101', 600]],\n    2],\n   [['s3', 3]]),\n  ('normal control 6', [[['s5', 'MATH101H', 540], ['s5', 'HIST140', 1981]], 2], []),\n  ('normal control 7',\n   [[['s3', 'MATH101H', 5701], ['s3', 'PHYS110', 4260], ['s3', 'HIST140', 540], ['s5', 'PHYS110', 540],\n     ['s3', 'CHEM120', 2821], ['s3', 'HIST140', 540], ['s3', 'BIO130', 1981], ['s5', 'MATH101H', 1981]],\n    2],\n   []),\n  ('normal control 8',\n   [[['s3', 'MATH101H', 2041], ['s2', 'ECON150', 2821], ['s2', 'BIO130', 1380], ['s3', 'MATH101H', 2041],\n     ['s3', 'CHEM120', 3482], ['s2', 'MATH101H', 540], ['s3', 'ECON150', 4202], ['s3', 'MATH101', 600]],\n    1],\n   [['s2', 2], ['s3', 2]])],\n [('regression: calendar day bucket 1',\n   [[['s1', 'ECON150', 2820], ['s1', 'PHYS110', 3000], ['s1', 'MATH101H', 1980], ['s1', 'HIST140', 540],\n     ['s1', 'ECON150', 2820]],\n    1],\n   [['s1', 3]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s4', 'MATH101H', 1500], ['s4', 'BIO130', 600], ['s4', 'CHEM120', 1320], ['s4', 'HIST140', 2939],\n     ['s4', 'MATH101', 600]],\n    2],\n   [['s4', 4]]),\n  ('partial repair guard 3',\n   [[['s2', 'MATH101H', 3060], ['s2', 'BIO130', 1860], ['s1', 'MATH101', 600], ['s2', 'MATH101', 600],\n     ['s2', 'ECON150', 2340], ['s1', 'MATH101H', 2041], ['s3', 'HIST140', 2039], ['s1', 'HIST140', 2041],\n     ['s3', 'MATH101H', 600], ['s2', 'HIST140', 2160], ['s1', 'CHEM120', 600], ['s3', 'CHEM120', 3478],\n     ['s1', 'ECON150', 600]],\n    1],\n   [['s1', 3], ['s2', 4], ['s3', 2]]),\n  ('boundary control 4', [[['s1', 'A', 540], ['s1', 'B', 1980], ['s1', 'C', 2000]], 2], []),\n  ('normal control 5',\n   [[['s5', 'ECON150', 1380], ['s5', 'BIO130', 540], ['s2', 'MATH101', 5159], ['s5', 'PHYS110', 1680],\n     ['s3', 'HIST140', 2761], ['s2', 'MATH101H', 1979], ['s3', 'ECON150', 3061], ['s2', 'HIST140', 540],\n     ['s2', 'ECON150', 4859], ['s5', 'HIST140', 3120], ['s3', 'CHEM120', 1320], ['s2', 'PHYS110', 6598],\n     ['s2', 'HIST140', 540], ['s3', 'BIO130', 600]],\n    1],\n   [['s2', 2], ['s3', 2], ['s5', 3]]),\n  ('normal control 6',\n   [[['s5', 'MATH101', 600], ['s2', 'CHEM120', 1980], ['s1', 'MATH101H', 1980], ['s5', 'PHYS110', 600],\n     ['s2', 'ECON150', 1980], ['s1', 'BIO130', 540], ['s1', 'MATH101', 2700], ['s2', 'PHYS110', 540]],\n    2],\n   []),\n  ('normal control 7',\n   [[['s2', 'HIST140', 840], ['s2', 'MATH101', 540], ['s4', 'BIO130', 540], ['s4', 'ECON150', 1560],\n     ['s2', 'MATH101H', 840], ['s4', 'BIO130', 540], ['s4', 'MATH101', 1380], ['s2', 'PHYS110', 1680]],\n    2],\n   [['s2', 4], ['s4', 3]]),\n  ('normal control 8',\n   [[['s4', 'PHYS110', 3480], ['s5', 'MATH101H', 3780], ['s4', 'BIO130', 4920], ['s5', 'PHYS110', 900],\n     ['s5', 'BIO130', 600], ['s4', 'MATH101', 600], ['s5', 'HIST140', 5221], ['s4', 'MATH101', 600],\n     ['s4', 'ECON150', 7800], ['s3', 'CHEM120', 1440], ['s3', 'ECON150', 600]],\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":"4ee35df0420739a07472c3b2938e24397c83a349ec936fa2be246b70f4d5876b","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] // 1440 != 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: calendar day bucket 1', [[['s1', 'A', 1300], ['s1', 'B', 1500], ['s1', 'C', 1600]], 2],\n   [['s1', 3]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s5', 'ECON150', 1380], ['s5', 'BIO130', 540], ['s2', 'MATH101', 5159], ['s5', 'PHYS110', 1680],\n     ['s3', 'HIST140', 2761], ['s2', 'MATH101H', 1979], ['s3', 'ECON150', 3061], ['s2', 'HIST140', 540],\n     ['s2', 'ECON150', 4859], ['s5', 'HIST140', 3120], ['s3', 'CHEM120', 1320], ['s2', 'PHYS110', 6598],\n     ['s2', 'HIST140', 540], ['s3', 'BIO130', 600]],\n    1],\n   [['s2', 2], ['s3', 2], ['s5', 3]]),\n  ('partial repair guard 3',\n   [[['s2', 'PHYS110', 2039], ['s5', 'ECON150', 3000], ['s5', 'ECON150', 3000], ['s2', 'HIST140', 600],\n     ['s5', 'MATH101H', 1260], ['s5', 'CHEM120', 540], ['s5', 'PHYS110', 1560]],\n    1],\n   [['s2', 2], ['s5', 3]]),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'A', 600], ['s1', 'B', 900]], 1], [['s1', 2]]),\n  ('normal control 5',\n   [[['s5', 'ECON150', 1981], ['s5', 'HIST140', 540], ['s5', 'BIO130', 540], ['s5', 'MATH101H', 3422],\n     ['s5', 'PHYS110', 6302]],\n    2],\n   []),\n  ('normal control 6',\n   [[['s5', 'ECON150', 1260], ['s5', 'MATH101H', 3539], ['s5', 'HIST140', 1260], ['s5', 'PHYS110', 540],\n     ['s5', 'MATH101', 2100]],\n    1],\n   [['s5', 3]]),\n  ('normal control 7', [[['s5', 'HIST140', 1981], ['s5', 'MATH101', 540]], 2], []),\n  ('normal control 8',\n   [[['s4', 'MATH101H', 2160], ['s4', 'ECON150', 1320], ['s4', 'CHEM120', 3420], ['s4', 'HIST140', 3600],\n     ['s4', 'PHYS110', 600], ['s4', 'CHEM120', 3420]],\n    3],\n   [])],\n [('regression: calendar day bucket 1',\n   [[['s4', 'MATH101', 3120], ['s4', 'PHYS110', 840], ['s2', 'ECON150', 540], ['s2', 'BIO130', 2640],\n     ['s5', 'MATH101', 600], ['s5', 'BIO130', 2040], ['s4', 'CHEM120', 540], ['s5', 'CHEM120', 2760],\n     ['s4', 'MATH101H', 840], ['s4', 'ECON150', 1680], ['s2', 'MATH101', 1380]],\n    3],\n   [['s4', 4]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s4', 'PHYS110', 1800], ['s2', 'HIST140', 1860], ['s5', 'MATH101', 3240], ['s2', 'ECON150', 600],\n     ['s5', 'HIST140', 3240], ['s2', 'CHEM120', 2160], ['s5', 'MATH101H', 1800], ['s5', 'CHEM120', 1800],\n     ['s4', 'BIO130', 540], ['s2', 'BIO130', 3420], ['s5', 'BIO130', 540], ['s4', 'CHEM120', 3060],\n     ['s4', 'CHEM120', 3060]],\n    1],\n   [['s2', 2], ['s4', 2], ['s5', 3]]),\n  ('partial repair guard 3',\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  ('boundary control 4', [[['s1', 'A', 540], ['s1', 'B', 1979], ['s1', 'C', 1990]], 2], []),\n  ('normal control 5',\n   [[['s4', 'ECON150', 540], ['s5', 'ECON150', 3480], ['s5', 'BIO130', 2040], ['s5', 'MATH101H', 3480],\n     ['s4', 'MATH101', 3420], ['s5', 'HIST140', 3660], ['s4', 'CHEM120', 540], ['s5', 'CHEM120', 600],\n     ['s4', 'MATH101H', 3720]],\n    2],\n   [['s5', 3]]),\n  ('normal control 6',\n   [[['s5', 'HIST140', 3478], ['s4', 'PHYS110', 2880], ['s4', 'BIO130', 720], ['s5', 'CHEM120', 600],\n     ['s4', 'MATH101H', 2160], ['s3', 'MATH101H', 600], ['s4', 'CHEM120', 540], ['s5', 'MATH101H', 6358],\n     ['s4', 'MATH101', 4140], ['s3', 'PHYS110', 1320], ['s5', 'MATH101', 2039]],\n    1],\n   [['s3', 2], ['s4', 2], ['s5', 2]]),\n  ('normal control 7',\n   [[['s2', 'ECON150', 1440], ['s3', 'PHYS110', 1860], ['s2', 'MATH101H', 3720], ['s3', 'MATH101H', 1560],\n     ['s2', 'BIO130', 2880], ['s3', 'MATH101', 1380], ['s3', 'BIO130', 2700], ['s2', 'HIST140', 600],\n     ['s3', 'HIST140', 540]],\n    1],\n   [['s2', 2], ['s3', 4]]),\n  ('normal control 8',\n   [[['s1', 'PHYS110', 540], ['s2', 'PHYS110', 900], ['s2', 'HIST140', 600], ['s1', 'ECON150', 1800],\n     ['s1', 'CHEM120', 540]],\n    2],\n   [['s1', 3]])],\n [('regression: calendar day bucket 1',\n   [[['s5', 'HIST140', 600], ['s5', 'HIST140', 600], ['s5', 'MATH101H', 1440]], 1], [['s5', 2]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s2', 'CHEM120', 600], ['s1', 'CHEM120', 2339], ['s5', 'MATH101', 4739], ['s1', 'HIST140', 600],\n     ['s5', 'PHYS110', 3299], ['s2', 'MATH101', 7019], ['s1', 'ECON150', 2339], ['s1', 'PHYS110', 900],\n     ['s2', 'BIO130', 1440], ['s5', 'MATH101H', 1860], ['s2', 'MATH101H', 4320], ['s1', 'MATH101', 3778],\n     ['s2', 'HIST140', 5580], ['s5', 'CHEM120', 5579], ['s5', 'ECON150', 600]],\n    2],\n   [['s1', 3]]),\n  ('partial repair guard 3',\n   [[['s3', 'PHYS110', 1860], ['s3', 'HIST140', 1260], ['s3', 'BIO130', 1560], ['s3', 'CHEM120', 540]], 1],\n   [['s3', 4]]),\n  ('boundary control 4', [[['s1', 'A', 600], ['s1', 'B', 600], ['s1', 'C', 900]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s4', 'HIST140', 2160], ['s4', 'MATH101', 2460], ['s4', 'CHEM120', 2640], ['s4', 'ECON150', 600],\n     ['s4', 'BIO130', 1860]],\n    2],\n   [['s4', 4]]),\n  ('normal control 6',\n   [[['s1', 'ECON150', 840], ['s2', 'ECON150', 3420], ['s2', 'MATH101H', 3600], ['s1', 'CHEM120', 1140],\n     ['s1', 'BIO130', 540], ['s5', 'CHEM120', 600], ['s5', 'PHYS110', 2039], ['s2', 'HIST140', 4860],\n     ['s2', 'BIO130', 540], ['s1', 'HIST140', 1980], ['s1', 'PHYS110', 840], ['s5', 'PHYS110', 2039]],\n    2],\n   [['s1', 4]]),\n  ('normal control 7',\n   [[['s5', 'HIST140', 600], ['s3', 'CHEM120', 540], ['s5', 'MATH101H', 3481], ['s3', 'MATH101H', 3661],\n     ['s1', 'HIST140', 3480], ['s1', 'BIO130', 600], ['s5', 'ECON150', 2221], ['s3', 'MATH101', 1981],\n     ['s3', 'HIST140', 2821], ['s5', 'BIO130', 780], ['s1', 'ECON150', 9061], ['s1', 'PHYS110', 6360],\n     ['s5', 'CHEM120', 780], ['s1', 'MATH101', 7620]],\n    2],\n   [['s5', 3]]),\n  ('normal control 8', [[['s5', 'HIST140', 1981], ['s5', 'MATH101', 540]], 2], [])],\n [('regression: calendar day bucket 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: calendar day bucket 2',\n   [[['s2', 'ECON150', 540], ['s2', 'ECON150', 540], ['s1', 'BIO130', 1380], ['s2', 'PHYS110', 3001],\n     ['s2', 'CHEM120', 3301], ['s2', 'MATH101H', 2281], ['s4', 'MATH101H', 1981], ['s1', 'HIST140', 2819],\n     ['s1', 'ECON150', 540], ['s2', 'BIO130', 1981], ['s4', 'MATH101', 540], ['s4', 'ECON150', 3422]],\n    2],\n   [['s2', 4]]),\n  ('partial repair guard 3',\n   [[['s4', 'BIO130', 540], ['s3', 'PHYS110', 840], ['s1', 'PHYS110', 1440], ['s3', 'CHEM120', 540],\n     ['s1', 'MATH101', 1440], ['s4', 'PHYS110', 1380], ['s1', 'MATH101H', 1440], ['s3', 'ECON150', 1680],\n     ['s3', 'CHEM120', 540], ['s1', 'ECON150', 600]],\n    1],\n   [['s1', 4], ['s3', 3], ['s4', 2]]),\n  ('boundary control 4', [[['s1', 'A', 1300], ['s1', 'B', 1500], ['s1', 'C', 1600]], 2], [['s1', 3]]),\n  ('normal control 5',\n   [[['s5', 'CHEM120', 4740], ['s3', 'PHYS110', 1860], ['s5', 'PHYS110', 3480], ['s1', 'HIST140', 2040],\n     ['s3', 'BIO130', 600], ['s5', 'HIST140', 600], ['s3', 'ECON150', 600], ['s5', 'CHEM120', 4740],\n     ['s1', 'MATH101', 600]],\n    2],\n   [['s3', 3]]),\n  ('normal control 6', [[['s5', 'MATH101H', 540], ['s5', 'HIST140', 1981]], 2], []),\n  ('normal control 7',\n   [[['s3', 'MATH101H', 5701], ['s3', 'PHYS110', 4260], ['s3', 'HIST140', 540], ['s5', 'PHYS110', 540],\n     ['s3', 'CHEM120', 2821], ['s3', 'HIST140', 540], ['s3', 'BIO130', 1981], ['s5', 'MATH101H', 1981]],\n    2],\n   []),\n  ('normal control 8',\n   [[['s3', 'MATH101H', 2041], ['s2', 'ECON150', 2821], ['s2', 'BIO130', 1380], ['s3', 'MATH101H', 2041],\n     ['s3', 'CHEM120', 3482], ['s2', 'MATH101H', 540], ['s3', 'ECON150', 4202], ['s3', 'MATH101', 600]],\n    1],\n   [['s2', 2], ['s3', 2]])],\n [('regression: calendar day bucket 1',\n   [[['s1', 'ECON150', 2820], ['s1', 'PHYS110', 3000], ['s1', 'MATH101H', 1980], ['s1', 'HIST140', 540],\n     ['s1', 'ECON150', 2820]],\n    1],\n   [['s1', 3]]),\n  ('regression variant: calendar day bucket 2',\n   [[['s4', 'MATH101H', 1500], ['s4', 'BIO130', 600], ['s4', 'CHEM120', 1320], ['s4', 'HIST140', 2939],\n     ['s4', 'MATH101', 600]],\n    2],\n   [['s4', 4]]),\n  ('partial repair guard 3',\n   [[['s2', 'MATH101H', 3060], ['s2', 'BIO130', 1860], ['s1', 'MATH101', 600], ['s2', 'MATH101', 600],\n     ['s2', 'ECON150', 2340], ['s1', 'MATH101H', 2041], ['s3', 'HIST140', 2039], ['s1', 'HIST140', 2041],\n     ['s3', 'MATH101H', 600], ['s2', 'HIST140', 2160], ['s1', 'CHEM120', 600], ['s3', 'CHEM120', 3478],\n     ['s1', 'ECON150', 600]],\n    1],\n   [['s1', 3], ['s2', 4], ['s3', 2]]),\n  ('boundary control 4', [[['s1', 'A', 540], ['s1', 'B', 1980], ['s1', 'C', 2000]], 2], []),\n  ('normal control 5',\n   [[['s5', 'ECON150', 1380], ['s5', 'BIO130', 540], ['s2', 'MATH101', 5159], ['s5', 'PHYS110', 1680],\n     ['s3', 'HIST140', 2761], ['s2', 'MATH101H', 1979], ['s3', 'ECON150', 3061], ['s2', 'HIST140', 540],\n     ['s2', 'ECON150', 4859], ['s5', 'HIST140', 3120], ['s3', 'CHEM120', 1320], ['s2', 'PHYS110', 6598],\n     ['s2', 'HIST140', 540], ['s3', 'BIO130', 600]],\n    1],\n   [['s2', 2], ['s3', 2], ['s5', 3]]),\n  ('normal control 6',\n   [[['s5', 'MATH101', 600], ['s2', 'CHEM120', 1980], ['s1', 'MATH101H', 1980], ['s5', 'PHYS110', 600],\n     ['s2', 'ECON150', 1980], ['s1', 'BIO130', 540], ['s1', 'MATH101', 2700], ['s2', 'PHYS110', 540]],\n    2],\n   []),\n  ('normal control 7',\n   [[['s2', 'HIST140', 840], ['s2', 'MATH101', 540], ['s4', 'BIO130', 540], ['s4', 'ECON150', 1560],\n     ['s2', 'MATH101H', 840], ['s4', 'BIO130', 540], ['s4', 'MATH101', 1380], ['s2', 'PHYS110', 1680]],\n    2],\n   [['s2', 4], ['s4', 3]]),\n  ('normal control 8',\n   [[['s4', 'PHYS110', 3480], ['s5', 'MATH101H', 3780], ['s4', 'BIO130', 4920], ['s5', 'PHYS110', 900],\n     ['s5', 'BIO130', 600], ['s4', 'MATH101', 600], ['s5', 'HIST140', 5221], ['s4', 'MATH101', 600],\n     ['s4', 'ECON150', 7800], ['s3', 'CHEM120', 1440], ['s3', 'ECON150', 600]],\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-calendar-day-bucket","generated_at":"2026-09-29T14:52:04.999281+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 window is the calendar day of the current exam.","sha256":"6dd10752e7db7ef0b8ce3559a2c1b9162771594158302626acea26029cad79c1","title":"Exam load counted per calendar day instead of rolling 24 hours · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":44.767,"exit_code":1,"observations":[{"actual":[["s1",3]],"check":"regression: calendar day bucket 1","expected":[["s1",3]],"passed":true},{"actual":[["s2",2],["s3",2],["s5",2]],"check":"regression variant: calendar day bucket 2","expected":[["s2",2],["s3",2],["s5",3]],"passed":false},{"actual":[["s5",2]],"check":"partial repair guard 3","expected":[["s2",2],["s5",3]],"passed":false},{"actual":[["s1",2]],"check":"boundary control 4","expected":[["s1",2]],"passed":true},{"actual":[],"check":"normal control 5","expected":[],"passed":true},{"actual":[["s5",3]],"check":"normal control 6","expected":[["s5",3]],"passed":true},{"actual":[],"check":"normal control 7","expected":[],"passed":true},{"actual":[],"check":"normal control 8","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: calendar day bucket 1\", \"actual\": [[\"s1\", 3]], \"expected\": [[\"s1\", 3]], \"passed\": true}, {\"check\": \"regression variant: calendar day bucket 2\", \"actual\": [[\"s2\", 2], [\"s3\", 2], [\"s5\", 2]], \"expected\": [[\"s2\", 2], [\"s3\", 2], [\"s5\", 3]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s5\", 2]], \"expected\": [[\"s2\", 2], [\"s5\", 3]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", 2]], \"expected\": [[\"s1\", 2]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"s5\", 3]], \"expected\": [[\"s5\", 3]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.249,"exit_code":1,"observations":[{"actual":[],"check":"regression: calendar day bucket 1","expected":[["s1",3]],"passed":false},{"actual":[["s2",2],["s3",2],["s5",2]],"check":"regression variant: calendar day bucket 2","expected":[["s2",2],["s3",2],["s5",3]],"passed":false},{"actual":[["s5",2]],"check":"partial repair guard 3","expected":[["s2",2],["s5",3]],"passed":false},{"actual":[["s1",2]],"check":"boundary control 4","expected":[["s1",2]],"passed":true},{"actual":[],"check":"normal control 5","expected":[],"passed":true},{"actual":[["s5",3]],"check":"normal control 6","expected":[["s5",3]],"passed":true},{"actual":[],"check":"normal control 7","expected":[],"passed":true},{"actual":[],"check":"normal control 8","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: calendar day bucket 1\", \"actual\": [], \"expected\": [[\"s1\", 3]], \"passed\": false}, {\"check\": \"regression variant: calendar day bucket 2\", \"actual\": [[\"s2\", 2], [\"s3\", 2], [\"s5\", 2]], \"expected\": [[\"s2\", 2], [\"s3\", 2], [\"s5\", 3]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s5\", 2]], \"expected\": [[\"s2\", 2], [\"s5\", 3]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", 2]], \"expected\": [[\"s1\", 2]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"s5\", 3]], \"expected\": [[\"s5\", 3]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [], \"expected\": [], \"passed\": true}], \"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."}}