{"abstract":"An exam required to follow another is accepted in the same period.","category":"Exam timetabling constraints","checks":8,"contract":"timetable maps exam -> period index, exams exam -> duration, periods -> duration. Duration violations (exam longer than its period) are listed first by exam id; then for each constraint in order: after (a must be in a strictly later period than b), exclusion (different periods), coincidence (same period), exclusive (a must be alone in its period). Return violation rows.","evaluation_group":"w2-exam-timetabling-constraints-hard-constraint-validation","failed_approach":"Reversing the operands enforces the opposite precedence.","family":"w2-exam-timetabling-constraints-hard-constraint-validation-after-direction","id":"FA-94481","implementations":{"attempt":{"sha256":"230ea6b4d26e661a7a4931e658899c90bc205a51738ffacfff2ad623dea2d94d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(timetable, exams, periods, cons):\n    out = []\n    for e in sorted(timetable):\n        if exams[e] > periods[timetable[e]]:\n            out.append(['duration', e])\n    for kind, a, b in cons:\n        pa, pb = timetable[a], timetable[b]\n        if kind == 'after' and not pb > pa:\n            out.append([kind, a, b])\n        elif kind == 'exclusion' and pa == pb:\n            out.append([kind, a, b])\n        elif kind == 'coincidence' and pa != pb:\n            out.append([kind, a, b])\n        elif kind == 'exclusive' and sum(1 for e in timetable if timetable[e] == pa) > 1:\n            out.append([kind, a, b])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: after direction 1', [{'A': 1, 'B': 1}, {'A': 90, 'B': 90}, [90, 120], [['after', 'A', 'B']]],\n   [['after', 'A', 'B']]),\n  ('regression variant: after direction 2',\n   [{'MATH101H': 3, 'MATH101': 3, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 180},\n    [180, 90, 120, 90], [['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'PHYS110']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110'], ['after', 'MATH101H', 'PHYS110'],\n    ['after', 'MATH101H', 'PHYS110']]),\n  ('partial repair guard 3',\n   [{'MATH101': 2, 'PHYS110': 0, 'MATH101H': 0}, {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90},\n    [120, 90, 180, 180],\n    [['coincidence', 'MATH101', 'PHYS110'], ['exclusive', 'PHYS110', 'MATH101H'],\n     ['after', 'PHYS110', 'MATH101'], ['coincidence', 'MATH101H', 'MATH101']]],\n   [['coincidence', 'MATH101', 'PHYS110'], ['exclusive', 'PHYS110', 'MATH101H'],\n    ['after', 'PHYS110', 'MATH101'], ['coincidence', 'MATH101H', 'MATH101']]),\n  ('boundary control 4', [{'A': 1, 'B': 0}, {'A': 120, 'B': 90}, [90, 120], [['exclusive', 'A', 'B']]], []),\n  ('normal control 5',\n   [{'PHYS110': 0, 'MATH101': 2, 'MATH101H': 0, 'CHEM120': 1},\n    {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 180, 'CHEM120': 90}, [90, 120, 120, 120],\n    [['coincidence', 'MATH101', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101'],\n     ['after', 'CHEM120', 'MATH101'], ['exclusive', 'CHEM120', 'MATH101']]],\n   [['duration', 'MATH101H'], ['duration', 'PHYS110'], ['coincidence', 'MATH101', 'PHYS110'],\n    ['coincidence', 'PHYS110', 'MATH101'], ['after', 'CHEM120', 'MATH101']]),\n  ('normal control 6',\n   [{'PHYS110': 1, 'MATH101': 0, 'CHEM120': 3, 'MATH101H': 0},\n    {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120, 'CHEM120': 120}, [90, 120, 120, 120],\n    [['after', 'MATH101', 'MATH101H'], ['after', 'CHEM120', 'MATH101H'],\n     ['coincidence', 'CHEM120', 'MATH101H'], ['coincidence', 'MATH101H', 'CHEM120']]],\n   [['duration', 'MATH101'], ['after', 'MATH101', 'MATH101H'], ['coincidence', 'CHEM120', 'MATH101H'],\n    ['coincidence', 'MATH101H', 'CHEM120']]),\n  ('normal control 7',\n   [{'MATH101H': 1, 'HIST140': 3, 'PHYS110': 2, 'BIO130': 3, 'CHEM120': 1, 'MATH101': 2},\n    {'MATH101': 180, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 120, 'HIST140': 90},\n    [180, 180, 180, 90], [['after', 'BIO130', 'PHYS110'], ['exclusion', 'CHEM120', 'MATH101']]],\n   [['duration', 'BIO130']]),\n  ('normal control 8',\n   [{'CHEM120': 0, 'PHYS110': 2, 'MATH101H': 2, 'MATH101': 2, 'HIST140': 0, 'BIO130': 1},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 90},\n    [90, 120, 180, 120],\n    [['exclusion', 'BIO130', 'MATH101'], ['coincidence', 'CHEM120', 'MATH101H'],\n     ['exclusive', 'CHEM120', 'MATH101'], ['coincidence', 'HIST140', 'MATH101']]],\n   [['duration', 'CHEM120'], ['coincidence', 'CHEM120', 'MATH101H'], ['exclusive', 'CHEM120', 'MATH101'],\n    ['coincidence', 'HIST140', 'MATH101']])],\n [('regression: after direction 1',\n   [{'BIO130': 0, 'PHYS110': 3, 'MATH101': 1, 'CHEM120': 0, 'MATH101H': 1},\n    {'MATH101': 180, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 90}, [120, 120, 180, 90],\n    [['coincidence', 'CHEM120', 'BIO130'], ['after', 'CHEM120', 'BIO130'],\n     ['exclusive', 'MATH101H', 'MATH101']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110'], ['after', 'CHEM120', 'BIO130'],\n    ['exclusive', 'MATH101H', 'MATH101']]),\n  ('regression variant: after direction 2',\n   [{'PHYS110': 3, 'MATH101': 3, 'MATH101H': 3}, {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90},\n    [120, 120, 180, 180],\n    [['coincidence', 'PHYS110', 'MATH101H'], ['exclusion', 'MATH101H', 'PHYS110'],\n     ['after', 'MATH101', 'PHYS110'], ['exclusive', 'MATH101', 'MATH101H']]],\n   [['exclusion', 'MATH101H', 'PHYS110'], ['after', 'MATH101', 'PHYS110'],\n    ['exclusive', 'MATH101', 'MATH101H']]),\n  ('partial repair guard 3',\n   [{'MATH101': 0, 'MATH101H': 1, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120},\n    [120, 90, 90, 180],\n    [['after', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110'],\n     ['coincidence', 'MATH101', 'MATH101H']]],\n   [['duration', 'MATH101'], ['coincidence', 'MATH101', 'MATH101H']]),\n  ('boundary control 4', [{'A': 2, 'B': 1}, {'A': 90, 'B': 90}, [90, 120, 120], [['after', 'A', 'B']]], []),\n  ('normal control 5',\n   [{'MATH101': 1, 'PHYS110': 2, 'HIST140': 1, 'BIO130': 2, 'CHEM120': 1, 'MATH101H': 1},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 180, 'HIST140': 120},\n    [90, 120, 180, 120], [['exclusive', 'HIST140', 'PHYS110']]],\n   [['exclusive', 'HIST140', 'PHYS110']]),\n  ('normal control 6',\n   [{'MATH101H': 3, 'CHEM120': 1, 'PHYS110': 0, 'MATH101': 1, 'BIO130': 0},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 180, 'BIO130': 90}, [90, 90, 120, 180],\n    [['after', 'MATH101H', 'PHYS110']]],\n   [['duration', 'CHEM120'], ['duration', 'PHYS110']]),\n  ('normal control 7',\n   [{'MATH101': 3, 'BIO130': 1, 'PHYS110': 0, 'CHEM120': 2, 'MATH101H': 2, 'HIST140': 2},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [180, 90, 180, 120], [['after', 'HIST140', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101H']]],\n   [['duration', 'BIO130'], ['after', 'HIST140', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101H']]),\n  ('normal control 8',\n   [{'MATH101H': 3, 'MATH101': 3, 'PHYS110': 3}, {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90},\n    [90, 180, 90, 90],\n    [['after', 'MATH101H', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101H'],\n     ['coincidence', 'MATH101H', 'MATH101']]],\n   [['duration', 'MATH101H'], ['after', 'MATH101H', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'PHYS110': 3, 'CHEM120': 1, 'MATH101': 1, 'MATH101H': 1},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90}, [180, 120, 120, 90],\n    [['after', 'MATH101', 'CHEM120'], ['exclusive', 'MATH101', 'CHEM120']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101', 'CHEM120'], ['exclusive', 'MATH101', 'CHEM120']]),\n  ('regression variant: after direction 2',\n   [{'CHEM120': 3, 'BIO130': 3, 'MATH101': 2, 'HIST140': 2, 'PHYS110': 0, 'MATH101H': 0},\n    {'MATH101': 180, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [90, 180, 90, 120],\n    [['after', 'BIO130', 'CHEM120'], ['exclusion', 'MATH101H', 'PHYS110'],\n     ['coincidence', 'MATH101', 'PHYS110'], ['exclusion', 'MATH101', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140'], ['duration', 'MATH101'],\n    ['duration', 'MATH101H'], ['after', 'BIO130', 'CHEM120'], ['exclusion', 'MATH101H', 'PHYS110'],\n    ['coincidence', 'MATH101', 'PHYS110']]),\n  ('partial repair guard 3',\n   [{'PHYS110': 3, 'CHEM120': 0, 'MATH101': 3, 'MATH101H': 2},\n    {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 180, 'CHEM120': 180}, [120, 120, 90, 120],\n    [['coincidence', 'CHEM120', 'PHYS110'], ['coincidence', 'MATH101H', 'MATH101'],\n     ['after', 'MATH101H', 'MATH101']]],\n   [['duration', 'CHEM120'], ['duration', 'PHYS110'], ['coincidence', 'CHEM120', 'PHYS110'],\n    ['coincidence', 'MATH101H', 'MATH101'], ['after', 'MATH101H', 'MATH101']]),\n  ('boundary control 4', [{'B': 0, 'A': 1}, {'A': 180, 'B': 180}, [120, 120], []],\n   [['duration', 'A'], ['duration', 'B']]),\n  ('normal control 5',\n   [{'MATH101H': 3, 'MATH101': 1, 'CHEM120': 0, 'PHYS110': 0},\n    {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 90}, [180, 90, 180, 180],\n    [['exclusive', 'MATH101H', 'CHEM120']]],\n   []),\n  ('normal control 6',\n   [{'MATH101': 0, 'PHYS110': 1, 'MATH101H': 2}, {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90},\n    [180, 90, 120, 90], [['exclusive', 'MATH101H', 'PHYS110']]],\n   [['duration', 'MATH101H']]),\n  ('normal control 7',\n   [{'MATH101H': 2, 'CHEM120': 1, 'BIO130': 3, 'MATH101': 3, 'PHYS110': 2},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 120, 'CHEM120': 120, 'BIO130': 120}, [120, 120, 120, 90],\n    [['exclusion', 'CHEM120', 'MATH101'], ['after', 'MATH101H', 'MATH101'], ['after', 'CHEM120', 'MATH101H'],\n     ['coincidence', 'PHYS110', 'MATH101H']]],\n   [['duration', 'BIO130'], ['duration', 'MATH101'], ['duration', 'MATH101H'],\n    ['after', 'MATH101H', 'MATH101'], ['after', 'CHEM120', 'MATH101H']]),\n  ('normal control 8',\n   [{'MATH101H': 0, 'MATH101': 0, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 120, 'PHYS110': 180},\n    [180, 90, 120, 90],\n    [['coincidence', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110'],\n     ['after', 'PHYS110', 'MATH101H']]],\n   [['duration', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'CHEM120': 3, 'HIST140': 0, 'PHYS110': 1, 'BIO130': 3, 'MATH101': 0, 'MATH101H': 2},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 180},\n    [90, 90, 90, 90],\n    [['exclusion', 'HIST140', 'BIO130'], ['exclusion', 'MATH101', 'MATH101H'],\n     ['exclusive', 'BIO130', 'MATH101H'], ['after', 'HIST140', 'MATH101']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140'], ['duration', 'MATH101'],\n    ['duration', 'MATH101H'], ['exclusive', 'BIO130', 'MATH101H'], ['after', 'HIST140', 'MATH101']]),\n  ('regression variant: after direction 2',\n   [{'MATH101': 1, 'MATH101H': 1, 'PHYS110': 0}, {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90},\n    [180, 90, 120, 180],\n    [['after', 'MATH101', 'MATH101H'], ['exclusion', 'PHYS110', 'MATH101'],\n     ['coincidence', 'PHYS110', 'MATH101'], ['exclusive', 'PHYS110', 'MATH101H']]],\n   [['after', 'MATH101', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101']]),\n  ('partial repair guard 3',\n   [{'BIO130': 1, 'PHYS110': 0, 'MATH101': 0, 'MATH101H': 1, 'CHEM120': 2},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 120, 'CHEM120': 120, 'BIO130': 180}, [90, 90, 90, 120],\n    [['exclusive', 'MATH101', 'BIO130'], ['after', 'PHYS110', 'MATH101H'],\n     ['exclusion', 'MATH101', 'PHYS110'], ['after', 'PHYS110', 'BIO130']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'MATH101'], ['duration', 'MATH101H'],\n    ['duration', 'PHYS110'], ['exclusive', 'MATH101', 'BIO130'], ['after', 'PHYS110', 'MATH101H'],\n    ['exclusion', 'MATH101', 'PHYS110'], ['after', 'PHYS110', 'BIO130']]),\n  ('boundary control 4', [{'A': 0}, {'A': 120}, [120], []], []),\n  ('normal control 5',\n   [{'HIST140': 1, 'MATH101H': 3, 'BIO130': 3, 'MATH101': 1, 'CHEM120': 3, 'PHYS110': 1},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 180},\n    [180, 120, 180, 90], [['exclusion', 'MATH101H', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140']]),\n  ('normal control 6',\n   [{'CHEM120': 1, 'MATH101H': 1, 'MATH101': 2, 'PHYS110': 3},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 180, 'CHEM120': 180}, [120, 120, 120, 180],\n    [['exclusive', 'CHEM120', 'MATH101']]],\n   [['duration', 'CHEM120'], ['exclusive', 'CHEM120', 'MATH101']]),\n  ('normal control 7',\n   [{'MATH101H': 2, 'PHYS110': 3, 'MATH101': 3}, {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 180},\n    [90, 180, 120, 120], [['coincidence', 'PHYS110', 'MATH101'], ['after', 'MATH101H', 'MATH101']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101H', 'MATH101']]),\n  ('normal control 8',\n   [{'MATH101H': 2, 'PHYS110': 0, 'MATH101': 1}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 180},\n    [120, 90, 180, 180], [['exclusive', 'MATH101H', 'PHYS110'], ['exclusive', 'MATH101', 'PHYS110']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'PHYS110': 1, 'CHEM120': 0, 'MATH101': 3, 'MATH101H': 3, 'BIO130': 3},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 180}, [90, 90, 90, 180],\n    [['after', 'MATH101', 'MATH101H'], ['exclusion', 'CHEM120', 'BIO130']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101', 'MATH101H']]),\n  ('regression variant: after direction 2',\n   [{'MATH101': 2, 'PHYS110': 3, 'MATH101H': 3, 'CHEM120': 3},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120}, [90, 120, 90, 90],\n    [['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'CHEM120'],\n     ['exclusive', 'PHYS110', 'MATH101']]],\n   [['duration', 'CHEM120'], ['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'CHEM120'],\n    ['exclusive', 'PHYS110', 'MATH101']]),\n  ('partial repair guard 3',\n   [{'MATH101': 3, 'HIST140': 2, 'MATH101H': 0, 'PHYS110': 1, 'BIO130': 1, 'CHEM120': 0},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [180, 90, 180, 120],\n    [['after', 'CHEM120', 'BIO130'], ['after', 'MATH101', 'CHEM120'], ['coincidence', 'BIO130', 'MATH101H']]],\n   [['duration', 'BIO130'], ['after', 'CHEM120', 'BIO130'], ['coincidence', 'BIO130', 'MATH101H']]),\n  ('boundary control 4', [{'A': 1, 'B': 1}, {'A': 90, 'B': 90}, [90, 120], [['after', 'A', 'B']]],\n   [['after', 'A', 'B']]),\n  ('normal control 5',\n   [{'CHEM120': 0, 'MATH101H': 1, 'MATH101': 2, 'HIST140': 3, 'BIO130': 3, 'PHYS110': 1},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 90, 'HIST140': 180},\n    [180, 90, 120, 90], [['exclusive', 'HIST140', 'BIO130']]],\n   [['duration', 'HIST140'], ['duration', 'MATH101H'], ['duration', 'PHYS110'],\n    ['exclusive', 'HIST140', 'BIO130']]),\n  ('normal control 6',\n   [{'MATH101H': 2, 'PHYS110': 1, 'MATH101': 1}, {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 90},\n    [180, 120, 90, 120],\n    [['exclusion', 'PHYS110', 'MATH101'], ['exclusion', 'MATH101H', 'MATH101'],\n     ['exclusive', 'PHYS110', 'MATH101'], ['after', 'PHYS110', 'MATH101H']]],\n   [['exclusion', 'PHYS110', 'MATH101'], ['exclusive', 'PHYS110', 'MATH101'],\n    ['after', 'PHYS110', 'MATH101H']]),\n  ('normal control 7',\n   [{'MATH101': 2, 'CHEM120': 3, 'MATH101H': 3, 'PHYS110': 3},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 180, 'CHEM120': 180}, [90, 120, 180, 90],\n    [['coincidence', 'MATH101H', 'CHEM120'], ['exclusion', 'PHYS110', 'MATH101']]],\n   [['duration', 'CHEM120'], ['duration', 'MATH101H'], ['duration', 'PHYS110']]),\n  ('normal control 8',\n   [{'PHYS110': 3, 'MATH101H': 3, 'BIO130': 1, 'CHEM120': 2, 'HIST140': 0, 'MATH101': 1},\n    {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120, 'CHEM120': 90, 'BIO130': 180, 'HIST140': 120},\n    [120, 120, 120, 180],\n    [['after', 'MATH101H', 'BIO130'], ['exclusive', 'CHEM120', 'MATH101H'], ['after', 'BIO130', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'MATH101'], ['after', 'BIO130', 'PHYS110']])]]\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":"d01f01677c6b3f8ce09f786becae0f5007ddce4dd9c54f639ac86a266c646a8c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(timetable, exams, periods, cons):\n    out = []\n    for e in sorted(timetable):\n        if exams[e] > periods[timetable[e]]:\n            out.append(['duration', e])\n    for kind, a, b in cons:\n        pa, pb = timetable[a], timetable[b]\n        if kind == 'after' and pa < pb:\n            out.append([kind, a, b])\n        elif kind == 'exclusion' and pa == pb:\n            out.append([kind, a, b])\n        elif kind == 'coincidence' and pa != pb:\n            out.append([kind, a, b])\n        elif kind == 'exclusive' and sum(1 for e in timetable if timetable[e] == pa) > 1:\n            out.append([kind, a, b])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: after direction 1', [{'A': 1, 'B': 1}, {'A': 90, 'B': 90}, [90, 120], [['after', 'A', 'B']]],\n   [['after', 'A', 'B']]),\n  ('regression variant: after direction 2',\n   [{'MATH101H': 3, 'MATH101': 3, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 180},\n    [180, 90, 120, 90], [['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'PHYS110']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110'], ['after', 'MATH101H', 'PHYS110'],\n    ['after', 'MATH101H', 'PHYS110']]),\n  ('partial repair guard 3',\n   [{'MATH101': 2, 'PHYS110': 0, 'MATH101H': 0}, {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90},\n    [120, 90, 180, 180],\n    [['coincidence', 'MATH101', 'PHYS110'], ['exclusive', 'PHYS110', 'MATH101H'],\n     ['after', 'PHYS110', 'MATH101'], ['coincidence', 'MATH101H', 'MATH101']]],\n   [['coincidence', 'MATH101', 'PHYS110'], ['exclusive', 'PHYS110', 'MATH101H'],\n    ['after', 'PHYS110', 'MATH101'], ['coincidence', 'MATH101H', 'MATH101']]),\n  ('boundary control 4', [{'A': 1, 'B': 0}, {'A': 120, 'B': 90}, [90, 120], [['exclusive', 'A', 'B']]], []),\n  ('normal control 5',\n   [{'PHYS110': 0, 'MATH101': 2, 'MATH101H': 0, 'CHEM120': 1},\n    {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 180, 'CHEM120': 90}, [90, 120, 120, 120],\n    [['coincidence', 'MATH101', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101'],\n     ['after', 'CHEM120', 'MATH101'], ['exclusive', 'CHEM120', 'MATH101']]],\n   [['duration', 'MATH101H'], ['duration', 'PHYS110'], ['coincidence', 'MATH101', 'PHYS110'],\n    ['coincidence', 'PHYS110', 'MATH101'], ['after', 'CHEM120', 'MATH101']]),\n  ('normal control 6',\n   [{'PHYS110': 1, 'MATH101': 0, 'CHEM120': 3, 'MATH101H': 0},\n    {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120, 'CHEM120': 120}, [90, 120, 120, 120],\n    [['after', 'MATH101', 'MATH101H'], ['after', 'CHEM120', 'MATH101H'],\n     ['coincidence', 'CHEM120', 'MATH101H'], ['coincidence', 'MATH101H', 'CHEM120']]],\n   [['duration', 'MATH101'], ['after', 'MATH101', 'MATH101H'], ['coincidence', 'CHEM120', 'MATH101H'],\n    ['coincidence', 'MATH101H', 'CHEM120']]),\n  ('normal control 7',\n   [{'MATH101H': 1, 'HIST140': 3, 'PHYS110': 2, 'BIO130': 3, 'CHEM120': 1, 'MATH101': 2},\n    {'MATH101': 180, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 120, 'HIST140': 90},\n    [180, 180, 180, 90], [['after', 'BIO130', 'PHYS110'], ['exclusion', 'CHEM120', 'MATH101']]],\n   [['duration', 'BIO130']]),\n  ('normal control 8',\n   [{'CHEM120': 0, 'PHYS110': 2, 'MATH101H': 2, 'MATH101': 2, 'HIST140': 0, 'BIO130': 1},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 90},\n    [90, 120, 180, 120],\n    [['exclusion', 'BIO130', 'MATH101'], ['coincidence', 'CHEM120', 'MATH101H'],\n     ['exclusive', 'CHEM120', 'MATH101'], ['coincidence', 'HIST140', 'MATH101']]],\n   [['duration', 'CHEM120'], ['coincidence', 'CHEM120', 'MATH101H'], ['exclusive', 'CHEM120', 'MATH101'],\n    ['coincidence', 'HIST140', 'MATH101']])],\n [('regression: after direction 1',\n   [{'BIO130': 0, 'PHYS110': 3, 'MATH101': 1, 'CHEM120': 0, 'MATH101H': 1},\n    {'MATH101': 180, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 90}, [120, 120, 180, 90],\n    [['coincidence', 'CHEM120', 'BIO130'], ['after', 'CHEM120', 'BIO130'],\n     ['exclusive', 'MATH101H', 'MATH101']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110'], ['after', 'CHEM120', 'BIO130'],\n    ['exclusive', 'MATH101H', 'MATH101']]),\n  ('regression variant: after direction 2',\n   [{'PHYS110': 3, 'MATH101': 3, 'MATH101H': 3}, {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90},\n    [120, 120, 180, 180],\n    [['coincidence', 'PHYS110', 'MATH101H'], ['exclusion', 'MATH101H', 'PHYS110'],\n     ['after', 'MATH101', 'PHYS110'], ['exclusive', 'MATH101', 'MATH101H']]],\n   [['exclusion', 'MATH101H', 'PHYS110'], ['after', 'MATH101', 'PHYS110'],\n    ['exclusive', 'MATH101', 'MATH101H']]),\n  ('partial repair guard 3',\n   [{'MATH101': 0, 'MATH101H': 1, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120},\n    [120, 90, 90, 180],\n    [['after', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110'],\n     ['coincidence', 'MATH101', 'MATH101H']]],\n   [['duration', 'MATH101'], ['coincidence', 'MATH101', 'MATH101H']]),\n  ('boundary control 4', [{'A': 2, 'B': 1}, {'A': 90, 'B': 90}, [90, 120, 120], [['after', 'A', 'B']]], []),\n  ('normal control 5',\n   [{'MATH101': 1, 'PHYS110': 2, 'HIST140': 1, 'BIO130': 2, 'CHEM120': 1, 'MATH101H': 1},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 180, 'HIST140': 120},\n    [90, 120, 180, 120], [['exclusive', 'HIST140', 'PHYS110']]],\n   [['exclusive', 'HIST140', 'PHYS110']]),\n  ('normal control 6',\n   [{'MATH101H': 3, 'CHEM120': 1, 'PHYS110': 0, 'MATH101': 1, 'BIO130': 0},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 180, 'BIO130': 90}, [90, 90, 120, 180],\n    [['after', 'MATH101H', 'PHYS110']]],\n   [['duration', 'CHEM120'], ['duration', 'PHYS110']]),\n  ('normal control 7',\n   [{'MATH101': 3, 'BIO130': 1, 'PHYS110': 0, 'CHEM120': 2, 'MATH101H': 2, 'HIST140': 2},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [180, 90, 180, 120], [['after', 'HIST140', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101H']]],\n   [['duration', 'BIO130'], ['after', 'HIST140', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101H']]),\n  ('normal control 8',\n   [{'MATH101H': 3, 'MATH101': 3, 'PHYS110': 3}, {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90},\n    [90, 180, 90, 90],\n    [['after', 'MATH101H', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101H'],\n     ['coincidence', 'MATH101H', 'MATH101']]],\n   [['duration', 'MATH101H'], ['after', 'MATH101H', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'PHYS110': 3, 'CHEM120': 1, 'MATH101': 1, 'MATH101H': 1},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90}, [180, 120, 120, 90],\n    [['after', 'MATH101', 'CHEM120'], ['exclusive', 'MATH101', 'CHEM120']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101', 'CHEM120'], ['exclusive', 'MATH101', 'CHEM120']]),\n  ('regression variant: after direction 2',\n   [{'CHEM120': 3, 'BIO130': 3, 'MATH101': 2, 'HIST140': 2, 'PHYS110': 0, 'MATH101H': 0},\n    {'MATH101': 180, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [90, 180, 90, 120],\n    [['after', 'BIO130', 'CHEM120'], ['exclusion', 'MATH101H', 'PHYS110'],\n     ['coincidence', 'MATH101', 'PHYS110'], ['exclusion', 'MATH101', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140'], ['duration', 'MATH101'],\n    ['duration', 'MATH101H'], ['after', 'BIO130', 'CHEM120'], ['exclusion', 'MATH101H', 'PHYS110'],\n    ['coincidence', 'MATH101', 'PHYS110']]),\n  ('partial repair guard 3',\n   [{'PHYS110': 3, 'CHEM120': 0, 'MATH101': 3, 'MATH101H': 2},\n    {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 180, 'CHEM120': 180}, [120, 120, 90, 120],\n    [['coincidence', 'CHEM120', 'PHYS110'], ['coincidence', 'MATH101H', 'MATH101'],\n     ['after', 'MATH101H', 'MATH101']]],\n   [['duration', 'CHEM120'], ['duration', 'PHYS110'], ['coincidence', 'CHEM120', 'PHYS110'],\n    ['coincidence', 'MATH101H', 'MATH101'], ['after', 'MATH101H', 'MATH101']]),\n  ('boundary control 4', [{'B': 0, 'A': 1}, {'A': 180, 'B': 180}, [120, 120], []],\n   [['duration', 'A'], ['duration', 'B']]),\n  ('normal control 5',\n   [{'MATH101H': 3, 'MATH101': 1, 'CHEM120': 0, 'PHYS110': 0},\n    {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 90}, [180, 90, 180, 180],\n    [['exclusive', 'MATH101H', 'CHEM120']]],\n   []),\n  ('normal control 6',\n   [{'MATH101': 0, 'PHYS110': 1, 'MATH101H': 2}, {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90},\n    [180, 90, 120, 90], [['exclusive', 'MATH101H', 'PHYS110']]],\n   [['duration', 'MATH101H']]),\n  ('normal control 7',\n   [{'MATH101H': 2, 'CHEM120': 1, 'BIO130': 3, 'MATH101': 3, 'PHYS110': 2},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 120, 'CHEM120': 120, 'BIO130': 120}, [120, 120, 120, 90],\n    [['exclusion', 'CHEM120', 'MATH101'], ['after', 'MATH101H', 'MATH101'], ['after', 'CHEM120', 'MATH101H'],\n     ['coincidence', 'PHYS110', 'MATH101H']]],\n   [['duration', 'BIO130'], ['duration', 'MATH101'], ['duration', 'MATH101H'],\n    ['after', 'MATH101H', 'MATH101'], ['after', 'CHEM120', 'MATH101H']]),\n  ('normal control 8',\n   [{'MATH101H': 0, 'MATH101': 0, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 120, 'PHYS110': 180},\n    [180, 90, 120, 90],\n    [['coincidence', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110'],\n     ['after', 'PHYS110', 'MATH101H']]],\n   [['duration', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'CHEM120': 3, 'HIST140': 0, 'PHYS110': 1, 'BIO130': 3, 'MATH101': 0, 'MATH101H': 2},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 180},\n    [90, 90, 90, 90],\n    [['exclusion', 'HIST140', 'BIO130'], ['exclusion', 'MATH101', 'MATH101H'],\n     ['exclusive', 'BIO130', 'MATH101H'], ['after', 'HIST140', 'MATH101']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140'], ['duration', 'MATH101'],\n    ['duration', 'MATH101H'], ['exclusive', 'BIO130', 'MATH101H'], ['after', 'HIST140', 'MATH101']]),\n  ('regression variant: after direction 2',\n   [{'MATH101': 1, 'MATH101H': 1, 'PHYS110': 0}, {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90},\n    [180, 90, 120, 180],\n    [['after', 'MATH101', 'MATH101H'], ['exclusion', 'PHYS110', 'MATH101'],\n     ['coincidence', 'PHYS110', 'MATH101'], ['exclusive', 'PHYS110', 'MATH101H']]],\n   [['after', 'MATH101', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101']]),\n  ('partial repair guard 3',\n   [{'BIO130': 1, 'PHYS110': 0, 'MATH101': 0, 'MATH101H': 1, 'CHEM120': 2},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 120, 'CHEM120': 120, 'BIO130': 180}, [90, 90, 90, 120],\n    [['exclusive', 'MATH101', 'BIO130'], ['after', 'PHYS110', 'MATH101H'],\n     ['exclusion', 'MATH101', 'PHYS110'], ['after', 'PHYS110', 'BIO130']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'MATH101'], ['duration', 'MATH101H'],\n    ['duration', 'PHYS110'], ['exclusive', 'MATH101', 'BIO130'], ['after', 'PHYS110', 'MATH101H'],\n    ['exclusion', 'MATH101', 'PHYS110'], ['after', 'PHYS110', 'BIO130']]),\n  ('boundary control 4', [{'A': 0}, {'A': 120}, [120], []], []),\n  ('normal control 5',\n   [{'HIST140': 1, 'MATH101H': 3, 'BIO130': 3, 'MATH101': 1, 'CHEM120': 3, 'PHYS110': 1},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 180},\n    [180, 120, 180, 90], [['exclusion', 'MATH101H', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140']]),\n  ('normal control 6',\n   [{'CHEM120': 1, 'MATH101H': 1, 'MATH101': 2, 'PHYS110': 3},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 180, 'CHEM120': 180}, [120, 120, 120, 180],\n    [['exclusive', 'CHEM120', 'MATH101']]],\n   [['duration', 'CHEM120'], ['exclusive', 'CHEM120', 'MATH101']]),\n  ('normal control 7',\n   [{'MATH101H': 2, 'PHYS110': 3, 'MATH101': 3}, {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 180},\n    [90, 180, 120, 120], [['coincidence', 'PHYS110', 'MATH101'], ['after', 'MATH101H', 'MATH101']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101H', 'MATH101']]),\n  ('normal control 8',\n   [{'MATH101H': 2, 'PHYS110': 0, 'MATH101': 1}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 180},\n    [120, 90, 180, 180], [['exclusive', 'MATH101H', 'PHYS110'], ['exclusive', 'MATH101', 'PHYS110']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'PHYS110': 1, 'CHEM120': 0, 'MATH101': 3, 'MATH101H': 3, 'BIO130': 3},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 180}, [90, 90, 90, 180],\n    [['after', 'MATH101', 'MATH101H'], ['exclusion', 'CHEM120', 'BIO130']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101', 'MATH101H']]),\n  ('regression variant: after direction 2',\n   [{'MATH101': 2, 'PHYS110': 3, 'MATH101H': 3, 'CHEM120': 3},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120}, [90, 120, 90, 90],\n    [['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'CHEM120'],\n     ['exclusive', 'PHYS110', 'MATH101']]],\n   [['duration', 'CHEM120'], ['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'CHEM120'],\n    ['exclusive', 'PHYS110', 'MATH101']]),\n  ('partial repair guard 3',\n   [{'MATH101': 3, 'HIST140': 2, 'MATH101H': 0, 'PHYS110': 1, 'BIO130': 1, 'CHEM120': 0},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [180, 90, 180, 120],\n    [['after', 'CHEM120', 'BIO130'], ['after', 'MATH101', 'CHEM120'], ['coincidence', 'BIO130', 'MATH101H']]],\n   [['duration', 'BIO130'], ['after', 'CHEM120', 'BIO130'], ['coincidence', 'BIO130', 'MATH101H']]),\n  ('boundary control 4', [{'A': 1, 'B': 1}, {'A': 90, 'B': 90}, [90, 120], [['after', 'A', 'B']]],\n   [['after', 'A', 'B']]),\n  ('normal control 5',\n   [{'CHEM120': 0, 'MATH101H': 1, 'MATH101': 2, 'HIST140': 3, 'BIO130': 3, 'PHYS110': 1},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 90, 'HIST140': 180},\n    [180, 90, 120, 90], [['exclusive', 'HIST140', 'BIO130']]],\n   [['duration', 'HIST140'], ['duration', 'MATH101H'], ['duration', 'PHYS110'],\n    ['exclusive', 'HIST140', 'BIO130']]),\n  ('normal control 6',\n   [{'MATH101H': 2, 'PHYS110': 1, 'MATH101': 1}, {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 90},\n    [180, 120, 90, 120],\n    [['exclusion', 'PHYS110', 'MATH101'], ['exclusion', 'MATH101H', 'MATH101'],\n     ['exclusive', 'PHYS110', 'MATH101'], ['after', 'PHYS110', 'MATH101H']]],\n   [['exclusion', 'PHYS110', 'MATH101'], ['exclusive', 'PHYS110', 'MATH101'],\n    ['after', 'PHYS110', 'MATH101H']]),\n  ('normal control 7',\n   [{'MATH101': 2, 'CHEM120': 3, 'MATH101H': 3, 'PHYS110': 3},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 180, 'CHEM120': 180}, [90, 120, 180, 90],\n    [['coincidence', 'MATH101H', 'CHEM120'], ['exclusion', 'PHYS110', 'MATH101']]],\n   [['duration', 'CHEM120'], ['duration', 'MATH101H'], ['duration', 'PHYS110']]),\n  ('normal control 8',\n   [{'PHYS110': 3, 'MATH101H': 3, 'BIO130': 1, 'CHEM120': 2, 'HIST140': 0, 'MATH101': 1},\n    {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120, 'CHEM120': 90, 'BIO130': 180, 'HIST140': 120},\n    [120, 120, 120, 180],\n    [['after', 'MATH101H', 'BIO130'], ['exclusive', 'CHEM120', 'MATH101H'], ['after', 'BIO130', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'MATH101'], ['after', 'BIO130', 'PHYS110']])]]\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":"7988c670ab0806309503ead8e5cfcc3efd36b72701557a68463926fe8f55da6f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(timetable, exams, periods, cons):\n    out = []\n    for e in sorted(timetable):\n        if exams[e] > periods[timetable[e]]:\n            out.append(['duration', e])\n    for kind, a, b in cons:\n        pa, pb = timetable[a], timetable[b]\n        if kind == 'after' and not pa > pb:\n            out.append([kind, a, b])\n        elif kind == 'exclusion' and pa == pb:\n            out.append([kind, a, b])\n        elif kind == 'coincidence' and pa != pb:\n            out.append([kind, a, b])\n        elif kind == 'exclusive' and sum(1 for e in timetable if timetable[e] == pa) > 1:\n            out.append([kind, a, b])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: after direction 1', [{'A': 1, 'B': 1}, {'A': 90, 'B': 90}, [90, 120], [['after', 'A', 'B']]],\n   [['after', 'A', 'B']]),\n  ('regression variant: after direction 2',\n   [{'MATH101H': 3, 'MATH101': 3, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 180},\n    [180, 90, 120, 90], [['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'PHYS110']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110'], ['after', 'MATH101H', 'PHYS110'],\n    ['after', 'MATH101H', 'PHYS110']]),\n  ('partial repair guard 3',\n   [{'MATH101': 2, 'PHYS110': 0, 'MATH101H': 0}, {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90},\n    [120, 90, 180, 180],\n    [['coincidence', 'MATH101', 'PHYS110'], ['exclusive', 'PHYS110', 'MATH101H'],\n     ['after', 'PHYS110', 'MATH101'], ['coincidence', 'MATH101H', 'MATH101']]],\n   [['coincidence', 'MATH101', 'PHYS110'], ['exclusive', 'PHYS110', 'MATH101H'],\n    ['after', 'PHYS110', 'MATH101'], ['coincidence', 'MATH101H', 'MATH101']]),\n  ('boundary control 4', [{'A': 1, 'B': 0}, {'A': 120, 'B': 90}, [90, 120], [['exclusive', 'A', 'B']]], []),\n  ('normal control 5',\n   [{'PHYS110': 0, 'MATH101': 2, 'MATH101H': 0, 'CHEM120': 1},\n    {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 180, 'CHEM120': 90}, [90, 120, 120, 120],\n    [['coincidence', 'MATH101', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101'],\n     ['after', 'CHEM120', 'MATH101'], ['exclusive', 'CHEM120', 'MATH101']]],\n   [['duration', 'MATH101H'], ['duration', 'PHYS110'], ['coincidence', 'MATH101', 'PHYS110'],\n    ['coincidence', 'PHYS110', 'MATH101'], ['after', 'CHEM120', 'MATH101']]),\n  ('normal control 6',\n   [{'PHYS110': 1, 'MATH101': 0, 'CHEM120': 3, 'MATH101H': 0},\n    {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120, 'CHEM120': 120}, [90, 120, 120, 120],\n    [['after', 'MATH101', 'MATH101H'], ['after', 'CHEM120', 'MATH101H'],\n     ['coincidence', 'CHEM120', 'MATH101H'], ['coincidence', 'MATH101H', 'CHEM120']]],\n   [['duration', 'MATH101'], ['after', 'MATH101', 'MATH101H'], ['coincidence', 'CHEM120', 'MATH101H'],\n    ['coincidence', 'MATH101H', 'CHEM120']]),\n  ('normal control 7',\n   [{'MATH101H': 1, 'HIST140': 3, 'PHYS110': 2, 'BIO130': 3, 'CHEM120': 1, 'MATH101': 2},\n    {'MATH101': 180, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 90, 'BIO130': 120, 'HIST140': 90},\n    [180, 180, 180, 90], [['after', 'BIO130', 'PHYS110'], ['exclusion', 'CHEM120', 'MATH101']]],\n   [['duration', 'BIO130']]),\n  ('normal control 8',\n   [{'CHEM120': 0, 'PHYS110': 2, 'MATH101H': 2, 'MATH101': 2, 'HIST140': 0, 'BIO130': 1},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 90},\n    [90, 120, 180, 120],\n    [['exclusion', 'BIO130', 'MATH101'], ['coincidence', 'CHEM120', 'MATH101H'],\n     ['exclusive', 'CHEM120', 'MATH101'], ['coincidence', 'HIST140', 'MATH101']]],\n   [['duration', 'CHEM120'], ['coincidence', 'CHEM120', 'MATH101H'], ['exclusive', 'CHEM120', 'MATH101'],\n    ['coincidence', 'HIST140', 'MATH101']])],\n [('regression: after direction 1',\n   [{'BIO130': 0, 'PHYS110': 3, 'MATH101': 1, 'CHEM120': 0, 'MATH101H': 1},\n    {'MATH101': 180, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 90}, [120, 120, 180, 90],\n    [['coincidence', 'CHEM120', 'BIO130'], ['after', 'CHEM120', 'BIO130'],\n     ['exclusive', 'MATH101H', 'MATH101']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110'], ['after', 'CHEM120', 'BIO130'],\n    ['exclusive', 'MATH101H', 'MATH101']]),\n  ('regression variant: after direction 2',\n   [{'PHYS110': 3, 'MATH101': 3, 'MATH101H': 3}, {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90},\n    [120, 120, 180, 180],\n    [['coincidence', 'PHYS110', 'MATH101H'], ['exclusion', 'MATH101H', 'PHYS110'],\n     ['after', 'MATH101', 'PHYS110'], ['exclusive', 'MATH101', 'MATH101H']]],\n   [['exclusion', 'MATH101H', 'PHYS110'], ['after', 'MATH101', 'PHYS110'],\n    ['exclusive', 'MATH101', 'MATH101H']]),\n  ('partial repair guard 3',\n   [{'MATH101': 0, 'MATH101H': 1, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120},\n    [120, 90, 90, 180],\n    [['after', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110'],\n     ['coincidence', 'MATH101', 'MATH101H']]],\n   [['duration', 'MATH101'], ['coincidence', 'MATH101', 'MATH101H']]),\n  ('boundary control 4', [{'A': 2, 'B': 1}, {'A': 90, 'B': 90}, [90, 120, 120], [['after', 'A', 'B']]], []),\n  ('normal control 5',\n   [{'MATH101': 1, 'PHYS110': 2, 'HIST140': 1, 'BIO130': 2, 'CHEM120': 1, 'MATH101H': 1},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 180, 'HIST140': 120},\n    [90, 120, 180, 120], [['exclusive', 'HIST140', 'PHYS110']]],\n   [['exclusive', 'HIST140', 'PHYS110']]),\n  ('normal control 6',\n   [{'MATH101H': 3, 'CHEM120': 1, 'PHYS110': 0, 'MATH101': 1, 'BIO130': 0},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 180, 'BIO130': 90}, [90, 90, 120, 180],\n    [['after', 'MATH101H', 'PHYS110']]],\n   [['duration', 'CHEM120'], ['duration', 'PHYS110']]),\n  ('normal control 7',\n   [{'MATH101': 3, 'BIO130': 1, 'PHYS110': 0, 'CHEM120': 2, 'MATH101H': 2, 'HIST140': 2},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [180, 90, 180, 120], [['after', 'HIST140', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101H']]],\n   [['duration', 'BIO130'], ['after', 'HIST140', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101H']]),\n  ('normal control 8',\n   [{'MATH101H': 3, 'MATH101': 3, 'PHYS110': 3}, {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90},\n    [90, 180, 90, 90],\n    [['after', 'MATH101H', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101H'],\n     ['coincidence', 'MATH101H', 'MATH101']]],\n   [['duration', 'MATH101H'], ['after', 'MATH101H', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'PHYS110': 3, 'CHEM120': 1, 'MATH101': 1, 'MATH101H': 1},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90}, [180, 120, 120, 90],\n    [['after', 'MATH101', 'CHEM120'], ['exclusive', 'MATH101', 'CHEM120']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101', 'CHEM120'], ['exclusive', 'MATH101', 'CHEM120']]),\n  ('regression variant: after direction 2',\n   [{'CHEM120': 3, 'BIO130': 3, 'MATH101': 2, 'HIST140': 2, 'PHYS110': 0, 'MATH101H': 0},\n    {'MATH101': 180, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [90, 180, 90, 120],\n    [['after', 'BIO130', 'CHEM120'], ['exclusion', 'MATH101H', 'PHYS110'],\n     ['coincidence', 'MATH101', 'PHYS110'], ['exclusion', 'MATH101', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140'], ['duration', 'MATH101'],\n    ['duration', 'MATH101H'], ['after', 'BIO130', 'CHEM120'], ['exclusion', 'MATH101H', 'PHYS110'],\n    ['coincidence', 'MATH101', 'PHYS110']]),\n  ('partial repair guard 3',\n   [{'PHYS110': 3, 'CHEM120': 0, 'MATH101': 3, 'MATH101H': 2},\n    {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 180, 'CHEM120': 180}, [120, 120, 90, 120],\n    [['coincidence', 'CHEM120', 'PHYS110'], ['coincidence', 'MATH101H', 'MATH101'],\n     ['after', 'MATH101H', 'MATH101']]],\n   [['duration', 'CHEM120'], ['duration', 'PHYS110'], ['coincidence', 'CHEM120', 'PHYS110'],\n    ['coincidence', 'MATH101H', 'MATH101'], ['after', 'MATH101H', 'MATH101']]),\n  ('boundary control 4', [{'B': 0, 'A': 1}, {'A': 180, 'B': 180}, [120, 120], []],\n   [['duration', 'A'], ['duration', 'B']]),\n  ('normal control 5',\n   [{'MATH101H': 3, 'MATH101': 1, 'CHEM120': 0, 'PHYS110': 0},\n    {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90, 'CHEM120': 90}, [180, 90, 180, 180],\n    [['exclusive', 'MATH101H', 'CHEM120']]],\n   []),\n  ('normal control 6',\n   [{'MATH101': 0, 'PHYS110': 1, 'MATH101H': 2}, {'MATH101': 90, 'MATH101H': 180, 'PHYS110': 90},\n    [180, 90, 120, 90], [['exclusive', 'MATH101H', 'PHYS110']]],\n   [['duration', 'MATH101H']]),\n  ('normal control 7',\n   [{'MATH101H': 2, 'CHEM120': 1, 'BIO130': 3, 'MATH101': 3, 'PHYS110': 2},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 120, 'CHEM120': 120, 'BIO130': 120}, [120, 120, 120, 90],\n    [['exclusion', 'CHEM120', 'MATH101'], ['after', 'MATH101H', 'MATH101'], ['after', 'CHEM120', 'MATH101H'],\n     ['coincidence', 'PHYS110', 'MATH101H']]],\n   [['duration', 'BIO130'], ['duration', 'MATH101'], ['duration', 'MATH101H'],\n    ['after', 'MATH101H', 'MATH101'], ['after', 'CHEM120', 'MATH101H']]),\n  ('normal control 8',\n   [{'MATH101H': 0, 'MATH101': 0, 'PHYS110': 3}, {'MATH101': 180, 'MATH101H': 120, 'PHYS110': 180},\n    [180, 90, 120, 90],\n    [['coincidence', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110'],\n     ['after', 'PHYS110', 'MATH101H']]],\n   [['duration', 'PHYS110'], ['coincidence', 'PHYS110', 'MATH101H'], ['exclusive', 'MATH101', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'CHEM120': 3, 'HIST140': 0, 'PHYS110': 1, 'BIO130': 3, 'MATH101': 0, 'MATH101H': 2},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 180},\n    [90, 90, 90, 90],\n    [['exclusion', 'HIST140', 'BIO130'], ['exclusion', 'MATH101', 'MATH101H'],\n     ['exclusive', 'BIO130', 'MATH101H'], ['after', 'HIST140', 'MATH101']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140'], ['duration', 'MATH101'],\n    ['duration', 'MATH101H'], ['exclusive', 'BIO130', 'MATH101H'], ['after', 'HIST140', 'MATH101']]),\n  ('regression variant: after direction 2',\n   [{'MATH101': 1, 'MATH101H': 1, 'PHYS110': 0}, {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90},\n    [180, 90, 120, 180],\n    [['after', 'MATH101', 'MATH101H'], ['exclusion', 'PHYS110', 'MATH101'],\n     ['coincidence', 'PHYS110', 'MATH101'], ['exclusive', 'PHYS110', 'MATH101H']]],\n   [['after', 'MATH101', 'MATH101H'], ['coincidence', 'PHYS110', 'MATH101']]),\n  ('partial repair guard 3',\n   [{'BIO130': 1, 'PHYS110': 0, 'MATH101': 0, 'MATH101H': 1, 'CHEM120': 2},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 120, 'CHEM120': 120, 'BIO130': 180}, [90, 90, 90, 120],\n    [['exclusive', 'MATH101', 'BIO130'], ['after', 'PHYS110', 'MATH101H'],\n     ['exclusion', 'MATH101', 'PHYS110'], ['after', 'PHYS110', 'BIO130']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'MATH101'], ['duration', 'MATH101H'],\n    ['duration', 'PHYS110'], ['exclusive', 'MATH101', 'BIO130'], ['after', 'PHYS110', 'MATH101H'],\n    ['exclusion', 'MATH101', 'PHYS110'], ['after', 'PHYS110', 'BIO130']]),\n  ('boundary control 4', [{'A': 0}, {'A': 120}, [120], []], []),\n  ('normal control 5',\n   [{'HIST140': 1, 'MATH101H': 3, 'BIO130': 3, 'MATH101': 1, 'CHEM120': 3, 'PHYS110': 1},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120, 'BIO130': 120, 'HIST140': 180},\n    [180, 120, 180, 90], [['exclusion', 'MATH101H', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'CHEM120'], ['duration', 'HIST140']]),\n  ('normal control 6',\n   [{'CHEM120': 1, 'MATH101H': 1, 'MATH101': 2, 'PHYS110': 3},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 180, 'CHEM120': 180}, [120, 120, 120, 180],\n    [['exclusive', 'CHEM120', 'MATH101']]],\n   [['duration', 'CHEM120'], ['exclusive', 'CHEM120', 'MATH101']]),\n  ('normal control 7',\n   [{'MATH101H': 2, 'PHYS110': 3, 'MATH101': 3}, {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 180},\n    [90, 180, 120, 120], [['coincidence', 'PHYS110', 'MATH101'], ['after', 'MATH101H', 'MATH101']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101H', 'MATH101']]),\n  ('normal control 8',\n   [{'MATH101H': 2, 'PHYS110': 0, 'MATH101': 1}, {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 180},\n    [120, 90, 180, 180], [['exclusive', 'MATH101H', 'PHYS110'], ['exclusive', 'MATH101', 'PHYS110']]],\n   [['duration', 'MATH101'], ['duration', 'PHYS110']])],\n [('regression: after direction 1',\n   [{'PHYS110': 1, 'CHEM120': 0, 'MATH101': 3, 'MATH101H': 3, 'BIO130': 3},\n    {'MATH101': 120, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 180}, [90, 90, 90, 180],\n    [['after', 'MATH101', 'MATH101H'], ['exclusion', 'CHEM120', 'BIO130']]],\n   [['duration', 'PHYS110'], ['after', 'MATH101', 'MATH101H']]),\n  ('regression variant: after direction 2',\n   [{'MATH101': 2, 'PHYS110': 3, 'MATH101H': 3, 'CHEM120': 3},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 120}, [90, 120, 90, 90],\n    [['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'CHEM120'],\n     ['exclusive', 'PHYS110', 'MATH101']]],\n   [['duration', 'CHEM120'], ['after', 'MATH101H', 'PHYS110'], ['after', 'MATH101H', 'CHEM120'],\n    ['exclusive', 'PHYS110', 'MATH101']]),\n  ('partial repair guard 3',\n   [{'MATH101': 3, 'HIST140': 2, 'MATH101H': 0, 'PHYS110': 1, 'BIO130': 1, 'CHEM120': 0},\n    {'MATH101': 90, 'MATH101H': 90, 'PHYS110': 90, 'CHEM120': 180, 'BIO130': 180, 'HIST140': 180},\n    [180, 90, 180, 120],\n    [['after', 'CHEM120', 'BIO130'], ['after', 'MATH101', 'CHEM120'], ['coincidence', 'BIO130', 'MATH101H']]],\n   [['duration', 'BIO130'], ['after', 'CHEM120', 'BIO130'], ['coincidence', 'BIO130', 'MATH101H']]),\n  ('boundary control 4', [{'A': 1, 'B': 1}, {'A': 90, 'B': 90}, [90, 120], [['after', 'A', 'B']]],\n   [['after', 'A', 'B']]),\n  ('normal control 5',\n   [{'CHEM120': 0, 'MATH101H': 1, 'MATH101': 2, 'HIST140': 3, 'BIO130': 3, 'PHYS110': 1},\n    {'MATH101': 90, 'MATH101H': 120, 'PHYS110': 180, 'CHEM120': 90, 'BIO130': 90, 'HIST140': 180},\n    [180, 90, 120, 90], [['exclusive', 'HIST140', 'BIO130']]],\n   [['duration', 'HIST140'], ['duration', 'MATH101H'], ['duration', 'PHYS110'],\n    ['exclusive', 'HIST140', 'BIO130']]),\n  ('normal control 6',\n   [{'MATH101H': 2, 'PHYS110': 1, 'MATH101': 1}, {'MATH101': 120, 'MATH101H': 90, 'PHYS110': 90},\n    [180, 120, 90, 120],\n    [['exclusion', 'PHYS110', 'MATH101'], ['exclusion', 'MATH101H', 'MATH101'],\n     ['exclusive', 'PHYS110', 'MATH101'], ['after', 'PHYS110', 'MATH101H']]],\n   [['exclusion', 'PHYS110', 'MATH101'], ['exclusive', 'PHYS110', 'MATH101'],\n    ['after', 'PHYS110', 'MATH101H']]),\n  ('normal control 7',\n   [{'MATH101': 2, 'CHEM120': 3, 'MATH101H': 3, 'PHYS110': 3},\n    {'MATH101': 120, 'MATH101H': 180, 'PHYS110': 180, 'CHEM120': 180}, [90, 120, 180, 90],\n    [['coincidence', 'MATH101H', 'CHEM120'], ['exclusion', 'PHYS110', 'MATH101']]],\n   [['duration', 'CHEM120'], ['duration', 'MATH101H'], ['duration', 'PHYS110']]),\n  ('normal control 8',\n   [{'PHYS110': 3, 'MATH101H': 3, 'BIO130': 1, 'CHEM120': 2, 'HIST140': 0, 'MATH101': 1},\n    {'MATH101': 180, 'MATH101H': 90, 'PHYS110': 120, 'CHEM120': 90, 'BIO130': 180, 'HIST140': 120},\n    [120, 120, 120, 180],\n    [['after', 'MATH101H', 'BIO130'], ['exclusive', 'CHEM120', 'MATH101H'], ['after', 'BIO130', 'PHYS110']]],\n   [['duration', 'BIO130'], ['duration', 'MATH101'], ['after', 'BIO130', 'PHYS110']])]]\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-hard-constraint-validation-after-direction","generated_at":"2026-09-29T14:52:04.739693+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Hard-constraint validation gates every candidate exam timetable.","repair":"Require the dependent exam to be in a strictly later period.","root_cause":"The after test only rejects a strictly earlier period.","sha256":"eb09d12be5e75e80f4edd17dcbb6d88b4f304aa92c118e0088f0f3084956fada","title":"Precedence constraint satisfied by sharing a period · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.056,"exit_code":1,"observations":[{"actual":[["after","A","B"]],"check":"regression: after direction 1","expected":[["after","A","B"]],"passed":true},{"actual":[["duration","MATH101"],["duration","PHYS110"],["after","MATH101H","PHYS110"],["after","MATH101H","PHYS110"]],"check":"regression variant: after direction 2","expected":[["duration","MATH101"],["duration","PHYS110"],["after","MATH101H","PHYS110"],["after","MATH101H","PHYS110"]],"passed":true},{"actual":[["coincidence","MATH101","PHYS110"],["exclusive","PHYS110","MATH101H"],["coincidence","MATH101H","MATH101"]],"check":"partial repair guard 3","expected":[["coincidence","MATH101","PHYS110"],["exclusive","PHYS110","MATH101H"],["after","PHYS110","MATH101"],["coincidence","MATH101H","MATH101"]],"passed":false},{"actual":[],"check":"boundary control 4","expected":[],"passed":true},{"actual":[["duration","MATH101H"],["duration","PHYS110"],["coincidence","MATH101","PHYS110"],["coincidence","PHYS110","MATH101"]],"check":"normal control 5","expected":[["duration","MATH101H"],["duration","PHYS110"],["coincidence","MATH101","PHYS110"],["coincidence","PHYS110","MATH101"],["after","CHEM120","MATH101"]],"passed":false},{"actual":[["duration","MATH101"],["after","MATH101","MATH101H"],["after","CHEM120","MATH101H"],["coincidence","CHEM120","MATH101H"],["coincidence","MATH101H","CHEM120"]],"check":"normal control 6","expected":[["duration","MATH101"],["after","MATH101","MATH101H"],["coincidence","CHEM120","MATH101H"],["coincidence","MATH101H","CHEM120"]],"passed":false},{"actual":[["duration","BIO130"],["after","BIO130","PHYS110"]],"check":"normal control 7","expected":[["duration","BIO130"]],"passed":false},{"actual":[["duration","CHEM120"],["coincidence","CHEM120","MATH101H"],["exclusive","CHEM120","MATH101"],["coincidence","HIST140","MATH101"]],"check":"normal control 8","expected":[["duration","CHEM120"],["coincidence","CHEM120","MATH101H"],["exclusive","CHEM120","MATH101"],["coincidence","HIST140","MATH101"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: after direction 1\", \"actual\": [[\"after\", \"A\", \"B\"]], \"expected\": [[\"after\", \"A\", \"B\"]], \"passed\": true}, {\"check\": \"regression variant: after direction 2\", \"actual\": [[\"duration\", \"MATH101\"], [\"duration\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"]], \"expected\": [[\"duration\", \"MATH101\"], [\"duration\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"coincidence\", \"MATH101\", \"PHYS110\"], [\"exclusive\", \"PHYS110\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"MATH101\"]], \"expected\": [[\"coincidence\", \"MATH101\", \"PHYS110\"], [\"exclusive\", \"PHYS110\", \"MATH101H\"], [\"after\", \"PHYS110\", \"MATH101\"], [\"coincidence\", \"MATH101H\", \"MATH101\"]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"duration\", \"MATH101H\"], [\"duration\", \"PHYS110\"], [\"coincidence\", \"MATH101\", \"PHYS110\"], [\"coincidence\", \"PHYS110\", \"MATH101\"]], \"expected\": [[\"duration\", \"MATH101H\"], [\"duration\", \"PHYS110\"], [\"coincidence\", \"MATH101\", \"PHYS110\"], [\"coincidence\", \"PHYS110\", \"MATH101\"], [\"after\", \"CHEM120\", \"MATH101\"]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[\"duration\", \"MATH101\"], [\"after\", \"MATH101\", \"MATH101H\"], [\"after\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"CHEM120\"]], \"expected\": [[\"duration\", \"MATH101\"], [\"after\", \"MATH101\", \"MATH101H\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"CHEM120\"]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"duration\", \"BIO130\"], [\"after\", \"BIO130\", \"PHYS110\"]], \"expected\": [[\"duration\", \"BIO130\"]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[\"duration\", \"CHEM120\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"exclusive\", \"CHEM120\", \"MATH101\"], [\"coincidence\", \"HIST140\", \"MATH101\"]], \"expected\": [[\"duration\", \"CHEM120\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"exclusive\", \"CHEM120\", \"MATH101\"], [\"coincidence\", \"HIST140\", \"MATH101\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.406,"exit_code":1,"observations":[{"actual":[],"check":"regression: after direction 1","expected":[["after","A","B"]],"passed":false},{"actual":[["duration","MATH101"],["duration","PHYS110"]],"check":"regression variant: after direction 2","expected":[["duration","MATH101"],["duration","PHYS110"],["after","MATH101H","PHYS110"],["after","MATH101H","PHYS110"]],"passed":false},{"actual":[["coincidence","MATH101","PHYS110"],["exclusive","PHYS110","MATH101H"],["after","PHYS110","MATH101"],["coincidence","MATH101H","MATH101"]],"check":"partial repair guard 3","expected":[["coincidence","MATH101","PHYS110"],["exclusive","PHYS110","MATH101H"],["after","PHYS110","MATH101"],["coincidence","MATH101H","MATH101"]],"passed":true},{"actual":[],"check":"boundary control 4","expected":[],"passed":true},{"actual":[["duration","MATH101H"],["duration","PHYS110"],["coincidence","MATH101","PHYS110"],["coincidence","PHYS110","MATH101"],["after","CHEM120","MATH101"]],"check":"normal control 5","expected":[["duration","MATH101H"],["duration","PHYS110"],["coincidence","MATH101","PHYS110"],["coincidence","PHYS110","MATH101"],["after","CHEM120","MATH101"]],"passed":true},{"actual":[["duration","MATH101"],["coincidence","CHEM120","MATH101H"],["coincidence","MATH101H","CHEM120"]],"check":"normal control 6","expected":[["duration","MATH101"],["after","MATH101","MATH101H"],["coincidence","CHEM120","MATH101H"],["coincidence","MATH101H","CHEM120"]],"passed":false},{"actual":[["duration","BIO130"]],"check":"normal control 7","expected":[["duration","BIO130"]],"passed":true},{"actual":[["duration","CHEM120"],["coincidence","CHEM120","MATH101H"],["exclusive","CHEM120","MATH101"],["coincidence","HIST140","MATH101"]],"check":"normal control 8","expected":[["duration","CHEM120"],["coincidence","CHEM120","MATH101H"],["exclusive","CHEM120","MATH101"],["coincidence","HIST140","MATH101"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: after direction 1\", \"actual\": [], \"expected\": [[\"after\", \"A\", \"B\"]], \"passed\": false}, {\"check\": \"regression variant: after direction 2\", \"actual\": [[\"duration\", \"MATH101\"], [\"duration\", \"PHYS110\"]], \"expected\": [[\"duration\", \"MATH101\"], [\"duration\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"coincidence\", \"MATH101\", \"PHYS110\"], [\"exclusive\", \"PHYS110\", \"MATH101H\"], [\"after\", \"PHYS110\", \"MATH101\"], [\"coincidence\", \"MATH101H\", \"MATH101\"]], \"expected\": [[\"coincidence\", \"MATH101\", \"PHYS110\"], [\"exclusive\", \"PHYS110\", \"MATH101H\"], [\"after\", \"PHYS110\", \"MATH101\"], [\"coincidence\", \"MATH101H\", \"MATH101\"]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"duration\", \"MATH101H\"], [\"duration\", \"PHYS110\"], [\"coincidence\", \"MATH101\", \"PHYS110\"], [\"coincidence\", \"PHYS110\", \"MATH101\"], [\"after\", \"CHEM120\", \"MATH101\"]], \"expected\": [[\"duration\", \"MATH101H\"], [\"duration\", \"PHYS110\"], [\"coincidence\", \"MATH101\", \"PHYS110\"], [\"coincidence\", \"PHYS110\", \"MATH101\"], [\"after\", \"CHEM120\", \"MATH101\"]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"duration\", \"MATH101\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"CHEM120\"]], \"expected\": [[\"duration\", \"MATH101\"], [\"after\", \"MATH101\", \"MATH101H\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"CHEM120\"]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[\"duration\", \"BIO130\"]], \"expected\": [[\"duration\", \"BIO130\"]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"duration\", \"CHEM120\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"exclusive\", \"CHEM120\", \"MATH101\"], [\"coincidence\", \"HIST140\", \"MATH101\"]], \"expected\": [[\"duration\", \"CHEM120\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"exclusive\", \"CHEM120\", \"MATH101\"], [\"coincidence\", \"HIST140\", \"MATH101\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.752,"exit_code":0,"observations":[{"actual":[["after","A","B"]],"check":"regression: after direction 1","expected":[["after","A","B"]],"passed":true},{"actual":[["duration","MATH101"],["duration","PHYS110"],["after","MATH101H","PHYS110"],["after","MATH101H","PHYS110"]],"check":"regression variant: after direction 2","expected":[["duration","MATH101"],["duration","PHYS110"],["after","MATH101H","PHYS110"],["after","MATH101H","PHYS110"]],"passed":true},{"actual":[["coincidence","MATH101","PHYS110"],["exclusive","PHYS110","MATH101H"],["after","PHYS110","MATH101"],["coincidence","MATH101H","MATH101"]],"check":"partial repair guard 3","expected":[["coincidence","MATH101","PHYS110"],["exclusive","PHYS110","MATH101H"],["after","PHYS110","MATH101"],["coincidence","MATH101H","MATH101"]],"passed":true},{"actual":[],"check":"boundary control 4","expected":[],"passed":true},{"actual":[["duration","MATH101H"],["duration","PHYS110"],["coincidence","MATH101","PHYS110"],["coincidence","PHYS110","MATH101"],["after","CHEM120","MATH101"]],"check":"normal control 5","expected":[["duration","MATH101H"],["duration","PHYS110"],["coincidence","MATH101","PHYS110"],["coincidence","PHYS110","MATH101"],["after","CHEM120","MATH101"]],"passed":true},{"actual":[["duration","MATH101"],["after","MATH101","MATH101H"],["coincidence","CHEM120","MATH101H"],["coincidence","MATH101H","CHEM120"]],"check":"normal control 6","expected":[["duration","MATH101"],["after","MATH101","MATH101H"],["coincidence","CHEM120","MATH101H"],["coincidence","MATH101H","CHEM120"]],"passed":true},{"actual":[["duration","BIO130"]],"check":"normal control 7","expected":[["duration","BIO130"]],"passed":true},{"actual":[["duration","CHEM120"],["coincidence","CHEM120","MATH101H"],["exclusive","CHEM120","MATH101"],["coincidence","HIST140","MATH101"]],"check":"normal control 8","expected":[["duration","CHEM120"],["coincidence","CHEM120","MATH101H"],["exclusive","CHEM120","MATH101"],["coincidence","HIST140","MATH101"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: after direction 1\", \"actual\": [[\"after\", \"A\", \"B\"]], \"expected\": [[\"after\", \"A\", \"B\"]], \"passed\": true}, {\"check\": \"regression variant: after direction 2\", \"actual\": [[\"duration\", \"MATH101\"], [\"duration\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"]], \"expected\": [[\"duration\", \"MATH101\"], [\"duration\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"], [\"after\", \"MATH101H\", \"PHYS110\"]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[\"coincidence\", \"MATH101\", \"PHYS110\"], [\"exclusive\", \"PHYS110\", \"MATH101H\"], [\"after\", \"PHYS110\", \"MATH101\"], [\"coincidence\", \"MATH101H\", \"MATH101\"]], \"expected\": [[\"coincidence\", \"MATH101\", \"PHYS110\"], [\"exclusive\", \"PHYS110\", \"MATH101H\"], [\"after\", \"PHYS110\", \"MATH101\"], [\"coincidence\", \"MATH101H\", \"MATH101\"]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[\"duration\", \"MATH101H\"], [\"duration\", \"PHYS110\"], [\"coincidence\", \"MATH101\", \"PHYS110\"], [\"coincidence\", \"PHYS110\", \"MATH101\"], [\"after\", \"CHEM120\", \"MATH101\"]], \"expected\": [[\"duration\", \"MATH101H\"], [\"duration\", \"PHYS110\"], [\"coincidence\", \"MATH101\", \"PHYS110\"], [\"coincidence\", \"PHYS110\", \"MATH101\"], [\"after\", \"CHEM120\", \"MATH101\"]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[\"duration\", \"MATH101\"], [\"after\", \"MATH101\", \"MATH101H\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"CHEM120\"]], \"expected\": [[\"duration\", \"MATH101\"], [\"after\", \"MATH101\", \"MATH101H\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"coincidence\", \"MATH101H\", \"CHEM120\"]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[\"duration\", \"BIO130\"]], \"expected\": [[\"duration\", \"BIO130\"]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[\"duration\", \"CHEM120\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"exclusive\", \"CHEM120\", \"MATH101\"], [\"coincidence\", \"HIST140\", \"MATH101\"]], \"expected\": [[\"duration\", \"CHEM120\"], [\"coincidence\", \"CHEM120\", \"MATH101H\"], [\"exclusive\", \"CHEM120\", \"MATH101\"], [\"coincidence\", \"HIST140\", \"MATH101\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}