{"abstract":"10.101 is published as 10.10 and ties are split that should be shared.","category":"Sports scoring and tiebreakers","checks":7,"contract":"Sprint results. results rows are [name, time] where time is seconds with up to three decimals, or \"DNF\"/\"DQ\". Times are rounded up to the next hundredth for publication. Rank by rounded time then name; equal rounded times share the place and the next place is skipped (1, 2, 2, 4). DNF athletes follow the finishers in name order with place None and time \"DNF\"; DQ athletes are omitted. Return [place, name, time \"S.hh\"] rows.","evaluation_group":"w2-sports-scoring-athletics-photo-finish-ranking","failed_approach":"Rounding to the nearest hundredth still publishes 10.104 as 10.10.","family":"w2-sports-scoring-athletics-photo-finish-ranking-round-up-hundredths","id":"FA-84266","implementations":{"attempt":{"sha256":"508f07681db5e09668ebd28bdf108533d089993c07386e3dedb3c0132052c4ee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(results):\n    fin = []\n    dnf = []\n    for name, t in results:\n        if t == 'DQ':\n            continue\n        if t == 'DNF':\n            dnf.append(name)\n            continue\n        whole, _, frac = t.partition('.')\n        thous = int(whole) * 1000 + int((frac + '000')[:3])\n        hund = (thous + 5) // 10\n        fin.append((hund, name))\n    fin.sort()\n    out = []\n    for i, (h, name) in enumerate(fin):\n        place = i + 1 if i == 0 or fin[i - 1][0] != h else out[-1][0]\n        out.append([place, name, '%d.%02d' % (h // 100, h % 100)])\n    for name in sorted(dnf):\n        out.append([None, name, 'DNF'])\n    return out\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 distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Fay', '10.2'], ['Cy', '10.26'], ['Dee', '10.245'], ['Eli', '10.234']],),\n   [[1, 'Fay', '10.20'], [2, 'Eli', '10.24'], [3, 'Dee', '10.25'], [4, 'Cy', '10.26']]),\n  ('variant scenario 1',\n   ([['Fay', '10.24'],\n     ['Dee', '10.24'],\n     ['Bo', 'DNF'],\n     ['Cy', 'DNF'],\n     ['Eli', '10.265'],\n     ['Ade', '10.']],),\n   [[1, 'Ade', '10.00'],\n    [2, 'Dee', '10.24'],\n    [2, 'Fay', '10.24'],\n    [4, 'Eli', '10.27'],\n    [None, 'Bo', 'DNF'],\n    [None, 'Cy', 'DNF']]),\n  ('variant scenario 2',\n   ([['Bo', '10.219'], ['Eli', '10.2'], ['Fay', 'DNF']],),\n   [[1, 'Eli', '10.20'], [2, 'Bo', '10.22'], [None, 'Fay', 'DNF']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Dee', '10.666'], ['Ade', '10.674'], ['Fay', '10.676'], ['Eli', '10.66']],),\n   [[1, 'Eli', '10.66'], [2, 'Dee', '10.67'], [3, 'Ade', '10.68'], [3, 'Fay', '10.68']]),\n  ('variant scenario 1',\n   ([['Eli', '9.835'], ['Fay', '9.826'], ['Ade', '9.81'], ['Dee', '9.814']],),\n   [[1, 'Ade', '9.81'], [2, 'Dee', '9.82'], [3, 'Fay', '9.83'], [4, 'Eli', '9.84']]),\n  ('variant scenario 2',\n   ([['Fay', '10.88'], ['Eli', '10.906'], ['Dee', '10.907']],),\n   [[1, 'Fay', '10.88'], [2, 'Dee', '10.91'], [2, 'Eli', '10.91']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Eli', '11.384'], ['Dee', '11.360'], ['Fay', '11.'], ['Bo', '11.377']],),\n   [[1, 'Fay', '11.00'], [2, 'Dee', '11.36'], [3, 'Bo', '11.38'], [4, 'Eli', '11.39']]),\n  ('variant scenario 1',\n   ([['Fay', '11.159'],\n     ['Eli', '11.15'],\n     ['Cy', '11.167'],\n     ['Bo', 'DQ'],\n     ['Ade', '11.14'],\n     ['Dee', '11.146']],),\n   [[1, 'Ade', '11.14'],\n    [2, 'Dee', '11.15'],\n    [2, 'Eli', '11.15'],\n    [4, 'Fay', '11.16'],\n    [5, 'Cy', '11.17']]),\n  ('variant scenario 2',\n   ([['Bo', '10.68'], ['Dee', '10.703'], ['Fay', '10.694'], ['Eli', '10.713']],),\n   [[1, 'Bo', '10.68'], [2, 'Fay', '10.70'], [3, 'Dee', '10.71'], [4, 'Eli', '10.72']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Cy', '11.364'], ['Dee', '11.391'], ['Ade', 'DQ']],),\n   [[1, 'Cy', '11.37'], [2, 'Dee', '11.40']]),\n  ('variant scenario 1',\n   ([['Eli', '9.884'], ['Ade', '9.873'], ['Bo', '9.882'], ['Cy', '9.868'], ['Fay', '9.885']],),\n   [[1, 'Cy', '9.87'],\n    [2, 'Ade', '9.88'],\n    [3, 'Bo', '9.89'],\n    [3, 'Eli', '9.89'],\n    [3, 'Fay', '9.89']]),\n  ('variant scenario 2',\n   ([['Dee', '10.455'], ['Fay', '10.47'], ['Bo', '10.471'], ['Ade', '10.469'], ['Cy', 'DQ']],),\n   [[1, 'Dee', '10.46'], [2, 'Ade', '10.47'], [2, 'Fay', '10.47'], [4, 'Bo', '10.48']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Eli', '11.310'], ['Ade', 'DQ'], ['Fay', '11.34'], ['Dee', '11.323'], ['Cy', 'DNF']],),\n   [[1, 'Eli', '11.31'], [2, 'Dee', '11.33'], [3, 'Fay', '11.34'], [None, 'Cy', 'DNF']]),\n  ('variant scenario 1',\n   ([['Eli', 'DNF'], ['Fay', 'DNF'], ['Dee', 'DQ'], ['Ade', '11.155']],),\n   [[1, 'Ade', '11.16'], [None, 'Eli', 'DNF'], [None, 'Fay', 'DNF']]),\n  ('variant scenario 2',\n   ([['Dee', '11.420'], ['Eli', '11.38'], ['Cy', '11.41'], ['Ade', '11.416'], ['Bo', '11.40']],),\n   [[1, 'Eli', '11.38'],\n    [2, 'Bo', '11.40'],\n    [3, 'Cy', '11.41'],\n    [4, 'Ade', '11.42'],\n    [4, 'Dee', '11.42']])]]\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":"201d29f41df521a2a6bd9047543857a419c58aa8c8e04f083b0bd802f82e7a14","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(results):\n    fin = []\n    dnf = []\n    for name, t in results:\n        if t == 'DQ':\n            continue\n        if t == 'DNF':\n            dnf.append(name)\n            continue\n        whole, _, frac = t.partition('.')\n        thous = int(whole) * 1000 + int((frac + '000')[:3])\n        hund = thous // 10\n        fin.append((hund, name))\n    fin.sort()\n    out = []\n    for i, (h, name) in enumerate(fin):\n        place = i + 1 if i == 0 or fin[i - 1][0] != h else out[-1][0]\n        out.append([place, name, '%d.%02d' % (h // 100, h % 100)])\n    for name in sorted(dnf):\n        out.append([None, name, 'DNF'])\n    return out\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 distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Fay', '10.2'], ['Cy', '10.26'], ['Dee', '10.245'], ['Eli', '10.234']],),\n   [[1, 'Fay', '10.20'], [2, 'Eli', '10.24'], [3, 'Dee', '10.25'], [4, 'Cy', '10.26']]),\n  ('variant scenario 1',\n   ([['Fay', '10.24'],\n     ['Dee', '10.24'],\n     ['Bo', 'DNF'],\n     ['Cy', 'DNF'],\n     ['Eli', '10.265'],\n     ['Ade', '10.']],),\n   [[1, 'Ade', '10.00'],\n    [2, 'Dee', '10.24'],\n    [2, 'Fay', '10.24'],\n    [4, 'Eli', '10.27'],\n    [None, 'Bo', 'DNF'],\n    [None, 'Cy', 'DNF']]),\n  ('variant scenario 2',\n   ([['Bo', '10.219'], ['Eli', '10.2'], ['Fay', 'DNF']],),\n   [[1, 'Eli', '10.20'], [2, 'Bo', '10.22'], [None, 'Fay', 'DNF']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Dee', '10.666'], ['Ade', '10.674'], ['Fay', '10.676'], ['Eli', '10.66']],),\n   [[1, 'Eli', '10.66'], [2, 'Dee', '10.67'], [3, 'Ade', '10.68'], [3, 'Fay', '10.68']]),\n  ('variant scenario 1',\n   ([['Eli', '9.835'], ['Fay', '9.826'], ['Ade', '9.81'], ['Dee', '9.814']],),\n   [[1, 'Ade', '9.81'], [2, 'Dee', '9.82'], [3, 'Fay', '9.83'], [4, 'Eli', '9.84']]),\n  ('variant scenario 2',\n   ([['Fay', '10.88'], ['Eli', '10.906'], ['Dee', '10.907']],),\n   [[1, 'Fay', '10.88'], [2, 'Dee', '10.91'], [2, 'Eli', '10.91']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Eli', '11.384'], ['Dee', '11.360'], ['Fay', '11.'], ['Bo', '11.377']],),\n   [[1, 'Fay', '11.00'], [2, 'Dee', '11.36'], [3, 'Bo', '11.38'], [4, 'Eli', '11.39']]),\n  ('variant scenario 1',\n   ([['Fay', '11.159'],\n     ['Eli', '11.15'],\n     ['Cy', '11.167'],\n     ['Bo', 'DQ'],\n     ['Ade', '11.14'],\n     ['Dee', '11.146']],),\n   [[1, 'Ade', '11.14'],\n    [2, 'Dee', '11.15'],\n    [2, 'Eli', '11.15'],\n    [4, 'Fay', '11.16'],\n    [5, 'Cy', '11.17']]),\n  ('variant scenario 2',\n   ([['Bo', '10.68'], ['Dee', '10.703'], ['Fay', '10.694'], ['Eli', '10.713']],),\n   [[1, 'Bo', '10.68'], [2, 'Fay', '10.70'], [3, 'Dee', '10.71'], [4, 'Eli', '10.72']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Cy', '11.364'], ['Dee', '11.391'], ['Ade', 'DQ']],),\n   [[1, 'Cy', '11.37'], [2, 'Dee', '11.40']]),\n  ('variant scenario 1',\n   ([['Eli', '9.884'], ['Ade', '9.873'], ['Bo', '9.882'], ['Cy', '9.868'], ['Fay', '9.885']],),\n   [[1, 'Cy', '9.87'],\n    [2, 'Ade', '9.88'],\n    [3, 'Bo', '9.89'],\n    [3, 'Eli', '9.89'],\n    [3, 'Fay', '9.89']]),\n  ('variant scenario 2',\n   ([['Dee', '10.455'], ['Fay', '10.47'], ['Bo', '10.471'], ['Ade', '10.469'], ['Cy', 'DQ']],),\n   [[1, 'Dee', '10.46'], [2, 'Ade', '10.47'], [2, 'Fay', '10.47'], [4, 'Bo', '10.48']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Eli', '11.310'], ['Ade', 'DQ'], ['Fay', '11.34'], ['Dee', '11.323'], ['Cy', 'DNF']],),\n   [[1, 'Eli', '11.31'], [2, 'Dee', '11.33'], [3, 'Fay', '11.34'], [None, 'Cy', 'DNF']]),\n  ('variant scenario 1',\n   ([['Eli', 'DNF'], ['Fay', 'DNF'], ['Dee', 'DQ'], ['Ade', '11.155']],),\n   [[1, 'Ade', '11.16'], [None, 'Eli', 'DNF'], [None, 'Fay', 'DNF']]),\n  ('variant scenario 2',\n   ([['Dee', '11.420'], ['Eli', '11.38'], ['Cy', '11.41'], ['Ade', '11.416'], ['Bo', '11.40']],),\n   [[1, 'Eli', '11.38'],\n    [2, 'Bo', '11.40'],\n    [3, 'Cy', '11.41'],\n    [4, 'Ade', '11.42'],\n    [4, 'Dee', '11.42']])]]\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":"0bf1ec8d09fd24119fb440f395a2533ba0c88b1bcf855bd6bfd9f3a7d83aaa4e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(results):\n    fin = []\n    dnf = []\n    for name, t in results:\n        if t == 'DQ':\n            continue\n        if t == 'DNF':\n            dnf.append(name)\n            continue\n        whole, _, frac = t.partition('.')\n        thous = int(whole) * 1000 + int((frac + '000')[:3])\n        hund = -(-thous // 10)\n        fin.append((hund, name))\n    fin.sort()\n    out = []\n    for i, (h, name) in enumerate(fin):\n        place = i + 1 if i == 0 or fin[i - 1][0] != h else out[-1][0]\n        out.append([place, name, '%d.%02d' % (h // 100, h % 100)])\n    for name in sorted(dnf):\n        out.append([None, name, 'DNF'])\n    return out\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 distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Fay', '10.2'], ['Cy', '10.26'], ['Dee', '10.245'], ['Eli', '10.234']],),\n   [[1, 'Fay', '10.20'], [2, 'Eli', '10.24'], [3, 'Dee', '10.25'], [4, 'Cy', '10.26']]),\n  ('variant scenario 1',\n   ([['Fay', '10.24'],\n     ['Dee', '10.24'],\n     ['Bo', 'DNF'],\n     ['Cy', 'DNF'],\n     ['Eli', '10.265'],\n     ['Ade', '10.']],),\n   [[1, 'Ade', '10.00'],\n    [2, 'Dee', '10.24'],\n    [2, 'Fay', '10.24'],\n    [4, 'Eli', '10.27'],\n    [None, 'Bo', 'DNF'],\n    [None, 'Cy', 'DNF']]),\n  ('variant scenario 2',\n   ([['Bo', '10.219'], ['Eli', '10.2'], ['Fay', 'DNF']],),\n   [[1, 'Eli', '10.20'], [2, 'Bo', '10.22'], [None, 'Fay', 'DNF']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Dee', '10.666'], ['Ade', '10.674'], ['Fay', '10.676'], ['Eli', '10.66']],),\n   [[1, 'Eli', '10.66'], [2, 'Dee', '10.67'], [3, 'Ade', '10.68'], [3, 'Fay', '10.68']]),\n  ('variant scenario 1',\n   ([['Eli', '9.835'], ['Fay', '9.826'], ['Ade', '9.81'], ['Dee', '9.814']],),\n   [[1, 'Ade', '9.81'], [2, 'Dee', '9.82'], [3, 'Fay', '9.83'], [4, 'Eli', '9.84']]),\n  ('variant scenario 2',\n   ([['Fay', '10.88'], ['Eli', '10.906'], ['Dee', '10.907']],),\n   [[1, 'Fay', '10.88'], [2, 'Dee', '10.91'], [2, 'Eli', '10.91']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Eli', '11.384'], ['Dee', '11.360'], ['Fay', '11.'], ['Bo', '11.377']],),\n   [[1, 'Fay', '11.00'], [2, 'Dee', '11.36'], [3, 'Bo', '11.38'], [4, 'Eli', '11.39']]),\n  ('variant scenario 1',\n   ([['Fay', '11.159'],\n     ['Eli', '11.15'],\n     ['Cy', '11.167'],\n     ['Bo', 'DQ'],\n     ['Ade', '11.14'],\n     ['Dee', '11.146']],),\n   [[1, 'Ade', '11.14'],\n    [2, 'Dee', '11.15'],\n    [2, 'Eli', '11.15'],\n    [4, 'Fay', '11.16'],\n    [5, 'Cy', '11.17']]),\n  ('variant scenario 2',\n   ([['Bo', '10.68'], ['Dee', '10.703'], ['Fay', '10.694'], ['Eli', '10.713']],),\n   [[1, 'Bo', '10.68'], [2, 'Fay', '10.70'], [3, 'Dee', '10.71'], [4, 'Eli', '10.72']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Cy', '11.364'], ['Dee', '11.391'], ['Ade', 'DQ']],),\n   [[1, 'Cy', '11.37'], [2, 'Dee', '11.40']]),\n  ('variant scenario 1',\n   ([['Eli', '9.884'], ['Ade', '9.873'], ['Bo', '9.882'], ['Cy', '9.868'], ['Fay', '9.885']],),\n   [[1, 'Cy', '9.87'],\n    [2, 'Ade', '9.88'],\n    [3, 'Bo', '9.89'],\n    [3, 'Eli', '9.89'],\n    [3, 'Fay', '9.89']]),\n  ('variant scenario 2',\n   ([['Dee', '10.455'], ['Fay', '10.47'], ['Bo', '10.471'], ['Ade', '10.469'], ['Cy', 'DQ']],),\n   [[1, 'Dee', '10.46'], [2, 'Ade', '10.47'], [2, 'Fay', '10.47'], [4, 'Bo', '10.48']])],\n [('control distinct times',\n   ([['Bo', '10.12'], ['Ade', '10.15']],),\n   [[1, 'Bo', '10.12'], [2, 'Ade', '10.15']]),\n  ('boundary thousandth rounds up', ([['Cy', '9.991']],), [[1, 'Cy', '10.00']]),\n  ('boundary shared place skips next',\n   ([['Ade', '10.101'], ['Bo', '10.11'], ['Cy', '10.2']],),\n   [[1, 'Ade', '10.11'], [1, 'Bo', '10.11'], [3, 'Cy', '10.20']]),\n  ('control dnf and dq',\n   ([['Eli', 'DNF'], ['Dee', '11.0'], ['Fay', 'DQ']],),\n   [[1, 'Dee', '11.00'], [None, 'Eli', 'DNF']]),\n  ('regression: round up hundredths',\n   ([['Eli', '11.310'], ['Ade', 'DQ'], ['Fay', '11.34'], ['Dee', '11.323'], ['Cy', 'DNF']],),\n   [[1, 'Eli', '11.31'], [2, 'Dee', '11.33'], [3, 'Fay', '11.34'], [None, 'Cy', 'DNF']]),\n  ('variant scenario 1',\n   ([['Eli', 'DNF'], ['Fay', 'DNF'], ['Dee', 'DQ'], ['Ade', '11.155']],),\n   [[1, 'Ade', '11.16'], [None, 'Eli', 'DNF'], [None, 'Fay', 'DNF']]),\n  ('variant scenario 2',\n   ([['Dee', '11.420'], ['Eli', '11.38'], ['Cy', '11.41'], ['Ade', '11.416'], ['Bo', '11.40']],),\n   [[1, 'Eli', '11.38'],\n    [2, 'Bo', '11.40'],\n    [3, 'Cy', '11.41'],\n    [4, 'Ade', '11.42'],\n    [4, 'Dee', '11.42']])]]\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-athletics-photo-finish-ranking-round-up-hundredths","generated_at":"2026-09-29T14:50:29.173447+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Result feeds publish hundredths from fully automatic timing and must rank ties consistently.","repair":"Round up to the next hundredth.","root_cause":"Thousandths are converted to hundredths with floor division.","sha256":"8c8e0474a83d28d892de3de9b7f2237a6a839d0ce92dca4983cf5d61999e1da7","title":"Timing truncated instead of rounded up · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.337,"exit_code":1,"observations":[{"actual":[[1,"Bo","10.12"],[2,"Ade","10.15"]],"check":"control distinct times","expected":[[1,"Bo","10.12"],[2,"Ade","10.15"]],"passed":true},{"actual":[[1,"Cy","9.99"]],"check":"boundary thousandth rounds up","expected":[[1,"Cy","10.00"]],"passed":false},{"actual":[[1,"Ade","10.10"],[2,"Bo","10.11"],[3,"Cy","10.20"]],"check":"boundary shared place skips next","expected":[[1,"Ade","10.11"],[1,"Bo","10.11"],[3,"Cy","10.20"]],"passed":false},{"actual":[[1,"Dee","11.00"],[null,"Eli","DNF"]],"check":"control dnf and dq","expected":[[1,"Dee","11.00"],[null,"Eli","DNF"]],"passed":true},{"actual":[[1,"Fay","10.20"],[2,"Eli","10.23"],[3,"Dee","10.25"],[4,"Cy","10.26"]],"check":"regression: round up hundredths","expected":[[1,"Fay","10.20"],[2,"Eli","10.24"],[3,"Dee","10.25"],[4,"Cy","10.26"]],"passed":false},{"actual":[[1,"Ade","10.00"],[2,"Dee","10.24"],[2,"Fay","10.24"],[4,"Eli","10.27"],[null,"Bo","DNF"],[null,"Cy","DNF"]],"check":"variant scenario 1","expected":[[1,"Ade","10.00"],[2,"Dee","10.24"],[2,"Fay","10.24"],[4,"Eli","10.27"],[null,"Bo","DNF"],[null,"Cy","DNF"]],"passed":true},{"actual":[[1,"Eli","10.20"],[2,"Bo","10.22"],[null,"Fay","DNF"]],"check":"variant scenario 2","expected":[[1,"Eli","10.20"],[2,"Bo","10.22"],[null,"Fay","DNF"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control distinct times\", \"actual\": [[1, \"Bo\", \"10.12\"], [2, \"Ade\", \"10.15\"]], \"expected\": [[1, \"Bo\", \"10.12\"], [2, \"Ade\", \"10.15\"]], \"passed\": true}, {\"check\": \"boundary thousandth rounds up\", \"actual\": [[1, \"Cy\", \"9.99\"]], \"expected\": [[1, \"Cy\", \"10.00\"]], \"passed\": false}, {\"check\": \"boundary shared place skips next\", \"actual\": [[1, \"Ade\", \"10.10\"], [2, \"Bo\", \"10.11\"], [3, \"Cy\", \"10.20\"]], \"expected\": [[1, \"Ade\", \"10.11\"], [1, \"Bo\", \"10.11\"], [3, \"Cy\", \"10.20\"]], \"passed\": false}, {\"check\": \"control dnf and dq\", \"actual\": [[1, \"Dee\", \"11.00\"], [null, \"Eli\", \"DNF\"]], \"expected\": [[1, \"Dee\", \"11.00\"], [null, \"Eli\", \"DNF\"]], \"passed\": true}, {\"check\": \"regression: round up hundredths\", \"actual\": [[1, \"Fay\", \"10.20\"], [2, \"Eli\", \"10.23\"], [3, \"Dee\", \"10.25\"], [4, \"Cy\", \"10.26\"]], \"expected\": [[1, \"Fay\", \"10.20\"], [2, \"Eli\", \"10.24\"], [3, \"Dee\", \"10.25\"], [4, \"Cy\", \"10.26\"]], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[1, \"Ade\", \"10.00\"], [2, \"Dee\", \"10.24\"], [2, \"Fay\", \"10.24\"], [4, \"Eli\", \"10.27\"], [null, \"Bo\", \"DNF\"], [null, \"Cy\", \"DNF\"]], \"expected\": [[1, \"Ade\", \"10.00\"], [2, \"Dee\", \"10.24\"], [2, \"Fay\", \"10.24\"], [4, \"Eli\", \"10.27\"], [null, \"Bo\", \"DNF\"], [null, \"Cy\", \"DNF\"]], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[1, \"Eli\", \"10.20\"], [2, \"Bo\", \"10.22\"], [null, \"Fay\", \"DNF\"]], \"expected\": [[1, \"Eli\", \"10.20\"], [2, \"Bo\", \"10.22\"], [null, \"Fay\", \"DNF\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.936,"exit_code":1,"observations":[{"actual":[[1,"Bo","10.12"],[2,"Ade","10.15"]],"check":"control distinct times","expected":[[1,"Bo","10.12"],[2,"Ade","10.15"]],"passed":true},{"actual":[[1,"Cy","9.99"]],"check":"boundary thousandth rounds up","expected":[[1,"Cy","10.00"]],"passed":false},{"actual":[[1,"Ade","10.10"],[2,"Bo","10.11"],[3,"Cy","10.20"]],"check":"boundary shared place skips next","expected":[[1,"Ade","10.11"],[1,"Bo","10.11"],[3,"Cy","10.20"]],"passed":false},{"actual":[[1,"Dee","11.00"],[null,"Eli","DNF"]],"check":"control dnf and dq","expected":[[1,"Dee","11.00"],[null,"Eli","DNF"]],"passed":true},{"actual":[[1,"Fay","10.20"],[2,"Eli","10.23"],[3,"Dee","10.24"],[4,"Cy","10.26"]],"check":"regression: round up hundredths","expected":[[1,"Fay","10.20"],[2,"Eli","10.24"],[3,"Dee","10.25"],[4,"Cy","10.26"]],"passed":false},{"actual":[[1,"Ade","10.00"],[2,"Dee","10.24"],[2,"Fay","10.24"],[4,"Eli","10.26"],[null,"Bo","DNF"],[null,"Cy","DNF"]],"check":"variant scenario 1","expected":[[1,"Ade","10.00"],[2,"Dee","10.24"],[2,"Fay","10.24"],[4,"Eli","10.27"],[null,"Bo","DNF"],[null,"Cy","DNF"]],"passed":false},{"actual":[[1,"Eli","10.20"],[2,"Bo","10.21"],[null,"Fay","DNF"]],"check":"variant scenario 2","expected":[[1,"Eli","10.20"],[2,"Bo","10.22"],[null,"Fay","DNF"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control distinct times\", \"actual\": [[1, \"Bo\", \"10.12\"], [2, \"Ade\", \"10.15\"]], \"expected\": [[1, \"Bo\", \"10.12\"], [2, \"Ade\", \"10.15\"]], \"passed\": true}, {\"check\": \"boundary thousandth rounds up\", \"actual\": [[1, \"Cy\", \"9.99\"]], \"expected\": [[1, \"Cy\", \"10.00\"]], \"passed\": false}, {\"check\": \"boundary shared place skips next\", \"actual\": [[1, \"Ade\", \"10.10\"], [2, \"Bo\", \"10.11\"], [3, \"Cy\", \"10.20\"]], \"expected\": [[1, \"Ade\", \"10.11\"], [1, \"Bo\", \"10.11\"], [3, \"Cy\", \"10.20\"]], \"passed\": false}, {\"check\": \"control dnf and dq\", \"actual\": [[1, \"Dee\", \"11.00\"], [null, \"Eli\", \"DNF\"]], \"expected\": [[1, \"Dee\", \"11.00\"], [null, \"Eli\", \"DNF\"]], \"passed\": true}, {\"check\": \"regression: round up hundredths\", \"actual\": [[1, \"Fay\", \"10.20\"], [2, \"Eli\", \"10.23\"], [3, \"Dee\", \"10.24\"], [4, \"Cy\", \"10.26\"]], \"expected\": [[1, \"Fay\", \"10.20\"], [2, \"Eli\", \"10.24\"], [3, \"Dee\", \"10.25\"], [4, \"Cy\", \"10.26\"]], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [[1, \"Ade\", \"10.00\"], [2, \"Dee\", \"10.24\"], [2, \"Fay\", \"10.24\"], [4, \"Eli\", \"10.26\"], [null, \"Bo\", \"DNF\"], [null, \"Cy\", \"DNF\"]], \"expected\": [[1, \"Ade\", \"10.00\"], [2, \"Dee\", \"10.24\"], [2, \"Fay\", \"10.24\"], [4, \"Eli\", \"10.27\"], [null, \"Bo\", \"DNF\"], [null, \"Cy\", \"DNF\"]], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [[1, \"Eli\", \"10.20\"], [2, \"Bo\", \"10.21\"], [null, \"Fay\", \"DNF\"]], \"expected\": [[1, \"Eli\", \"10.20\"], [2, \"Bo\", \"10.22\"], [null, \"Fay\", \"DNF\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.597,"exit_code":0,"observations":[{"actual":[[1,"Bo","10.12"],[2,"Ade","10.15"]],"check":"control distinct times","expected":[[1,"Bo","10.12"],[2,"Ade","10.15"]],"passed":true},{"actual":[[1,"Cy","10.00"]],"check":"boundary thousandth rounds up","expected":[[1,"Cy","10.00"]],"passed":true},{"actual":[[1,"Ade","10.11"],[1,"Bo","10.11"],[3,"Cy","10.20"]],"check":"boundary shared place skips next","expected":[[1,"Ade","10.11"],[1,"Bo","10.11"],[3,"Cy","10.20"]],"passed":true},{"actual":[[1,"Dee","11.00"],[null,"Eli","DNF"]],"check":"control dnf and dq","expected":[[1,"Dee","11.00"],[null,"Eli","DNF"]],"passed":true},{"actual":[[1,"Fay","10.20"],[2,"Eli","10.24"],[3,"Dee","10.25"],[4,"Cy","10.26"]],"check":"regression: round up hundredths","expected":[[1,"Fay","10.20"],[2,"Eli","10.24"],[3,"Dee","10.25"],[4,"Cy","10.26"]],"passed":true},{"actual":[[1,"Ade","10.00"],[2,"Dee","10.24"],[2,"Fay","10.24"],[4,"Eli","10.27"],[null,"Bo","DNF"],[null,"Cy","DNF"]],"check":"variant scenario 1","expected":[[1,"Ade","10.00"],[2,"Dee","10.24"],[2,"Fay","10.24"],[4,"Eli","10.27"],[null,"Bo","DNF"],[null,"Cy","DNF"]],"passed":true},{"actual":[[1,"Eli","10.20"],[2,"Bo","10.22"],[null,"Fay","DNF"]],"check":"variant scenario 2","expected":[[1,"Eli","10.20"],[2,"Bo","10.22"],[null,"Fay","DNF"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control distinct times\", \"actual\": [[1, \"Bo\", \"10.12\"], [2, \"Ade\", \"10.15\"]], \"expected\": [[1, \"Bo\", \"10.12\"], [2, \"Ade\", \"10.15\"]], \"passed\": true}, {\"check\": \"boundary thousandth rounds up\", \"actual\": [[1, \"Cy\", \"10.00\"]], \"expected\": [[1, \"Cy\", \"10.00\"]], \"passed\": true}, {\"check\": \"boundary shared place skips next\", \"actual\": [[1, \"Ade\", \"10.11\"], [1, \"Bo\", \"10.11\"], [3, \"Cy\", \"10.20\"]], \"expected\": [[1, \"Ade\", \"10.11\"], [1, \"Bo\", \"10.11\"], [3, \"Cy\", \"10.20\"]], \"passed\": true}, {\"check\": \"control dnf and dq\", \"actual\": [[1, \"Dee\", \"11.00\"], [null, \"Eli\", \"DNF\"]], \"expected\": [[1, \"Dee\", \"11.00\"], [null, \"Eli\", \"DNF\"]], \"passed\": true}, {\"check\": \"regression: round up hundredths\", \"actual\": [[1, \"Fay\", \"10.20\"], [2, \"Eli\", \"10.24\"], [3, \"Dee\", \"10.25\"], [4, \"Cy\", \"10.26\"]], \"expected\": [[1, \"Fay\", \"10.20\"], [2, \"Eli\", \"10.24\"], [3, \"Dee\", \"10.25\"], [4, \"Cy\", \"10.26\"]], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [[1, \"Ade\", \"10.00\"], [2, \"Dee\", \"10.24\"], [2, \"Fay\", \"10.24\"], [4, \"Eli\", \"10.27\"], [null, \"Bo\", \"DNF\"], [null, \"Cy\", \"DNF\"]], \"expected\": [[1, \"Ade\", \"10.00\"], [2, \"Dee\", \"10.24\"], [2, \"Fay\", \"10.24\"], [4, \"Eli\", \"10.27\"], [null, \"Bo\", \"DNF\"], [null, \"Cy\", \"DNF\"]], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [[1, \"Eli\", \"10.20\"], [2, \"Bo\", \"10.22\"], [null, \"Fay\", \"DNF\"]], \"expected\": [[1, \"Eli\", \"10.20\"], [2, \"Bo\", \"10.22\"], [null, \"Fay\", \"DNF\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}