FAILURE MAP
← Case archive

FA-85866 / Game economy crafting balance / Open access

Batch crafting: Unrelated materials disappear after crafting · case 01

Materials not used by the recipe are wiped from the returned inventory.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The remaining inventory is rebuilt from an empty mapping, so unrelated materials are dropped.

THE FAILURE

The remaining inventory is rebuilt from an empty mapping, so unrelated materials are dropped.

Unsuccessful approach: Copying only the recipe inputs still discards unrelated inventory entries.

Case contract

recipe = {inputs:{material:qty}, output, yield, stack}. Crafts = min(requested, floor(have/qty) per input), 0 when requested <= 0. With skill in [50, inf) every 5th craft adds one bonus item (bonus = crafts//5). made = crafts*yield + bonus, split into full stacks of size stack plus one partial stack. left = whole inventory (all materials) after consuming crafts*qty of each input, sorted by name.

Why this case matters

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.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(recipe, inventory, requested, skill):
    if requested <= 0:
        crafts = 0
    else:
        crafts = requested
        for mat, qty in recipe['inputs'].items():
            crafts = min(crafts, inventory.get(mat, 0) // qty)
    bonus = crafts // 5 if skill >= 50 else 0
    made = crafts * recipe['yield'] + bonus
    cap = recipe['stack']
    stacks = [cap] * (made // cap)
    if made % cap:
        stacks.append(made % cap)
    left = {}
    for mat, qty in recipe['inputs'].items():
        left[mat] = left.get(mat, 0) - crafts * qty
    return {'crafts': crafts, 'made': made, 'stacks': stacks, 'left': dict(sorted(left.items()))}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('exact material multiple #1',
   [{'inputs': {'ore': 3}, 'output': 'bar', 'yield': 1, 'stack': 5}, {'ore': 15}, 10, 50],
   {'crafts': 5, 'made': 6, 'stacks': [5, 1], 'left': {'ore': 0}}),
  ('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('zero request #1',
   [{'inputs': {'hide': 2}, 'output': 'belt', 'yield': 1, 'stack': 3}, {'hide': 8}, 0, 80],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 8}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {'ore': 6}, 2, 51],
   {'crafts': 1, 'made': 3, 'stacks': [3], 'left': {'ore': 2}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'ore': 2, 'wood': 4, 'hide': 2}, 'output': 'blade', 'yield': 3, 'stack': 6},
    {'ore': 20, 'wood': 13, 'hide': 16, 'herb': 2},
    9,
    120],
   {'crafts': 3, 'made': 9, 'stacks': [6, 3], 'left': {'herb': 2, 'hide': 10, 'ore': 14, 'wood': 1}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'gem': 4, 'ore': 2}, 'output': 'blade', 'yield': 1, 'stack': 9},
    {'gem': 15, 'ore': 20, 'herb': 6},
    12,
    120],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'gem': 3, 'herb': 6, 'ore': 14}}),
  ('control #1',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 1, 'stack': 7}, {'gem': 0}, 6, 0],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}}),
  ('control #2',
   [{'inputs': {'gem': 4}, 'output': 'blade', 'yield': 3, 'stack': 7}, {'gem': 0}, 12, 120],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}})],
 [('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('zero request #1',
   [{'inputs': {'hide': 2}, 'output': 'belt', 'yield': 1, 'stack': 3}, {'hide': 8}, 0, 80],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 8}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {'ore': 6}, 2, 51],
   {'crafts': 1, 'made': 3, 'stacks': [3], 'left': {'ore': 2}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'gem': 4, 'ore': 2}, 'output': 'blade', 'yield': 1, 'stack': 9},
    {'gem': 15, 'ore': 20, 'herb': 6},
    12,
    120],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'gem': 3, 'herb': 6, 'ore': 14}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'ore': 4, 'gem': 4, 'hide': 4}, 'output': 'blade', 'yield': 2, 'stack': 7},
    {'ore': 13, 'gem': 22, 'hide': 22, 'herb': 6},
    2,
    120],
   {'crafts': 2, 'made': 4, 'stacks': [4], 'left': {'gem': 14, 'herb': 6, 'hide': 14, 'ore': 5}}),
  ('control #1',
   [{'inputs': {'wood': 1, 'ore': 3}, 'output': 'blade', 'yield': 1, 'stack': 10}, {}, 8, 51],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0, 'wood': 0}}),
  ('control #2',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {}, 5, 100],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0}}),
  ('control #3',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 2, 'stack': 7}, {}, 5, 49],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}})],
 [('zero request #1',
   [{'inputs': {'hide': 2}, 'output': 'belt', 'yield': 1, 'stack': 3}, {'hide': 8}, 0, 80],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 8}}),
  ('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'hide': 3, 'ore': 1}, 'output': 'blade', 'yield': 1, 'stack': 5},
    {'hide': 21, 'ore': 5},
    3,
    99],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'hide': 12, 'ore': 2}}),
  ('fault site inventory carry-over #2',
   [{'inputs': {'wood': 2, 'hide': 3, 'gem': 3}, 'output': 'blade', 'yield': 3, 'stack': 7},
    {'wood': 12, 'hide': 23, 'gem': 11},
    4,
    51],
   {'crafts': 3, 'made': 9, 'stacks': [7, 2], 'left': {'gem': 2, 'hide': 14, 'wood': 6}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'hide': 1, 'wood': 1}, 'output': 'blade', 'yield': 1, 'stack': 6},
    {'wood': 23, 'herb': 9},
    4,
    49],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'herb': 9, 'hide': 0, 'wood': 23}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'wood': 1, 'ore': 3, 'gem': 1}, 'output': 'blade', 'yield': 3, 'stack': 9},
    {'wood': 2, 'ore': 29, 'gem': 5, 'herb': 7},
    11,
    0],
   {'crafts': 2, 'made': 6, 'stacks': [6], 'left': {'gem': 3, 'herb': 7, 'ore': 23, 'wood': 0}}),
  ('control #1',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {}, 5, 100],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0}}),
  ('control #2',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 2, 'stack': 7}, {}, 5, 49],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}})],
 [('exact material multiple #1',
   [{'inputs': {'ore': 3}, 'output': 'bar', 'yield': 1, 'stack': 5}, {'ore': 15}, 10, 50],
   {'crafts': 5, 'made': 6, 'stacks': [5, 1], 'left': {'ore': 0}}),
  ('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'ore': 2, 'wood': 4, 'hide': 2}, 'output': 'blade', 'yield': 3, 'stack': 6},
    {'ore': 20, 'wood': 13, 'hide': 16, 'herb': 2},
    9,
    120],
   {'crafts': 3, 'made': 9, 'stacks': [6, 3], 'left': {'herb': 2, 'hide': 10, 'ore': 14, 'wood': 1}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'gem': 4, 'ore': 2}, 'output': 'blade', 'yield': 1, 'stack': 9},
    {'gem': 15, 'ore': 20, 'herb': 6},
    12,
    120],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'gem': 3, 'herb': 6, 'ore': 14}}),
  ('regression inventory carry-over #3',
   [{'inputs': {'gem': 1, 'hide': 3}, 'output': 'blade', 'yield': 1, 'stack': 4},
    {'gem': 2, 'hide': 5, 'herb': 8},
    12,
    99],
   {'crafts': 1, 'made': 1, 'stacks': [1], 'left': {'gem': 1, 'herb': 8, 'hide': 2}}),
  ('regression inventory carry-over #4',
   [{'inputs': {'hide': 1, 'gem': 2, 'wood': 1}, 'output': 'blade', 'yield': 3, 'stack': 10},
    {'hide': 28, 'gem': 10, 'wood': 23, 'herb': 6},
    8,
    120],
   {'crafts': 5, 'made': 16, 'stacks': [10, 6], 'left': {'gem': 0, 'herb': 6, 'hide': 23, 'wood': 18}}),
  ('control #1',
   [{'inputs': {'wood': 2}, 'output': 'blade', 'yield': 2, 'stack': 5}, {}, 10, 79],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'wood': 0}}),
  ('control #2',
   [{'inputs': {'wood': 3}, 'output': 'blade', 'yield': 3, 'stack': 6}, {}, 6, 50],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'wood': 0}})],
 [('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'ore': 4, 'gem': 4, 'hide': 4}, 'output': 'blade', 'yield': 2, 'stack': 7},
    {'ore': 13, 'gem': 22, 'hide': 22, 'herb': 6},
    2,
    120],
   {'crafts': 2, 'made': 4, 'stacks': [4], 'left': {'gem': 14, 'herb': 6, 'hide': 14, 'ore': 5}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 3, 'stack': 9}, {'gem': 19}, 0, 120],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 19}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'hide': 1, 'gem': 3, 'ore': 2}, 'output': 'blade', 'yield': 2, 'stack': 3},
    {'hide': 4, 'gem': 10, 'ore': 4, 'herb': 8},
    8,
    120],
   {'crafts': 2, 'made': 4, 'stacks': [3, 1], 'left': {'gem': 4, 'herb': 8, 'hide': 2, 'ore': 0}}),
  ('regression inventory carry-over #3',
   [{'inputs': {'gem': 1}, 'output': 'blade', 'yield': 3, 'stack': 6}, {'gem': 27, 'herb': 8}, 7, 101],
   {'crafts': 7, 'made': 22, 'stacks': [6, 6, 6, 4], 'left': {'gem': 20, 'herb': 8}}),
  ('control #1',
   [{'inputs': {'gem': 4}, 'output': 'blade', 'yield': 3, 'stack': 7}, {'gem': 0}, 12, 120],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}}),
  ('control #2',
   [{'inputs': {'hide': 4}, 'output': 'blade', 'yield': 1, 'stack': 5}, {}, 0, 50],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 0}}),
  ('control #3',
   [{'inputs': {'wood': 1, 'ore': 3}, 'output': 'blade', 'yield': 1, 'stack': 10}, {}, 8, 51],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0, 'wood': 0}})]]
