{"abstract":"In an odd pot the low winner gets the extra chip.","category":"Poker hand evaluation","checks":8,"contract":"Input: {\"pot\", \"high\": [winners], \"low\": [qualifying low winners, possibly empty], \"order\": [seat order from the button's left]}. With a qualifying low the pot is halved, the odd chip going to the high half; each half is split among its winners with odd chips by seat order. Without a low, high winners scoop. A player winning both halves is paid both. Return {player: chips} sorted.","evaluation_group":"w2-poker_hand_evaluation-hi-lo-pot-split","failed_approach":"Flooring both halves drops the odd chip entirely.","family":"w2-poker_hand_evaluation-hi-lo-pot-split-odd-chip-half","id":"FA-82061","implementations":{"attempt":{"sha256":"61e0fa7d885904935f4632032a06222cd6cc4c3018f0c8799438edbc2c6dea03","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    pot=x['pot']; order=x['order']\n    def split(amount, winners):\n        k=len(winners); share=amount//k; rem=amount-share*k\n        out={w:share for w in winners}\n        for w in [s for s in order if s in winners][:rem]:\n            out[w]+=1\n        return out\n    if x['low']:\n        low_half=high_half=pot//2\n        parts=[split(high_half,x['high']), split(low_half,x['low'])]\n    else:\n        parts=[split(pot,x['high'])]\n    res={}\n    for part in parts:\n        for k,v in part.items():\n            res[k]=res.get(k,0)+v\n    return dict(sorted(res.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"71992b56bbdd7b7327d5f490360aabc5756af8dbf8fd24910062d81ed24989a6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    pot=x['pot']; order=x['order']\n    def split(amount, winners):\n        k=len(winners); share=amount//k; rem=amount-share*k\n        out={w:share for w in winners}\n        for w in [s for s in order if s in winners][:rem]:\n            out[w]+=1\n        return out\n    if x['low']:\n        high_half=pot//2; low_half=pot-high_half\n        parts=[split(high_half,x['high']), split(low_half,x['low'])]\n    else:\n        parts=[split(pot,x['high'])]\n    res={}\n    for part in parts:\n        for k,v in part.items():\n            res[k]=res.get(k,0)+v\n    return dict(sorted(res.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"97cc244f7b5decd7f2ef226153619642926b0770672ef12b9fcd9f49f39393a6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    pot=x['pot']; order=x['order']\n    def split(amount, winners):\n        k=len(winners); share=amount//k; rem=amount-share*k\n        out={w:share for w in winners}\n        for w in [s for s in order if s in winners][:rem]:\n            out[w]+=1\n        return out\n    if x['low']:\n        low_half=pot//2; high_half=pot-low_half\n        parts=[split(high_half,x['high']), split(low_half,x['low'])]\n    else:\n        parts=[split(pot,x['high'])]\n    res={}\n    for part in parts:\n        for k,v in part.items():\n            res[k]=res.get(k,0)+v\n    return dict(sorted(res.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})],\n [('odd pot two winners', {'high': ['a'], 'low': ['b'], 'order': ['a', 'b', 'c'], 'pot': 101},\n   {'a': 51, 'b': 50}),\n  ('no low scoop', {'high': ['a'], 'low': [], 'order': ['a', 'b'], 'pot': 100}, {'a': 100}),\n  ('scoop both halves', {'high': ['a'], 'low': ['a'], 'order': ['a', 'b'], 'pot': 101}, {'a': 101}),\n  ('quartered low', {'high': ['a'], 'low': ['b', 'c'], 'order': ['a', 'b', 'c'], 'pot': 100},\n   {'a': 50, 'b': 25, 'c': 25}),\n  ('high and shared low with scooper',\n   {'high': ['c'], 'low': ['c', 'b'], 'order': ['a', 'b', 'c'], 'pot': 90}, {'b': 23, 'c': 67}),\n  ('even pot', {'high': ['b'], 'low': ['c'], 'order': ['a', 'b', 'c'], 'pot': 80},\n   {'b': 40, 'c': 40}),\n  ('odd pot no low split high', {'high': ['b', 'a'], 'low': [], 'order': ['b', 'a'], 'pot': 51},\n   {'a': 25, 'b': 26}),\n  ('small odd pot', {'high': ['c'], 'low': ['a'], 'order': ['a', 'b', 'c'], 'pot': 7},\n   {'a': 3, 'c': 4})]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'error:' + type(exc).__name__\n    check(label, actual, 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":"A deterministic toy model with an explicitly stated contract; no claim of conformance to any casino or tournament rulebook. 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-poker_hand_evaluation-hi-lo-pot-split-odd-chip-half","generated_at":"2026-09-29T14:50:08.792293+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Hi-lo games halve and quarter pots; the odd chip and scoop rules are frequent disputes.","repair":"Floor the low half and give the remainder to the high half.","root_cause":"The halving floors the high half and gives the remainder to low.","sha256":"93cd3e0b99c0d706af7b1d18310784c032b02e9f2687850b92ed0ed9ee304d70","title":"Odd chip of a hi-lo pot goes to the low half · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.856,"exit_code":1,"observations":[{"actual":{"a":50,"b":50},"check":"odd pot two winners","expected":{"a":51,"b":50},"passed":false},{"actual":{"a":100},"check":"no low scoop","expected":{"a":100},"passed":true},{"actual":{"a":100},"check":"scoop both halves","expected":{"a":101},"passed":false},{"actual":{"a":50,"b":25,"c":25},"check":"quartered low","expected":{"a":50,"b":25,"c":25},"passed":true},{"actual":{"b":23,"c":67},"check":"high and shared low with scooper","expected":{"b":23,"c":67},"passed":true},{"actual":{"b":40,"c":40},"check":"even pot","expected":{"b":40,"c":40},"passed":true},{"actual":{"a":25,"b":26},"check":"odd pot no low split high","expected":{"a":25,"b":26},"passed":true},{"actual":{"a":3,"c":3},"check":"small odd pot","expected":{"a":3,"c":4},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"odd pot two winners\", \"actual\": {\"a\": 50, \"b\": 50}, \"expected\": {\"a\": 51, \"b\": 50}, \"passed\": false}, {\"check\": \"no low scoop\", \"actual\": {\"a\": 100}, \"expected\": {\"a\": 100}, \"passed\": true}, {\"check\": \"scoop both halves\", \"actual\": {\"a\": 100}, \"expected\": {\"a\": 101}, \"passed\": false}, {\"check\": \"quartered low\", \"actual\": {\"a\": 50, \"b\": 25, \"c\": 25}, \"expected\": {\"a\": 50, \"b\": 25, \"c\": 25}, \"passed\": true}, {\"check\": \"high and shared low with scooper\", \"actual\": {\"b\": 23, \"c\": 67}, \"expected\": {\"b\": 23, \"c\": 67}, \"passed\": true}, {\"check\": \"even pot\", \"actual\": {\"b\": 40, \"c\": 40}, \"expected\": {\"b\": 40, \"c\": 40}, \"passed\": true}, {\"check\": \"odd pot no low split high\", \"actual\": {\"a\": 25, \"b\": 26}, \"expected\": {\"a\": 25, \"b\": 26}, \"passed\": true}, {\"check\": \"small odd pot\", \"actual\": {\"a\": 3, \"c\": 3}, \"expected\": {\"a\": 3, \"c\": 4}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.637,"exit_code":1,"observations":[{"actual":{"a":50,"b":51},"check":"odd pot two winners","expected":{"a":51,"b":50},"passed":false},{"actual":{"a":100},"check":"no low scoop","expected":{"a":100},"passed":true},{"actual":{"a":101},"check":"scoop both halves","expected":{"a":101},"passed":true},{"actual":{"a":50,"b":25,"c":25},"check":"quartered low","expected":{"a":50,"b":25,"c":25},"passed":true},{"actual":{"b":23,"c":67},"check":"high and shared low with scooper","expected":{"b":23,"c":67},"passed":true},{"actual":{"b":40,"c":40},"check":"even pot","expected":{"b":40,"c":40},"passed":true},{"actual":{"a":25,"b":26},"check":"odd pot no low split high","expected":{"a":25,"b":26},"passed":true},{"actual":{"a":4,"c":3},"check":"small odd pot","expected":{"a":3,"c":4},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"odd pot two winners\", \"actual\": {\"a\": 50, \"b\": 51}, \"expected\": {\"a\": 51, \"b\": 50}, \"passed\": false}, {\"check\": \"no low scoop\", \"actual\": {\"a\": 100}, \"expected\": {\"a\": 100}, \"passed\": true}, {\"check\": \"scoop both halves\", \"actual\": {\"a\": 101}, \"expected\": {\"a\": 101}, \"passed\": true}, {\"check\": \"quartered low\", \"actual\": {\"a\": 50, \"b\": 25, \"c\": 25}, \"expected\": {\"a\": 50, \"b\": 25, \"c\": 25}, \"passed\": true}, {\"check\": \"high and shared low with scooper\", \"actual\": {\"b\": 23, \"c\": 67}, \"expected\": {\"b\": 23, \"c\": 67}, \"passed\": true}, {\"check\": \"even pot\", \"actual\": {\"b\": 40, \"c\": 40}, \"expected\": {\"b\": 40, \"c\": 40}, \"passed\": true}, {\"check\": \"odd pot no low split high\", \"actual\": {\"a\": 25, \"b\": 26}, \"expected\": {\"a\": 25, \"b\": 26}, \"passed\": true}, {\"check\": \"small odd pot\", \"actual\": {\"a\": 4, \"c\": 3}, \"expected\": {\"a\": 3, \"c\": 4}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.538,"exit_code":0,"observations":[{"actual":{"a":51,"b":50},"check":"odd pot two winners","expected":{"a":51,"b":50},"passed":true},{"actual":{"a":100},"check":"no low scoop","expected":{"a":100},"passed":true},{"actual":{"a":101},"check":"scoop both halves","expected":{"a":101},"passed":true},{"actual":{"a":50,"b":25,"c":25},"check":"quartered low","expected":{"a":50,"b":25,"c":25},"passed":true},{"actual":{"b":23,"c":67},"check":"high and shared low with scooper","expected":{"b":23,"c":67},"passed":true},{"actual":{"b":40,"c":40},"check":"even pot","expected":{"b":40,"c":40},"passed":true},{"actual":{"a":25,"b":26},"check":"odd pot no low split high","expected":{"a":25,"b":26},"passed":true},{"actual":{"a":3,"c":4},"check":"small odd pot","expected":{"a":3,"c":4},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"odd pot two winners\", \"actual\": {\"a\": 51, \"b\": 50}, \"expected\": {\"a\": 51, \"b\": 50}, \"passed\": true}, {\"check\": \"no low scoop\", \"actual\": {\"a\": 100}, \"expected\": {\"a\": 100}, \"passed\": true}, {\"check\": \"scoop both halves\", \"actual\": {\"a\": 101}, \"expected\": {\"a\": 101}, \"passed\": true}, {\"check\": \"quartered low\", \"actual\": {\"a\": 50, \"b\": 25, \"c\": 25}, \"expected\": {\"a\": 50, \"b\": 25, \"c\": 25}, \"passed\": true}, {\"check\": \"high and shared low with scooper\", \"actual\": {\"b\": 23, \"c\": 67}, \"expected\": {\"b\": 23, \"c\": 67}, \"passed\": true}, {\"check\": \"even pot\", \"actual\": {\"b\": 40, \"c\": 40}, \"expected\": {\"b\": 40, \"c\": 40}, \"passed\": true}, {\"check\": \"odd pot no low split high\", \"actual\": {\"a\": 25, \"b\": 26}, \"expected\": {\"a\": 25, \"b\": 26}, \"passed\": true}, {\"check\": \"small odd pot\", \"actual\": {\"a\": 3, \"c\": 4}, \"expected\": {\"a\": 3, \"c\": 4}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}