FAILURE MAP
← Case archive

FA-60226 / Inventory cost layering / Open access

LIFO reserve roll-forward: FIFO COGS conversion sign · case 01

Converting to FIFO basis makes COGS higher when the reserve grew.

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

ROOT CAUSE

The reserve change is added to LIFO COGS instead of subtracted.

VERIFIED REPAIR

FIFO COGS = LIFO COGS - change in reserve.

Unsuccessful approach: Subtracting the reserve level rather than its change converts with the wrong amount.

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})
        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': 20499, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 21301, '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': 29200, 'flag': 'decline', 'reserve': 2200}, {'change': -699, 'deferral': 375, 'fifo_cogs': 30301, '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': 5601, 'flag': 'build', 'reserve': 601}][{'change': 601, 'deferral': 129, 'fifo_cogs': 4399, 'flag': 'build', 'reserve': 601}]Failed
odd tax[{'change': 2, 'deferral': 1, 'fifo_cogs': 702, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 807, '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': 49, 'flag': 'decline', 'reserve': -101}][{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}]Failed
three years[{'change': 400, 'deferral': 180, 'fifo_cogs': 401, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': -49, 'flag': 'decline', 'reserve': 849}, {'change': 351, 'deferral': 240, 'fifo_cogs': 354, '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 / 538977c60f2a2da6c123ac41c1f7d4ec199291d43480b777c6af1b8e46e8a457

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 - reserve,
                     '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': 18701, 'flag': 'build', 'reserve': 1299}, {'change': 301, 'deferral': 336, 'fifo_cogs': 19400, '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': 27800, 'flag': 'decline', 'reserve': 2200}, {'change': -699, 'deferral': 375, 'fifo_cogs': 29499, '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': 8000, 'flag': 'build', 'reserve': 1000}, {'change': 0, 'deferral': 300, 'fifo_cogs': 8100, '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}]Failed
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': 697, 'flag': 'build', 'reserve': 3}, {'change': 7, 'deferral': 3, 'fifo_cogs': 790, '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': 151, 'flag': 'decline', 'reserve': -101}][{'change': -1, 'deferral': -20, 'fifo_cogs': 51, 'flag': 'decline', 'reserve': -101}]Failed
three years[{'change': 400, 'deferral': 180, 'fifo_cogs': -899, 'flag': 'build', 'reserve': 900}, {'change': -51, 'deferral': 170, 'fifo_cogs': -847, 'flag': 'decline', 'reserve': 849}, {'change': 351, 'deferral': 240, 'fifo_cogs': -1197, '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 / 22d8853a57aba2783e387df87019fe9909bac80a0819822b1870dfd63ac45a60

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

Case digest / 069e5526aad1a9d42b5a979578a7f9a6bef30bc4004708d49403bfa26cdc0cbc