{"abstract":"Relics without durability are treated as broken and return only scrap.","category":"Game economy crafting balance","checks":8,"contract":"Return rate: common 50%, rare 70%, epic 90%. Condition d/mx with d clamped to mx; max_durability 0 means indestructible (full condition). Durability <= 0 yields {\"scrap\": 1}. Each component amount = floor(count*pct*d/(100*mx)) computed once; rare and epic items return at least 1 of each component; zero amounts are omitted.","evaluation_group":"w2-game-economy-crafting-balance-salvage-return","failed_approach":"Only fixing the divisor keeps the raw durability field, which is meaningless for indestructible items.","family":"w2-game-economy-crafting-balance-salvage-return-indestructible-condition","id":"FA-85886","implementations":{"attempt":{"sha256":"eed2961e6fb382fe8c2e9acea25a8bc452c32c8cc7f3c8176178de7e4d483a89","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(item, components):\n    pct = {'common': 50, 'rare': 70, 'epic': 90}[item['rarity']]\n    mx = item['max_durability']\n    if mx == 0:\n        d, mx = item['durability'], 1\n    else:\n        d = min(item['durability'], mx)\n    if d <= 0:\n        return {'scrap': 1}\n    out = {}\n    for name, count in components.items():\n        amt = count * pct * d // (100 * mx)\n        if item['rarity'] != 'common' and amt < 1:\n            amt = 1\n        if amt:\n            out[name] = amt\n    return dict(sorted(out.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'rare', 'durability': 1, 'max_durability': 0}, {'cloth': 5, 'ingot': 4, 'shard': 1}],\n   {'cloth': 3, 'ingot': 2, 'shard': 1}),\n  ('fault site indestructible condition #2',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'shard': 2, 'ingot': 2, 'thread': 6}],\n   {'ingot': 1, 'shard': 1, 'thread': 3}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'thread': 6, 'shard': 4}],\n   {'shard': 2, 'thread': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'shard': 2, 'ingot': 2, 'thread': 6}],\n   {'ingot': 1, 'shard': 1, 'thread': 3}),\n  ('fault site indestructible condition #2',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'cloth': 6, 'ingot': 2}],\n   {'cloth': 3, 'ingot': 1}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'cloth': 3, 'ingot': 6, 'shard': 3}],\n   {'cloth': 2, 'ingot': 4, 'shard': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'thread': 6, 'shard': 4}],\n   {'shard': 2, 'thread': 3}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'cloth': 6, 'ingot': 6}],\n   {'cloth': 3, 'ingot': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'thread': 6, 'cloth': 1, 'shard': 3}],\n   {'cloth': 1, 'shard': 2, 'thread': 4}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5, 'cloth': 5, 'thread': 3}],\n   {'cloth': 4, 'shard': 4, 'thread': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'epic', 'durability': 1, 'max_durability': 0}, {'shard': 3, 'ingot': 4}],\n   {'ingot': 3, 'shard': 2}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 0}, {'thread': 5, 'ingot': 6}],\n   {'ingot': 3, 'thread': 2}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 0}, {'shard': 2, 'ingot': 5}],\n   {'ingot': 3, 'shard': 1}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1', [{'rarity': 'rare', 'durability': 0, 'max_durability': 100}, {'shard': 5}], {'scrap': 1})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'cloth': 3, 'ingot': 6, 'shard': 3}],\n   {'cloth': 2, 'ingot': 4, 'shard': 2}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'thread': 6, 'cloth': 1, 'shard': 3}],\n   {'cloth': 1, 'shard': 2, 'thread': 4}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'cloth': 6, 'thread': 4, 'ingot': 5}],\n   {'cloth': 5, 'ingot': 4, 'thread': 3}),\n  ('regression indestructible condition #4',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 0}, {'thread': 4}],\n   {'thread': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 100}, {'cloth': 6, 'thread': 1}],\n   {'scrap': 1})]]\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":"5ce142e0853807917122e21dbd9556177744fdd3ab43d8e5a1fe5518b1d6e6f0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(item, components):\n    pct = {'common': 50, 'rare': 70, 'epic': 90}[item['rarity']]\n    mx = item['max_durability']\n    if mx == 0:\n        d, mx = 0, 1\n    else:\n        d = min(item['durability'], mx)\n    if d <= 0:\n        return {'scrap': 1}\n    out = {}\n    for name, count in components.items():\n        amt = count * pct * d // (100 * mx)\n        if item['rarity'] != 'common' and amt < 1:\n            amt = 1\n        if amt:\n            out[name] = amt\n    return dict(sorted(out.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'rare', 'durability': 1, 'max_durability': 0}, {'cloth': 5, 'ingot': 4, 'shard': 1}],\n   {'cloth': 3, 'ingot': 2, 'shard': 1}),\n  ('fault site indestructible condition #2',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'shard': 2, 'ingot': 2, 'thread': 6}],\n   {'ingot': 1, 'shard': 1, 'thread': 3}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'thread': 6, 'shard': 4}],\n   {'shard': 2, 'thread': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'shard': 2, 'ingot': 2, 'thread': 6}],\n   {'ingot': 1, 'shard': 1, 'thread': 3}),\n  ('fault site indestructible condition #2',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'cloth': 6, 'ingot': 2}],\n   {'cloth': 3, 'ingot': 1}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'cloth': 3, 'ingot': 6, 'shard': 3}],\n   {'cloth': 2, 'ingot': 4, 'shard': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'thread': 6, 'shard': 4}],\n   {'shard': 2, 'thread': 3}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'cloth': 6, 'ingot': 6}],\n   {'cloth': 3, 'ingot': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'thread': 6, 'cloth': 1, 'shard': 3}],\n   {'cloth': 1, 'shard': 2, 'thread': 4}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5, 'cloth': 5, 'thread': 3}],\n   {'cloth': 4, 'shard': 4, 'thread': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'epic', 'durability': 1, 'max_durability': 0}, {'shard': 3, 'ingot': 4}],\n   {'ingot': 3, 'shard': 2}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 0}, {'thread': 5, 'ingot': 6}],\n   {'ingot': 3, 'thread': 2}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 0}, {'shard': 2, 'ingot': 5}],\n   {'ingot': 3, 'shard': 1}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1', [{'rarity': 'rare', 'durability': 0, 'max_durability': 100}, {'shard': 5}], {'scrap': 1})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'cloth': 3, 'ingot': 6, 'shard': 3}],\n   {'cloth': 2, 'ingot': 4, 'shard': 2}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'thread': 6, 'cloth': 1, 'shard': 3}],\n   {'cloth': 1, 'shard': 2, 'thread': 4}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'cloth': 6, 'thread': 4, 'ingot': 5}],\n   {'cloth': 5, 'ingot': 4, 'thread': 3}),\n  ('regression indestructible condition #4',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 0}, {'thread': 4}],\n   {'thread': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 100}, {'cloth': 6, 'thread': 1}],\n   {'scrap': 1})]]\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":"f8c9bdc79b6f2d976e3c61317dd71c71f1b78725cc09cebc75711f19d25b8e0a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(item, components):\n    pct = {'common': 50, 'rare': 70, 'epic': 90}[item['rarity']]\n    mx = item['max_durability']\n    if mx == 0:\n        d, mx = 1, 1\n    else:\n        d = min(item['durability'], mx)\n    if d <= 0:\n        return {'scrap': 1}\n    out = {}\n    for name, count in components.items():\n        amt = count * pct * d // (100 * mx)\n        if item['rarity'] != 'common' and amt < 1:\n            amt = 1\n        if amt:\n            out[name] = amt\n    return dict(sorted(out.items()))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'rare', 'durability': 1, 'max_durability': 0}, {'cloth': 5, 'ingot': 4, 'shard': 1}],\n   {'cloth': 3, 'ingot': 2, 'shard': 1}),\n  ('fault site indestructible condition #2',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'shard': 2, 'ingot': 2, 'thread': 6}],\n   {'ingot': 1, 'shard': 1, 'thread': 3}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'thread': 6, 'shard': 4}],\n   {'shard': 2, 'thread': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'shard': 2, 'ingot': 2, 'thread': 6}],\n   {'ingot': 1, 'shard': 1, 'thread': 3}),\n  ('fault site indestructible condition #2',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'cloth': 6, 'ingot': 2}],\n   {'cloth': 3, 'ingot': 1}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'cloth': 3, 'ingot': 6, 'shard': 3}],\n   {'cloth': 2, 'ingot': 4, 'shard': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'thread': 6, 'shard': 4}],\n   {'shard': 2, 'thread': 3}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'common', 'durability': 1, 'max_durability': 0}, {'cloth': 6, 'ingot': 6}],\n   {'cloth': 3, 'ingot': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'thread': 6, 'cloth': 1, 'shard': 3}],\n   {'cloth': 1, 'shard': 2, 'thread': 4}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5, 'cloth': 5, 'thread': 3}],\n   {'cloth': 4, 'shard': 4, 'thread': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 10}, {'thread': 4, 'cloth': 5}],\n   {})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('fault site indestructible condition #1',\n   [{'rarity': 'epic', 'durability': 1, 'max_durability': 0}, {'shard': 3, 'ingot': 4}],\n   {'ingot': 3, 'shard': 2}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 0}, {'cloth': 6}],\n   {'cloth': 3}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'common', 'durability': 3, 'max_durability': 0}, {'thread': 5, 'ingot': 6}],\n   {'ingot': 3, 'thread': 2}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 0}, {'shard': 2, 'ingot': 5}],\n   {'ingot': 3, 'shard': 1}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1', [{'rarity': 'rare', 'durability': 0, 'max_durability': 100}, {'shard': 5}], {'scrap': 1})],\n [('indestructible relic #1',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'shard': 5}],\n   {'shard': 4}),\n  ('regression indestructible condition #1',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'cloth': 3, 'ingot': 6, 'shard': 3}],\n   {'cloth': 2, 'ingot': 4, 'shard': 2}),\n  ('regression indestructible condition #2',\n   [{'rarity': 'rare', 'durability': 5, 'max_durability': 0}, {'thread': 6, 'cloth': 1, 'shard': 3}],\n   {'cloth': 1, 'shard': 2, 'thread': 4}),\n  ('regression indestructible condition #3',\n   [{'rarity': 'epic', 'durability': 0, 'max_durability': 0}, {'cloth': 6, 'thread': 4, 'ingot': 5}],\n   {'cloth': 5, 'ingot': 4, 'thread': 3}),\n  ('regression indestructible condition #4',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 0}, {'thread': 4}],\n   {'thread': 2}),\n  ('over-repaired common #1',\n   [{'rarity': 'common', 'durability': 30, 'max_durability': 20}, {'ingot': 4, 'cloth': 3}],\n   {'cloth': 1, 'ingot': 2}),\n  ('broken rare #1',\n   [{'rarity': 'rare', 'durability': 0, 'max_durability': 40}, {'thread': 2}],\n   {'scrap': 1}),\n  ('control #1',\n   [{'rarity': 'common', 'durability': 0, 'max_durability': 100}, {'cloth': 6, 'thread': 1}],\n   {'scrap': 1})]]\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-salvage-return-indestructible-condition","generated_at":"2026-09-29T14:50:44.440378+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 `if mx == 0:\n    d, mx = 1, 1` at the indestructible condition step.","root_cause":"The indestructible branch sets condition to zero instead of full.","sha256":"a6e88cb2be44dbb7978dcd105f3e781176488e178d6f7ef14822ad336070259e","title":"Salvage component return: Indestructible items salvage as scrap · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.227,"exit_code":1,"observations":[{"actual":{"scrap":1},"check":"indestructible relic #1","expected":{"shard":4},"passed":false},{"actual":{"cloth":3,"ingot":2,"shard":1},"check":"fault site indestructible condition #1","expected":{"cloth":3,"ingot":2,"shard":1},"passed":true},{"actual":{"ingot":1,"shard":1,"thread":3},"check":"fault site indestructible condition #2","expected":{"ingot":1,"shard":1,"thread":3},"passed":true},{"actual":{"scrap":1},"check":"regression indestructible condition #1","expected":{"shard":2,"thread":3},"passed":false},{"actual":{"scrap":1},"check":"regression indestructible condition #2","expected":{"cloth":3},"passed":false},{"actual":{"cloth":1,"ingot":2},"check":"over-repaired common #1","expected":{"cloth":1,"ingot":2},"passed":true},{"actual":{"scrap":1},"check":"broken rare #1","expected":{"scrap":1},"passed":true},{"actual":{},"check":"control #1","expected":{},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"indestructible relic #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"shard\": 4}, \"passed\": false}, {\"check\": \"fault site indestructible condition #1\", \"actual\": {\"cloth\": 3, \"ingot\": 2, \"shard\": 1}, \"expected\": {\"cloth\": 3, \"ingot\": 2, \"shard\": 1}, \"passed\": true}, {\"check\": \"fault site indestructible condition #2\", \"actual\": {\"ingot\": 1, \"shard\": 1, \"thread\": 3}, \"expected\": {\"ingot\": 1, \"shard\": 1, \"thread\": 3}, \"passed\": true}, {\"check\": \"regression indestructible condition #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"shard\": 2, \"thread\": 3}, \"passed\": false}, {\"check\": \"regression indestructible condition #2\", \"actual\": {\"scrap\": 1}, \"expected\": {\"cloth\": 3}, \"passed\": false}, {\"check\": \"over-repaired common #1\", \"actual\": {\"cloth\": 1, \"ingot\": 2}, \"expected\": {\"cloth\": 1, \"ingot\": 2}, \"passed\": true}, {\"check\": \"broken rare #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"scrap\": 1}, \"passed\": true}, {\"check\": \"control #1\", \"actual\": {}, \"expected\": {}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.682,"exit_code":1,"observations":[{"actual":{"scrap":1},"check":"indestructible relic #1","expected":{"shard":4},"passed":false},{"actual":{"scrap":1},"check":"fault site indestructible condition #1","expected":{"cloth":3,"ingot":2,"shard":1},"passed":false},{"actual":{"scrap":1},"check":"fault site indestructible condition #2","expected":{"ingot":1,"shard":1,"thread":3},"passed":false},{"actual":{"scrap":1},"check":"regression indestructible condition #1","expected":{"shard":2,"thread":3},"passed":false},{"actual":{"scrap":1},"check":"regression indestructible condition #2","expected":{"cloth":3},"passed":false},{"actual":{"cloth":1,"ingot":2},"check":"over-repaired common #1","expected":{"cloth":1,"ingot":2},"passed":true},{"actual":{"scrap":1},"check":"broken rare #1","expected":{"scrap":1},"passed":true},{"actual":{},"check":"control #1","expected":{},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"indestructible relic #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"shard\": 4}, \"passed\": false}, {\"check\": \"fault site indestructible condition #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"cloth\": 3, \"ingot\": 2, \"shard\": 1}, \"passed\": false}, {\"check\": \"fault site indestructible condition #2\", \"actual\": {\"scrap\": 1}, \"expected\": {\"ingot\": 1, \"shard\": 1, \"thread\": 3}, \"passed\": false}, {\"check\": \"regression indestructible condition #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"shard\": 2, \"thread\": 3}, \"passed\": false}, {\"check\": \"regression indestructible condition #2\", \"actual\": {\"scrap\": 1}, \"expected\": {\"cloth\": 3}, \"passed\": false}, {\"check\": \"over-repaired common #1\", \"actual\": {\"cloth\": 1, \"ingot\": 2}, \"expected\": {\"cloth\": 1, \"ingot\": 2}, \"passed\": true}, {\"check\": \"broken rare #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"scrap\": 1}, \"passed\": true}, {\"check\": \"control #1\", \"actual\": {}, \"expected\": {}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.589,"exit_code":0,"observations":[{"actual":{"shard":4},"check":"indestructible relic #1","expected":{"shard":4},"passed":true},{"actual":{"cloth":3,"ingot":2,"shard":1},"check":"fault site indestructible condition #1","expected":{"cloth":3,"ingot":2,"shard":1},"passed":true},{"actual":{"ingot":1,"shard":1,"thread":3},"check":"fault site indestructible condition #2","expected":{"ingot":1,"shard":1,"thread":3},"passed":true},{"actual":{"shard":2,"thread":3},"check":"regression indestructible condition #1","expected":{"shard":2,"thread":3},"passed":true},{"actual":{"cloth":3},"check":"regression indestructible condition #2","expected":{"cloth":3},"passed":true},{"actual":{"cloth":1,"ingot":2},"check":"over-repaired common #1","expected":{"cloth":1,"ingot":2},"passed":true},{"actual":{"scrap":1},"check":"broken rare #1","expected":{"scrap":1},"passed":true},{"actual":{},"check":"control #1","expected":{},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"indestructible relic #1\", \"actual\": {\"shard\": 4}, \"expected\": {\"shard\": 4}, \"passed\": true}, {\"check\": \"fault site indestructible condition #1\", \"actual\": {\"cloth\": 3, \"ingot\": 2, \"shard\": 1}, \"expected\": {\"cloth\": 3, \"ingot\": 2, \"shard\": 1}, \"passed\": true}, {\"check\": \"fault site indestructible condition #2\", \"actual\": {\"ingot\": 1, \"shard\": 1, \"thread\": 3}, \"expected\": {\"ingot\": 1, \"shard\": 1, \"thread\": 3}, \"passed\": true}, {\"check\": \"regression indestructible condition #1\", \"actual\": {\"shard\": 2, \"thread\": 3}, \"expected\": {\"shard\": 2, \"thread\": 3}, \"passed\": true}, {\"check\": \"regression indestructible condition #2\", \"actual\": {\"cloth\": 3}, \"expected\": {\"cloth\": 3}, \"passed\": true}, {\"check\": \"over-repaired common #1\", \"actual\": {\"cloth\": 1, \"ingot\": 2}, \"expected\": {\"cloth\": 1, \"ingot\": 2}, \"passed\": true}, {\"check\": \"broken rare #1\", \"actual\": {\"scrap\": 1}, \"expected\": {\"scrap\": 1}, \"passed\": true}, {\"check\": \"control #1\", \"actual\": {}, \"expected\": {}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}