{"abstract":"Two teams level on points are ordered by goals scored when goal difference should decide.","category":"Sports scoring and tiebreakers","checks":9,"contract":"Round-robin football table. results rows are [home, home_goals, away, away_goals]. A win is 3 points, a draw 1. Rank by points, then goal difference, then goals scored, then head-to-head points among the teams still level on all three (only matches between those teams), then team name. Return rows [team, played, points, goal_difference, goals_for].","evaluation_group":"w2-sports-scoring-football-league-table","failed_approach":"Putting head-to-head before goals scored still reorders teams separated by goals scored.","family":"w2-sports-scoring-football-league-table-criteria-order","id":"FA-84026","implementations":{"attempt":{"sha256":"3bde222bc94ec35d9dbfe22759c8d2e78ae321c1399bfb33d0d4a85f3cf293eb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(results, teams):\n    table = {t: {'p': 0, 'pts': 0, 'gd': 0, 'gf': 0} for t in teams}\n    for h, hg, a, ag in results:\n        for team, f, g in ((h, hg, ag), (a, ag, hg)):\n            row = table[team]\n            row['p'] += 1\n            row['gf'] += f\n            row['gd'] += f - g\n            row['pts'] += 3 if f > g else (1 if f == g else 0)\n    def key3(t):\n        r = table[t]\n        return (r['pts'], r['gd'], r['gf'])\n    def h2h(t):\n        group = [u for u in teams if key3(u) == key3(t)]\n        pts = 0\n        for h, hg, a, ag in results:\n            if h in group and a in group and t in (h, a):\n                f, g = (hg, ag) if t == h else (ag, hg)\n                pts += 3 if f > g else (1 if f == g else 0)\n        return pts\n    order = sorted(teams, key=lambda t: (-key3(t)[0], -key3(t)[1], -h2h(t), -key3(t)[2], t))\n    return [[t, table[t]['p'], table[t]['pts'], table[t]['gd'], table[t]['gf']] for t in order]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Brent', 2, 'Ashby', 1],\n     ['Dover', 3, 'Corby', 1],\n     ['Dover', 3, 'Epsom', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Corby', 1, 'Ashby', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Dover', 2, 6, 5, 6],\n    ['Brent', 1, 3, 1, 2],\n    ['Ashby', 3, 3, -1, 3],\n    ['Corby', 3, 3, -2, 3],\n    ['Epsom', 1, 0, -3, 0]]),\n  ('regression: criteria order',\n   ([['Corby', 0, 'Ashby', 1], ['Ashby', 1, 'Brent', 2], ['Brent', 1, 'Corby', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 2], ['Corby', 2, 3, 0, 2]]),\n  ('variant scenario 1',\n   ([['Ashby', 1, 'Brent', 3],\n     ['Ashby', 0, 'Corby', 2],\n     ['Brent', 0, 'Ashby', 1],\n     ['Brent', 1, 'Corby', 1],\n     ['Corby', 2, 'Ashby', 2],\n     ['Corby', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 6, 2, 7], ['Brent', 4, 5, 1, 6], ['Ashby', 4, 4, -3, 4]]),\n  ('variant scenario 2',\n   ([['Ashby', 2, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Brent', 0, 'Ashby', 2],\n     ['Brent', 2, 'Corby', 3],\n     ['Corby', 3, 'Ashby', 0],\n     ['Corby', 1, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 9, 3, 8], ['Ashby', 4, 6, 0, 4], ['Brent', 4, 3, -3, 5]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Ashby', 1, 'Epsom', 1],\n     ['Dover', 3, 'Epsom', 1],\n     ['Dover', 1, 'Ashby', 0],\n     ['Ashby', 0, 'Dover', 0],\n     ['Dover', 3, 'Corby', 0],\n     ['Corby', 0, 'Dover', 3],\n     ['Dover', 1, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Dover', 6, 14, 9, 11],\n    ['Ashby', 3, 2, -1, 1],\n    ['Brent', 1, 1, 0, 1],\n    ['Epsom', 2, 1, -2, 2],\n    ['Corby', 2, 0, -6, 0]]),\n  ('regression: criteria order',\n   ([['Epsom', 1, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 0],\n     ['Epsom', 0, 'Brent', 0],\n     ['Epsom', 1, 'Dover', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Epsom', 3, 5, 1, 2],\n    ['Dover', 1, 1, 0, 1],\n    ['Ashby', 1, 1, 0, 0],\n    ['Corby', 1, 1, 0, 0],\n    ['Brent', 2, 1, -1, 0]]),\n  ('variant scenario 1',\n   ([['Corby', 1, 'Brent', 0],\n     ['Ashby', 2, 'Corby', 3],\n     ['Corby', 0, 'Ashby', 2],\n     ['Ashby', 1, 'Corby', 0],\n     ['Dover', 2, 'Brent', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Ashby', 3, 6, 2, 5],\n    ['Corby', 4, 6, -1, 4],\n    ['Dover', 1, 3, 2, 2],\n    ['Epsom', 0, 0, 0, 0],\n    ['Brent', 2, 0, -3, 0]]),\n  ('variant scenario 2',\n   ([['Brent', 0, 'Corby', 0],\n     ['Ashby', 0, 'Dover', 0],\n     ['Brent', 0, 'Dover', 0],\n     ['Brent', 3, 'Ashby', 0],\n     ['Brent', 0, 'Dover', 3],\n     ['Ashby', 2, 'Dover', 1],\n     ['Brent', 2, 'Ashby', 0],\n     ['Ashby', 2, 'Corby', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Brent', 5, 8, 2, 5], ['Dover', 4, 5, 2, 4], ['Ashby', 5, 5, -4, 4], ['Corby', 2, 2, 0, 2]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Dover', 0, 'Ashby', 0],\n     ['Ashby', 0, 'Brent', 1],\n     ['Epsom', 1, 'Corby', 1],\n     ['Corby', 1, 'Brent', 1],\n     ['Dover', 0, 'Brent', 0],\n     ['Epsom', 1, 'Ashby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 5, 1, 2],\n    ['Corby', 2, 2, 0, 2],\n    ['Epsom', 2, 2, 0, 2],\n    ['Dover', 2, 2, 0, 0],\n    ['Ashby', 3, 2, -1, 1]]),\n  ('regression: criteria order',\n   ([['Ashby', 1, 'Brent', 2],\n     ['Ashby', 2, 'Corby', 1],\n     ['Brent', 1, 'Ashby', 1],\n     ['Brent', 1, 'Corby', 2],\n     ['Corby', 2, 'Ashby', 2],\n     ['Corby', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 5, 0, 7], ['Brent', 4, 5, 0, 6], ['Ashby', 4, 5, 0, 6]]),\n  ('variant scenario 1',\n   ([['Brent', 1, 'Corby', 0], ['Ashby', 1, 'Corby', 0], ['Dover', 0, 'Ashby', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 2, 4, 1, 1], ['Brent', 1, 3, 1, 1], ['Dover', 1, 1, 0, 0], ['Corby', 2, 0, -2, 0]]),\n  ('variant scenario 2',\n   ([['Corby', 1, 'Brent', 1], ['Brent', 1, 'Corby', 1], ['Brent', 0, 'Corby', 1]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 3, 5, 1, 3], ['Brent', 3, 2, -1, 2], ['Ashby', 0, 0, 0, 0]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Ashby', 0, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Corby', 0, 'Brent', 0],\n     ['Brent', 0, 'Ashby', 1],\n     ['Corby', 0, 'Brent', 1],\n     ['Ashby', 0, 'Brent', 1],\n     ['Ashby', 1, 'Dover', 0],\n     ['Ashby', 1, 'Corby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Brent', 5, 8, 1, 2], ['Ashby', 6, 8, 0, 3], ['Corby', 4, 5, 0, 2], ['Dover', 1, 0, -1, 0]]),\n  ('regression: criteria order',\n   ([['Corby', 1, 'Brent', 1], ['Ashby', 0, 'Corby', 0], ['Brent', 1, 'Ashby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 2, 2, 0, 2],\n    ['Ashby', 2, 2, 0, 1],\n    ['Corby', 2, 2, 0, 1],\n    ['Dover', 0, 0, 0, 0],\n    ['Epsom', 0, 0, 0, 0]]),\n  ('variant scenario 1',\n   ([['Ashby', 2, 'Brent', 3],\n     ['Ashby', 0, 'Corby', 0],\n     ['Brent', 2, 'Ashby', 2],\n     ['Brent', 0, 'Corby', 2],\n     ['Corby', 3, 'Ashby', 2],\n     ['Corby', 1, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Brent', 4, 7, 1, 8], ['Corby', 4, 7, 1, 6], ['Ashby', 4, 2, -2, 6]]),\n  ('variant scenario 2',\n   ([['Dover', 3, 'Ashby', 1],\n     ['Brent', 2, 'Dover', 3],\n     ['Dover', 3, 'Corby', 0],\n     ['Dover', 0, 'Corby', 2],\n     ['Ashby', 0, 'Corby', 2],\n     ['Ashby', 2, 'Dover', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Dover', 5, 10, 4, 11],\n    ['Corby', 3, 6, 1, 4],\n    ['Ashby', 3, 1, -4, 3],\n    ['Brent', 1, 0, -1, 2]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Epsom', 2, 'Dover', 0],\n     ['Dover', 1, 'Epsom', 0],\n     ['Dover', 0, 'Brent', 1],\n     ['Corby', 0, 'Brent', 1],\n     ['Corby', 2, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 9, 3, 5],\n    ['Epsom', 2, 3, 1, 2],\n    ['Dover', 3, 3, -2, 1],\n    ['Ashby', 0, 0, 0, 0],\n    ['Corby', 2, 0, -2, 2]]),\n  ('regression: criteria order',\n   ([['Corby', 3, 'Brent', 0],\n     ['Brent', 3, 'Corby', 1],\n     ['Ashby', 1, 'Dover', 1],\n     ['Epsom', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 4, -1, 5],\n    ['Corby', 2, 3, 1, 4],\n    ['Epsom', 1, 1, 0, 2],\n    ['Ashby', 1, 1, 0, 1],\n    ['Dover', 1, 1, 0, 1]]),\n  ('variant scenario 1',\n   ([['Ashby', 0, 'Corby', 1],\n     ['Corby', 1, 'Ashby', 0],\n     ['Ashby', 3, 'Dover', 1],\n     ['Dover', 0, 'Ashby', 1],\n     ['Ashby', 2, 'Brent', 3],\n     ['Brent', 0, 'Ashby', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 6, 7, 0, 6], ['Corby', 2, 6, 2, 2], ['Brent', 2, 4, 1, 3], ['Dover', 2, 0, -3, 1]]),\n  ('variant scenario 2',\n   ([['Ashby', 1, 'Brent', 1],\n     ['Corby', 0, 'Dover', 2],\n     ['Brent', 1, 'Dover', 1],\n     ['Brent', 2, 'Corby', 0],\n     ['Ashby', 2, 'Corby', 2],\n     ['Dover', 0, 'Ashby', 3],\n     ['Dover', 0, 'Ashby', 3],\n     ['Corby', 0, 'Ashby', 0],\n     ['Brent', 0, 'Corby', 3],\n     ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 5, 9, 6, 9], ['Corby', 6, 8, 0, 7], ['Brent', 5, 5, -2, 5], ['Dover', 4, 4, -4, 3]])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"9486233d61a554acb64de79dd0339137ea20641a966528b9c589286c16233a09","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(results, teams):\n    table = {t: {'p': 0, 'pts': 0, 'gd': 0, 'gf': 0} for t in teams}\n    for h, hg, a, ag in results:\n        for team, f, g in ((h, hg, ag), (a, ag, hg)):\n            row = table[team]\n            row['p'] += 1\n            row['gf'] += f\n            row['gd'] += f - g\n            row['pts'] += 3 if f > g else (1 if f == g else 0)\n    def key3(t):\n        r = table[t]\n        return (r['pts'], r['gd'], r['gf'])\n    def h2h(t):\n        group = [u for u in teams if key3(u) == key3(t)]\n        pts = 0\n        for h, hg, a, ag in results:\n            if h in group and a in group and t in (h, a):\n                f, g = (hg, ag) if t == h else (ag, hg)\n                pts += 3 if f > g else (1 if f == g else 0)\n        return pts\n    order = sorted(teams, key=lambda t: (-key3(t)[0], -key3(t)[2], -key3(t)[1], -h2h(t), t))\n    return [[t, table[t]['p'], table[t]['pts'], table[t]['gd'], table[t]['gf']] for t in order]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Brent', 2, 'Ashby', 1],\n     ['Dover', 3, 'Corby', 1],\n     ['Dover', 3, 'Epsom', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Corby', 1, 'Ashby', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Dover', 2, 6, 5, 6],\n    ['Brent', 1, 3, 1, 2],\n    ['Ashby', 3, 3, -1, 3],\n    ['Corby', 3, 3, -2, 3],\n    ['Epsom', 1, 0, -3, 0]]),\n  ('regression: criteria order',\n   ([['Corby', 0, 'Ashby', 1], ['Ashby', 1, 'Brent', 2], ['Brent', 1, 'Corby', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 2], ['Corby', 2, 3, 0, 2]]),\n  ('variant scenario 1',\n   ([['Ashby', 1, 'Brent', 3],\n     ['Ashby', 0, 'Corby', 2],\n     ['Brent', 0, 'Ashby', 1],\n     ['Brent', 1, 'Corby', 1],\n     ['Corby', 2, 'Ashby', 2],\n     ['Corby', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 6, 2, 7], ['Brent', 4, 5, 1, 6], ['Ashby', 4, 4, -3, 4]]),\n  ('variant scenario 2',\n   ([['Ashby', 2, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Brent', 0, 'Ashby', 2],\n     ['Brent', 2, 'Corby', 3],\n     ['Corby', 3, 'Ashby', 0],\n     ['Corby', 1, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 9, 3, 8], ['Ashby', 4, 6, 0, 4], ['Brent', 4, 3, -3, 5]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Ashby', 1, 'Epsom', 1],\n     ['Dover', 3, 'Epsom', 1],\n     ['Dover', 1, 'Ashby', 0],\n     ['Ashby', 0, 'Dover', 0],\n     ['Dover', 3, 'Corby', 0],\n     ['Corby', 0, 'Dover', 3],\n     ['Dover', 1, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Dover', 6, 14, 9, 11],\n    ['Ashby', 3, 2, -1, 1],\n    ['Brent', 1, 1, 0, 1],\n    ['Epsom', 2, 1, -2, 2],\n    ['Corby', 2, 0, -6, 0]]),\n  ('regression: criteria order',\n   ([['Epsom', 1, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 0],\n     ['Epsom', 0, 'Brent', 0],\n     ['Epsom', 1, 'Dover', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Epsom', 3, 5, 1, 2],\n    ['Dover', 1, 1, 0, 1],\n    ['Ashby', 1, 1, 0, 0],\n    ['Corby', 1, 1, 0, 0],\n    ['Brent', 2, 1, -1, 0]]),\n  ('variant scenario 1',\n   ([['Corby', 1, 'Brent', 0],\n     ['Ashby', 2, 'Corby', 3],\n     ['Corby', 0, 'Ashby', 2],\n     ['Ashby', 1, 'Corby', 0],\n     ['Dover', 2, 'Brent', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Ashby', 3, 6, 2, 5],\n    ['Corby', 4, 6, -1, 4],\n    ['Dover', 1, 3, 2, 2],\n    ['Epsom', 0, 0, 0, 0],\n    ['Brent', 2, 0, -3, 0]]),\n  ('variant scenario 2',\n   ([['Brent', 0, 'Corby', 0],\n     ['Ashby', 0, 'Dover', 0],\n     ['Brent', 0, 'Dover', 0],\n     ['Brent', 3, 'Ashby', 0],\n     ['Brent', 0, 'Dover', 3],\n     ['Ashby', 2, 'Dover', 1],\n     ['Brent', 2, 'Ashby', 0],\n     ['Ashby', 2, 'Corby', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Brent', 5, 8, 2, 5], ['Dover', 4, 5, 2, 4], ['Ashby', 5, 5, -4, 4], ['Corby', 2, 2, 0, 2]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Dover', 0, 'Ashby', 0],\n     ['Ashby', 0, 'Brent', 1],\n     ['Epsom', 1, 'Corby', 1],\n     ['Corby', 1, 'Brent', 1],\n     ['Dover', 0, 'Brent', 0],\n     ['Epsom', 1, 'Ashby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 5, 1, 2],\n    ['Corby', 2, 2, 0, 2],\n    ['Epsom', 2, 2, 0, 2],\n    ['Dover', 2, 2, 0, 0],\n    ['Ashby', 3, 2, -1, 1]]),\n  ('regression: criteria order',\n   ([['Ashby', 1, 'Brent', 2],\n     ['Ashby', 2, 'Corby', 1],\n     ['Brent', 1, 'Ashby', 1],\n     ['Brent', 1, 'Corby', 2],\n     ['Corby', 2, 'Ashby', 2],\n     ['Corby', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 5, 0, 7], ['Brent', 4, 5, 0, 6], ['Ashby', 4, 5, 0, 6]]),\n  ('variant scenario 1',\n   ([['Brent', 1, 'Corby', 0], ['Ashby', 1, 'Corby', 0], ['Dover', 0, 'Ashby', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 2, 4, 1, 1], ['Brent', 1, 3, 1, 1], ['Dover', 1, 1, 0, 0], ['Corby', 2, 0, -2, 0]]),\n  ('variant scenario 2',\n   ([['Corby', 1, 'Brent', 1], ['Brent', 1, 'Corby', 1], ['Brent', 0, 'Corby', 1]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 3, 5, 1, 3], ['Brent', 3, 2, -1, 2], ['Ashby', 0, 0, 0, 0]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Ashby', 0, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Corby', 0, 'Brent', 0],\n     ['Brent', 0, 'Ashby', 1],\n     ['Corby', 0, 'Brent', 1],\n     ['Ashby', 0, 'Brent', 1],\n     ['Ashby', 1, 'Dover', 0],\n     ['Ashby', 1, 'Corby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Brent', 5, 8, 1, 2], ['Ashby', 6, 8, 0, 3], ['Corby', 4, 5, 0, 2], ['Dover', 1, 0, -1, 0]]),\n  ('regression: criteria order',\n   ([['Corby', 1, 'Brent', 1], ['Ashby', 0, 'Corby', 0], ['Brent', 1, 'Ashby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 2, 2, 0, 2],\n    ['Ashby', 2, 2, 0, 1],\n    ['Corby', 2, 2, 0, 1],\n    ['Dover', 0, 0, 0, 0],\n    ['Epsom', 0, 0, 0, 0]]),\n  ('variant scenario 1',\n   ([['Ashby', 2, 'Brent', 3],\n     ['Ashby', 0, 'Corby', 0],\n     ['Brent', 2, 'Ashby', 2],\n     ['Brent', 0, 'Corby', 2],\n     ['Corby', 3, 'Ashby', 2],\n     ['Corby', 1, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Brent', 4, 7, 1, 8], ['Corby', 4, 7, 1, 6], ['Ashby', 4, 2, -2, 6]]),\n  ('variant scenario 2',\n   ([['Dover', 3, 'Ashby', 1],\n     ['Brent', 2, 'Dover', 3],\n     ['Dover', 3, 'Corby', 0],\n     ['Dover', 0, 'Corby', 2],\n     ['Ashby', 0, 'Corby', 2],\n     ['Ashby', 2, 'Dover', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Dover', 5, 10, 4, 11],\n    ['Corby', 3, 6, 1, 4],\n    ['Ashby', 3, 1, -4, 3],\n    ['Brent', 1, 0, -1, 2]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Epsom', 2, 'Dover', 0],\n     ['Dover', 1, 'Epsom', 0],\n     ['Dover', 0, 'Brent', 1],\n     ['Corby', 0, 'Brent', 1],\n     ['Corby', 2, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 9, 3, 5],\n    ['Epsom', 2, 3, 1, 2],\n    ['Dover', 3, 3, -2, 1],\n    ['Ashby', 0, 0, 0, 0],\n    ['Corby', 2, 0, -2, 2]]),\n  ('regression: criteria order',\n   ([['Corby', 3, 'Brent', 0],\n     ['Brent', 3, 'Corby', 1],\n     ['Ashby', 1, 'Dover', 1],\n     ['Epsom', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 4, -1, 5],\n    ['Corby', 2, 3, 1, 4],\n    ['Epsom', 1, 1, 0, 2],\n    ['Ashby', 1, 1, 0, 1],\n    ['Dover', 1, 1, 0, 1]]),\n  ('variant scenario 1',\n   ([['Ashby', 0, 'Corby', 1],\n     ['Corby', 1, 'Ashby', 0],\n     ['Ashby', 3, 'Dover', 1],\n     ['Dover', 0, 'Ashby', 1],\n     ['Ashby', 2, 'Brent', 3],\n     ['Brent', 0, 'Ashby', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 6, 7, 0, 6], ['Corby', 2, 6, 2, 2], ['Brent', 2, 4, 1, 3], ['Dover', 2, 0, -3, 1]]),\n  ('variant scenario 2',\n   ([['Ashby', 1, 'Brent', 1],\n     ['Corby', 0, 'Dover', 2],\n     ['Brent', 1, 'Dover', 1],\n     ['Brent', 2, 'Corby', 0],\n     ['Ashby', 2, 'Corby', 2],\n     ['Dover', 0, 'Ashby', 3],\n     ['Dover', 0, 'Ashby', 3],\n     ['Corby', 0, 'Ashby', 0],\n     ['Brent', 0, 'Corby', 3],\n     ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 5, 9, 6, 9], ['Corby', 6, 8, 0, 7], ['Brent', 5, 5, -2, 5], ['Dover', 4, 4, -4, 3]])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"c22b1fa6c8d41bbb2059ec17863280de82a0843caae096c8f2f2d5b035c3e085","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(results, teams):\n    table = {t: {'p': 0, 'pts': 0, 'gd': 0, 'gf': 0} for t in teams}\n    for h, hg, a, ag in results:\n        for team, f, g in ((h, hg, ag), (a, ag, hg)):\n            row = table[team]\n            row['p'] += 1\n            row['gf'] += f\n            row['gd'] += f - g\n            row['pts'] += 3 if f > g else (1 if f == g else 0)\n    def key3(t):\n        r = table[t]\n        return (r['pts'], r['gd'], r['gf'])\n    def h2h(t):\n        group = [u for u in teams if key3(u) == key3(t)]\n        pts = 0\n        for h, hg, a, ag in results:\n            if h in group and a in group and t in (h, a):\n                f, g = (hg, ag) if t == h else (ag, hg)\n                pts += 3 if f > g else (1 if f == g else 0)\n        return pts\n    order = sorted(teams, key=lambda t: (-key3(t)[0], -key3(t)[1], -key3(t)[2], -h2h(t), t))\n    return [[t, table[t]['p'], table[t]['pts'], table[t]['gd'], table[t]['gf']] for t in order]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Brent', 2, 'Ashby', 1],\n     ['Dover', 3, 'Corby', 1],\n     ['Dover', 3, 'Epsom', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Corby', 1, 'Ashby', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Dover', 2, 6, 5, 6],\n    ['Brent', 1, 3, 1, 2],\n    ['Ashby', 3, 3, -1, 3],\n    ['Corby', 3, 3, -2, 3],\n    ['Epsom', 1, 0, -3, 0]]),\n  ('regression: criteria order',\n   ([['Corby', 0, 'Ashby', 1], ['Ashby', 1, 'Brent', 2], ['Brent', 1, 'Corby', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 2], ['Corby', 2, 3, 0, 2]]),\n  ('variant scenario 1',\n   ([['Ashby', 1, 'Brent', 3],\n     ['Ashby', 0, 'Corby', 2],\n     ['Brent', 0, 'Ashby', 1],\n     ['Brent', 1, 'Corby', 1],\n     ['Corby', 2, 'Ashby', 2],\n     ['Corby', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 6, 2, 7], ['Brent', 4, 5, 1, 6], ['Ashby', 4, 4, -3, 4]]),\n  ('variant scenario 2',\n   ([['Ashby', 2, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Brent', 0, 'Ashby', 2],\n     ['Brent', 2, 'Corby', 3],\n     ['Corby', 3, 'Ashby', 0],\n     ['Corby', 1, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 9, 3, 8], ['Ashby', 4, 6, 0, 4], ['Brent', 4, 3, -3, 5]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Ashby', 1, 'Epsom', 1],\n     ['Dover', 3, 'Epsom', 1],\n     ['Dover', 1, 'Ashby', 0],\n     ['Ashby', 0, 'Dover', 0],\n     ['Dover', 3, 'Corby', 0],\n     ['Corby', 0, 'Dover', 3],\n     ['Dover', 1, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Dover', 6, 14, 9, 11],\n    ['Ashby', 3, 2, -1, 1],\n    ['Brent', 1, 1, 0, 1],\n    ['Epsom', 2, 1, -2, 2],\n    ['Corby', 2, 0, -6, 0]]),\n  ('regression: criteria order',\n   ([['Epsom', 1, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 0],\n     ['Epsom', 0, 'Brent', 0],\n     ['Epsom', 1, 'Dover', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Epsom', 3, 5, 1, 2],\n    ['Dover', 1, 1, 0, 1],\n    ['Ashby', 1, 1, 0, 0],\n    ['Corby', 1, 1, 0, 0],\n    ['Brent', 2, 1, -1, 0]]),\n  ('variant scenario 1',\n   ([['Corby', 1, 'Brent', 0],\n     ['Ashby', 2, 'Corby', 3],\n     ['Corby', 0, 'Ashby', 2],\n     ['Ashby', 1, 'Corby', 0],\n     ['Dover', 2, 'Brent', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Ashby', 3, 6, 2, 5],\n    ['Corby', 4, 6, -1, 4],\n    ['Dover', 1, 3, 2, 2],\n    ['Epsom', 0, 0, 0, 0],\n    ['Brent', 2, 0, -3, 0]]),\n  ('variant scenario 2',\n   ([['Brent', 0, 'Corby', 0],\n     ['Ashby', 0, 'Dover', 0],\n     ['Brent', 0, 'Dover', 0],\n     ['Brent', 3, 'Ashby', 0],\n     ['Brent', 0, 'Dover', 3],\n     ['Ashby', 2, 'Dover', 1],\n     ['Brent', 2, 'Ashby', 0],\n     ['Ashby', 2, 'Corby', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Brent', 5, 8, 2, 5], ['Dover', 4, 5, 2, 4], ['Ashby', 5, 5, -4, 4], ['Corby', 2, 2, 0, 2]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Dover', 0, 'Ashby', 0],\n     ['Ashby', 0, 'Brent', 1],\n     ['Epsom', 1, 'Corby', 1],\n     ['Corby', 1, 'Brent', 1],\n     ['Dover', 0, 'Brent', 0],\n     ['Epsom', 1, 'Ashby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 5, 1, 2],\n    ['Corby', 2, 2, 0, 2],\n    ['Epsom', 2, 2, 0, 2],\n    ['Dover', 2, 2, 0, 0],\n    ['Ashby', 3, 2, -1, 1]]),\n  ('regression: criteria order',\n   ([['Ashby', 1, 'Brent', 2],\n     ['Ashby', 2, 'Corby', 1],\n     ['Brent', 1, 'Ashby', 1],\n     ['Brent', 1, 'Corby', 2],\n     ['Corby', 2, 'Ashby', 2],\n     ['Corby', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 4, 5, 0, 7], ['Brent', 4, 5, 0, 6], ['Ashby', 4, 5, 0, 6]]),\n  ('variant scenario 1',\n   ([['Brent', 1, 'Corby', 0], ['Ashby', 1, 'Corby', 0], ['Dover', 0, 'Ashby', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 2, 4, 1, 1], ['Brent', 1, 3, 1, 1], ['Dover', 1, 1, 0, 0], ['Corby', 2, 0, -2, 0]]),\n  ('variant scenario 2',\n   ([['Corby', 1, 'Brent', 1], ['Brent', 1, 'Corby', 1], ['Brent', 0, 'Corby', 1]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 3, 5, 1, 3], ['Brent', 3, 2, -1, 2], ['Ashby', 0, 0, 0, 0]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Ashby', 0, 'Brent', 0],\n     ['Ashby', 0, 'Corby', 1],\n     ['Corby', 0, 'Brent', 0],\n     ['Brent', 0, 'Ashby', 1],\n     ['Corby', 0, 'Brent', 1],\n     ['Ashby', 0, 'Brent', 1],\n     ['Ashby', 1, 'Dover', 0],\n     ['Ashby', 1, 'Corby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Brent', 5, 8, 1, 2], ['Ashby', 6, 8, 0, 3], ['Corby', 4, 5, 0, 2], ['Dover', 1, 0, -1, 0]]),\n  ('regression: criteria order',\n   ([['Corby', 1, 'Brent', 1], ['Ashby', 0, 'Corby', 0], ['Brent', 1, 'Ashby', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 2, 2, 0, 2],\n    ['Ashby', 2, 2, 0, 1],\n    ['Corby', 2, 2, 0, 1],\n    ['Dover', 0, 0, 0, 0],\n    ['Epsom', 0, 0, 0, 0]]),\n  ('variant scenario 1',\n   ([['Ashby', 2, 'Brent', 3],\n     ['Ashby', 0, 'Corby', 0],\n     ['Brent', 2, 'Ashby', 2],\n     ['Brent', 0, 'Corby', 2],\n     ['Corby', 3, 'Ashby', 2],\n     ['Corby', 1, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby']),\n   [['Brent', 4, 7, 1, 8], ['Corby', 4, 7, 1, 6], ['Ashby', 4, 2, -2, 6]]),\n  ('variant scenario 2',\n   ([['Dover', 3, 'Ashby', 1],\n     ['Brent', 2, 'Dover', 3],\n     ['Dover', 3, 'Corby', 0],\n     ['Dover', 0, 'Corby', 2],\n     ['Ashby', 0, 'Corby', 2],\n     ['Ashby', 2, 'Dover', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Dover', 5, 10, 4, 11],\n    ['Corby', 3, 6, 1, 4],\n    ['Ashby', 3, 1, -4, 3],\n    ['Brent', 1, 0, -1, 2]])],\n [('control single win',\n   ([['Ashby', 2, 'Brent', 0]], ['Ashby', 'Brent']),\n   [['Ashby', 1, 3, 2, 2], ['Brent', 1, 0, -2, 0]]),\n  ('boundary draw',\n   ([['Ashby', 1, 'Brent', 1]], ['Brent', 'Ashby']),\n   [['Ashby', 1, 1, 0, 1], ['Brent', 1, 1, 0, 1]]),\n  ('boundary goals scored before name',\n   ([['Ashby', 1, 'Corby', 1], ['Brent', 2, 'Corby', 2]], ['Ashby', 'Brent', 'Corby']),\n   [['Corby', 2, 2, 0, 3], ['Brent', 1, 1, 0, 2], ['Ashby', 1, 1, 0, 1]]),\n  ('boundary head to head decides',\n   ([['Brent', 2, 'Ashby', 1], ['Ashby', 2, 'Dover', 1], ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Corby', 1, 3, 1, 2], ['Brent', 2, 3, 0, 3], ['Ashby', 2, 3, 0, 3], ['Dover', 1, 0, -1, 1]]),\n  ('control no matches', ([], ['Corby', 'Ashby']), [['Ashby', 0, 0, 0, 0], ['Corby', 0, 0, 0, 0]]),\n  ('regression: criteria order',\n   ([['Epsom', 2, 'Dover', 0],\n     ['Dover', 1, 'Epsom', 0],\n     ['Dover', 0, 'Brent', 1],\n     ['Corby', 0, 'Brent', 1],\n     ['Corby', 2, 'Brent', 3]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 9, 3, 5],\n    ['Epsom', 2, 3, 1, 2],\n    ['Dover', 3, 3, -2, 1],\n    ['Ashby', 0, 0, 0, 0],\n    ['Corby', 2, 0, -2, 2]]),\n  ('regression: criteria order',\n   ([['Corby', 3, 'Brent', 0],\n     ['Brent', 3, 'Corby', 1],\n     ['Ashby', 1, 'Dover', 1],\n     ['Epsom', 2, 'Brent', 2]],\n    ['Ashby', 'Brent', 'Corby', 'Dover', 'Epsom']),\n   [['Brent', 3, 4, -1, 5],\n    ['Corby', 2, 3, 1, 4],\n    ['Epsom', 1, 1, 0, 2],\n    ['Ashby', 1, 1, 0, 1],\n    ['Dover', 1, 1, 0, 1]]),\n  ('variant scenario 1',\n   ([['Ashby', 0, 'Corby', 1],\n     ['Corby', 1, 'Ashby', 0],\n     ['Ashby', 3, 'Dover', 1],\n     ['Dover', 0, 'Ashby', 1],\n     ['Ashby', 2, 'Brent', 3],\n     ['Brent', 0, 'Ashby', 0]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 6, 7, 0, 6], ['Corby', 2, 6, 2, 2], ['Brent', 2, 4, 1, 3], ['Dover', 2, 0, -3, 1]]),\n  ('variant scenario 2',\n   ([['Ashby', 1, 'Brent', 1],\n     ['Corby', 0, 'Dover', 2],\n     ['Brent', 1, 'Dover', 1],\n     ['Brent', 2, 'Corby', 0],\n     ['Ashby', 2, 'Corby', 2],\n     ['Dover', 0, 'Ashby', 3],\n     ['Dover', 0, 'Ashby', 3],\n     ['Corby', 0, 'Ashby', 0],\n     ['Brent', 0, 'Corby', 3],\n     ['Corby', 2, 'Brent', 1]],\n    ['Ashby', 'Brent', 'Corby', 'Dover']),\n   [['Ashby', 5, 9, 6, 9], ['Corby', 6, 8, 0, 7], ['Brent', 5, 5, -2, 5], ['Dover', 4, 4, -4, 3]])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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, bounded toy contract stated in the contract field; not a claim of conformance with any governing body rulebook or operator house rules. 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-sports-scoring-football-league-table-criteria-order","generated_at":"2026-09-29T14:50:27.136677+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"League tables drive promotion, relegation and seeding; the tiebreaker cascade order matters.","repair":"Order criteria as points, goal difference, goals scored, head-to-head, name.","root_cause":"The sort key places goals scored ahead of goal difference.","sha256":"53366484d5bf3b2300c0bff549ed9fad8e55dce0abc233316bb5f74c1ce6d70c","title":"Goals scored consulted before goal difference · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.076,"exit_code":1,"observations":[{"actual":[["Ashby",1,3,2,2],["Brent",1,0,-2,0]],"check":"control single win","expected":[["Ashby",1,3,2,2],["Brent",1,0,-2,0]],"passed":true},{"actual":[["Ashby",1,1,0,1],["Brent",1,1,0,1]],"check":"boundary draw","expected":[["Ashby",1,1,0,1],["Brent",1,1,0,1]],"passed":true},{"actual":[["Corby",2,2,0,3],["Brent",1,1,0,2],["Ashby",1,1,0,1]],"check":"boundary goals scored before name","expected":[["Corby",2,2,0,3],["Brent",1,1,0,2],["Ashby",1,1,0,1]],"passed":true},{"actual":[["Corby",1,3,1,2],["Brent",2,3,0,3],["Ashby",2,3,0,3],["Dover",1,0,-1,1]],"check":"boundary head to head decides","expected":[["Corby",1,3,1,2],["Brent",2,3,0,3],["Ashby",2,3,0,3],["Dover",1,0,-1,1]],"passed":true},{"actual":[["Ashby",0,0,0,0],["Corby",0,0,0,0]],"check":"control no matches","expected":[["Ashby",0,0,0,0],["Corby",0,0,0,0]],"passed":true},{"actual":[["Dover",2,6,5,6],["Brent",1,3,1,2],["Ashby",3,3,-1,3],["Corby",3,3,-2,3],["Epsom",1,0,-3,0]],"check":"regression: criteria order","expected":[["Dover",2,6,5,6],["Brent",1,3,1,2],["Ashby",3,3,-1,3],["Corby",3,3,-2,3],["Epsom",1,0,-3,0]],"passed":true},{"actual":[["Ashby",2,3,0,2],["Brent",2,3,0,3],["Corby",2,3,0,2]],"check":"regression: criteria order","expected":[["Brent",2,3,0,3],["Ashby",2,3,0,2],["Corby",2,3,0,2]],"passed":false},{"actual":[["Corby",4,6,2,7],["Brent",4,5,1,6],["Ashby",4,4,-3,4]],"check":"variant scenario 1","expected":[["Corby",4,6,2,7],["Brent",4,5,1,6],["Ashby",4,4,-3,4]],"passed":true},{"actual":[["Corby",4,9,3,8],["Ashby",4,6,0,4],["Brent",4,3,-3,5]],"check":"variant scenario 2","expected":[["Corby",4,9,3,8],["Ashby",4,6,0,4],["Brent",4,3,-3,5]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single win\", \"actual\": [[\"Ashby\", 1, 3, 2, 2], [\"Brent\", 1, 0, -2, 0]], \"expected\": [[\"Ashby\", 1, 3, 2, 2], [\"Brent\", 1, 0, -2, 0]], \"passed\": true}, {\"check\": \"boundary draw\", \"actual\": [[\"Ashby\", 1, 1, 0, 1], [\"Brent\", 1, 1, 0, 1]], \"expected\": [[\"Ashby\", 1, 1, 0, 1], [\"Brent\", 1, 1, 0, 1]], \"passed\": true}, {\"check\": \"boundary goals scored before name\", \"actual\": [[\"Corby\", 2, 2, 0, 3], [\"Brent\", 1, 1, 0, 2], [\"Ashby\", 1, 1, 0, 1]], \"expected\": [[\"Corby\", 2, 2, 0, 3], [\"Brent\", 1, 1, 0, 2], [\"Ashby\", 1, 1, 0, 1]], \"passed\": true}, {\"check\": \"boundary head to head decides\", \"actual\": [[\"Corby\", 1, 3, 1, 2], [\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 3], [\"Dover\", 1, 0, -1, 1]], \"expected\": [[\"Corby\", 1, 3, 1, 2], [\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 3], [\"Dover\", 1, 0, -1, 1]], \"passed\": true}, {\"check\": \"control no matches\", \"actual\": [[\"Ashby\", 0, 0, 0, 0], [\"Corby\", 0, 0, 0, 0]], \"expected\": [[\"Ashby\", 0, 0, 0, 0], [\"Corby\", 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"regression: criteria order\", \"actual\": [[\"Dover\", 2, 6, 5, 6], [\"Brent\", 1, 3, 1, 2], [\"Ashby\", 3, 3, -1, 3], [\"Corby\", 3, 3, -2, 3], [\"Epsom\", 1, 0, -3, 0]], \"expected\": [[\"Dover\", 2, 6, 5, 6], [\"Brent\", 1, 3, 1, 2], [\"Ashby\", 3, 3, -1, 3], [\"Corby\", 3, 3, -2, 3], [\"Epsom\", 1, 0, -3, 0]], \"passed\": true}, {\"check\": \"regression: criteria order\", \"actual\": [[\"Ashby\", 2, 3, 0, 2], [\"Brent\", 2, 3, 0, 3], [\"Corby\", 2, 3, 0, 2]], \"expected\": [[\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 2], [\"Corby\", 2, 3, 0, 2]], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[\"Corby\", 4, 6, 2, 7], [\"Brent\", 4, 5, 1, 6], [\"Ashby\", 4, 4, -3, 4]], \"expected\": [[\"Corby\", 4, 6, 2, 7], [\"Brent\", 4, 5, 1, 6], [\"Ashby\", 4, 4, -3, 4]], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[\"Corby\", 4, 9, 3, 8], [\"Ashby\", 4, 6, 0, 4], [\"Brent\", 4, 3, -3, 5]], \"expected\": [[\"Corby\", 4, 9, 3, 8], [\"Ashby\", 4, 6, 0, 4], [\"Brent\", 4, 3, -3, 5]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.852,"exit_code":1,"observations":[{"actual":[["Ashby",1,3,2,2],["Brent",1,0,-2,0]],"check":"control single win","expected":[["Ashby",1,3,2,2],["Brent",1,0,-2,0]],"passed":true},{"actual":[["Ashby",1,1,0,1],["Brent",1,1,0,1]],"check":"boundary draw","expected":[["Ashby",1,1,0,1],["Brent",1,1,0,1]],"passed":true},{"actual":[["Corby",2,2,0,3],["Brent",1,1,0,2],["Ashby",1,1,0,1]],"check":"boundary goals scored before name","expected":[["Corby",2,2,0,3],["Brent",1,1,0,2],["Ashby",1,1,0,1]],"passed":true},{"actual":[["Brent",2,3,0,3],["Ashby",2,3,0,3],["Corby",1,3,1,2],["Dover",1,0,-1,1]],"check":"boundary head to head decides","expected":[["Corby",1,3,1,2],["Brent",2,3,0,3],["Ashby",2,3,0,3],["Dover",1,0,-1,1]],"passed":false},{"actual":[["Ashby",0,0,0,0],["Corby",0,0,0,0]],"check":"control no matches","expected":[["Ashby",0,0,0,0],["Corby",0,0,0,0]],"passed":true},{"actual":[["Dover",2,6,5,6],["Ashby",3,3,-1,3],["Corby",3,3,-2,3],["Brent",1,3,1,2],["Epsom",1,0,-3,0]],"check":"regression: criteria order","expected":[["Dover",2,6,5,6],["Brent",1,3,1,2],["Ashby",3,3,-1,3],["Corby",3,3,-2,3],["Epsom",1,0,-3,0]],"passed":false},{"actual":[["Brent",2,3,0,3],["Ashby",2,3,0,2],["Corby",2,3,0,2]],"check":"regression: criteria order","expected":[["Brent",2,3,0,3],["Ashby",2,3,0,2],["Corby",2,3,0,2]],"passed":true},{"actual":[["Corby",4,6,2,7],["Brent",4,5,1,6],["Ashby",4,4,-3,4]],"check":"variant scenario 1","expected":[["Corby",4,6,2,7],["Brent",4,5,1,6],["Ashby",4,4,-3,4]],"passed":true},{"actual":[["Corby",4,9,3,8],["Ashby",4,6,0,4],["Brent",4,3,-3,5]],"check":"variant scenario 2","expected":[["Corby",4,9,3,8],["Ashby",4,6,0,4],["Brent",4,3,-3,5]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single win\", \"actual\": [[\"Ashby\", 1, 3, 2, 2], [\"Brent\", 1, 0, -2, 0]], \"expected\": [[\"Ashby\", 1, 3, 2, 2], [\"Brent\", 1, 0, -2, 0]], \"passed\": true}, {\"check\": \"boundary draw\", \"actual\": [[\"Ashby\", 1, 1, 0, 1], [\"Brent\", 1, 1, 0, 1]], \"expected\": [[\"Ashby\", 1, 1, 0, 1], [\"Brent\", 1, 1, 0, 1]], \"passed\": true}, {\"check\": \"boundary goals scored before name\", \"actual\": [[\"Corby\", 2, 2, 0, 3], [\"Brent\", 1, 1, 0, 2], [\"Ashby\", 1, 1, 0, 1]], \"expected\": [[\"Corby\", 2, 2, 0, 3], [\"Brent\", 1, 1, 0, 2], [\"Ashby\", 1, 1, 0, 1]], \"passed\": true}, {\"check\": \"boundary head to head decides\", \"actual\": [[\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 3], [\"Corby\", 1, 3, 1, 2], [\"Dover\", 1, 0, -1, 1]], \"expected\": [[\"Corby\", 1, 3, 1, 2], [\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 3], [\"Dover\", 1, 0, -1, 1]], \"passed\": false}, {\"check\": \"control no matches\", \"actual\": [[\"Ashby\", 0, 0, 0, 0], [\"Corby\", 0, 0, 0, 0]], \"expected\": [[\"Ashby\", 0, 0, 0, 0], [\"Corby\", 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"regression: criteria order\", \"actual\": [[\"Dover\", 2, 6, 5, 6], [\"Ashby\", 3, 3, -1, 3], [\"Corby\", 3, 3, -2, 3], [\"Brent\", 1, 3, 1, 2], [\"Epsom\", 1, 0, -3, 0]], \"expected\": [[\"Dover\", 2, 6, 5, 6], [\"Brent\", 1, 3, 1, 2], [\"Ashby\", 3, 3, -1, 3], [\"Corby\", 3, 3, -2, 3], [\"Epsom\", 1, 0, -3, 0]], \"passed\": false}, {\"check\": \"regression: criteria order\", \"actual\": [[\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 2], [\"Corby\", 2, 3, 0, 2]], \"expected\": [[\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 2], [\"Corby\", 2, 3, 0, 2]], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [[\"Corby\", 4, 6, 2, 7], [\"Brent\", 4, 5, 1, 6], [\"Ashby\", 4, 4, -3, 4]], \"expected\": [[\"Corby\", 4, 6, 2, 7], [\"Brent\", 4, 5, 1, 6], [\"Ashby\", 4, 4, -3, 4]], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[\"Corby\", 4, 9, 3, 8], [\"Ashby\", 4, 6, 0, 4], [\"Brent\", 4, 3, -3, 5]], \"expected\": [[\"Corby\", 4, 9, 3, 8], [\"Ashby\", 4, 6, 0, 4], [\"Brent\", 4, 3, -3, 5]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.897,"exit_code":0,"observations":[{"actual":[["Ashby",1,3,2,2],["Brent",1,0,-2,0]],"check":"control single win","expected":[["Ashby",1,3,2,2],["Brent",1,0,-2,0]],"passed":true},{"actual":[["Ashby",1,1,0,1],["Brent",1,1,0,1]],"check":"boundary draw","expected":[["Ashby",1,1,0,1],["Brent",1,1,0,1]],"passed":true},{"actual":[["Corby",2,2,0,3],["Brent",1,1,0,2],["Ashby",1,1,0,1]],"check":"boundary goals scored before name","expected":[["Corby",2,2,0,3],["Brent",1,1,0,2],["Ashby",1,1,0,1]],"passed":true},{"actual":[["Corby",1,3,1,2],["Brent",2,3,0,3],["Ashby",2,3,0,3],["Dover",1,0,-1,1]],"check":"boundary head to head decides","expected":[["Corby",1,3,1,2],["Brent",2,3,0,3],["Ashby",2,3,0,3],["Dover",1,0,-1,1]],"passed":true},{"actual":[["Ashby",0,0,0,0],["Corby",0,0,0,0]],"check":"control no matches","expected":[["Ashby",0,0,0,0],["Corby",0,0,0,0]],"passed":true},{"actual":[["Dover",2,6,5,6],["Brent",1,3,1,2],["Ashby",3,3,-1,3],["Corby",3,3,-2,3],["Epsom",1,0,-3,0]],"check":"regression: criteria order","expected":[["Dover",2,6,5,6],["Brent",1,3,1,2],["Ashby",3,3,-1,3],["Corby",3,3,-2,3],["Epsom",1,0,-3,0]],"passed":true},{"actual":[["Brent",2,3,0,3],["Ashby",2,3,0,2],["Corby",2,3,0,2]],"check":"regression: criteria order","expected":[["Brent",2,3,0,3],["Ashby",2,3,0,2],["Corby",2,3,0,2]],"passed":true},{"actual":[["Corby",4,6,2,7],["Brent",4,5,1,6],["Ashby",4,4,-3,4]],"check":"variant scenario 1","expected":[["Corby",4,6,2,7],["Brent",4,5,1,6],["Ashby",4,4,-3,4]],"passed":true},{"actual":[["Corby",4,9,3,8],["Ashby",4,6,0,4],["Brent",4,3,-3,5]],"check":"variant scenario 2","expected":[["Corby",4,9,3,8],["Ashby",4,6,0,4],["Brent",4,3,-3,5]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single win\", \"actual\": [[\"Ashby\", 1, 3, 2, 2], [\"Brent\", 1, 0, -2, 0]], \"expected\": [[\"Ashby\", 1, 3, 2, 2], [\"Brent\", 1, 0, -2, 0]], \"passed\": true}, {\"check\": \"boundary draw\", \"actual\": [[\"Ashby\", 1, 1, 0, 1], [\"Brent\", 1, 1, 0, 1]], \"expected\": [[\"Ashby\", 1, 1, 0, 1], [\"Brent\", 1, 1, 0, 1]], \"passed\": true}, {\"check\": \"boundary goals scored before name\", \"actual\": [[\"Corby\", 2, 2, 0, 3], [\"Brent\", 1, 1, 0, 2], [\"Ashby\", 1, 1, 0, 1]], \"expected\": [[\"Corby\", 2, 2, 0, 3], [\"Brent\", 1, 1, 0, 2], [\"Ashby\", 1, 1, 0, 1]], \"passed\": true}, {\"check\": \"boundary head to head decides\", \"actual\": [[\"Corby\", 1, 3, 1, 2], [\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 3], [\"Dover\", 1, 0, -1, 1]], \"expected\": [[\"Corby\", 1, 3, 1, 2], [\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 3], [\"Dover\", 1, 0, -1, 1]], \"passed\": true}, {\"check\": \"control no matches\", \"actual\": [[\"Ashby\", 0, 0, 0, 0], [\"Corby\", 0, 0, 0, 0]], \"expected\": [[\"Ashby\", 0, 0, 0, 0], [\"Corby\", 0, 0, 0, 0]], \"passed\": true}, {\"check\": \"regression: criteria order\", \"actual\": [[\"Dover\", 2, 6, 5, 6], [\"Brent\", 1, 3, 1, 2], [\"Ashby\", 3, 3, -1, 3], [\"Corby\", 3, 3, -2, 3], [\"Epsom\", 1, 0, -3, 0]], \"expected\": [[\"Dover\", 2, 6, 5, 6], [\"Brent\", 1, 3, 1, 2], [\"Ashby\", 3, 3, -1, 3], [\"Corby\", 3, 3, -2, 3], [\"Epsom\", 1, 0, -3, 0]], \"passed\": true}, {\"check\": \"regression: criteria order\", \"actual\": [[\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 2], [\"Corby\", 2, 3, 0, 2]], \"expected\": [[\"Brent\", 2, 3, 0, 3], [\"Ashby\", 2, 3, 0, 2], [\"Corby\", 2, 3, 0, 2]], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [[\"Corby\", 4, 6, 2, 7], [\"Brent\", 4, 5, 1, 6], [\"Ashby\", 4, 4, -3, 4]], \"expected\": [[\"Corby\", 4, 6, 2, 7], [\"Brent\", 4, 5, 1, 6], [\"Ashby\", 4, 4, -3, 4]], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[\"Corby\", 4, 9, 3, 8], [\"Ashby\", 4, 6, 0, 4], [\"Brent\", 4, 3, -3, 5]], \"expected\": [[\"Corby\", 4, 9, 3, 8], [\"Ashby\", 4, 6, 0, 4], [\"Brent\", 4, 3, -3, 5]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}