FAILURE MAP
← Case archive

FA-60221 / Inventory cost layering / Open access

LIFO reserve roll-forward: prior reserve roll · case 01

Every year after the first reports the cumulative change since the opening balance.

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

ROOT CAUSE

The prior-year reserve is never rolled forward after each year.

VERIFIED REPAIR

Set prior = current reserve at the end of each year.

Unsuccessful approach: Rolling prior forward only when the reserve increased keeps a stale baseline after declines.

Case contract

Input {begin:[fifo,lifo], years:[[fifo_end,lifo_end]], lifo_cogs:[per year], tax_bp}. Reserve = FIFO - LIFO. Each year: change = reserve_end - prior year reserve; FIFO-basis COGS = LIFO COGS - change; a year is flagged "decline" when change < 0; cumulative tax deferral = round-half-up(reserve_end*tax_bp/10000). Return list of {reserve, change, fifo_cogs, flag, deferral}.

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):
    prior = x['begin'][0] - x['begin'][1]
    rows = []
    for (fe, le), cogs in zip(x['years'], x['lifo_cogs']):
        reserve = fe - le
        change = reserve - prior
        rows.append({'reserve': reserve, 'change': change, 'fifo_cogs': cogs - change,
                     'flag': 'decline' if change < 0 else 'build',
                     'deferral': (reserve * x['tax_bp'] + 5000) // 10000})
    return rows
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4701], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1299, 'change': 499, 'fifo_cogs': 19501, 'flag': 'build', 'deferral': 273}, {'reserve': 1600, 'change': 301, 'fifo_cogs': 20699, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4499]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1501, 'change': -699, 'fifo_cogs': 31699, 'flag': 'decline', 'deferral': 375}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3601, 2601]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[901, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 601, 'change': 601, 'fifo_cogs': 4399, 'flag': 'build', 'deferral': 129}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1011, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 10, 'change': 7, 'fifo_cogs': 793, 'flag': 'build', 'deferral': 3}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1001]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -101, 'change': -1, 'fifo_cogs': 51, 'flag': 'decline', 'deferral': -20}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1651], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 849, 'change': -51, 'fifo_cogs': 53, 'flag': 'decline', 'deferral': 170}, {'reserve': 1200, 'change': 351, 'fifo_cogs': -348, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4702], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1298, 'change': 498, 'fifo_cogs': 19502, 'flag': 'build', 'deferral': 273}, {'reserve': 1600, 'change': 302, 'fifo_cogs': 20698, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4498]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1502, 'change': -698, 'fifo_cogs': 31698, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3602, 2602]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[902, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 602, 'change': 602, 'fifo_cogs': 4398, 'flag': 'build', 'deferral': 129}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1012, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 11, 'change': 8, 'fifo_cogs': 792, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1002]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -102, 'change': -2, 'fifo_cogs': 52, 'flag': 'decline', 'deferral': -20}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1652], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 848, 'change': -52, 'fifo_cogs': 54, 'flag': 'decline', 'deferral': 170}, {'reserve': 1200, 'change': 352, 'fifo_cogs': -349, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4703], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1297, 'change': 497, 'fifo_cogs': 19503, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 303, 'fifo_cogs': 20697, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4497]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1503, 'change': -697, 'fifo_cogs': 31697, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3603, 2603]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[903, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 603, 'change': 603, 'fifo_cogs': 4397, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1013, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 12, 'change': 9, 'fifo_cogs': 791, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1003]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -103, 'change': -3, 'fifo_cogs': 53, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1653], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 847, 'change': -53, 'fifo_cogs': 55, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 353, 'fifo_cogs': -350, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4704], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1296, 'change': 496, 'fifo_cogs': 19504, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 304, 'fifo_cogs': 20696, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4496]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1504, 'change': -696, 'fifo_cogs': 31696, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3604, 2604]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[904, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 604, 'change': 604, 'fifo_cogs': 4396, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1014, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 13, 'change': 10, 'fifo_cogs': 790, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1004]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -104, 'change': -4, 'fifo_cogs': 54, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1654], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 846, 'change': -54, 'fifo_cogs': 56, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 354, 'fifo_cogs': -351, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4705], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1295, 'change': 495, 'fifo_cogs': 19505, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 305, 'fifo_cogs': 20695, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4495]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1505, 'change': -695, 'fifo_cogs': 31695, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3605, 2605]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[905, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 605, 'change': 605, 'fifo_cogs': 4395, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1015, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 14, 'change': 11, 'fifo_cogs': 789, 'flag': 'build', 'deferral': 5}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1005]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -105, 'change': -5, 'fifo_cogs': 55, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1655], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 845, 'change': -55, 'fifo_cogs': 57, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 355, 'fifo_cogs': -352, 'flag': 'build', 'deferral': 240}]]]]
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
rising reserve[{'change': 499, 'deferral': 273, 'fifo_cogs': 19501, 'flag': 'build', 'reserve': 1299}, {'change': 800, 'deferral': 336, 'fifo_cogs': 20200, 'flag': 'build', 'reserve': 1600}][{'change': 499, 'deferral': 273, 'fifo_cogs': 19501, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 20699, 'flag': 'build', 'reserve': 1600}]Failed
declining reserve[{'change': -800, 'deferral': 550, 'fifo_cogs': 30800, 'flag': 'decline', 'reserve': 2200}, {'change': -1499, 'deferral': 375, 'fifo_cogs': 32499, 'flag': 'decline', 'reserve': 1501}][{'change': -800, 'deferral': 550, 'fifo_cogs': 30800, 'flag': 'decline', 'reserve': 2200}, {'change': -699, 'deferral': 375, 'fifo_cogs': 31699, 'flag': 'decline', 'reserve': 1501}]Failed
flat year[{'change': 0, 'deferral': 300, 'fifo_cogs': 9000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 9100, 'flag': 'build', 'reserve': 1000}][{'change': 0, 'deferral': 300, 'fifo_cogs': 9000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 9100, 'flag': 'build', 'reserve': 1000}]Passed
single year[{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}][{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}]Passed
odd tax[{'change': 2, 'deferral': 1, 'fifo_cogs': 698, 'flag': 'build', 'reserve': 3}, {'change': 9, 'deferral': 3, 'fifo_cogs': 791, 'flag': 'build', 'reserve': 10}][{'change': 2, 'deferral': 1, 'fifo_cogs': 698, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 793, 'flag': 'build', 'reserve': 10}]Failed
deflation[{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}][{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}]Passed
three years[{'change': 400, 'deferral': 180, 'fifo_cogs': -399, 'flag': 'build', 'reserve': 900}, {'change': 349, 'deferral': 170, 'fifo_cogs': -347, 'flag': 'build', 'reserve': 849}, {'change': 700, 'deferral': 240, 'fifo_cogs': -697, 'flag': 'build', 'reserve': 1200}][{'change': 400, 'deferral': 180, 'fifo_cogs': -399, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': 53, 'flag': 'decline', 'reserve': 849}, {'change': 351, 'deferral': 240, 'fifo_cogs': -348, 'flag': 'build', 'reserve': 1200}]Failed

SHA-256 / 3951a7863351945875f19b093a0106d22cb8a3edb7de67f7846fb24e84759820

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    prior = x['begin'][0] - x['begin'][1]
    rows = []
    for (fe, le), cogs in zip(x['years'], x['lifo_cogs']):
        reserve = fe - le
        change = reserve - prior
        rows.append({'reserve': reserve, 'change': change, 'fifo_cogs': cogs - change,
                     'flag': 'decline' if change < 0 else 'build',
                     'deferral': (reserve * x['tax_bp'] + 5000) // 10000})
        if change > 0:
            prior = reserve
    return rows
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4701], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1299, 'change': 499, 'fifo_cogs': 19501, 'flag': 'build', 'deferral': 273}, {'reserve': 1600, 'change': 301, 'fifo_cogs': 20699, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4499]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1501, 'change': -699, 'fifo_cogs': 31699, 'flag': 'decline', 'deferral': 375}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3601, 2601]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[901, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 601, 'change': 601, 'fifo_cogs': 4399, 'flag': 'build', 'deferral': 129}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1011, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 10, 'change': 7, 'fifo_cogs': 793, 'flag': 'build', 'deferral': 3}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1001]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -101, 'change': -1, 'fifo_cogs': 51, 'flag': 'decline', 'deferral': -20}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1651], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 849, 'change': -51, 'fifo_cogs': 53, 'flag': 'decline', 'deferral': 170}, {'reserve': 1200, 'change': 351, 'fifo_cogs': -348, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4702], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1298, 'change': 498, 'fifo_cogs': 19502, 'flag': 'build', 'deferral': 273}, {'reserve': 1600, 'change': 302, 'fifo_cogs': 20698, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4498]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1502, 'change': -698, 'fifo_cogs': 31698, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3602, 2602]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[902, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 602, 'change': 602, 'fifo_cogs': 4398, 'flag': 'build', 'deferral': 129}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1012, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 11, 'change': 8, 'fifo_cogs': 792, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1002]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -102, 'change': -2, 'fifo_cogs': 52, 'flag': 'decline', 'deferral': -20}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1652], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 848, 'change': -52, 'fifo_cogs': 54, 'flag': 'decline', 'deferral': 170}, {'reserve': 1200, 'change': 352, 'fifo_cogs': -349, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4703], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1297, 'change': 497, 'fifo_cogs': 19503, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 303, 'fifo_cogs': 20697, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4497]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1503, 'change': -697, 'fifo_cogs': 31697, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3603, 2603]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[903, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 603, 'change': 603, 'fifo_cogs': 4397, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1013, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 12, 'change': 9, 'fifo_cogs': 791, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1003]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -103, 'change': -3, 'fifo_cogs': 53, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1653], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 847, 'change': -53, 'fifo_cogs': 55, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 353, 'fifo_cogs': -350, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4704], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1296, 'change': 496, 'fifo_cogs': 19504, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 304, 'fifo_cogs': 20696, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4496]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1504, 'change': -696, 'fifo_cogs': 31696, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3604, 2604]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[904, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 604, 'change': 604, 'fifo_cogs': 4396, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1014, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 13, 'change': 10, 'fifo_cogs': 790, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1004]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -104, 'change': -4, 'fifo_cogs': 54, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1654], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 846, 'change': -54, 'fifo_cogs': 56, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 354, 'fifo_cogs': -351, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4705], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1295, 'change': 495, 'fifo_cogs': 19505, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 305, 'fifo_cogs': 20695, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4495]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1505, 'change': -695, 'fifo_cogs': 31695, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3605, 2605]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[905, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 605, 'change': 605, 'fifo_cogs': 4395, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1015, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 14, 'change': 11, 'fifo_cogs': 789, 'flag': 'build', 'deferral': 5}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1005]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -105, 'change': -5, 'fifo_cogs': 55, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1655], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 845, 'change': -55, 'fifo_cogs': 57, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 355, 'fifo_cogs': -352, 'flag': 'build', 'deferral': 240}]]]]
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
rising reserve[{'change': 499, 'deferral': 273, 'fifo_cogs': 19501, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 20699, 'flag': 'build', 'reserve': 1600}][{'change': 499, 'deferral': 273, 'fifo_cogs': 19501, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 20699, 'flag': 'build', 'reserve': 1600}]Passed
declining reserve[{'change': -800, 'deferral': 550, 'fifo_cogs': 30800, 'flag': 'decline', 'reserve': 2200}, {'change': -1499, 'deferral': 375, 'fifo_cogs': 32499, 'flag': 'decline', 'reserve': 1501}][{'change': -800, 'deferral': 550, 'fifo_cogs': 30800, 'flag': 'decline', 'reserve': 2200}, {'change': -699, 'deferral': 375, 'fifo_cogs': 31699, 'flag': 'decline', 'reserve': 1501}]Failed
flat year[{'change': 0, 'deferral': 300, 'fifo_cogs': 9000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 9100, 'flag': 'build', 'reserve': 1000}][{'change': 0, 'deferral': 300, 'fifo_cogs': 9000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 9100, 'flag': 'build', 'reserve': 1000}]Passed
single year[{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}][{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}]Passed
odd tax[{'change': 2, 'deferral': 1, 'fifo_cogs': 698, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 793, 'flag': 'build', 'reserve': 10}][{'change': 2, 'deferral': 1, 'fifo_cogs': 698, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 793, 'flag': 'build', 'reserve': 10}]Passed
deflation[{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}][{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}]Passed
three years[{'change': 400, 'deferral': 180, 'fifo_cogs': -399, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': 53, 'flag': 'decline', 'reserve': 849}, {'change': 300, 'deferral': 240, 'fifo_cogs': -297, 'flag': 'build', 'reserve': 1200}][{'change': 400, 'deferral': 180, 'fifo_cogs': -399, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': 53, 'flag': 'decline', 'reserve': 849}, {'change': 351, 'deferral': 240, 'fifo_cogs': -348, 'flag': 'build', 'reserve': 1200}]Failed

