FAILURE MAP
← Case archive

FA-60256 / Inventory cost layering / Open access

Layer aging and slow-moving reserve: age direction · case 01

Every layer is treated as in transit and the aging report is empty.

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

ROOT CAUSE

Age is computed as receipt day minus today.

VERIFIED REPAIR

Age = today - receipt day.

Unsuccessful approach: Taking the absolute difference ages future receipts as if they were 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 = day - x['today']
        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 fixtureActualExpectedOutcome
mixed ages{'reserve': 0, 'values': [50, 0, 0, 0]}{'reserve': 36, 'values': [110, 0, 101, 21]}Failed
bucket edges{'reserve': 0, 'values': [0, 0, 0, 0]}{'reserve': 1200, 'values': [1000, 2000, 4001, 0]}Failed
in transit{'reserve': 0, 'values': [200, 0, 0, 0]}{'reserve': 0, 'values': [10, 0, 0, 0]}Failed
same day{'reserve': 1, 'values': [52, 0]}{'reserve': 1, 'values': [52, 0]}Passed
very old{'reserve': 0, 'values': [0, 0, 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': 0, 'values': [0, 0, 0]}{'reserve': 42, 'values': [80, 84, 0]}Failed

SHA-256 / 0c585a6ece6d3227bcdac715993440d4b8937df6d757f76107c9af13e5a609e3

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 = abs(day - x['today'])
        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 fixtureActualExpectedOutcome
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': [210, 0, 0, 0]}{'reserve': 0, 'values': [10, 0, 0, 0]}Failed
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 / e1ca5bcf60ac368a4ebfd1bccddf57da4db0eb738e8861eb3d8f682d91ab5a3e

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 fixtureActualExpectedOutcome
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.977467+00:00.

Case digest / 5749a677d661d2a2d5aa3e3bb0fa5fa8137bc0325b13d7cb1fc6ca3350176064