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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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