{"abstract":"Targets sum to less than the duties when staff are part-time.","category":"Exam timetabling constraints","checks":8,"contract":"staff [name, FTE percent, duties assigned] and total duties. Each target is total * FTE / sum of FTE rounded half up. Deviation = assigned - target; flag staff whose absolute deviation exceeds one. Return [[name, target, deviation], flagged names].","evaluation_group":"w2-exam-timetabling-constraints-invigilation-fair-share","failed_approach":"Dividing by the largest FTE overstates every target.","family":"w2-exam-timetabling-constraints-invigilation-fair-share-fte-denominator","id":"FA-94756","implementations":{"attempt":{"sha256":"b35915b8f80635621900cc61e95892da606b5a70898a0b4312a09f11d09735a8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(staff, total):\n    tot_fte = max(f for n, f, a in staff)\n    rows = []\n    flag = []\n    for n, f, a in staff:\n        num = total * f * 2 + tot_fte\n        target = num // (2 * tot_fte) if tot_fte else 0\n        dev = a - target\n        rows.append([n, target, dev])\n        if abs(dev) > 1:\n            flag.append(n)\n    return [rows, flag]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: fte denominator 1', [[['a', 50, 5], ['b', 50, 5]], 5],\n   [[['a', 3, 2], ['b', 3, 2]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 80, 1], ['st1', 80, 1], ['st2', 50, 10]], 10],\n   [[['st0', 4, -3], ['st1', 4, -3], ['st2', 2, 8]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3',\n   [[['st0', 50, 10], ['st1', 100, 4], ['st2', 100, 0], ['st3', 20, 0], ['st4', 80, 3]], 7],\n   [[['st0', 1, 9], ['st1', 2, 2], ['st2', 2, -2], ['st3', 0, 0], ['st4', 2, 1]], ['st0', 'st1', 'st2']]),\n  ('boundary control 4', [[['a', 25, 1], ['b', 75, 4]], 10], [[['a', 3, -2], ['b', 8, -4]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 50, 12], ['st1', 60, 1], ['st2', 60, 8], ['st3', 80, 3]], 30],\n   [[['st0', 6, 6], ['st1', 7, -6], ['st2', 7, 1], ['st3', 10, -7]], ['st0', 'st1', 'st3']]),\n  ('normal control 6',\n   [[['st0', 50, 2], ['st1', 20, 8], ['st2', 50, 6], ['st3', 100, 8], ['st4', 20, 4]], 10],\n   [[['st0', 2, 0], ['st1', 1, 7], ['st2', 2, 4], ['st3', 4, 4], ['st4', 1, 3]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('normal control 7', [[['st0', 80, 4], ['st1', 100, 3]], 20],\n   [[['st0', 9, -5], ['st1', 11, -8]], ['st0', 'st1']]),\n  ('normal control 8',\n   [[['st0', 60, 5], ['st1', 20, 10], ['st2', 100, 8], ['st3', 20, 0], ['st4', 20, 8]], 20],\n   [[['st0', 5, 0], ['st1', 2, 8], ['st2', 9, -1], ['st3', 2, -2], ['st4', 2, 6]], ['st1', 'st3', 'st4']])],\n [('regression: fte denominator 1', [[['a', 50, 3], ['b', 50, 2]], 7], [[['a', 4, -1], ['b', 4, -2]], ['b']]),\n  ('regression variant: fte denominator 2',\n   [[['st0', 100, 6], ['st1', 80, 10], ['st2', 50, 5], ['st3', 100, 4], ['st4', 50, 3]], 15],\n   [[['st0', 4, 2], ['st1', 3, 7], ['st2', 2, 3], ['st3', 4, 0], ['st4', 2, 1]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3', [[['st0', 80, 1], ['st1', 80, 1], ['st2', 50, 10]], 10],\n   [[['st0', 4, -3], ['st1', 4, -3], ['st2', 2, 8]], ['st0', 'st1', 'st2']]),\n  ('normal control 4', [[['st0', 60, 0], ['st1', 50, 12], ['st2', 20, 8], ['st3', 20, 1]], 20],\n   [[['st0', 8, -8], ['st1', 7, 5], ['st2', 3, 5], ['st3', 3, -2]], ['st0', 'st1', 'st2', 'st3']]),\n  ('normal control 5', [[['st0', 50, 1], ['st1', 20, 6], ['st2', 50, 5]], 25],\n   [[['st0', 10, -9], ['st1', 4, 2], ['st2', 10, -5]], ['st0', 'st1', 'st2']]),\n  ('normal control 6', [[['st0', 60, 7], ['st1', 60, 11], ['st2', 50, 2]], 25],\n   [[['st0', 9, -2], ['st1', 9, 2], ['st2', 7, -5]], ['st0', 'st1', 'st2']]),\n  ('normal control 7', [[['st0', 50, 3], ['st1', 60, 0], ['st2', 80, 0]], 7],\n   [[['st0', 2, 1], ['st1', 2, -2], ['st2', 3, -3]], ['st1', 'st2']]),\n  ('normal control 8', [[['st0', 100, 7], ['st1', 60, 12], ['st2', 50, 6]], 20],\n   [[['st0', 10, -3], ['st1', 6, 6], ['st2', 5, 1]], ['st0', 'st1']])],\n [('regression: fte denominator 1', [[['a', 25, 1], ['b', 75, 4]], 10],\n   [[['a', 3, -2], ['b', 8, -4]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 20, 8], ['st1', 50, 8]], 15],\n   [[['st0', 4, 4], ['st1', 11, -3]], ['st0', 'st1']]),\n  ('partial repair guard 3',\n   [[['st0', 100, 8], ['st1', 20, 4], ['st2', 100, 3], ['st3', 80, 10], ['st4', 100, 9]], 30],\n   [[['st0', 8, 0], ['st1', 2, 2], ['st2', 8, -5], ['st3', 6, 4], ['st4', 8, 1]], ['st1', 'st2', 'st3']]),\n  ('boundary control 4', [[['a', 100, 2], ['b', 50, 5]], 9], [[['a', 6, -4], ['b', 3, 2]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 80, 11], ['st1', 100, 9], ['st2', 80, 3], ['st3', 50, 7]], 15],\n   [[['st0', 4, 7], ['st1', 5, 4], ['st2', 4, -1], ['st3', 2, 5]], ['st0', 'st1', 'st3']]),\n  ('normal control 6', [[['st0', 50, 4], ['st1', 100, 4]], 25],\n   [[['st0', 8, -4], ['st1', 17, -13]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 11], ['st1', 60, 3], ['st2', 20, 6], ['st3', 20, 12]], 10],\n   [[['st0', 5, 6], ['st1', 3, 0], ['st2', 1, 5], ['st3', 1, 11]], ['st0', 'st2', 'st3']]),\n  ('normal control 8',\n   [[['st0', 80, 7], ['st1', 80, 10], ['st2', 60, 3], ['st3', 80, 11], ['st4', 80, 12]], 10],\n   [[['st0', 2, 5], ['st1', 2, 8], ['st2', 2, 1], ['st3', 2, 9], ['st4', 2, 10]],\n    ['st0', 'st1', 'st3', 'st4']])],\n [('regression: fte denominator 1', [[['a', 100, 2], ['b', 50, 5]], 9],\n   [[['a', 6, -4], ['b', 3, 2]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 80, 3], ['st1', 50, 9], ['st2', 20, 11]], 10],\n   [[['st0', 5, -2], ['st1', 3, 6], ['st2', 1, 10]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3',\n   [[['st0', 50, 2], ['st1', 20, 8], ['st2', 50, 6], ['st3', 100, 8], ['st4', 20, 4]], 10],\n   [[['st0', 2, 0], ['st1', 1, 7], ['st2', 2, 4], ['st3', 4, 4], ['st4', 1, 3]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('boundary control 4', [[['a', 100, 3], ['b', 100, 4]], 7], [[['a', 4, -1], ['b', 4, 0]], []]),\n  ('normal control 5', [[['st0', 80, 7], ['st1', 80, 6], ['st2', 20, 6], ['st3', 50, 2]], 30],\n   [[['st0', 10, -3], ['st1', 10, -4], ['st2', 3, 3], ['st3', 7, -5]], ['st0', 'st1', 'st2', 'st3']]),\n  ('normal control 6', [[['st0', 100, 3], ['st1', 20, 5]], 7],\n   [[['st0', 6, -3], ['st1', 1, 4]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 3], ['st1', 60, 9], ['st2', 50, 4]], 10],\n   [[['st0', 5, -2], ['st1', 3, 6], ['st2', 2, 2]], ['st0', 'st1', 'st2']]),\n  ('normal control 8',\n   [[['st0', 20, 9], ['st1', 60, 11], ['st2', 20, 7], ['st3', 60, 11], ['st4', 60, 5]], 15],\n   [[['st0', 1, 8], ['st1', 4, 7], ['st2', 1, 6], ['st3', 4, 7], ['st4', 4, 1]],\n    ['st0', 'st1', 'st2', 'st3']])],\n [('regression: fte denominator 1',\n   [[['st0', 50, 4], ['st1', 100, 7], ['st2', 20, 4], ['st3', 60, 7], ['st4', 50, 0]], 25],\n   [[['st0', 4, 0], ['st1', 9, -2], ['st2', 2, 2], ['st3', 5, 2], ['st4', 4, -4]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('regression variant: fte denominator 2',\n   [[['st0', 60, 0], ['st1', 20, 2], ['st2', 80, 9], ['st3', 80, 7], ['st4', 20, 10]], 10],\n   [[['st0', 2, -2], ['st1', 1, 1], ['st2', 3, 6], ['st3', 3, 4], ['st4', 1, 9]],\n    ['st0', 'st2', 'st3', 'st4']]),\n  ('partial repair guard 3',\n   [[['st0', 100, 2], ['st1', 80, 2], ['st2', 100, 5], ['st3', 100, 12], ['st4', 20, 8]], 25],\n   [[['st0', 6, -4], ['st1', 5, -3], ['st2', 6, -1], ['st3', 6, 6], ['st4', 1, 7]],\n    ['st0', 'st1', 'st3', 'st4']]),\n  ('boundary control 4', [[['a', 50, 5], ['b', 50, 5]], 5], [[['a', 3, 2], ['b', 3, 2]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 80, 8], ['st1', 20, 3]], 10], [[['st0', 8, 0], ['st1', 2, 1]], []]),\n  ('normal control 6', [[['st0', 100, 3], ['st1', 80, 3]], 30],\n   [[['st0', 17, -14], ['st1', 13, -10]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 1], ['st1', 80, 12], ['st2', 20, 9], ['st3', 80, 7]], 25],\n   [[['st0', 9, -8], ['st1', 7, 5], ['st2', 2, 7], ['st3', 7, 0]], ['st0', 'st1', 'st2']]),\n  ('normal control 8', [[['st0', 100, 0], ['st1', 60, 3], ['st2', 60, 0]], 15],\n   [[['st0', 7, -7], ['st1', 4, -1], ['st2', 4, -4]], ['st0', 'st2']])]]\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":"e28992320b12f126d90ce486ea5fe65a4373270590f986940405f7f157c9ae34","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(staff, total):\n    tot_fte = 100 * len(staff)\n    rows = []\n    flag = []\n    for n, f, a in staff:\n        num = total * f * 2 + tot_fte\n        target = num // (2 * tot_fte) if tot_fte else 0\n        dev = a - target\n        rows.append([n, target, dev])\n        if abs(dev) > 1:\n            flag.append(n)\n    return [rows, flag]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: fte denominator 1', [[['a', 50, 5], ['b', 50, 5]], 5],\n   [[['a', 3, 2], ['b', 3, 2]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 80, 1], ['st1', 80, 1], ['st2', 50, 10]], 10],\n   [[['st0', 4, -3], ['st1', 4, -3], ['st2', 2, 8]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3',\n   [[['st0', 50, 10], ['st1', 100, 4], ['st2', 100, 0], ['st3', 20, 0], ['st4', 80, 3]], 7],\n   [[['st0', 1, 9], ['st1', 2, 2], ['st2', 2, -2], ['st3', 0, 0], ['st4', 2, 1]], ['st0', 'st1', 'st2']]),\n  ('boundary control 4', [[['a', 25, 1], ['b', 75, 4]], 10], [[['a', 3, -2], ['b', 8, -4]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 50, 12], ['st1', 60, 1], ['st2', 60, 8], ['st3', 80, 3]], 30],\n   [[['st0', 6, 6], ['st1', 7, -6], ['st2', 7, 1], ['st3', 10, -7]], ['st0', 'st1', 'st3']]),\n  ('normal control 6',\n   [[['st0', 50, 2], ['st1', 20, 8], ['st2', 50, 6], ['st3', 100, 8], ['st4', 20, 4]], 10],\n   [[['st0', 2, 0], ['st1', 1, 7], ['st2', 2, 4], ['st3', 4, 4], ['st4', 1, 3]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('normal control 7', [[['st0', 80, 4], ['st1', 100, 3]], 20],\n   [[['st0', 9, -5], ['st1', 11, -8]], ['st0', 'st1']]),\n  ('normal control 8',\n   [[['st0', 60, 5], ['st1', 20, 10], ['st2', 100, 8], ['st3', 20, 0], ['st4', 20, 8]], 20],\n   [[['st0', 5, 0], ['st1', 2, 8], ['st2', 9, -1], ['st3', 2, -2], ['st4', 2, 6]], ['st1', 'st3', 'st4']])],\n [('regression: fte denominator 1', [[['a', 50, 3], ['b', 50, 2]], 7], [[['a', 4, -1], ['b', 4, -2]], ['b']]),\n  ('regression variant: fte denominator 2',\n   [[['st0', 100, 6], ['st1', 80, 10], ['st2', 50, 5], ['st3', 100, 4], ['st4', 50, 3]], 15],\n   [[['st0', 4, 2], ['st1', 3, 7], ['st2', 2, 3], ['st3', 4, 0], ['st4', 2, 1]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3', [[['st0', 80, 1], ['st1', 80, 1], ['st2', 50, 10]], 10],\n   [[['st0', 4, -3], ['st1', 4, -3], ['st2', 2, 8]], ['st0', 'st1', 'st2']]),\n  ('normal control 4', [[['st0', 60, 0], ['st1', 50, 12], ['st2', 20, 8], ['st3', 20, 1]], 20],\n   [[['st0', 8, -8], ['st1', 7, 5], ['st2', 3, 5], ['st3', 3, -2]], ['st0', 'st1', 'st2', 'st3']]),\n  ('normal control 5', [[['st0', 50, 1], ['st1', 20, 6], ['st2', 50, 5]], 25],\n   [[['st0', 10, -9], ['st1', 4, 2], ['st2', 10, -5]], ['st0', 'st1', 'st2']]),\n  ('normal control 6', [[['st0', 60, 7], ['st1', 60, 11], ['st2', 50, 2]], 25],\n   [[['st0', 9, -2], ['st1', 9, 2], ['st2', 7, -5]], ['st0', 'st1', 'st2']]),\n  ('normal control 7', [[['st0', 50, 3], ['st1', 60, 0], ['st2', 80, 0]], 7],\n   [[['st0', 2, 1], ['st1', 2, -2], ['st2', 3, -3]], ['st1', 'st2']]),\n  ('normal control 8', [[['st0', 100, 7], ['st1', 60, 12], ['st2', 50, 6]], 20],\n   [[['st0', 10, -3], ['st1', 6, 6], ['st2', 5, 1]], ['st0', 'st1']])],\n [('regression: fte denominator 1', [[['a', 25, 1], ['b', 75, 4]], 10],\n   [[['a', 3, -2], ['b', 8, -4]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 20, 8], ['st1', 50, 8]], 15],\n   [[['st0', 4, 4], ['st1', 11, -3]], ['st0', 'st1']]),\n  ('partial repair guard 3',\n   [[['st0', 100, 8], ['st1', 20, 4], ['st2', 100, 3], ['st3', 80, 10], ['st4', 100, 9]], 30],\n   [[['st0', 8, 0], ['st1', 2, 2], ['st2', 8, -5], ['st3', 6, 4], ['st4', 8, 1]], ['st1', 'st2', 'st3']]),\n  ('boundary control 4', [[['a', 100, 2], ['b', 50, 5]], 9], [[['a', 6, -4], ['b', 3, 2]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 80, 11], ['st1', 100, 9], ['st2', 80, 3], ['st3', 50, 7]], 15],\n   [[['st0', 4, 7], ['st1', 5, 4], ['st2', 4, -1], ['st3', 2, 5]], ['st0', 'st1', 'st3']]),\n  ('normal control 6', [[['st0', 50, 4], ['st1', 100, 4]], 25],\n   [[['st0', 8, -4], ['st1', 17, -13]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 11], ['st1', 60, 3], ['st2', 20, 6], ['st3', 20, 12]], 10],\n   [[['st0', 5, 6], ['st1', 3, 0], ['st2', 1, 5], ['st3', 1, 11]], ['st0', 'st2', 'st3']]),\n  ('normal control 8',\n   [[['st0', 80, 7], ['st1', 80, 10], ['st2', 60, 3], ['st3', 80, 11], ['st4', 80, 12]], 10],\n   [[['st0', 2, 5], ['st1', 2, 8], ['st2', 2, 1], ['st3', 2, 9], ['st4', 2, 10]],\n    ['st0', 'st1', 'st3', 'st4']])],\n [('regression: fte denominator 1', [[['a', 100, 2], ['b', 50, 5]], 9],\n   [[['a', 6, -4], ['b', 3, 2]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 80, 3], ['st1', 50, 9], ['st2', 20, 11]], 10],\n   [[['st0', 5, -2], ['st1', 3, 6], ['st2', 1, 10]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3',\n   [[['st0', 50, 2], ['st1', 20, 8], ['st2', 50, 6], ['st3', 100, 8], ['st4', 20, 4]], 10],\n   [[['st0', 2, 0], ['st1', 1, 7], ['st2', 2, 4], ['st3', 4, 4], ['st4', 1, 3]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('boundary control 4', [[['a', 100, 3], ['b', 100, 4]], 7], [[['a', 4, -1], ['b', 4, 0]], []]),\n  ('normal control 5', [[['st0', 80, 7], ['st1', 80, 6], ['st2', 20, 6], ['st3', 50, 2]], 30],\n   [[['st0', 10, -3], ['st1', 10, -4], ['st2', 3, 3], ['st3', 7, -5]], ['st0', 'st1', 'st2', 'st3']]),\n  ('normal control 6', [[['st0', 100, 3], ['st1', 20, 5]], 7],\n   [[['st0', 6, -3], ['st1', 1, 4]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 3], ['st1', 60, 9], ['st2', 50, 4]], 10],\n   [[['st0', 5, -2], ['st1', 3, 6], ['st2', 2, 2]], ['st0', 'st1', 'st2']]),\n  ('normal control 8',\n   [[['st0', 20, 9], ['st1', 60, 11], ['st2', 20, 7], ['st3', 60, 11], ['st4', 60, 5]], 15],\n   [[['st0', 1, 8], ['st1', 4, 7], ['st2', 1, 6], ['st3', 4, 7], ['st4', 4, 1]],\n    ['st0', 'st1', 'st2', 'st3']])],\n [('regression: fte denominator 1',\n   [[['st0', 50, 4], ['st1', 100, 7], ['st2', 20, 4], ['st3', 60, 7], ['st4', 50, 0]], 25],\n   [[['st0', 4, 0], ['st1', 9, -2], ['st2', 2, 2], ['st3', 5, 2], ['st4', 4, -4]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('regression variant: fte denominator 2',\n   [[['st0', 60, 0], ['st1', 20, 2], ['st2', 80, 9], ['st3', 80, 7], ['st4', 20, 10]], 10],\n   [[['st0', 2, -2], ['st1', 1, 1], ['st2', 3, 6], ['st3', 3, 4], ['st4', 1, 9]],\n    ['st0', 'st2', 'st3', 'st4']]),\n  ('partial repair guard 3',\n   [[['st0', 100, 2], ['st1', 80, 2], ['st2', 100, 5], ['st3', 100, 12], ['st4', 20, 8]], 25],\n   [[['st0', 6, -4], ['st1', 5, -3], ['st2', 6, -1], ['st3', 6, 6], ['st4', 1, 7]],\n    ['st0', 'st1', 'st3', 'st4']]),\n  ('boundary control 4', [[['a', 50, 5], ['b', 50, 5]], 5], [[['a', 3, 2], ['b', 3, 2]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 80, 8], ['st1', 20, 3]], 10], [[['st0', 8, 0], ['st1', 2, 1]], []]),\n  ('normal control 6', [[['st0', 100, 3], ['st1', 80, 3]], 30],\n   [[['st0', 17, -14], ['st1', 13, -10]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 1], ['st1', 80, 12], ['st2', 20, 9], ['st3', 80, 7]], 25],\n   [[['st0', 9, -8], ['st1', 7, 5], ['st2', 2, 7], ['st3', 7, 0]], ['st0', 'st1', 'st2']]),\n  ('normal control 8', [[['st0', 100, 0], ['st1', 60, 3], ['st2', 60, 0]], 15],\n   [[['st0', 7, -7], ['st1', 4, -1], ['st2', 4, -4]], ['st0', 'st2']])]]\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":"4c784ec7391c725690008a93fd3c5e68c68e705d78cd53bb8e972d4b5e7e360e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(staff, total):\n    tot_fte = sum(f for n, f, a in staff)\n    rows = []\n    flag = []\n    for n, f, a in staff:\n        num = total * f * 2 + tot_fte\n        target = num // (2 * tot_fte) if tot_fte else 0\n        dev = a - target\n        rows.append([n, target, dev])\n        if abs(dev) > 1:\n            flag.append(n)\n    return [rows, flag]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: fte denominator 1', [[['a', 50, 5], ['b', 50, 5]], 5],\n   [[['a', 3, 2], ['b', 3, 2]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 80, 1], ['st1', 80, 1], ['st2', 50, 10]], 10],\n   [[['st0', 4, -3], ['st1', 4, -3], ['st2', 2, 8]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3',\n   [[['st0', 50, 10], ['st1', 100, 4], ['st2', 100, 0], ['st3', 20, 0], ['st4', 80, 3]], 7],\n   [[['st0', 1, 9], ['st1', 2, 2], ['st2', 2, -2], ['st3', 0, 0], ['st4', 2, 1]], ['st0', 'st1', 'st2']]),\n  ('boundary control 4', [[['a', 25, 1], ['b', 75, 4]], 10], [[['a', 3, -2], ['b', 8, -4]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 50, 12], ['st1', 60, 1], ['st2', 60, 8], ['st3', 80, 3]], 30],\n   [[['st0', 6, 6], ['st1', 7, -6], ['st2', 7, 1], ['st3', 10, -7]], ['st0', 'st1', 'st3']]),\n  ('normal control 6',\n   [[['st0', 50, 2], ['st1', 20, 8], ['st2', 50, 6], ['st3', 100, 8], ['st4', 20, 4]], 10],\n   [[['st0', 2, 0], ['st1', 1, 7], ['st2', 2, 4], ['st3', 4, 4], ['st4', 1, 3]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('normal control 7', [[['st0', 80, 4], ['st1', 100, 3]], 20],\n   [[['st0', 9, -5], ['st1', 11, -8]], ['st0', 'st1']]),\n  ('normal control 8',\n   [[['st0', 60, 5], ['st1', 20, 10], ['st2', 100, 8], ['st3', 20, 0], ['st4', 20, 8]], 20],\n   [[['st0', 5, 0], ['st1', 2, 8], ['st2', 9, -1], ['st3', 2, -2], ['st4', 2, 6]], ['st1', 'st3', 'st4']])],\n [('regression: fte denominator 1', [[['a', 50, 3], ['b', 50, 2]], 7], [[['a', 4, -1], ['b', 4, -2]], ['b']]),\n  ('regression variant: fte denominator 2',\n   [[['st0', 100, 6], ['st1', 80, 10], ['st2', 50, 5], ['st3', 100, 4], ['st4', 50, 3]], 15],\n   [[['st0', 4, 2], ['st1', 3, 7], ['st2', 2, 3], ['st3', 4, 0], ['st4', 2, 1]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3', [[['st0', 80, 1], ['st1', 80, 1], ['st2', 50, 10]], 10],\n   [[['st0', 4, -3], ['st1', 4, -3], ['st2', 2, 8]], ['st0', 'st1', 'st2']]),\n  ('normal control 4', [[['st0', 60, 0], ['st1', 50, 12], ['st2', 20, 8], ['st3', 20, 1]], 20],\n   [[['st0', 8, -8], ['st1', 7, 5], ['st2', 3, 5], ['st3', 3, -2]], ['st0', 'st1', 'st2', 'st3']]),\n  ('normal control 5', [[['st0', 50, 1], ['st1', 20, 6], ['st2', 50, 5]], 25],\n   [[['st0', 10, -9], ['st1', 4, 2], ['st2', 10, -5]], ['st0', 'st1', 'st2']]),\n  ('normal control 6', [[['st0', 60, 7], ['st1', 60, 11], ['st2', 50, 2]], 25],\n   [[['st0', 9, -2], ['st1', 9, 2], ['st2', 7, -5]], ['st0', 'st1', 'st2']]),\n  ('normal control 7', [[['st0', 50, 3], ['st1', 60, 0], ['st2', 80, 0]], 7],\n   [[['st0', 2, 1], ['st1', 2, -2], ['st2', 3, -3]], ['st1', 'st2']]),\n  ('normal control 8', [[['st0', 100, 7], ['st1', 60, 12], ['st2', 50, 6]], 20],\n   [[['st0', 10, -3], ['st1', 6, 6], ['st2', 5, 1]], ['st0', 'st1']])],\n [('regression: fte denominator 1', [[['a', 25, 1], ['b', 75, 4]], 10],\n   [[['a', 3, -2], ['b', 8, -4]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 20, 8], ['st1', 50, 8]], 15],\n   [[['st0', 4, 4], ['st1', 11, -3]], ['st0', 'st1']]),\n  ('partial repair guard 3',\n   [[['st0', 100, 8], ['st1', 20, 4], ['st2', 100, 3], ['st3', 80, 10], ['st4', 100, 9]], 30],\n   [[['st0', 8, 0], ['st1', 2, 2], ['st2', 8, -5], ['st3', 6, 4], ['st4', 8, 1]], ['st1', 'st2', 'st3']]),\n  ('boundary control 4', [[['a', 100, 2], ['b', 50, 5]], 9], [[['a', 6, -4], ['b', 3, 2]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 80, 11], ['st1', 100, 9], ['st2', 80, 3], ['st3', 50, 7]], 15],\n   [[['st0', 4, 7], ['st1', 5, 4], ['st2', 4, -1], ['st3', 2, 5]], ['st0', 'st1', 'st3']]),\n  ('normal control 6', [[['st0', 50, 4], ['st1', 100, 4]], 25],\n   [[['st0', 8, -4], ['st1', 17, -13]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 11], ['st1', 60, 3], ['st2', 20, 6], ['st3', 20, 12]], 10],\n   [[['st0', 5, 6], ['st1', 3, 0], ['st2', 1, 5], ['st3', 1, 11]], ['st0', 'st2', 'st3']]),\n  ('normal control 8',\n   [[['st0', 80, 7], ['st1', 80, 10], ['st2', 60, 3], ['st3', 80, 11], ['st4', 80, 12]], 10],\n   [[['st0', 2, 5], ['st1', 2, 8], ['st2', 2, 1], ['st3', 2, 9], ['st4', 2, 10]],\n    ['st0', 'st1', 'st3', 'st4']])],\n [('regression: fte denominator 1', [[['a', 100, 2], ['b', 50, 5]], 9],\n   [[['a', 6, -4], ['b', 3, 2]], ['a', 'b']]),\n  ('regression variant: fte denominator 2', [[['st0', 80, 3], ['st1', 50, 9], ['st2', 20, 11]], 10],\n   [[['st0', 5, -2], ['st1', 3, 6], ['st2', 1, 10]], ['st0', 'st1', 'st2']]),\n  ('partial repair guard 3',\n   [[['st0', 50, 2], ['st1', 20, 8], ['st2', 50, 6], ['st3', 100, 8], ['st4', 20, 4]], 10],\n   [[['st0', 2, 0], ['st1', 1, 7], ['st2', 2, 4], ['st3', 4, 4], ['st4', 1, 3]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('boundary control 4', [[['a', 100, 3], ['b', 100, 4]], 7], [[['a', 4, -1], ['b', 4, 0]], []]),\n  ('normal control 5', [[['st0', 80, 7], ['st1', 80, 6], ['st2', 20, 6], ['st3', 50, 2]], 30],\n   [[['st0', 10, -3], ['st1', 10, -4], ['st2', 3, 3], ['st3', 7, -5]], ['st0', 'st1', 'st2', 'st3']]),\n  ('normal control 6', [[['st0', 100, 3], ['st1', 20, 5]], 7],\n   [[['st0', 6, -3], ['st1', 1, 4]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 3], ['st1', 60, 9], ['st2', 50, 4]], 10],\n   [[['st0', 5, -2], ['st1', 3, 6], ['st2', 2, 2]], ['st0', 'st1', 'st2']]),\n  ('normal control 8',\n   [[['st0', 20, 9], ['st1', 60, 11], ['st2', 20, 7], ['st3', 60, 11], ['st4', 60, 5]], 15],\n   [[['st0', 1, 8], ['st1', 4, 7], ['st2', 1, 6], ['st3', 4, 7], ['st4', 4, 1]],\n    ['st0', 'st1', 'st2', 'st3']])],\n [('regression: fte denominator 1',\n   [[['st0', 50, 4], ['st1', 100, 7], ['st2', 20, 4], ['st3', 60, 7], ['st4', 50, 0]], 25],\n   [[['st0', 4, 0], ['st1', 9, -2], ['st2', 2, 2], ['st3', 5, 2], ['st4', 4, -4]],\n    ['st1', 'st2', 'st3', 'st4']]),\n  ('regression variant: fte denominator 2',\n   [[['st0', 60, 0], ['st1', 20, 2], ['st2', 80, 9], ['st3', 80, 7], ['st4', 20, 10]], 10],\n   [[['st0', 2, -2], ['st1', 1, 1], ['st2', 3, 6], ['st3', 3, 4], ['st4', 1, 9]],\n    ['st0', 'st2', 'st3', 'st4']]),\n  ('partial repair guard 3',\n   [[['st0', 100, 2], ['st1', 80, 2], ['st2', 100, 5], ['st3', 100, 12], ['st4', 20, 8]], 25],\n   [[['st0', 6, -4], ['st1', 5, -3], ['st2', 6, -1], ['st3', 6, 6], ['st4', 1, 7]],\n    ['st0', 'st1', 'st3', 'st4']]),\n  ('boundary control 4', [[['a', 50, 5], ['b', 50, 5]], 5], [[['a', 3, 2], ['b', 3, 2]], ['a', 'b']]),\n  ('normal control 5', [[['st0', 80, 8], ['st1', 20, 3]], 10], [[['st0', 8, 0], ['st1', 2, 1]], []]),\n  ('normal control 6', [[['st0', 100, 3], ['st1', 80, 3]], 30],\n   [[['st0', 17, -14], ['st1', 13, -10]], ['st0', 'st1']]),\n  ('normal control 7', [[['st0', 100, 1], ['st1', 80, 12], ['st2', 20, 9], ['st3', 80, 7]], 25],\n   [[['st0', 9, -8], ['st1', 7, 5], ['st2', 2, 7], ['st3', 7, 0]], ['st0', 'st1', 'st2']]),\n  ('normal control 8', [[['st0', 100, 0], ['st1', 60, 3], ['st2', 60, 0]], 15],\n   [[['st0', 7, -7], ['st1', 4, -1], ['st2', 4, -4]], ['st0', 'st2']])]]\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-invigilation-fair-share-fte-denominator","generated_at":"2026-09-29T14:52:07.295748+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Invigilation duties are distributed pro rata to contracted hours; fairness reports drive reallocation.","repair":"Divide by the sum of actual FTE.","root_cause":"The denominator assumes everyone is full-time.","sha256":"b3cccf9b826cc578e7ffcace7fa590264e3c1bba0ac688eb274101c6582ea490","title":"Fair share computed against full-time headcount · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.84,"exit_code":1,"observations":[{"actual":[[["a",5,0],["b",5,0]],[]],"check":"regression: fte denominator 1","expected":[[["a",3,2],["b",3,2]],["a","b"]],"passed":false},{"actual":[[["st0",10,-9],["st1",10,-9],["st2",6,4]],["st0","st1","st2"]],"check":"regression variant: fte denominator 2","expected":[[["st0",4,-3],["st1",4,-3],["st2",2,8]],["st0","st1","st2"]],"passed":false},{"actual":[[["st0",4,6],["st1",7,-3],["st2",7,-7],["st3",1,-1],["st4",6,-3]],["st0","st1","st2","st4"]],"check":"partial repair guard 3","expected":[[["st0",1,9],["st1",2,2],["st2",2,-2],["st3",0,0],["st4",2,1]],["st0","st1","st2"]],"passed":false},{"actual":[[["a",3,-2],["b",10,-6]],["a","b"]],"check":"boundary control 4","expected":[[["a",3,-2],["b",8,-4]],["a","b"]],"passed":false},{"actual":[[["st0",19,-7],["st1",23,-22],["st2",23,-15],["st3",30,-27]],["st0","st1","st2","st3"]],"check":"normal control 5","expected":[[["st0",6,6],["st1",7,-6],["st2",7,1],["st3",10,-7]],["st0","st1","st3"]],"passed":false},{"actual":[[["st0",5,-3],["st1",2,6],["st2",5,1],["st3",10,-2],["st4",2,2]],["st0","st1","st3","st4"]],"check":"normal control 6","expected":[[["st0",2,0],["st1",1,7],["st2",2,4],["st3",4,4],["st4",1,3]],["st1","st2","st3","st4"]],"passed":false},{"actual":[[["st0",16,-12],["st1",20,-17]],["st0","st1"]],"check":"normal control 7","expected":[[["st0",9,-5],["st1",11,-8]],["st0","st1"]],"passed":false},{"actual":[[["st0",12,-7],["st1",4,6],["st2",20,-12],["st3",4,-4],["st4",4,4]],["st0","st1","st2","st3","st4"]],"check":"normal control 8","expected":[[["st0",5,0],["st1",2,8],["st2",9,-1],["st3",2,-2],["st4",2,6]],["st1","st3","st4"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fte denominator 1\", \"actual\": [[[\"a\", 5, 0], [\"b\", 5, 0]], []], \"expected\": [[[\"a\", 3, 2], [\"b\", 3, 2]], [\"a\", \"b\"]], \"passed\": false}, {\"check\": \"regression variant: fte denominator 2\", \"actual\": [[[\"st0\", 10, -9], [\"st1\", 10, -9], [\"st2\", 6, 4]], [\"st0\", \"st1\", \"st2\"]], \"expected\": [[[\"st0\", 4, -3], [\"st1\", 4, -3], [\"st2\", 2, 8]], [\"st0\", \"st1\", \"st2\"]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[[\"st0\", 4, 6], [\"st1\", 7, -3], [\"st2\", 7, -7], [\"st3\", 1, -1], [\"st4\", 6, -3]], [\"st0\", \"st1\", \"st2\", \"st4\"]], \"expected\": [[[\"st0\", 1, 9], [\"st1\", 2, 2], [\"st2\", 2, -2], [\"st3\", 0, 0], [\"st4\", 2, 1]], [\"st0\", \"st1\", \"st2\"]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[[\"a\", 3, -2], [\"b\", 10, -6]], [\"a\", \"b\"]], \"expected\": [[[\"a\", 3, -2], [\"b\", 8, -4]], [\"a\", \"b\"]], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[[\"st0\", 19, -7], [\"st1\", 23, -22], [\"st2\", 23, -15], [\"st3\", 30, -27]], [\"st0\", \"st1\", \"st2\", \"st3\"]], \"expected\": [[[\"st0\", 6, 6], [\"st1\", 7, -6], [\"st2\", 7, 1], [\"st3\", 10, -7]], [\"st0\", \"st1\", \"st3\"]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[[\"st0\", 5, -3], [\"st1\", 2, 6], [\"st2\", 5, 1], [\"st3\", 10, -2], [\"st4\", 2, 2]], [\"st0\", \"st1\", \"st3\", \"st4\"]], \"expected\": [[[\"st0\", 2, 0], [\"st1\", 1, 7], [\"st2\", 2, 4], [\"st3\", 4, 4], [\"st4\", 1, 3]], [\"st1\", \"st2\", \"st3\", \"st4\"]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[[\"st0\", 16, -12], [\"st1\", 20, -17]], [\"st0\", \"st1\"]], \"expected\": [[[\"st0\", 9, -5], [\"st1\", 11, -8]], [\"st0\", \"st1\"]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[[\"st0\", 12, -7], [\"st1\", 4, 6], [\"st2\", 20, -12], [\"st3\", 4, -4], [\"st4\", 4, 4]], [\"st0\", \"st1\", \"st2\", \"st3\", \"st4\"]], \"expected\": [[[\"st0\", 5, 0], [\"st1\", 2, 8], [\"st2\", 9, -1], [\"st3\", 2, -2], [\"st4\", 2, 6]], [\"st1\", \"st3\", \"st4\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.304,"exit_code":1,"observations":[{"actual":[[["a",1,4],["b",1,4]],["a","b"]],"check":"regression: fte denominator 1","expected":[[["a",3,2],["b",3,2]],["a","b"]],"passed":false},{"actual":[[["st0",3,-2],["st1",3,-2],["st2",2,8]],["st0","st1","st2"]],"check":"regression variant: fte denominator 2","expected":[[["st0",4,-3],["st1",4,-3],["st2",2,8]],["st0","st1","st2"]],"passed":false},{"actual":[[["st0",1,9],["st1",1,3],["st2",1,-1],["st3",0,0],["st4",1,2]],["st0","st1","st4"]],"check":"partial repair guard 3","expected":[[["st0",1,9],["st1",2,2],["st2",2,-2],["st3",0,0],["st4",2,1]],["st0","st1","st2"]],"passed":false},{"actual":[[["a",1,0],["b",4,0]],[]],"check":"boundary control 4","expected":[[["a",3,-2],["b",8,-4]],["a","b"]],"passed":false},{"actual":[[["st0",4,8],["st1",5,-4],["st2",5,3],["st3",6,-3]],["st0","st1","st2","st3"]],"check":"normal control 5","expected":[[["st0",6,6],["st1",7,-6],["st2",7,1],["st3",10,-7]],["st0","st1","st3"]],"passed":false},{"actual":[[["st0",1,1],["st1",0,8],["st2",1,5],["st3",2,6],["st4",0,4]],["st1","st2","st3","st4"]],"check":"normal control 6","expected":[[["st0",2,0],["st1",1,7],["st2",2,4],["st3",4,4],["st4",1,3]],["st1","st2","st3","st4"]],"passed":false},{"actual":[[["st0",8,-4],["st1",10,-7]],["st0","st1"]],"check":"normal control 7","expected":[[["st0",9,-5],["st1",11,-8]],["st0","st1"]],"passed":false},{"actual":[[["st0",2,3],["st1",1,9],["st2",4,4],["st3",1,-1],["st4",1,7]],["st0","st1","st2","st4"]],"check":"normal control 8","expected":[[["st0",5,0],["st1",2,8],["st2",9,-1],["st3",2,-2],["st4",2,6]],["st1","st3","st4"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fte denominator 1\", \"actual\": [[[\"a\", 1, 4], [\"b\", 1, 4]], [\"a\", \"b\"]], \"expected\": [[[\"a\", 3, 2], [\"b\", 3, 2]], [\"a\", \"b\"]], \"passed\": false}, {\"check\": \"regression variant: fte denominator 2\", \"actual\": [[[\"st0\", 3, -2], [\"st1\", 3, -2], [\"st2\", 2, 8]], [\"st0\", \"st1\", \"st2\"]], \"expected\": [[[\"st0\", 4, -3], [\"st1\", 4, -3], [\"st2\", 2, 8]], [\"st0\", \"st1\", \"st2\"]], \"passed\": false}, {\"check\": \"partial repair guard 3\", \"actual\": [[[\"st0\", 1, 9], [\"st1\", 1, 3], [\"st2\", 1, -1], [\"st3\", 0, 0], [\"st4\", 1, 2]], [\"st0\", \"st1\", \"st4\"]], \"expected\": [[[\"st0\", 1, 9], [\"st1\", 2, 2], [\"st2\", 2, -2], [\"st3\", 0, 0], [\"st4\", 2, 1]], [\"st0\", \"st1\", \"st2\"]], \"passed\": false}, {\"check\": \"boundary control 4\", \"actual\": [[[\"a\", 1, 0], [\"b\", 4, 0]], []], \"expected\": [[[\"a\", 3, -2], [\"b\", 8, -4]], [\"a\", \"b\"]], \"passed\": false}, {\"check\": \"normal control 5\", \"actual\": [[[\"st0\", 4, 8], [\"st1\", 5, -4], [\"st2\", 5, 3], [\"st3\", 6, -3]], [\"st0\", \"st1\", \"st2\", \"st3\"]], \"expected\": [[[\"st0\", 6, 6], [\"st1\", 7, -6], [\"st2\", 7, 1], [\"st3\", 10, -7]], [\"st0\", \"st1\", \"st3\"]], \"passed\": false}, {\"check\": \"normal control 6\", \"actual\": [[[\"st0\", 1, 1], [\"st1\", 0, 8], [\"st2\", 1, 5], [\"st3\", 2, 6], [\"st4\", 0, 4]], [\"st1\", \"st2\", \"st3\", \"st4\"]], \"expected\": [[[\"st0\", 2, 0], [\"st1\", 1, 7], [\"st2\", 2, 4], [\"st3\", 4, 4], [\"st4\", 1, 3]], [\"st1\", \"st2\", \"st3\", \"st4\"]], \"passed\": false}, {\"check\": \"normal control 7\", \"actual\": [[[\"st0\", 8, -4], [\"st1\", 10, -7]], [\"st0\", \"st1\"]], \"expected\": [[[\"st0\", 9, -5], [\"st1\", 11, -8]], [\"st0\", \"st1\"]], \"passed\": false}, {\"check\": \"normal control 8\", \"actual\": [[[\"st0\", 2, 3], [\"st1\", 1, 9], [\"st2\", 4, 4], [\"st3\", 1, -1], [\"st4\", 1, 7]], [\"st0\", \"st1\", \"st2\", \"st4\"]], \"expected\": [[[\"st0\", 5, 0], [\"st1\", 2, 8], [\"st2\", 9, -1], [\"st3\", 2, -2], [\"st4\", 2, 6]], [\"st1\", \"st3\", \"st4\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.65,"exit_code":0,"observations":[{"actual":[[["a",3,2],["b",3,2]],["a","b"]],"check":"regression: fte denominator 1","expected":[[["a",3,2],["b",3,2]],["a","b"]],"passed":true},{"actual":[[["st0",4,-3],["st1",4,-3],["st2",2,8]],["st0","st1","st2"]],"check":"regression variant: fte denominator 2","expected":[[["st0",4,-3],["st1",4,-3],["st2",2,8]],["st0","st1","st2"]],"passed":true},{"actual":[[["st0",1,9],["st1",2,2],["st2",2,-2],["st3",0,0],["st4",2,1]],["st0","st1","st2"]],"check":"partial repair guard 3","expected":[[["st0",1,9],["st1",2,2],["st2",2,-2],["st3",0,0],["st4",2,1]],["st0","st1","st2"]],"passed":true},{"actual":[[["a",3,-2],["b",8,-4]],["a","b"]],"check":"boundary control 4","expected":[[["a",3,-2],["b",8,-4]],["a","b"]],"passed":true},{"actual":[[["st0",6,6],["st1",7,-6],["st2",7,1],["st3",10,-7]],["st0","st1","st3"]],"check":"normal control 5","expected":[[["st0",6,6],["st1",7,-6],["st2",7,1],["st3",10,-7]],["st0","st1","st3"]],"passed":true},{"actual":[[["st0",2,0],["st1",1,7],["st2",2,4],["st3",4,4],["st4",1,3]],["st1","st2","st3","st4"]],"check":"normal control 6","expected":[[["st0",2,0],["st1",1,7],["st2",2,4],["st3",4,4],["st4",1,3]],["st1","st2","st3","st4"]],"passed":true},{"actual":[[["st0",9,-5],["st1",11,-8]],["st0","st1"]],"check":"normal control 7","expected":[[["st0",9,-5],["st1",11,-8]],["st0","st1"]],"passed":true},{"actual":[[["st0",5,0],["st1",2,8],["st2",9,-1],["st3",2,-2],["st4",2,6]],["st1","st3","st4"]],"check":"normal control 8","expected":[[["st0",5,0],["st1",2,8],["st2",9,-1],["st3",2,-2],["st4",2,6]],["st1","st3","st4"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: fte denominator 1\", \"actual\": [[[\"a\", 3, 2], [\"b\", 3, 2]], [\"a\", \"b\"]], \"expected\": [[[\"a\", 3, 2], [\"b\", 3, 2]], [\"a\", \"b\"]], \"passed\": true}, {\"check\": \"regression variant: fte denominator 2\", \"actual\": [[[\"st0\", 4, -3], [\"st1\", 4, -3], [\"st2\", 2, 8]], [\"st0\", \"st1\", \"st2\"]], \"expected\": [[[\"st0\", 4, -3], [\"st1\", 4, -3], [\"st2\", 2, 8]], [\"st0\", \"st1\", \"st2\"]], \"passed\": true}, {\"check\": \"partial repair guard 3\", \"actual\": [[[\"st0\", 1, 9], [\"st1\", 2, 2], [\"st2\", 2, -2], [\"st3\", 0, 0], [\"st4\", 2, 1]], [\"st0\", \"st1\", \"st2\"]], \"expected\": [[[\"st0\", 1, 9], [\"st1\", 2, 2], [\"st2\", 2, -2], [\"st3\", 0, 0], [\"st4\", 2, 1]], [\"st0\", \"st1\", \"st2\"]], \"passed\": true}, {\"check\": \"boundary control 4\", \"actual\": [[[\"a\", 3, -2], [\"b\", 8, -4]], [\"a\", \"b\"]], \"expected\": [[[\"a\", 3, -2], [\"b\", 8, -4]], [\"a\", \"b\"]], \"passed\": true}, {\"check\": \"normal control 5\", \"actual\": [[[\"st0\", 6, 6], [\"st1\", 7, -6], [\"st2\", 7, 1], [\"st3\", 10, -7]], [\"st0\", \"st1\", \"st3\"]], \"expected\": [[[\"st0\", 6, 6], [\"st1\", 7, -6], [\"st2\", 7, 1], [\"st3\", 10, -7]], [\"st0\", \"st1\", \"st3\"]], \"passed\": true}, {\"check\": \"normal control 6\", \"actual\": [[[\"st0\", 2, 0], [\"st1\", 1, 7], [\"st2\", 2, 4], [\"st3\", 4, 4], [\"st4\", 1, 3]], [\"st1\", \"st2\", \"st3\", \"st4\"]], \"expected\": [[[\"st0\", 2, 0], [\"st1\", 1, 7], [\"st2\", 2, 4], [\"st3\", 4, 4], [\"st4\", 1, 3]], [\"st1\", \"st2\", \"st3\", \"st4\"]], \"passed\": true}, {\"check\": \"normal control 7\", \"actual\": [[[\"st0\", 9, -5], [\"st1\", 11, -8]], [\"st0\", \"st1\"]], \"expected\": [[[\"st0\", 9, -5], [\"st1\", 11, -8]], [\"st0\", \"st1\"]], \"passed\": true}, {\"check\": \"normal control 8\", \"actual\": [[[\"st0\", 5, 0], [\"st1\", 2, 8], [\"st2\", 9, -1], [\"st3\", 2, -2], [\"st4\", 2, 6]], [\"st1\", \"st3\", \"st4\"]], \"expected\": [[[\"st0\", 5, 0], [\"st1\", 2, 8], [\"st2\", 9, -1], [\"st3\", 2, -2], [\"st4\", 2, 6]], [\"st1\", \"st3\", \"st4\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}