{"abstract":"Items above maximum durability reduce the cost of other repairs.","category":"Game economy crafting balance","checks":8,"contract":"Per item cost = max(0, max-dur) * (ilvl//4 + 1) copper. Discount percentages stack multiplicatively on the exact total; the result is rounded up once to copper. Return [gold, silver, copper] with 100 copper per silver and 100 silver per gold.","evaluation_group":"w2-game-economy-crafting-balance-repair-bill","failed_approach":"Taking the absolute value charges for durability that is not missing.","family":"w2-game-economy-crafting-balance-repair-bill-missing-durability-clamp","id":"FA-86001","implementations":{"attempt":{"sha256":"fbdab3d96118de4e32f00411796cdf5f9af45e9591b1577ca562120d0dc39d23","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(items, discounts):\n    total = 0\n    for it in items:\n        missing = abs(it['max'] - it['dur'])\n        total += missing * (it['ilvl'] // 4 + 1)\n    price = Fraction(total)\n    for pct in discounts:\n        price = price * (100 - pct) / 100\n    cost = math.ceil(price)\n    return [cost // 10000, cost // 100 % 100, cost % 100]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 4, 'dur': 63, 'max': 60},\n     {'ilvl': 130, 'dur': 63, 'max': 60},\n     {'ilvl': 3, 'dur': 60, 'max': 60}],\n    [25, 25]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #2', [[{'ilvl': 111, 'dur': 123, 'max': 120}], []], [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 113, 'dur': 123, 'max': 120}, {'ilvl': 8, 'dur': 103, 'max': 100}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1', [[{'ilvl': 111, 'dur': 123, 'max': 120}], []], [0, 0, 0]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 113, 'dur': 123, 'max': 120}, {'ilvl': 8, 'dur': 103, 'max': 100}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120},\n     {'ilvl': 7, 'dur': 61, 'max': 120},\n     {'ilvl': 3, 'dur': 120, 'max': 120},\n     {'ilvl': 374, 'dur': 38, 'max': 100}],\n    []],\n   [0, 59, 46]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120},\n     {'ilvl': 7, 'dur': 61, 'max': 120},\n     {'ilvl': 3, 'dur': 120, 'max': 120},\n     {'ilvl': 374, 'dur': 38, 'max': 100}],\n    []],\n   [0, 59, 46]),\n  ('regression missing durability clamp #3', [[{'ilvl': 1, 'dur': 63, 'max': 60}], []], [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 8, 'dur': 103, 'max': 100}, {'ilvl': 204, 'dur': 26, 'max': 60}], []],\n   [0, 17, 68]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1', [[{'ilvl': 1, 'dur': 63, 'max': 60}], []], [0, 0, 0]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 8, 'dur': 103, 'max': 100}, {'ilvl': 204, 'dur': 26, 'max': 60}], []],\n   [0, 17, 68]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120}, {'ilvl': 1, 'dur': 123, 'max': 120}], [15]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4', [[{'ilvl': 1, 'dur': 123, 'max': 120}], [25, 20]], [0, 0, 0]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1',\n   [[{'ilvl': 8, 'dur': 18, 'max': 120}, {'ilvl': 3, 'dur': 41, 'max': 60}], [20]],\n   [0, 2, 60])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120}, {'ilvl': 1, 'dur': 123, 'max': 120}], [15]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #2', [[{'ilvl': 1, 'dur': 123, 'max': 120}], [25, 20]], [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 8, 'dur': 63, 'max': 60}, {'ilvl': 3, 'dur': 43, 'max': 40}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 346, 'dur': 120, 'max': 120},\n     {'ilvl': 3, 'dur': 100, 'max': 100},\n     {'ilvl': 1, 'dur': 103, 'max': 100},\n     {'ilvl': 7, 'dur': 43, 'max': 40}],\n    []],\n   [0, 0, 0]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1',\n   [[{'ilvl': 1, 'dur': 120, 'max': 120},\n     {'ilvl': 4, 'dur': 84, 'max': 100},\n     {'ilvl': 3, 'dur': 40, 'max': 40},\n     {'ilvl': 3, 'dur': 0, 'max': 120}],\n    [10, 33]],\n   [0, 0, 92])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"c2ca76cc3f72627d70033bdf0db33c73c30f276e8089c65fe62986776f8b51d3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(items, discounts):\n    total = 0\n    for it in items:\n        missing = it['max'] - it['dur']\n        total += missing * (it['ilvl'] // 4 + 1)\n    price = Fraction(total)\n    for pct in discounts:\n        price = price * (100 - pct) / 100\n    cost = math.ceil(price)\n    return [cost // 10000, cost // 100 % 100, cost % 100]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 4, 'dur': 63, 'max': 60},\n     {'ilvl': 130, 'dur': 63, 'max': 60},\n     {'ilvl': 3, 'dur': 60, 'max': 60}],\n    [25, 25]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #2', [[{'ilvl': 111, 'dur': 123, 'max': 120}], []], [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 113, 'dur': 123, 'max': 120}, {'ilvl': 8, 'dur': 103, 'max': 100}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1', [[{'ilvl': 111, 'dur': 123, 'max': 120}], []], [0, 0, 0]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 113, 'dur': 123, 'max': 120}, {'ilvl': 8, 'dur': 103, 'max': 100}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120},\n     {'ilvl': 7, 'dur': 61, 'max': 120},\n     {'ilvl': 3, 'dur': 120, 'max': 120},\n     {'ilvl': 374, 'dur': 38, 'max': 100}],\n    []],\n   [0, 59, 46]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120},\n     {'ilvl': 7, 'dur': 61, 'max': 120},\n     {'ilvl': 3, 'dur': 120, 'max': 120},\n     {'ilvl': 374, 'dur': 38, 'max': 100}],\n    []],\n   [0, 59, 46]),\n  ('regression missing durability clamp #3', [[{'ilvl': 1, 'dur': 63, 'max': 60}], []], [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 8, 'dur': 103, 'max': 100}, {'ilvl': 204, 'dur': 26, 'max': 60}], []],\n   [0, 17, 68]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1', [[{'ilvl': 1, 'dur': 63, 'max': 60}], []], [0, 0, 0]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 8, 'dur': 103, 'max': 100}, {'ilvl': 204, 'dur': 26, 'max': 60}], []],\n   [0, 17, 68]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120}, {'ilvl': 1, 'dur': 123, 'max': 120}], [15]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4', [[{'ilvl': 1, 'dur': 123, 'max': 120}], [25, 20]], [0, 0, 0]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1',\n   [[{'ilvl': 8, 'dur': 18, 'max': 120}, {'ilvl': 3, 'dur': 41, 'max': 60}], [20]],\n   [0, 2, 60])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120}, {'ilvl': 1, 'dur': 123, 'max': 120}], [15]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #2', [[{'ilvl': 1, 'dur': 123, 'max': 120}], [25, 20]], [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 8, 'dur': 63, 'max': 60}, {'ilvl': 3, 'dur': 43, 'max': 40}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 346, 'dur': 120, 'max': 120},\n     {'ilvl': 3, 'dur': 100, 'max': 100},\n     {'ilvl': 1, 'dur': 103, 'max': 100},\n     {'ilvl': 7, 'dur': 43, 'max': 40}],\n    []],\n   [0, 0, 0]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1',\n   [[{'ilvl': 1, 'dur': 120, 'max': 120},\n     {'ilvl': 4, 'dur': 84, 'max': 100},\n     {'ilvl': 3, 'dur': 40, 'max': 40},\n     {'ilvl': 3, 'dur': 0, 'max': 120}],\n    [10, 33]],\n   [0, 0, 92])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"6a5fb0411184a17750250ef191cb9d1537e23974af6ff698a5683975e17cad0f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(items, discounts):\n    total = 0\n    for it in items:\n        missing = max(0, it['max'] - it['dur'])\n        total += missing * (it['ilvl'] // 4 + 1)\n    price = Fraction(total)\n    for pct in discounts:\n        price = price * (100 - pct) / 100\n    cost = math.ceil(price)\n    return [cost // 10000, cost // 100 % 100, cost % 100]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 4, 'dur': 63, 'max': 60},\n     {'ilvl': 130, 'dur': 63, 'max': 60},\n     {'ilvl': 3, 'dur': 60, 'max': 60}],\n    [25, 25]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #2', [[{'ilvl': 111, 'dur': 123, 'max': 120}], []], [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 113, 'dur': 123, 'max': 120}, {'ilvl': 8, 'dur': 103, 'max': 100}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1', [[{'ilvl': 111, 'dur': 123, 'max': 120}], []], [0, 0, 0]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 113, 'dur': 123, 'max': 120}, {'ilvl': 8, 'dur': 103, 'max': 100}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120},\n     {'ilvl': 7, 'dur': 61, 'max': 120},\n     {'ilvl': 3, 'dur': 120, 'max': 120},\n     {'ilvl': 374, 'dur': 38, 'max': 100}],\n    []],\n   [0, 59, 46]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 69, 'dur': 5, 'max': 40},\n     {'ilvl': 3, 'dur': 49, 'max': 120},\n     {'ilvl': 139, 'dur': 63, 'max': 60}],\n    [15]],\n   [0, 5, 96]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120},\n     {'ilvl': 7, 'dur': 61, 'max': 120},\n     {'ilvl': 3, 'dur': 120, 'max': 120},\n     {'ilvl': 374, 'dur': 38, 'max': 100}],\n    []],\n   [0, 59, 46]),\n  ('regression missing durability clamp #3', [[{'ilvl': 1, 'dur': 63, 'max': 60}], []], [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 8, 'dur': 103, 'max': 100}, {'ilvl': 204, 'dur': 26, 'max': 60}], []],\n   [0, 17, 68]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1', [[{'ilvl': 7, 'dur': 40, 'max': 40}], [20]], [0, 0, 0])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1', [[{'ilvl': 1, 'dur': 63, 'max': 60}], []], [0, 0, 0]),\n  ('regression missing durability clamp #2',\n   [[{'ilvl': 8, 'dur': 103, 'max': 100}, {'ilvl': 204, 'dur': 26, 'max': 60}], []],\n   [0, 17, 68]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120}, {'ilvl': 1, 'dur': 123, 'max': 120}], [15]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4', [[{'ilvl': 1, 'dur': 123, 'max': 120}], [25, 20]], [0, 0, 0]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1',\n   [[{'ilvl': 8, 'dur': 18, 'max': 120}, {'ilvl': 3, 'dur': 41, 'max': 60}], [20]],\n   [0, 2, 60])],\n [('over-repaired piece #1',\n   [[{'ilvl': 20, 'dur': 105, 'max': 100}, {'ilvl': 20, 'dur': 90, 'max': 100}], []],\n   [0, 0, 60]),\n  ('regression missing durability clamp #1',\n   [[{'ilvl': 1, 'dur': 123, 'max': 120}, {'ilvl': 1, 'dur': 123, 'max': 120}], [15]],\n   [0, 0, 0]),\n  ('regression missing durability clamp #2', [[{'ilvl': 1, 'dur': 123, 'max': 120}], [25, 20]], [0, 0, 0]),\n  ('regression missing durability clamp #3',\n   [[{'ilvl': 8, 'dur': 63, 'max': 60}, {'ilvl': 3, 'dur': 43, 'max': 40}], []],\n   [0, 0, 0]),\n  ('regression missing durability clamp #4',\n   [[{'ilvl': 346, 'dur': 120, 'max': 120},\n     {'ilvl': 3, 'dur': 100, 'max': 100},\n     {'ilvl': 1, 'dur': 103, 'max': 100},\n     {'ilvl': 7, 'dur': 43, 'max': 40}],\n    []],\n   [0, 0, 0]),\n  ('two stacked discounts #1', [[{'ilvl': 100, 'dur': 0, 'max': 120}], [10, 20]], [0, 22, 47]),\n  ('nothing to repair #1', [[], [15]], [0, 0, 0]),\n  ('control #1',\n   [[{'ilvl': 1, 'dur': 120, 'max': 120},\n     {'ilvl': 4, 'dur': 84, 'max': 100},\n     {'ilvl': 3, 'dur': 40, 'max': 40},\n     {'ilvl': 3, 'dur': 0, 'max': 120}],\n    [10, 33]],\n   [0, 0, 92])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Deterministic toy contract stipulated for this model; integer or exact arithmetic only, not a reproduction of any specific game engine. 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-game-economy-crafting-balance-repair-bill-missing-durability-clamp","generated_at":"2026-09-29T14:50:45.546746+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Game economies leak or destroy currency when one crafting or pricing rule is off by one boundary, rounding stage or state update; the defect is observable in exact integer outcomes.","repair":"Restore `max(0, it['max'] - it['dur'])` at the missing durability clamp step.","root_cause":"Missing durability is not clamped at zero.","sha256":"a34158cde6111b0e1fc6106318c8a9f035b360ff555727a386c02fd5c9dd7e06","title":"Repair bill: Over-repaired items credit the bill · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.208,"exit_code":1,"observations":[{"actual":[0,0,90],"check":"over-repaired piece #1","expected":[0,0,60],"passed":false},{"actual":[0,0,60],"check":"regression missing durability clamp #1","expected":[0,0,0],"passed":false},{"actual":[0,0,84],"check":"regression missing durability clamp #2","expected":[0,0,0],"passed":false},{"actual":[0,0,96],"check":"regression missing durability clamp #3","expected":[0,0,0],"passed":false},{"actual":[0,6,86],"check":"regression missing durability clamp #4","expected":[0,5,96],"passed":false},{"actual":[0,22,47],"check":"two stacked discounts #1","expected":[0,22,47],"passed":true},{"actual":[0,0,0],"check":"nothing to repair #1","expected":[0,0,0],"passed":true},{"actual":[0,0,0],"check":"control #1","expected":[0,0,0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"over-repaired piece #1\", \"actual\": [0, 0, 90], \"expected\": [0, 0, 60], \"passed\": false}, {\"check\": \"regression missing durability clamp #1\", \"actual\": [0, 0, 60], \"expected\": [0, 0, 0], \"passed\": false}, {\"check\": \"regression missing durability clamp #2\", \"actual\": [0, 0, 84], \"expected\": [0, 0, 0], \"passed\": false}, {\"check\": \"regression missing durability clamp #3\", \"actual\": [0, 0, 96], \"expected\": [0, 0, 0], \"passed\": false}, {\"check\": \"regression missing durability clamp #4\", \"actual\": [0, 6, 86], \"expected\": [0, 5, 96], \"passed\": false}, {\"check\": \"two stacked discounts #1\", \"actual\": [0, 22, 47], \"expected\": [0, 22, 47], \"passed\": true}, {\"check\": \"nothing to repair #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.961,"exit_code":1,"observations":[{"actual":[0,0,30],"check":"over-repaired piece #1","expected":[0,0,60],"passed":false},{"actual":[-1,99,41],"check":"regression missing durability clamp #1","expected":[0,0,0],"passed":false},{"actual":[-1,99,16],"check":"regression missing durability clamp #2","expected":[0,0,0],"passed":false},{"actual":[-1,99,4],"check":"regression missing durability clamp #3","expected":[0,0,0],"passed":false},{"actual":[0,5,7],"check":"regression missing durability clamp #4","expected":[0,5,96],"passed":false},{"actual":[0,22,47],"check":"two stacked discounts #1","expected":[0,22,47],"passed":true},{"actual":[0,0,0],"check":"nothing to repair #1","expected":[0,0,0],"passed":true},{"actual":[0,0,0],"check":"control #1","expected":[0,0,0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"over-repaired piece #1\", \"actual\": [0, 0, 30], \"expected\": [0, 0, 60], \"passed\": false}, {\"check\": \"regression missing durability clamp #1\", \"actual\": [-1, 99, 41], \"expected\": [0, 0, 0], \"passed\": false}, {\"check\": \"regression missing durability clamp #2\", \"actual\": [-1, 99, 16], \"expected\": [0, 0, 0], \"passed\": false}, {\"check\": \"regression missing durability clamp #3\", \"actual\": [-1, 99, 4], \"expected\": [0, 0, 0], \"passed\": false}, {\"check\": \"regression missing durability clamp #4\", \"actual\": [0, 5, 7], \"expected\": [0, 5, 96], \"passed\": false}, {\"check\": \"two stacked discounts #1\", \"actual\": [0, 22, 47], \"expected\": [0, 22, 47], \"passed\": true}, {\"check\": \"nothing to repair #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.063,"exit_code":0,"observations":[{"actual":[0,0,60],"check":"over-repaired piece #1","expected":[0,0,60],"passed":true},{"actual":[0,0,0],"check":"regression missing durability clamp #1","expected":[0,0,0],"passed":true},{"actual":[0,0,0],"check":"regression missing durability clamp #2","expected":[0,0,0],"passed":true},{"actual":[0,0,0],"check":"regression missing durability clamp #3","expected":[0,0,0],"passed":true},{"actual":[0,5,96],"check":"regression missing durability clamp #4","expected":[0,5,96],"passed":true},{"actual":[0,22,47],"check":"two stacked discounts #1","expected":[0,22,47],"passed":true},{"actual":[0,0,0],"check":"nothing to repair #1","expected":[0,0,0],"passed":true},{"actual":[0,0,0],"check":"control #1","expected":[0,0,0],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"over-repaired piece #1\", \"actual\": [0, 0, 60], \"expected\": [0, 0, 60], \"passed\": true}, {\"check\": \"regression missing durability clamp #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}, {\"check\": \"regression missing durability clamp #2\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}, {\"check\": \"regression missing durability clamp #3\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}, {\"check\": \"regression missing durability clamp #4\", \"actual\": [0, 5, 96], \"expected\": [0, 5, 96], \"passed\": true}, {\"check\": \"two stacked discounts #1\", \"actual\": [0, 22, 47], \"expected\": [0, 22, 47], \"passed\": true}, {\"check\": \"nothing to repair #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [0, 0, 0], \"expected\": [0, 0, 0], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}