for label, args, expected in cases[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
exact material multiple #1{'crafts': 5, 'left': {'ore': -15}, 'made': 6, 'stacks': [5, 1]}{'crafts': 5, 'left': {'ore': 0}, 'made': 6, 'stacks': [5, 1]}Failed
one short of a batch #1{'crafts': 4, 'left': {'ore': -12, 'wood': -8}, 'made': 8, 'stacks': [4, 4]}{'crafts': 4, 'left': {'herb': 2, 'ore': 2, 'wood': 1}, 'made': 8, 'stacks': [4, 4]}Failed
zero request #1{'crafts': 0, 'left': {'hide': 0}, 'made': 0, 'stacks': []}{'crafts': 0, 'left': {'hide': 8}, 'made': 0, 'stacks': []}Failed
fault site inventory carry-over #1{'crafts': 1, 'left': {'ore': -4}, 'made': 3, 'stacks': [3]}{'crafts': 1, 'left': {'ore': 2}, 'made': 3, 'stacks': [3]}Failed
regression inventory carry-over #1{'crafts': 3, 'left': {'hide': -6, 'ore': -6, 'wood': -12}, 'made': 9, 'stacks': [6, 3]}{'crafts': 3, 'left': {'herb': 2, 'hide': 10, 'ore': 14, 'wood': 1}, 'made': 9, 'stacks': [6, 3]}Failed
regression inventory carry-over #2{'crafts': 3, 'left': {'gem': -12, 'ore': -6}, 'made': 3, 'stacks': [3]}{'crafts': 3, 'left': {'gem': 3, 'herb': 6, 'ore': 14}, 'made': 3, 'stacks': [3]}Failed
control #1{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}Passed
control #2{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}Passed

SHA-256 / 7aeffa381d398176c481a47e7b6767dca789cd31e018fb59a1809b02a870dd7b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(recipe, inventory, requested, skill):
    if requested <= 0:
        crafts = 0
    else:
        crafts = requested
        for mat, qty in recipe['inputs'].items():
            crafts = min(crafts, inventory.get(mat, 0) // qty)
    bonus = crafts // 5 if skill >= 50 else 0
    made = crafts * recipe['yield'] + bonus
    cap = recipe['stack']
    stacks = [cap] * (made // cap)
    if made % cap:
        stacks.append(made % cap)
    left = {m: inventory[m] for m in recipe['inputs'] if m in inventory}
    for mat, qty in recipe['inputs'].items():
        left[mat] = left.get(mat, 0) - crafts * qty
    return {'crafts': crafts, 'made': made, 'stacks': stacks, 'left': dict(sorted(left.items()))}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('exact material multiple #1',
   [{'inputs': {'ore': 3}, 'output': 'bar', 'yield': 1, 'stack': 5}, {'ore': 15}, 10, 50],
   {'crafts': 5, 'made': 6, 'stacks': [5, 1], 'left': {'ore': 0}}),
  ('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('zero request #1',
   [{'inputs': {'hide': 2}, 'output': 'belt', 'yield': 1, 'stack': 3}, {'hide': 8}, 0, 80],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 8}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {'ore': 6}, 2, 51],
   {'crafts': 1, 'made': 3, 'stacks': [3], 'left': {'ore': 2}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'ore': 2, 'wood': 4, 'hide': 2}, 'output': 'blade', 'yield': 3, 'stack': 6},
    {'ore': 20, 'wood': 13, 'hide': 16, 'herb': 2},
    9,
    120],
   {'crafts': 3, 'made': 9, 'stacks': [6, 3], 'left': {'herb': 2, 'hide': 10, 'ore': 14, 'wood': 1}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'gem': 4, 'ore': 2}, 'output': 'blade', 'yield': 1, 'stack': 9},
    {'gem': 15, 'ore': 20, 'herb': 6},
    12,
    120],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'gem': 3, 'herb': 6, 'ore': 14}}),
  ('control #1',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 1, 'stack': 7}, {'gem': 0}, 6, 0],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}}),
  ('control #2',
   [{'inputs': {'gem': 4}, 'output': 'blade', 'yield': 3, 'stack': 7}, {'gem': 0}, 12, 120],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}})],
 [('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('zero request #1',
   [{'inputs': {'hide': 2}, 'output': 'belt', 'yield': 1, 'stack': 3}, {'hide': 8}, 0, 80],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 8}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {'ore': 6}, 2, 51],
   {'crafts': 1, 'made': 3, 'stacks': [3], 'left': {'ore': 2}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'gem': 4, 'ore': 2}, 'output': 'blade', 'yield': 1, 'stack': 9},
    {'gem': 15, 'ore': 20, 'herb': 6},
    12,
    120],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'gem': 3, 'herb': 6, 'ore': 14}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'ore': 4, 'gem': 4, 'hide': 4}, 'output': 'blade', 'yield': 2, 'stack': 7},
    {'ore': 13, 'gem': 22, 'hide': 22, 'herb': 6},
    2,
    120],
   {'crafts': 2, 'made': 4, 'stacks': [4], 'left': {'gem': 14, 'herb': 6, 'hide': 14, 'ore': 5}}),
  ('control #1',
   [{'inputs': {'wood': 1, 'ore': 3}, 'output': 'blade', 'yield': 1, 'stack': 10}, {}, 8, 51],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0, 'wood': 0}}),
  ('control #2',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {}, 5, 100],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0}}),
  ('control #3',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 2, 'stack': 7}, {}, 5, 49],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}})],
 [('zero request #1',
   [{'inputs': {'hide': 2}, 'output': 'belt', 'yield': 1, 'stack': 3}, {'hide': 8}, 0, 80],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 8}}),
  ('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'hide': 3, 'ore': 1}, 'output': 'blade', 'yield': 1, 'stack': 5},
    {'hide': 21, 'ore': 5},
    3,
    99],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'hide': 12, 'ore': 2}}),
  ('fault site inventory carry-over #2',
   [{'inputs': {'wood': 2, 'hide': 3, 'gem': 3}, 'output': 'blade', 'yield': 3, 'stack': 7},
    {'wood': 12, 'hide': 23, 'gem': 11},
    4,
    51],
   {'crafts': 3, 'made': 9, 'stacks': [7, 2], 'left': {'gem': 2, 'hide': 14, 'wood': 6}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'hide': 1, 'wood': 1}, 'output': 'blade', 'yield': 1, 'stack': 6},
    {'wood': 23, 'herb': 9},
    4,
    49],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'herb': 9, 'hide': 0, 'wood': 23}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'wood': 1, 'ore': 3, 'gem': 1}, 'output': 'blade', 'yield': 3, 'stack': 9},
    {'wood': 2, 'ore': 29, 'gem': 5, 'herb': 7},
    11,
    0],
   {'crafts': 2, 'made': 6, 'stacks': [6], 'left': {'gem': 3, 'herb': 7, 'ore': 23, 'wood': 0}}),
  ('control #1',
   [{'inputs': {'ore': 4}, 'output': 'blade', 'yield': 3, 'stack': 10}, {}, 5, 100],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0}}),
  ('control #2',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 2, 'stack': 7}, {}, 5, 49],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}})],
 [('exact material multiple #1',
   [{'inputs': {'ore': 3}, 'output': 'bar', 'yield': 1, 'stack': 5}, {'ore': 15}, 10, 50],
   {'crafts': 5, 'made': 6, 'stacks': [5, 1], 'left': {'ore': 0}}),
  ('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'ore': 2, 'wood': 4, 'hide': 2}, 'output': 'blade', 'yield': 3, 'stack': 6},
    {'ore': 20, 'wood': 13, 'hide': 16, 'herb': 2},
    9,
    120],
   {'crafts': 3, 'made': 9, 'stacks': [6, 3], 'left': {'herb': 2, 'hide': 10, 'ore': 14, 'wood': 1}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'gem': 4, 'ore': 2}, 'output': 'blade', 'yield': 1, 'stack': 9},
    {'gem': 15, 'ore': 20, 'herb': 6},
    12,
    120],
   {'crafts': 3, 'made': 3, 'stacks': [3], 'left': {'gem': 3, 'herb': 6, 'ore': 14}}),
  ('regression inventory carry-over #3',
   [{'inputs': {'gem': 1, 'hide': 3}, 'output': 'blade', 'yield': 1, 'stack': 4},
    {'gem': 2, 'hide': 5, 'herb': 8},
    12,
    99],
   {'crafts': 1, 'made': 1, 'stacks': [1], 'left': {'gem': 1, 'herb': 8, 'hide': 2}}),
  ('regression inventory carry-over #4',
   [{'inputs': {'hide': 1, 'gem': 2, 'wood': 1}, 'output': 'blade', 'yield': 3, 'stack': 10},
    {'hide': 28, 'gem': 10, 'wood': 23, 'herb': 6},
    8,
    120],
   {'crafts': 5, 'made': 16, 'stacks': [10, 6], 'left': {'gem': 0, 'herb': 6, 'hide': 23, 'wood': 18}}),
  ('control #1',
   [{'inputs': {'wood': 2}, 'output': 'blade', 'yield': 2, 'stack': 5}, {}, 10, 79],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'wood': 0}}),
  ('control #2',
   [{'inputs': {'wood': 3}, 'output': 'blade', 'yield': 3, 'stack': 6}, {}, 6, 50],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'wood': 0}})],
 [('one short of a batch #1',
   [{'inputs': {'ore': 3, 'wood': 2}, 'output': 'axe', 'yield': 2, 'stack': 4},
    {'ore': 14, 'wood': 9, 'herb': 2},
    9,
    10],
   {'crafts': 4, 'made': 8, 'stacks': [4, 4], 'left': {'herb': 2, 'ore': 2, 'wood': 1}}),
  ('regression inventory carry-over #1',
   [{'inputs': {'ore': 4, 'gem': 4, 'hide': 4}, 'output': 'blade', 'yield': 2, 'stack': 7},
    {'ore': 13, 'gem': 22, 'hide': 22, 'herb': 6},
    2,
    120],
   {'crafts': 2, 'made': 4, 'stacks': [4], 'left': {'gem': 14, 'herb': 6, 'hide': 14, 'ore': 5}}),
  ('fault site inventory carry-over #1',
   [{'inputs': {'gem': 2}, 'output': 'blade', 'yield': 3, 'stack': 9}, {'gem': 19}, 0, 120],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 19}}),
  ('regression inventory carry-over #2',
   [{'inputs': {'hide': 1, 'gem': 3, 'ore': 2}, 'output': 'blade', 'yield': 2, 'stack': 3},
    {'hide': 4, 'gem': 10, 'ore': 4, 'herb': 8},
    8,
    120],
   {'crafts': 2, 'made': 4, 'stacks': [3, 1], 'left': {'gem': 4, 'herb': 8, 'hide': 2, 'ore': 0}}),
  ('regression inventory carry-over #3',
   [{'inputs': {'gem': 1}, 'output': 'blade', 'yield': 3, 'stack': 6}, {'gem': 27, 'herb': 8}, 7, 101],
   {'crafts': 7, 'made': 22, 'stacks': [6, 6, 6, 4], 'left': {'gem': 20, 'herb': 8}}),
  ('control #1',
   [{'inputs': {'gem': 4}, 'output': 'blade', 'yield': 3, 'stack': 7}, {'gem': 0}, 12, 120],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'gem': 0}}),
  ('control #2',
   [{'inputs': {'hide': 4}, 'output': 'blade', 'yield': 1, 'stack': 5}, {}, 0, 50],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'hide': 0}}),
  ('control #3',
   [{'inputs': {'wood': 1, 'ore': 3}, 'output': 'blade', 'yield': 1, 'stack': 10}, {}, 8, 51],
   {'crafts': 0, 'made': 0, 'stacks': [], 'left': {'ore': 0, 'wood': 0}})]]
