{"abstract":"A LIFO liquidation keeps the newest base layers and discards the oldest, so the surviving layers carry recent prices.","category":"Inventory cost layering","checks":8,"contract":"Input {begin:[[qty,unit]] oldest first, purchases:[[qty,unit]] chronological, ending_qty}. Ending inventory keeps the oldest units: if ending_qty covers the base, all base layers stay and one increment layer is priced at the EARLIEST purchases of the year; otherwise the newest base layers are liquidated. ending_qty outside [0, available] returns {\"error\"}. Return {layers:[[qty,value]], ending_value, cogs}.","contract_signature":"x","evaluation_group":"w2-inventory-cost-layering-periodic-lifo-increment","failed_approach":"Keeping the lowest-cost base layers only matches when older layers are cheaper.","family":"w2-inventory-cost-layering-periodic-lifo-increment-liquidation-direction","id":"FA-59876","implementations":{"attempt":{"sha256":"53947185ad573774104f76697509da634e3ba0b744353d16bd556571566439e6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    begin = [list(l) for l in x['begin']]\n    purchases = x['purchases']\n    end_q = x['ending_qty']\n    base_q = sum(l[0] for l in begin)\n    buy_q = sum(p[0] for p in purchases)\n    avail = base_q + buy_q\n    if end_q < 0 or end_q > avail:\n        return {'error': 'invalid ending quantity'}\n    layers = []\n    if end_q >= base_q:\n        layers = [[q, q * c] for q, c in begin]\n        inc = end_q - base_q\n        new_q = 0\n        new_v = 0\n        for q, c in purchases:\n            if inc == 0:\n                break\n            take = min(inc, q)\n            new_q += take\n            new_v += take * c\n            inc -= take\n        if new_q > 0:\n            layers.append([new_q, new_v])\n    else:\n        rem = end_q\n        for bq, bc in sorted(begin, key=lambda l: -l[1]):\n            take = min(rem, bq)\n            if take > 0:\n                layers.append([take, take * bc])\n            rem -= take\n    begin_value = sum(q * c for q, c in begin)\n    buy_value = sum(q * c for q, c in purchases)\n    ending_value = sum(v for q, v in layers)\n    return {'layers': layers, 'ending_value': ending_value, 'cogs': begin_value + buy_value - ending_value}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 10]], 'ending_qty': 18}, {'layers': [[10, 50], [4, 24], [4, 28]], 'ending_value': 102, 'cogs': 94}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 10}, {'layers': [[10, 50]], 'ending_value': 50, 'cogs': 66}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 1}, {'layers': [[1, 2]], 'ending_value': 2, 'cogs': 50}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 6}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[3, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[1, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 35}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 11]], 'ending_qty': 19}, {'layers': [[10, 50], [4, 24], [5, 35]], 'ending_value': 109, 'cogs': 95}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 11}, {'layers': [[10, 50], [1, 6]], 'ending_value': 56, 'cogs': 60}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 2}, {'layers': [[2, 4]], 'ending_value': 4, 'cogs': 48}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 7}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -2}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[4, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[2, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 46}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 12]], 'ending_qty': 17}, {'layers': [[10, 50], [4, 24], [3, 21]], 'ending_value': 95, 'cogs': 117}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 10}, {'layers': [[10, 50]], 'ending_value': 50, 'cogs': 66}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 3}, {'layers': [[3, 6]], 'ending_value': 6, 'cogs': 46}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 8}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -3}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[5, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[3, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 57}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 13]], 'ending_qty': 18}, {'layers': [[10, 50], [4, 24], [4, 28]], 'ending_value': 102, 'cogs': 118}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 11}, {'layers': [[10, 50], [1, 6]], 'ending_value': 56, 'cogs': 60}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 4}, {'layers': [[3, 6], [1, 4]], 'ending_value': 10, 'cogs': 42}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 9}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -4}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[6, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[4, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 68}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 14]], 'ending_qty': 19}, {'layers': [[10, 50], [4, 24], [5, 35]], 'ending_value': 109, 'cogs': 119}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 10}, {'layers': [[10, 50]], 'ending_value': 50, 'cogs': 66}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 5}, {'layers': [[3, 6], [2, 8]], 'ending_value': 14, 'cogs': 38}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 10}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -5}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[7, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[5, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 79}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"cea99c41b087ee174a386cd9f63a45cfb14646631eff9bbc79f8c7a2a43c88ee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    begin = [list(l) for l in x['begin']]\n    purchases = x['purchases']\n    end_q = x['ending_qty']\n    base_q = sum(l[0] for l in begin)\n    buy_q = sum(p[0] for p in purchases)\n    avail = base_q + buy_q\n    if end_q < 0 or end_q > avail:\n        return {'error': 'invalid ending quantity'}\n    layers = []\n    if end_q >= base_q:\n        layers = [[q, q * c] for q, c in begin]\n        inc = end_q - base_q\n        new_q = 0\n        new_v = 0\n        for q, c in purchases:\n            if inc == 0:\n                break\n            take = min(inc, q)\n            new_q += take\n            new_v += take * c\n            inc -= take\n        if new_q > 0:\n            layers.append([new_q, new_v])\n    else:\n        rem = end_q\n        for bq, bc in begin[::-1]:\n            take = min(rem, bq)\n            if take > 0:\n                layers.append([take, take * bc])\n            rem -= take\n    begin_value = sum(q * c for q, c in begin)\n    buy_value = sum(q * c for q, c in purchases)\n    ending_value = sum(v for q, v in layers)\n    return {'layers': layers, 'ending_value': ending_value, 'cogs': begin_value + buy_value - ending_value}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 10]], 'ending_qty': 18}, {'layers': [[10, 50], [4, 24], [4, 28]], 'ending_value': 102, 'cogs': 94}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 10}, {'layers': [[10, 50]], 'ending_value': 50, 'cogs': 66}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 1}, {'layers': [[1, 2]], 'ending_value': 2, 'cogs': 50}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 6}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[3, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[1, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 35}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 11]], 'ending_qty': 19}, {'layers': [[10, 50], [4, 24], [5, 35]], 'ending_value': 109, 'cogs': 95}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 11}, {'layers': [[10, 50], [1, 6]], 'ending_value': 56, 'cogs': 60}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 2}, {'layers': [[2, 4]], 'ending_value': 4, 'cogs': 48}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 7}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -2}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[4, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[2, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 46}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 12]], 'ending_qty': 17}, {'layers': [[10, 50], [4, 24], [3, 21]], 'ending_value': 95, 'cogs': 117}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 10}, {'layers': [[10, 50]], 'ending_value': 50, 'cogs': 66}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 3}, {'layers': [[3, 6]], 'ending_value': 6, 'cogs': 46}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 8}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -3}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[5, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[3, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 57}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 13]], 'ending_qty': 18}, {'layers': [[10, 50], [4, 24], [4, 28]], 'ending_value': 102, 'cogs': 118}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 11}, {'layers': [[10, 50], [1, 6]], 'ending_value': 56, 'cogs': 60}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 4}, {'layers': [[3, 6], [1, 4]], 'ending_value': 10, 'cogs': 42}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 9}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -4}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[6, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[4, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 68}]], [['increment layer', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7], [8, 14]], 'ending_qty': 19}, {'layers': [[10, 50], [4, 24], [5, 35]], 'ending_value': 109, 'cogs': 119}], ['liquidation', {'begin': [[10, 5], [4, 6]], 'purchases': [[6, 7]], 'ending_qty': 10}, {'layers': [[10, 50]], 'ending_value': 50, 'cogs': 66}], ['deep liquidation', {'begin': [[3, 2], [3, 4], [3, 6]], 'purchases': [[2, 8]], 'ending_qty': 5}, {'layers': [[3, 6], [2, 8]], 'ending_value': 14, 'cogs': 38}], ['over available', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': 10}, {'error': 'invalid ending quantity'}], ['negative ending', {'begin': [[2, 3]], 'purchases': [[3, 4]], 'ending_qty': -5}, {'error': 'invalid ending quantity'}], ['count of minus one', {'begin': [[7, 3]], 'purchases': [[3, 4]], 'ending_qty': -1}, {'error': 'invalid ending quantity'}], ['all sold', {'begin': [[5, 3]], 'purchases': [[5, 4]], 'ending_qty': 0}, {'layers': [], 'ending_value': 0, 'cogs': 35}], ['exact base', {'begin': [[4, 10]], 'purchases': [[5, 11], [2, 12]], 'ending_qty': 4}, {'layers': [[4, 40]], 'ending_value': 40, 'cogs': 79}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-inventory-cost-layering-periodic-lifo-increment-liquidation-direction","generated_at":"2026-09-29T14:46:40.478213+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Inventory valuation and cost-of-goods decisions depend on this rule.","root_cause":"The liquidation loop walks base layers from newest to oldest when choosing what to keep.","sha256":"de5beaeb74071acd31e089dec974d5a8079b01ac9364f2fb6874bd5854b5d4c8","title":"Periodic LIFO year-end layering: liquidation direction · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.747,"exit_code":1,"observations":[{"actual":{"cogs":94,"ending_value":102,"layers":[[10,50],[4,24],[4,28]]},"check":"increment layer","expected":{"cogs":94,"ending_value":102,"layers":[[10,50],[4,24],[4,28]]},"passed":true},{"actual":{"cogs":62,"ending_value":54,"layers":[[4,24],[6,30]]},"check":"liquidation","expected":{"cogs":66,"ending_value":50,"layers":[[10,50]]},"passed":false},{"actual":{"cogs":46,"ending_value":6,"layers":[[1,6]]},"check":"deep liquidation","expected":{"cogs":50,"ending_value":2,"layers":[[1,2]]},"passed":false},{"actual":{"error":"invalid ending quantity"},"check":"over available","expected":{"error":"invalid ending quantity"},"passed":true},{"actual":{"error":"invalid ending quantity"},"check":"negative ending","expected":{"error":"invalid ending quantity"},"passed":true},{"actual":{"error":"invalid ending quantity"},"check":"count of minus one","expected":{"error":"invalid ending quantity"},"passed":true},{"actual":{"cogs":35,"ending_value":0,"layers":[]},"check":"all sold","expected":{"cogs":35,"ending_value":0,"layers":[]},"passed":true},{"actual":{"cogs":35,"ending_value":40,"layers":[[4,40]]},"check":"exact base","expected":{"cogs":35,"ending_value":40,"layers":[[4,40]]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"increment layer\", \"actual\": {\"layers\": [[10, 50], [4, 24], [4, 28]], \"ending_value\": 102, \"cogs\": 94}, \"expected\": {\"layers\": [[10, 50], [4, 24], [4, 28]], \"ending_value\": 102, \"cogs\": 94}, \"passed\": true}, {\"check\": \"liquidation\", \"actual\": {\"layers\": [[4, 24], [6, 30]], \"ending_value\": 54, \"cogs\": 62}, \"expected\": {\"layers\": [[10, 50]], \"ending_value\": 50, \"cogs\": 66}, \"passed\": false}, {\"check\": \"deep liquidation\", \"actual\": {\"layers\": [[1, 6]], \"ending_value\": 6, \"cogs\": 46}, \"expected\": {\"layers\": [[1, 2]], \"ending_value\": 2, \"cogs\": 50}, \"passed\": false}, {\"check\": \"over available\", \"actual\": {\"error\": \"invalid ending quantity\"}, \"expected\": {\"error\": \"invalid ending quantity\"}, \"passed\": true}, {\"check\": \"negative ending\", \"actual\": {\"error\": \"invalid ending quantity\"}, \"expected\": {\"error\": \"invalid ending quantity\"}, \"passed\": true}, {\"check\": \"count of minus one\", \"actual\": {\"error\": \"invalid ending quantity\"}, \"expected\": {\"error\": \"invalid ending quantity\"}, \"passed\": true}, {\"check\": \"all sold\", \"actual\": {\"layers\": [], \"ending_value\": 0, \"cogs\": 35}, \"expected\": {\"layers\": [], \"ending_value\": 0, \"cogs\": 35}, \"passed\": true}, {\"check\": \"exact base\", \"actual\": {\"layers\": [[4, 40]], \"ending_value\": 40, \"cogs\": 35}, \"expected\": {\"layers\": [[4, 40]], \"ending_value\": 40, \"cogs\": 35}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.39,"exit_code":1,"observations":[{"actual":{"cogs":94,"ending_value":102,"layers":[[10,50],[4,24],[4,28]]},"check":"increment layer","expected":{"cogs":94,"ending_value":102,"layers":[[10,50],[4,24],[4,28]]},"passed":true},{"actual":{"cogs":62,"ending_value":54,"layers":[[4,24],[6,30]]},"check":"liquidation","expected":{"cogs":66,"ending_value":50,"layers":[[10,50]]},"passed":false},{"actual":{"cogs":46,"ending_value":6,"layers":[[1,6]]},"check":"deep liquidation","expected":{"cogs":50,"ending_value":2,"layers":[[1,2]]},"passed":false},{"actual":{"error":"invalid ending quantity"},"check":"over available","expected":{"error":"invalid ending quantity"},"passed":true},{"actual":{"error":"invalid ending quantity"},"check":"negative ending","expected":{"error":"invalid ending quantity"},"passed":true},{"actual":{"error":"invalid ending quantity"},"check":"count of minus one","expected":{"error":"invalid ending quantity"},"passed":true},{"actual":{"cogs":35,"ending_value":0,"layers":[]},"check":"all sold","expected":{"cogs":35,"ending_value":0,"layers":[]},"passed":true},{"actual":{"cogs":35,"ending_value":40,"layers":[[4,40]]},"check":"exact base","expected":{"cogs":35,"ending_value":40,"layers":[[4,40]]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"increment layer\", \"actual\": {\"layers\": [[10, 50], [4, 24], [4, 28]], \"ending_value\": 102, \"cogs\": 94}, \"expected\": {\"layers\": [[10, 50], [4, 24], [4, 28]], \"ending_value\": 102, \"cogs\": 94}, \"passed\": true}, {\"check\": \"liquidation\", \"actual\": {\"layers\": [[4, 24], [6, 30]], \"ending_value\": 54, \"cogs\": 62}, \"expected\": {\"layers\": [[10, 50]], \"ending_value\": 50, \"cogs\": 66}, \"passed\": false}, {\"check\": \"deep liquidation\", \"actual\": {\"layers\": [[1, 6]], \"ending_value\": 6, \"cogs\": 46}, \"expected\": {\"layers\": [[1, 2]], \"ending_value\": 2, \"cogs\": 50}, \"passed\": false}, {\"check\": \"over available\", \"actual\": {\"error\": \"invalid ending quantity\"}, \"expected\": {\"error\": \"invalid ending quantity\"}, \"passed\": true}, {\"check\": \"negative ending\", \"actual\": {\"error\": \"invalid ending quantity\"}, \"expected\": {\"error\": \"invalid ending quantity\"}, \"passed\": true}, {\"check\": \"count of minus one\", \"actual\": {\"error\": \"invalid ending quantity\"}, \"expected\": {\"error\": \"invalid ending quantity\"}, \"passed\": true}, {\"check\": \"all sold\", \"actual\": {\"layers\": [], \"ending_value\": 0, \"cogs\": 35}, \"expected\": {\"layers\": [], \"ending_value\": 0, \"cogs\": 35}, \"passed\": true}, {\"check\": \"exact base\", \"actual\": {\"layers\": [[4, 40]], \"ending_value\": 40, \"cogs\": 35}, \"expected\": {\"layers\": [[4, 40]], \"ending_value\": 40, \"cogs\": 35}, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}