FA-60246 / Inventory cost layering / Open access
Layer aging and slow-moving reserve: overflow bucket · case 01
Stock older than the last bound is merged into the last bucket and reserved at its lower rate.
ROOT CAUSE
The bucket search stops one bucket early, never reaching the overflow bucket.
VERIFIED REPAIR
Search all bounds so ages past the last bound land in the overflow bucket.
Unsuccessful approach: Only routing ages above one year to the overflow still misplaces moderately old stock.
Case contract
Input {layers:[[receipt_day,qty,unit]], today, buckets:[upper age bounds, inclusive], reserve_bp:[rate per bucket incl. overflow]}. Age = today - receipt_day; layers with negative age are in transit and excluded. A layer falls in the first bucket whose bound is >= age, else the overflow bucket. Reserve = sum over buckets of round-half-up(value*bp/10000). Return {values, reserve}.
Why this case matters
Inventory valuation and cost-of-goods decisions depend on this rule.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
bounds = x['buckets']
vals = [0] * (len(bounds) + 1)
for day, q, c in x['layers']:
age = x['today'] - day
if age < 0:
continue
i = 0
while i < len(bounds) - 1 and age > bounds[i]:
i += 1
vals[i] += q * c
reserve = sum((v * bp + 5000) // 10000 for v, bp in zip(vals, x['reserve_bp']))
return {'values': vals, 'reserve': reserve}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 101], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 101, 21], 'reserve': 36}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4001]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4001, 0], 'reserve': 1200}], ['in transit', {'layers': [[106, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 26]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [52, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 51]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1050], 'reserve': 1050}], ['empty', {'layers': [], 'today': 101, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 42]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 84, 0], 'reserve': 42}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 102], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 102, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4002]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4002, 0], 'reserve': 1201}], ['in transit', {'layers': [[107, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 27]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [54, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 52]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1051], 'reserve': 1051}], ['empty', {'layers': [], 'today': 102, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 43]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 86, 0], 'reserve': 43}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 103], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 103, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4003]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4003, 0], 'reserve': 1201}], ['in transit', {'layers': [[108, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 28]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [56, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 53]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1052], 'reserve': 1052}], ['empty', {'layers': [], 'today': 103, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 44]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 88, 0], 'reserve': 44}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 104], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 104, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4004]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4004, 0], 'reserve': 1201}], ['in transit', {'layers': [[109, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 29]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [58, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 54]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1053], 'reserve': 1053}], ['empty', {'layers': [], 'today': 104, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 45]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 90, 0], 'reserve': 45}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 105], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 105, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4005]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4005, 0], 'reserve': 1201}], ['in transit', {'layers': [[110, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 30]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [60, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 55]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1054], 'reserve': 1054}], ['empty', {'layers': [], 'today': 105, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 46]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 92, 0], 'reserve': 46}]]]
for label, args, expected in fixtures[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 |
|---|---|---|---|
| mixed ages | {'reserve': 31, 'values': [110, 0, 122, 0]} | {'reserve': 36, 'values': [110, 0, 101, 21]} | Failed |
| bucket edges | {'reserve': 1200, 'values': [1000, 2000, 4001, 0]} | {'reserve': 1200, 'values': [1000, 2000, 4001, 0]} | Passed |
| in transit | {'reserve': 0, 'values': [10, 0, 0, 0]} | {'reserve': 0, 'values': [10, 0, 0, 0]} | Passed |
| same day | {'reserve': 1, 'values': [52, 0]} | {'reserve': 1, 'values': [52, 0]} | Passed |
| very old | {'reserve': 210, 'values': [0, 1050, 0]} | {'reserve': 1050, 'values': [0, 0, 1050]} | Failed |
| empty | {'reserve': 0, 'values': [0, 0, 0]} | {'reserve': 0, 'values': [0, 0, 0]} | Passed |
| one step | {'reserve': 42, 'values': [80, 84, 0]} | {'reserve': 42, 'values': [80, 84, 0]} | Passed |
SHA-256 / 7c4844af6b98284c95abfab37e790b01b7f986569ea4da21647000f22c179762
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
bounds = x['buckets']
vals = [0] * (len(bounds) + 1)
for day, q, c in x['layers']:
age = x['today'] - day
if age < 0:
continue
i = 0
while (i < len(bounds) - 1 or age > 365 and i < len(bounds)) and age > bounds[i]:
i += 1
vals[i] += q * c
reserve = sum((v * bp + 5000) // 10000 for v, bp in zip(vals, x['reserve_bp']))
return {'values': vals, 'reserve': reserve}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 101], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 101, 21], 'reserve': 36}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4001]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4001, 0], 'reserve': 1200}], ['in transit', {'layers': [[106, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 26]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [52, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 51]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1050], 'reserve': 1050}], ['empty', {'layers': [], 'today': 101, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 42]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 84, 0], 'reserve': 42}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 102], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 102, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4002]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4002, 0], 'reserve': 1201}], ['in transit', {'layers': [[107, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 27]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [54, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 52]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1051], 'reserve': 1051}], ['empty', {'layers': [], 'today': 102, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 43]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 86, 0], 'reserve': 43}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 103], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 103, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4003]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4003, 0], 'reserve': 1201}], ['in transit', {'layers': [[108, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 28]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [56, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 53]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1052], 'reserve': 1052}], ['empty', {'layers': [], 'today': 103, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 44]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 88, 0], 'reserve': 44}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 104], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 104, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4004]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4004, 0], 'reserve': 1201}], ['in transit', {'layers': [[109, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 29]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [58, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 54]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1053], 'reserve': 1053}], ['empty', {'layers': [], 'today': 104, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 45]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 90, 0], 'reserve': 45}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 105], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 105, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4005]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4005, 0], 'reserve': 1201}], ['in transit', {'layers': [[110, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 30]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [60, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 55]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1054], 'reserve': 1054}], ['empty', {'layers': [], 'today': 105, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 46]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 92, 0], 'reserve': 46}]]]
for label, args, expected in fixtures[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 |
|---|---|---|---|
| mixed ages | {'reserve': 31, 'values': [110, 0, 122, 0]} | {'reserve': 36, 'values': [110, 0, 101, 21]} | Failed |
| bucket edges | {'reserve': 1200, 'values': [1000, 2000, 4001, 0]} | {'reserve': 1200, 'values': [1000, 2000, 4001, 0]} | Passed |
| in transit | {'reserve': 0, 'values': [10, 0, 0, 0]} | {'reserve': 0, 'values': [10, 0, 0, 0]} | Passed |
| same day | {'reserve': 1, 'values': [52, 0]} | {'reserve': 1, 'values': [52, 0]} | Passed |
| very old | {'reserve': 251, 'values': [0, 999, 51]} | {'reserve': 1050, 'values': [0, 0, 1050]} | Failed |
| empty | {'reserve': 0, 'values': [0, 0, 0]} | {'reserve': 0, 'values': [0, 0, 0]} | Passed |
| one step | {'reserve': 42, 'values': [80, 84, 0]} | {'reserve': 42, 'values': [80, 84, 0]} | Passed |
SHA-256 / ab9f5f3864d7ded5a30196200a5c2c4a6bdc33e9316a489bb14c6826626ddeb4
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
bounds = x['buckets']
vals = [0] * (len(bounds) + 1)
for day, q, c in x['layers']:
age = x['today'] - day
if age < 0:
continue
i = 0
while i < len(bounds) and age > bounds[i]:
i += 1
vals[i] += q * c
reserve = sum((v * bp + 5000) // 10000 for v, bp in zip(vals, x['reserve_bp']))
return {'values': vals, 'reserve': reserve}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 101], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 101, 21], 'reserve': 36}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4001]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4001, 0], 'reserve': 1200}], ['in transit', {'layers': [[106, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 26]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [52, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 51]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1050], 'reserve': 1050}], ['empty', {'layers': [], 'today': 101, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 42]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 84, 0], 'reserve': 42}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 102], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 102, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4002]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4002, 0], 'reserve': 1201}], ['in transit', {'layers': [[107, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 27]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [54, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 52]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1051], 'reserve': 1051}], ['empty', {'layers': [], 'today': 102, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 43]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 86, 0], 'reserve': 43}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 103], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 103, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4003]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4003, 0], 'reserve': 1201}], ['in transit', {'layers': [[108, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 28]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [56, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 53]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1052], 'reserve': 1052}], ['empty', {'layers': [], 'today': 103, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 44]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 88, 0], 'reserve': 44}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 104], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 104, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4004]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4004, 0], 'reserve': 1201}], ['in transit', {'layers': [[109, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 29]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [58, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 54]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1053], 'reserve': 1053}], ['empty', {'layers': [], 'today': 104, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 45]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 90, 0], 'reserve': 45}]], [['mixed ages', {'layers': [[100, 5, 10], [70, 2, 30], [30, 1, 105], [5, 3, 7]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [110, 0, 105, 21], 'reserve': 37}], ['bucket edges', {'layers': [[70, 1, 1000], [40, 1, 2000], [10, 1, 4005]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [1000, 2000, 4005, 0], 'reserve': 1201}], ['in transit', {'layers': [[110, 4, 50], [90, 1, 10]], 'today': 100, 'buckets': [30, 60, 90], 'reserve_bp': [0, 1000, 2500, 5000]}, {'values': [10, 0, 0, 0], 'reserve': 0}], ['same day', {'layers': [[100, 2, 30]], 'today': 100, 'buckets': [30], 'reserve_bp': [100, 9000]}, {'values': [60, 0], 'reserve': 1}], ['very old', {'layers': [[1, 3, 333], [-200, 1, 55]], 'today': 300, 'buckets': [60, 120], 'reserve_bp': [0, 2000, 10000]}, {'values': [0, 0, 1054], 'reserve': 1054}], ['empty', {'layers': [], 'today': 105, 'buckets': [30, 60], 'reserve_bp': [0, 1000, 3000]}, {'values': [0, 0, 0], 'reserve': 0}], ['one step', {'layers': [[69, 2, 40], [68, 2, 46]], 'today': 100, 'buckets': [31, 32], 'reserve_bp': [0, 5000, 10000]}, {'values': [80, 92, 0], 'reserve': 46}]]]
for label, args, expected in fixtures[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 |
|---|---|---|---|
| mixed ages | {'reserve': 36, 'values': [110, 0, 101, 21]} | {'reserve': 36, 'values': [110, 0, 101, 21]} | Passed |
| bucket edges | {'reserve': 1200, 'values': [1000, 2000, 4001, 0]} | {'reserve': 1200, 'values': [1000, 2000, 4001, 0]} | Passed |
| in transit | {'reserve': 0, 'values': [10, 0, 0, 0]} | {'reserve': 0, 'values': [10, 0, 0, 0]} | Passed |
| same day | {'reserve': 1, 'values': [52, 0]} | {'reserve': 1, 'values': [52, 0]} | Passed |
| very old | {'reserve': 1050, 'values': [0, 0, 1050]} | {'reserve': 1050, 'values': [0, 0, 1050]} | Passed |
| empty | {'reserve': 0, 'values': [0, 0, 0]} | {'reserve': 0, 'values': [0, 0, 0]} | Passed |
| one step | {'reserve': 42, 'values': [80, 84, 0]} | {'reserve': 42, 'values': [80, 84, 0]} | Passed |
SHA-256 / 1f0c153919e310af93c42db05dd85f718a76a7e90357a5ae935e81ed55d9612a
Verification & scope
Stipulated bounded teaching model with explicit toy rules; not an accounting-standard implementation. 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:46:43.850603+00:00.
Case digest / 29a7c0d190106f79029d12bf41c5a1c7a7d08df401defbcadddfb4bdc1893113