{"abstract":"Sittings that finish at the building closing time are rejected.","category":"Exam timetabling constraints","checks":8,"contract":"Each clash [student, exam a, exam b] shares a start time. The longer exam is sat first (ties by id), then a 15-minute supervised break, then the second exam. Return [student, first, second, second start, whether the second exam ends by day_end (inclusive)].","contract_signature":"clashes, dur, start, day_end","evaluation_group":"w2-exam-timetabling-constraints-clash-sequential-sitting","failed_approach":"Checking only the start time accepts sittings that overrun.","family":"w2-exam-timetabling-constraints-clash-sequential-sitting-day-end-inclusive","id":"FA-94676","implementations":{"attempt":{"sha256":"408777da696def2797a26ff623b4e075b9a4831cda4a2a2f28ac969c70eadbd5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clashes, dur, start, day_end):\n    out = []\n    for st, a, b in clashes:\n        first, second = sorted([a, b], key=lambda e: (-dur[e], e))\n        s2 = start + dur[first] + 15\n        out.append([st, first, second, s2, s2 <= day_end])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855],\n   [['s1', 'A', 'B', 735, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('partial repair guard 3',\n   [[['s4', 'PHYS110', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 90},\n    780, 1020],\n   [['s4', 'PHYS110', 'MATH101H', 975, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 120, 'B': 180}, 600, 1080],\n   [['s1', 'B', 'A', 795, True]]),\n  ('normal control 6',\n   [[['s1', 'BIO130', 'PHYS110'], ['s4', 'PHYS110', 'CHEM120'], ['s2', 'MATH101H', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 120},\n    600, 1020],\n   [['s1', 'BIO130', 'PHYS110', 735, True], ['s4', 'CHEM120', 'PHYS110', 735, True],\n    ['s2', 'MATH101', 'MATH101H', 795, True]]),\n  ('normal control 7',\n   [[['s2', 'HIST140', 'BIO130'], ['s5', 'PHYS110', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1020],\n   [['s2', 'HIST140', 'BIO130', 1035, False], ['s5', 'PHYS110', 'CHEM120', 1035, False]]),\n  ('normal control 8',\n   [[['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90, 'MATH101H': 60, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 60, 'HIST140': 60, 'ECON150': 60},\n    600, 1080],\n   [['s2', 'PHYS110', 'MATH101H', 705, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 'ECON150'], ['s4', 'ECON150', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1020],\n   [['s2', 'BIO130', 'ECON150', 975, False], ['s4', 'MATH101', 'ECON150', 975, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('normal control 6',\n   [[['s3', 'MATH101', 'CHEM120'], ['s1', 'MATH101H', 'BIO130'], ['s4', 'PHYS110', 'CHEM120']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 120},\n    840, 1080],\n   [['s3', 'CHEM120', 'MATH101', 1035, False], ['s1', 'BIO130', 'MATH101H', 975, False],\n    ['s4', 'CHEM120', 'PHYS110', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'PHYS110', 'BIO130'], ['s5', 'MATH101', 'BIO130']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 120,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 180},\n    540, 1020],\n   [['s5', 'BIO130', 'PHYS110', 735, True], ['s5', 'BIO130', 'MATH101', 735, True]]),\n  ('normal control 8',\n   [[['s2', 'HIST140', 'BIO130'], ['s2', 'ECON150', 'CHEM120']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1080],\n   [['s2', 'BIO130', 'HIST140', 1035, False], ['s2', 'ECON150', 'CHEM120', 975, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855],\n   [['s1', 'A', 'B', 735, True]]),\n  ('partial repair guard 3',\n   [[['s4', 'HIST140', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 120},\n    780, 1080],\n   [['s4', 'HIST140', 'MATH101H', 975, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 5',\n   [[['s3', 'BIO130', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 60,\n     'ECON150': 90},\n    780, 1020],\n   [['s3', 'BIO130', 'HIST140', 975, False]]),\n  ('normal control 6',\n   [[['s3', 'MATH101H', 'MATH101'], ['s4', 'ECON150', 'MATH101H'], ['s2', 'CHEM120', 'ECON150']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 120,\n     'ECON150': 180},\n    780, 1080],\n   [['s3', 'MATH101', 'MATH101H', 975, False], ['s4', 'ECON150', 'MATH101H', 975, False],\n    ['s2', 'ECON150', 'CHEM120', 975, False]]),\n  ('normal control 7',\n   [[['s4', 'MATH101H', 'ECON150'], ['s3', 'PHYS110', 'BIO130'], ['s5', 'HIST140', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'ECON150', 'MATH101H', 615, True], ['s3', 'PHYS110', 'BIO130', 735, True],\n    ['s5', 'MATH101', 'HIST140', 645, True]]),\n  ('normal control 8',\n   [[['s4', 'HIST140', 'PHYS110'], ['s2', 'PHYS110', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 180},\n    600, 1080],\n   [['s4', 'HIST140', 'PHYS110', 735, True], ['s2', 'MATH101', 'PHYS110', 795, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855],\n   [['s1', 'A', 'B', 735, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'PHYS110', 'MATH101H'], ['s3', 'ECON150', 'HIST140']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1080],\n   [['s3', 'PHYS110', 'MATH101H', 975, True], ['s3', 'HIST140', 'ECON150', 1035, False]]),\n  ('normal control 4',\n   [[['s2', 'ECON150', 'MATH101H'], ['s1', 'MATH101', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 90},\n    840, 1020],\n   [['s2', 'MATH101H', 'ECON150', 975, False], ['s1', 'MATH101', 'MATH101H', 1035, False]]),\n  ('normal control 5',\n   [[['s1', 'MATH101H', 'ECON150'], ['s2', 'ECON150', 'MATH101H'], ['s3', 'PHYS110', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1020],\n   [['s1', 'ECON150', 'MATH101H', 975, False], ['s2', 'ECON150', 'MATH101H', 975, False],\n    ['s3', 'HIST140', 'PHYS110', 1035, False]]),\n  ('normal control 6',\n   [[['s4', 'CHEM120', 'HIST140']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 60},\n    600, 1080],\n   [['s4', 'CHEM120', 'HIST140', 705, True]]),\n  ('normal control 7',\n   [[['s1', 'MATH101', 'PHYS110'], ['s2', 'PHYS110', 'BIO130'], ['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 60,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 120},\n    600, 1080],\n   [['s1', 'MATH101', 'PHYS110', 705, True], ['s2', 'BIO130', 'PHYS110', 705, True],\n    ['s2', 'MATH101H', 'PHYS110', 795, True]]),\n  ('normal control 8',\n   [[['s4', 'MATH101H', 'ECON150'], ['s3', 'PHYS110', 'BIO130'], ['s5', 'HIST140', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'ECON150', 'MATH101H', 615, True], ['s3', 'PHYS110', 'BIO130', 735, True],\n    ['s5', 'MATH101', 'HIST140', 645, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('partial repair guard 3',\n   [[['s1', 'ECON150', 'CHEM120'], ['s2', 'PHYS110', 'MATH101'], ['s4', 'BIO130', 'ECON150']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 180},\n    840, 1020],\n   [['s1', 'ECON150', 'CHEM120', 1035, False], ['s2', 'PHYS110', 'MATH101', 975, False],\n    ['s4', 'BIO130', 'ECON150', 1035, False]]),\n  ('normal control 4',\n   [[['s3', 'HIST140', 'BIO130'], ['s4', 'ECON150', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 180,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 60},\n    600, 1020],\n   [['s3', 'BIO130', 'HIST140', 795, True], ['s4', 'HIST140', 'ECON150', 795, True]]),\n  ('normal control 5',\n   [[['s2', 'BIO130', 'ECON150']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 180},\n    540, 1020],\n   [['s2', 'BIO130', 'ECON150', 735, True]]),\n  ('normal control 6',\n   [[['s2', 'PHYS110', 'CHEM120'], ['s5', 'PHYS110', 'ECON150'], ['s5', 'BIO130', 'MATH101H']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 60,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 60},\n    840, 1080],\n   [['s2', 'CHEM120', 'PHYS110', 945, True], ['s5', 'ECON150', 'PHYS110', 915, True],\n    ['s5', 'BIO130', 'MATH101H', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'MATH101H', 'BIO130'], ['s2', 'HIST140', 'MATH101'], ['s1', 'MATH101H', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 180,\n     'ECON150': 60},\n    780, 1020],\n   [['s5', 'BIO130', 'MATH101H', 885, True], ['s2', 'HIST140', 'MATH101', 975, False],\n    ['s1', 'HIST140', 'MATH101H', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'BIO130', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 60,\n     'PHYS110': 60,\n     'CHEM120': 180,\n     'BIO130': 60,\n     'HIST140': 90,\n     'ECON150': 120},\n    600, 1080],\n   [['s1', 'BIO130', 'MATH101H', 675, True]])]]\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":"fba0486a2abaa68d03b766887d42d684f98cf0282f1a46d165b47a81b19fee99","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clashes, dur, start, day_end):\n    out = []\n    for st, a, b in clashes:\n        first, second = sorted([a, b], key=lambda e: (-dur[e], e))\n        s2 = start + dur[first] + 15\n        out.append([st, first, second, s2, s2 + dur[second] < day_end])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855],\n   [['s1', 'A', 'B', 735, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('partial repair guard 3',\n   [[['s4', 'PHYS110', 'MATH101H']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 90},\n    780, 1020],\n   [['s4', 'PHYS110', 'MATH101H', 975, False]]),\n  ('boundary control 4', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 120, 'B': 180}, 600, 1080],\n   [['s1', 'B', 'A', 795, True]]),\n  ('normal control 6',\n   [[['s1', 'BIO130', 'PHYS110'], ['s4', 'PHYS110', 'CHEM120'], ['s2', 'MATH101H', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 120,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 120},\n    600, 1020],\n   [['s1', 'BIO130', 'PHYS110', 735, True], ['s4', 'CHEM120', 'PHYS110', 735, True],\n    ['s2', 'MATH101', 'MATH101H', 795, True]]),\n  ('normal control 7',\n   [[['s2', 'HIST140', 'BIO130'], ['s5', 'PHYS110', 'CHEM120']],\n    {'MATH101': 180,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 60,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1020],\n   [['s2', 'HIST140', 'BIO130', 1035, False], ['s5', 'PHYS110', 'CHEM120', 1035, False]]),\n  ('normal control 8',\n   [[['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90, 'MATH101H': 60, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 60, 'HIST140': 60, 'ECON150': 60},\n    600, 1080],\n   [['s2', 'PHYS110', 'MATH101H', 705, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('partial repair guard 3',\n   [[['s2', 'BIO130', 'ECON150'], ['s4', 'ECON150', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 120},\n    780, 1020],\n   [['s2', 'BIO130', 'ECON150', 975, False], ['s4', 'MATH101', 'ECON150', 975, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('boundary control 5', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 840, 1080],\n   [['s1', 'A', 'B', 1035, False]]),\n  ('normal control 6',\n   [[['s3', 'MATH101', 'CHEM120'], ['s1', 'MATH101H', 'BIO130'], ['s4', 'PHYS110', 'CHEM120']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 120},\n    840, 1080],\n   [['s3', 'CHEM120', 'MATH101', 1035, False], ['s1', 'BIO130', 'MATH101H', 975, False],\n    ['s4', 'CHEM120', 'PHYS110', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'PHYS110', 'BIO130'], ['s5', 'MATH101', 'BIO130']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 120,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 180},\n    540, 1020],\n   [['s5', 'BIO130', 'PHYS110', 735, True], ['s5', 'BIO130', 'MATH101', 735, True]]),\n  ('normal control 8',\n   [[['s2', 'HIST140', 'BIO130'], ['s2', 'ECON150', 'CHEM120']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 180,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1080],\n   [['s2', 'BIO130', 'HIST140', 1035, False], ['s2', 'ECON150', 'CHEM120', 975, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855],\n   [['s1', 'A', 'B', 735, True]]),\n  ('partial repair guard 3',\n   [[['s4', 'HIST140', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 60,\n     'BIO130': 120,\n     'HIST140': 180,\n     'ECON150': 120},\n    780, 1080],\n   [['s4', 'HIST140', 'MATH101H', 975, False]]),\n  ('boundary control 4', [[['s3', 'A', 'B'], ['s1', 'A', 'B']], {'A': 60, 'B': 90}, 780, 1020],\n   [['s3', 'B', 'A', 885, True], ['s1', 'B', 'A', 885, True]]),\n  ('normal control 5',\n   [[['s3', 'BIO130', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 60,\n     'ECON150': 90},\n    780, 1020],\n   [['s3', 'BIO130', 'HIST140', 975, False]]),\n  ('normal control 6',\n   [[['s3', 'MATH101H', 'MATH101'], ['s4', 'ECON150', 'MATH101H'], ['s2', 'CHEM120', 'ECON150']],\n    {'MATH101': 180,\n     'MATH101H': 180,\n     'PHYS110': 120,\n     'CHEM120': 120,\n     'BIO130': 60,\n     'HIST140': 120,\n     'ECON150': 180},\n    780, 1080],\n   [['s3', 'MATH101', 'MATH101H', 975, False], ['s4', 'ECON150', 'MATH101H', 975, False],\n    ['s2', 'ECON150', 'CHEM120', 975, False]]),\n  ('normal control 7',\n   [[['s4', 'MATH101H', 'ECON150'], ['s3', 'PHYS110', 'BIO130'], ['s5', 'HIST140', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'ECON150', 'MATH101H', 615, True], ['s3', 'PHYS110', 'BIO130', 735, True],\n    ['s5', 'MATH101', 'HIST140', 645, True]]),\n  ('normal control 8',\n   [[['s4', 'HIST140', 'PHYS110'], ['s2', 'PHYS110', 'MATH101']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 90,\n     'CHEM120': 180,\n     'BIO130': 120,\n     'HIST140': 120,\n     'ECON150': 180},\n    600, 1080],\n   [['s4', 'HIST140', 'PHYS110', 735, True], ['s2', 'MATH101', 'PHYS110', 795, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 600, 855],\n   [['s1', 'A', 'B', 735, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('partial repair guard 3',\n   [[['s3', 'PHYS110', 'MATH101H'], ['s3', 'ECON150', 'HIST140']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 60,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1080],\n   [['s3', 'PHYS110', 'MATH101H', 975, True], ['s3', 'HIST140', 'ECON150', 1035, False]]),\n  ('normal control 4',\n   [[['s2', 'ECON150', 'MATH101H'], ['s1', 'MATH101', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 60,\n     'ECON150': 90},\n    840, 1020],\n   [['s2', 'MATH101H', 'ECON150', 975, False], ['s1', 'MATH101', 'MATH101H', 1035, False]]),\n  ('normal control 5',\n   [[['s1', 'MATH101H', 'ECON150'], ['s2', 'ECON150', 'MATH101H'], ['s3', 'PHYS110', 'HIST140']],\n    {'MATH101': 90,\n     'MATH101H': 90,\n     'PHYS110': 60,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 120},\n    840, 1020],\n   [['s1', 'ECON150', 'MATH101H', 975, False], ['s2', 'ECON150', 'MATH101H', 975, False],\n    ['s3', 'HIST140', 'PHYS110', 1035, False]]),\n  ('normal control 6',\n   [[['s4', 'CHEM120', 'HIST140']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 90,\n     'ECON150': 60},\n    600, 1080],\n   [['s4', 'CHEM120', 'HIST140', 705, True]]),\n  ('normal control 7',\n   [[['s1', 'MATH101', 'PHYS110'], ['s2', 'PHYS110', 'BIO130'], ['s2', 'MATH101H', 'PHYS110']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 60,\n     'CHEM120': 180,\n     'BIO130': 90,\n     'HIST140': 120,\n     'ECON150': 120},\n    600, 1080],\n   [['s1', 'MATH101', 'PHYS110', 705, True], ['s2', 'BIO130', 'PHYS110', 705, True],\n    ['s2', 'MATH101H', 'PHYS110', 795, True]]),\n  ('normal control 8',\n   [[['s4', 'MATH101H', 'ECON150'], ['s3', 'PHYS110', 'BIO130'], ['s5', 'HIST140', 'MATH101']],\n    {'MATH101': 90,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 90,\n     'BIO130': 120,\n     'HIST140': 60,\n     'ECON150': 60},\n    540, 1020],\n   [['s4', 'ECON150', 'MATH101H', 615, True], ['s3', 'PHYS110', 'BIO130', 735, True],\n    ['s5', 'MATH101', 'HIST140', 645, True]])],\n [('regression: day end inclusive 1', [[['s1', 'A', 'B']], {'A': 180, 'B': 60}, 600, 855],\n   [['s1', 'A', 'B', 795, True]]),\n  ('regression variant: day end inclusive 2', [[['s1', 'A', 'B']], {'A': 120, 'B': 120}, 780, 1035],\n   [['s1', 'A', 'B', 915, True]]),\n  ('partial repair guard 3',\n   [[['s1', 'ECON150', 'CHEM120'], ['s2', 'PHYS110', 'MATH101'], ['s4', 'BIO130', 'ECON150']],\n    {'MATH101': 60,\n     'MATH101H': 120,\n     'PHYS110': 120,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 180},\n    840, 1020],\n   [['s1', 'ECON150', 'CHEM120', 1035, False], ['s2', 'PHYS110', 'MATH101', 975, False],\n    ['s4', 'BIO130', 'ECON150', 1035, False]]),\n  ('normal control 4',\n   [[['s3', 'HIST140', 'BIO130'], ['s4', 'ECON150', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 60,\n     'PHYS110': 180,\n     'CHEM120': 180,\n     'BIO130': 180,\n     'HIST140': 180,\n     'ECON150': 60},\n    600, 1020],\n   [['s3', 'BIO130', 'HIST140', 795, True], ['s4', 'HIST140', 'ECON150', 795, True]]),\n  ('normal control 5',\n   [[['s2', 'BIO130', 'ECON150']],\n    {'MATH101': 120,\n     'MATH101H': 90,\n     'PHYS110': 90,\n     'CHEM120': 120,\n     'BIO130': 180,\n     'HIST140': 90,\n     'ECON150': 180},\n    540, 1020],\n   [['s2', 'BIO130', 'ECON150', 735, True]]),\n  ('normal control 6',\n   [[['s2', 'PHYS110', 'CHEM120'], ['s5', 'PHYS110', 'ECON150'], ['s5', 'BIO130', 'MATH101H']],\n    {'MATH101': 90,\n     'MATH101H': 180,\n     'PHYS110': 60,\n     'CHEM120': 90,\n     'BIO130': 180,\n     'HIST140': 120,\n     'ECON150': 60},\n    840, 1080],\n   [['s2', 'CHEM120', 'PHYS110', 945, True], ['s5', 'ECON150', 'PHYS110', 915, True],\n    ['s5', 'BIO130', 'MATH101H', 1035, False]]),\n  ('normal control 7',\n   [[['s5', 'MATH101H', 'BIO130'], ['s2', 'HIST140', 'MATH101'], ['s1', 'MATH101H', 'HIST140']],\n    {'MATH101': 60,\n     'MATH101H': 90,\n     'PHYS110': 120,\n     'CHEM120': 120,\n     'BIO130': 90,\n     'HIST140': 180,\n     'ECON150': 60},\n    780, 1020],\n   [['s5', 'BIO130', 'MATH101H', 885, True], ['s2', 'HIST140', 'MATH101', 975, False],\n    ['s1', 'HIST140', 'MATH101H', 975, False]]),\n  ('normal control 8',\n   [[['s1', 'BIO130', 'MATH101H']],\n    {'MATH101': 180,\n     'MATH101H': 60,\n     'PHYS110': 60,\n     'CHEM120': 180,\n     'BIO130': 60,\n     'HIST140': 90,\n     'ECON150': 120},\n    600, 1080],\n   [['s1', 'BIO130', 'MATH101H', 675, True]])]]\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-clash-sequential-sitting-day-end-inclusive","generated_at":"2026-09-29T14:52:06.561395+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Clash resolution by supervised sequential sitting is a standard timetabling fallback.","root_cause":"The feasibility test is strict.","sha256":"10d67004360991bd5cbbadc5bc284549f03e5692c54e365a7c6fbe485cd81552","title":"Second sitting ending exactly at close flagged infeasible · 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":40.689,"exit_code":1,"observations":[{"actual":[["s1","A","B",735,true]],"check":"regression: day end inclusive 1","expected":[["s1","A","B",735,true]],"passed":true},{"actual":[["s1","A","B",795,true]],"check":"regression variant: day end inclusive 2","expected":[["s1","A","B",795,true]],"passed":true},{"actual":[["s4","PHYS110","MATH101H",975,true]],"check":"partial repair guard 3","expected":[["s4","PHYS110","MATH101H",975,false]],"passed":false},{"actual":[["s1","A","B",1035,true]],"check":"boundary control 4","expected":[["s1","A","B",1035,false]],"passed":false},{"actual":[["s1","B","A",795,true]],"check":"boundary control 5","expected":[["s1","B","A",795,true]],"passed":true},{"actual":[["s1","BIO130","PHYS110",735,true],["s4","CHEM120","PHYS110",735,true],["s2","MATH101","MATH101H",795,true]],"check":"normal control 6","expected":[["s1","BIO130","PHYS110",735,true],["s4","CHEM120","PHYS110",735,true],["s2","MATH101","MATH101H",795,true]],"passed":true},{"actual":[["s2","HIST140","BIO130",1035,false],["s5","PHYS110","CHEM120",1035,false]],"check":"normal control 7","expected":[["s2","HIST140","BIO130",1035,false],["s5","PHYS110","CHEM120",1035,false]],"passed":true},{"actual":[["s2","PHYS110","MATH101H",705,true]],"check":"normal control 8","expected":[["s2","PHYS110","MATH101H",705,true]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: day end inclusive 1\", \"actual\": [[\"s1\", \"A\", \"B\", 735, true]], \"expected\": [[\"s1\", \"A\", \"B\", 735, true]], \"passed\": true}, {\"check\": \"regression variant: day end inclusive 2\", \"actual\": [[\"s1\", \"A\", \"B\", 795, true]], \"expected\": [[\"s1\", \"A\", \"B\", 795, true]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s4\", \"PHYS110\", \"MATH101H\", 975, true]], \"expected\": [[\"s4\", \"PHYS110\", \"MATH101H\", 975, false]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", \"A\", \"B\", 1035, true]], \"expected\": [[\"s1\", \"A\", \"B\", 1035, false]], \"passed\": false}, {\"check\": \"boundary control 5\", \"actual\": [[\"s1\", \"B\", \"A\", 795, true]], \"expected\": [[\"s1\", \"B\", \"A\", 795, true]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"s1\", \"BIO130\", \"PHYS110\", 735, true], [\"s4\", \"CHEM120\", \"PHYS110\", 735, true], [\"s2\", \"MATH101\", \"MATH101H\", 795, true]], \"expected\": [[\"s1\", \"BIO130\", \"PHYS110\", 735, true], [\"s4\", \"CHEM120\", \"PHYS110\", 735, true], [\"s2\", \"MATH101\", \"MATH101H\", 795, true]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"s2\", \"HIST140\", \"BIO130\", 1035, false], [\"s5\", \"PHYS110\", \"CHEM120\", 1035, false]], \"expected\": [[\"s2\", \"HIST140\", \"BIO130\", 1035, false], [\"s5\", \"PHYS110\", \"CHEM120\", 1035, false]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"expected\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.446,"exit_code":1,"observations":[{"actual":[["s1","A","B",735,false]],"check":"regression: day end inclusive 1","expected":[["s1","A","B",735,true]],"passed":false},{"actual":[["s1","A","B",795,false]],"check":"regression variant: day end inclusive 2","expected":[["s1","A","B",795,true]],"passed":false},{"actual":[["s4","PHYS110","MATH101H",975,false]],"check":"partial repair guard 3","expected":[["s4","PHYS110","MATH101H",975,false]],"passed":true},{"actual":[["s1","A","B",1035,false]],"check":"boundary control 4","expected":[["s1","A","B",1035,false]],"passed":true},{"actual":[["s1","B","A",795,true]],"check":"boundary control 5","expected":[["s1","B","A",795,true]],"passed":true},{"actual":[["s1","BIO130","PHYS110",735,true],["s4","CHEM120","PHYS110",735,true],["s2","MATH101","MATH101H",795,true]],"check":"normal control 6","expected":[["s1","BIO130","PHYS110",735,true],["s4","CHEM120","PHYS110",735,true],["s2","MATH101","MATH101H",795,true]],"passed":true},{"actual":[["s2","HIST140","BIO130",1035,false],["s5","PHYS110","CHEM120",1035,false]],"check":"normal control 7","expected":[["s2","HIST140","BIO130",1035,false],["s5","PHYS110","CHEM120",1035,false]],"passed":true},{"actual":[["s2","PHYS110","MATH101H",705,true]],"check":"normal control 8","expected":[["s2","PHYS110","MATH101H",705,true]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: day end inclusive 1\", \"actual\": [[\"s1\", \"A\", \"B\", 735, false]], \"expected\": [[\"s1\", \"A\", \"B\", 735, true]], \"passed\": false}, {\"check\": \"regression variant: day end inclusive 2\", \"actual\": [[\"s1\", \"A\", \"B\", 795, false]], \"expected\": [[\"s1\", \"A\", \"B\", 795, true]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"s4\", \"PHYS110\", \"MATH101H\", 975, false]], \"expected\": [[\"s4\", \"PHYS110\", \"MATH101H\", 975, false]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [[\"s1\", \"A\", \"B\", 1035, false]], \"expected\": [[\"s1\", \"A\", \"B\", 1035, false]], \"passed\": true}, {\"check\": \"boundary control 5\", \"actual\": [[\"s1\", \"B\", \"A\", 795, true]], \"expected\": [[\"s1\", \"B\", \"A\", 795, true]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"s1\", \"BIO130\", \"PHYS110\", 735, true], [\"s4\", \"CHEM120\", \"PHYS110\", 735, true], [\"s2\", \"MATH101\", \"MATH101H\", 795, true]], \"expected\": [[\"s1\", \"BIO130\", \"PHYS110\", 735, true], [\"s4\", \"CHEM120\", \"PHYS110\", 735, true], [\"s2\", \"MATH101\", \"MATH101H\", 795, true]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"s2\", \"HIST140\", \"BIO130\", 1035, false], [\"s5\", \"PHYS110\", \"CHEM120\", 1035, false]], \"expected\": [[\"s2\", \"HIST140\", \"BIO130\", 1035, false], [\"s5\", \"PHYS110\", \"CHEM120\", 1035, false]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"expected\": [[\"s2\", \"PHYS110\", \"MATH101H\", 705, true]], \"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."}}