for label, args, expected in cases[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
exact material multiple #1{'crafts': 5, 'left': {'ore': 0}, 'made': 6, 'stacks': [5, 1]}{'crafts': 5, 'left': {'ore': 0}, 'made': 6, 'stacks': [5, 1]}Passed
one short of a batch #1{'crafts': 4, 'left': {'ore': 2, 'wood': 1}, 'made': 8, 'stacks': [4, 4]}{'crafts': 4, 'left': {'herb': 2, 'ore': 2, 'wood': 1}, 'made': 8, 'stacks': [4, 4]}Failed
zero request #1{'crafts': 0, 'left': {'hide': 8}, 'made': 0, 'stacks': []}{'crafts': 0, 'left': {'hide': 8}, 'made': 0, 'stacks': []}Passed
fault site inventory carry-over #1{'crafts': 1, 'left': {'ore': 2}, 'made': 3, 'stacks': [3]}{'crafts': 1, 'left': {'ore': 2}, 'made': 3, 'stacks': [3]}Passed
regression inventory carry-over #1{'crafts': 3, 'left': {'hide': 10, 'ore': 14, 'wood': 1}, 'made': 9, 'stacks': [6, 3]}{'crafts': 3, 'left': {'herb': 2, 'hide': 10, 'ore': 14, 'wood': 1}, 'made': 9, 'stacks': [6, 3]}Failed
regression inventory carry-over #2{'crafts': 3, 'left': {'gem': 3, 'ore': 14}, 'made': 3, 'stacks': [3]}{'crafts': 3, 'left': {'gem': 3, 'herb': 6, 'ore': 14}, 'made': 3, 'stacks': [3]}Failed
control #1{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}Passed
control #2{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}{'crafts': 0, 'left': {'gem': 0}, 'made': 0, 'stacks': []}Passed

SHA-256 / aec8958dcb989afc094a084658c95df7877588df38522323da30dc75002fbcc5

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:50:44.360782+00:00.

Case digest / 1e6e287ddd2b5c8cdacfdefbc692452526942bf641c439b6234ec448f4ff71d9