SHA-256 / fe6da4b619514ab512c5d45cebc75b0e4573ccf4342f8f0289c98020c9c21b38

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    prior = x['begin'][0] - x['begin'][1]
    rows = []
    for (fe, le), cogs in zip(x['years'], x['lifo_cogs']):
        reserve = fe - le
        change = reserve - prior
        rows.append({'reserve': reserve, 'change': change, 'fifo_cogs': cogs - change,
                     'flag': 'decline' if change < 0 else 'build',
                     'deferral': (reserve * x['tax_bp'] + 5000) // 10000})
        prior = reserve
    return rows
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4701], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1299, 'change': 499, 'fifo_cogs': 19501, 'flag': 'build', 'deferral': 273}, {'reserve': 1600, 'change': 301, 'fifo_cogs': 20699, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4499]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1501, 'change': -699, 'fifo_cogs': 31699, 'flag': 'decline', 'deferral': 375}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3601, 2601]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[901, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 601, 'change': 601, 'fifo_cogs': 4399, 'flag': 'build', 'deferral': 129}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1011, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 10, 'change': 7, 'fifo_cogs': 793, 'flag': 'build', 'deferral': 3}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1001]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -101, 'change': -1, 'fifo_cogs': 51, 'flag': 'decline', 'deferral': -20}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1651], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 849, 'change': -51, 'fifo_cogs': 53, 'flag': 'decline', 'deferral': 170}, {'reserve': 1200, 'change': 351, 'fifo_cogs': -348, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4702], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1298, 'change': 498, 'fifo_cogs': 19502, 'flag': 'build', 'deferral': 273}, {'reserve': 1600, 'change': 302, 'fifo_cogs': 20698, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4498]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1502, 'change': -698, 'fifo_cogs': 31698, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3602, 2602]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[902, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 602, 'change': 602, 'fifo_cogs': 4398, 'flag': 'build', 'deferral': 129}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1012, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 11, 'change': 8, 'fifo_cogs': 792, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1002]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -102, 'change': -2, 'fifo_cogs': 52, 'flag': 'decline', 'deferral': -20}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1652], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 848, 'change': -52, 'fifo_cogs': 54, 'flag': 'decline', 'deferral': 170}, {'reserve': 1200, 'change': 352, 'fifo_cogs': -349, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4703], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1297, 'change': 497, 'fifo_cogs': 19503, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 303, 'fifo_cogs': 20697, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4497]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1503, 'change': -697, 'fifo_cogs': 31697, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3603, 2603]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[903, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 603, 'change': 603, 'fifo_cogs': 4397, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1013, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 12, 'change': 9, 'fifo_cogs': 791, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1003]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -103, 'change': -3, 'fifo_cogs': 53, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1653], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 847, 'change': -53, 'fifo_cogs': 55, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 353, 'fifo_cogs': -350, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4704], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1296, 'change': 496, 'fifo_cogs': 19504, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 304, 'fifo_cogs': 20696, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4496]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1504, 'change': -696, 'fifo_cogs': 31696, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3604, 2604]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[904, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 604, 'change': 604, 'fifo_cogs': 4396, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1014, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 13, 'change': 10, 'fifo_cogs': 790, 'flag': 'build', 'deferral': 4}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1004]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -104, 'change': -4, 'fifo_cogs': 54, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1654], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 846, 'change': -54, 'fifo_cogs': 56, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 354, 'fifo_cogs': -351, 'flag': 'build', 'deferral': 240}]]], [['rising reserve', {'begin': [5000, 4200], 'years': [[6000, 4705], [6500, 4900]], 'lifo_cogs': [20000, 21000], 'tax_bp': 2100}, [{'reserve': 1295, 'change': 495, 'fifo_cogs': 19505, 'flag': 'build', 'deferral': 272}, {'reserve': 1600, 'change': 305, 'fifo_cogs': 20695, 'flag': 'build', 'deferral': 336}]], ['declining reserve', {'begin': [8000, 5000], 'years': [[7000, 4800], [6000, 4495]], 'lifo_cogs': [30000, 31000], 'tax_bp': 2500}, [{'reserve': 2200, 'change': -800, 'fifo_cogs': 30800, 'flag': 'decline', 'deferral': 550}, {'reserve': 1505, 'change': -695, 'fifo_cogs': 31695, 'flag': 'decline', 'deferral': 376}]], ['flat year', {'begin': [3000, 2000], 'years': [[3500, 2500], [3605, 2605]], 'lifo_cogs': [9000, 9100], 'tax_bp': 3000}, [{'reserve': 1000, 'change': 0, 'fifo_cogs': 9000, 'flag': 'build', 'deferral': 300}, {'reserve': 1000, 'change': 0, 'fifo_cogs': 9100, 'flag': 'build', 'deferral': 300}]], ['single year', {'begin': [100, 100], 'years': [[905, 300]], 'lifo_cogs': [5000], 'tax_bp': 2150}, [{'reserve': 605, 'change': 605, 'fifo_cogs': 4395, 'flag': 'build', 'deferral': 130}]], ['odd tax', {'begin': [1000, 999], 'years': [[1003, 1000], [1015, 1001]], 'lifo_cogs': [700, 800], 'tax_bp': 3333}, [{'reserve': 3, 'change': 2, 'fifo_cogs': 698, 'flag': 'build', 'deferral': 1}, {'reserve': 14, 'change': 11, 'fifo_cogs': 789, 'flag': 'build', 'deferral': 5}]], ['deflation', {'begin': [1000, 1100], 'years': [[900, 1005]], 'lifo_cogs': [50], 'tax_bp': 2000}, [{'reserve': -105, 'change': -5, 'fifo_cogs': 55, 'flag': 'decline', 'deferral': -21}]], ['three years', {'begin': [2000, 1500], 'years': [[2600, 1700], [2500, 1655], [2900, 1700]], 'lifo_cogs': [1, 2, 3], 'tax_bp': 2000}, [{'reserve': 900, 'change': 400, 'fifo_cogs': -399, 'flag': 'build', 'deferral': 180}, {'reserve': 845, 'change': -55, 'fifo_cogs': 57, 'flag': 'decline', 'deferral': 169}, {'reserve': 1200, 'change': 355, 'fifo_cogs': -352, 'flag': 'build', 'deferral': 240}]]]]
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
rising reserve[{'change': 499, 'deferral': 273, 'fifo_cogs': 19501, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 20699, 'flag': 'build', 'reserve': 1600}][{'change': 499, 'deferral': 273, 'fifo_cogs': 19501, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 20699, 'flag': 'build', 'reserve': 1600}]Passed
declining reserve[{'change': -800, 'deferral': 550, 'fifo_cogs': 30800, 'flag': 'decline', 'reserve': 2200}, {'change': -699, 'deferral': 375, 'fifo_cogs': 31699, 'flag': 'decline', 'reserve': 1501}][{'change': -800, 'deferral': 550, 'fifo_cogs': 30800, 'flag': 'decline', 'reserve': 2200}, {'change': -699, 'deferral': 375, 'fifo_cogs': 31699, 'flag': 'decline', 'reserve': 1501}]Passed
flat year[{'change': 0, 'deferral': 300, 'fifo_cogs': 9000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 9100, 'flag': 'build', 'reserve': 1000}][{'change': 0, 'deferral': 300, 'fifo_cogs': 9000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 9100, 'flag': 'build', 'reserve': 1000}]Passed
single year[{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}][{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}]Passed
odd tax[{'change': 2, 'deferral': 1, 'fifo_cogs': 698, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 793, 'flag': 'build', 'reserve': 10}][{'change': 2, 'deferral': 1, 'fifo_cogs': 698, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 793, 'flag': 'build', 'reserve': 10}]Passed
deflation[{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}][{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}]Passed
three years[{'change': 400, 'deferral': 180, 'fifo_cogs': -399, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': 53, 'flag': 'decline', 'reserve': 849}, {'change': 351, 'deferral': 240, 'fifo_cogs': -348, 'flag': 'build', 'reserve': 1200}][{'change': 400, 'deferral': 180, 'fifo_cogs': -399, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': 53, 'flag': 'decline', 'reserve': 849}, {'change': 351, 'deferral': 240, 'fifo_cogs': -348, 'flag': 'build', 'reserve': 1200}]Passed

SHA-256 / ebd078c8f0701ec64956a262c3b0a226ea046d1f6bb0d6290fec038b18e07315

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

Case digest / cae6fc621897cc42899119e88e76309d0f6b1030fbde12786a0dbd3d041677bc