{"abstract":"SKUs whose pallet count fills lanes exactly are charged an extra empty lane.","category":"Warehouse slotting and bin packing","checks":8,"contract":"skus [[sku, pallets]] where lines may be adjustments (negative) and are netted per SKU. Each SKU with net pallets > 0 needs ceil(pallets/depth) single-SKU lanes. Honeycomb loss = lanes*depth - pallets. Utilization bp = floor((positions-loss)*10000/positions), 0 with no positions. Status OVER when lanes > available. Return [lanes, loss, util_bp, status].","contract_signature":"skus, depth, available","evaluation_group":"w2-warehouse-slotting-lane-honeycomb","failed_approach":"Plain floor division leaves partial lanes unallocated.","family":"w2-warehouse-slotting-lane-honeycomb-lane-ceiling","id":"FA-95311","implementations":{"attempt":{"sha256":"db84d3fc6f632513524749c597d06c24ea811a4c69b3f96f699a740a432b34f9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(skus, depth, available):\n    merged = {}\n    for sku, pallets in skus:\n        merged[sku] = merged.get(sku, 0) + pallets\n    lanes = 0\n    loss = 0\n    for sku, pallets in merged.items():\n        if pallets <= 0:\n            continue\n        n = pallets // depth\n        lanes += n\n        loss += n * depth - pallets\n    positions = lanes * depth\n    util = (positions - loss) * 10000 // positions if positions else 0\n    return [lanes, loss, util, 'OVER' if lanes > available else 'OK']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['mixed', [[['A', 5], ['B', 8]], 4, 10], [4, 3, 8125, 'OK']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['lanes equal available', [[['A', 8]], 4, 2], [2, 0, 10000, 'OK']], ['over', [[['A', 9]], 4, 2], [3, 3, 7500, 'OVER']], ['floor util', [[['A', 2]], 3, 1], [1, 1, 6666, 'OK']], ['adjustment nets out', [[['A', 3], ['A', -3], ['B', 1]], 4, 1], [1, 3, 2500, 'OK']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['generated mix 8', [[['C', 2], ['A', 8]], 3, 2], [4, 2, 8333, 'OVER']]], [['generated mix 9', [[['D', 8], ['D', -3], ['C', 1], ['A', 3], ['C', 8]], 3, 8], [6, 1, 9444, 'OK']], ['generated mix 2', [[['D', 2], ['D', 4], ['D', 9], ['B', 3], ['B', 2]], 2, 6], [11, 2, 9090, 'OVER']], ['adjustment nets out', [[['A', 3], ['A', -3], ['B', 1]], 4, 1], [1, 3, 2500, 'OK']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['mixed', [[['A', 5], ['B', 8]], 4, 10], [4, 3, 8125, 'OK']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['generated mix 11', [[['C', 4], ['C', 8]], 5, 2], [3, 3, 8000, 'OVER']], ['generated mix 19', [[['A', 5], ['A', 3], ['D', -3], ['C', 8], ['D', 1]], 5, 1], [4, 4, 8000, 'OVER']]], [['generated mix 24', [[['A', 1], ['D', -3], ['B', 9]], 3, 8], [4, 2, 8333, 'OK']], ['generated mix 9', [[['D', 8], ['D', -3], ['C', 1], ['A', 3], ['C', 8]], 3, 8], [6, 1, 9444, 'OK']], ['floor util', [[['A', 2]], 3, 1], [1, 1, 6666, 'OK']], ['lanes equal available', [[['A', 8]], 4, 2], [2, 0, 10000, 'OK']], ['adjustment nets out', [[['A', 3], ['A', -3], ['B', 1]], 4, 1], [1, 3, 2500, 'OK']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['generated mix 21', [[['B', -3]], 4, 8], [0, 0, 0, 'OK']], ['generated mix 30', [[['D', 8]], 5, 2], [2, 2, 8000, 'OK']]], [['generated mix 41', [[['A', 8], ['B', -3], ['A', 9], ['C', 9], ['B', -3]], 3, 2], [9, 1, 9629, 'OVER']], ['generated mix 15', [[['A', 2], ['A', 8], ['A', -3]], 2, 3], [4, 1, 8750, 'OVER']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['over', [[['A', 9]], 4, 2], [3, 3, 7500, 'OVER']], ['floor util', [[['A', 2]], 3, 1], [1, 1, 6666, 'OK']], ['lanes equal available', [[['A', 8]], 4, 2], [2, 0, 10000, 'OK']], ['generated mix 32', [[['B', 1], ['D', 9], ['D', 4], ['D', 2], ['D', 8]], 4, 3], [7, 4, 8571, 'OVER']], ['generated mix 40', [[['B', 4], ['A', 8], ['B', 3], ['A', 1]], 3, 1], [6, 2, 8888, 'OVER']]], [['generated mix 51', [[['C', 4]], 4, 1], [1, 0, 10000, 'OK']], ['generated mix 20', [[['A', 2], ['D', -1], ['C', 8], ['D', 2], ['B', 1]], 2, 2], [7, 2, 8571, 'OVER']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['mixed', [[['A', 5], ['B', 8]], 4, 10], [4, 3, 8125, 'OK']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['over', [[['A', 9]], 4, 2], [3, 3, 7500, 'OVER']], ['generated mix 43', [[['B', -3]], 3, 6], [0, 0, 0, 'OK']], ['generated mix 52', [[['C', 4], ['C', 8], ['C', 5]], 4, 6], [5, 3, 8500, 'OK']]]]\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":"4c3e33bb238ec568e619f9ef3809d2cd318e51e690ff19013aade53bc0759578","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(skus, depth, available):\n    merged = {}\n    for sku, pallets in skus:\n        merged[sku] = merged.get(sku, 0) + pallets\n    lanes = 0\n    loss = 0\n    for sku, pallets in merged.items():\n        if pallets <= 0:\n            continue\n        n = pallets // depth + 1\n        lanes += n\n        loss += n * depth - pallets\n    positions = lanes * depth\n    util = (positions - loss) * 10000 // positions if positions else 0\n    return [lanes, loss, util, 'OVER' if lanes > available else 'OK']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['mixed', [[['A', 5], ['B', 8]], 4, 10], [4, 3, 8125, 'OK']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['lanes equal available', [[['A', 8]], 4, 2], [2, 0, 10000, 'OK']], ['over', [[['A', 9]], 4, 2], [3, 3, 7500, 'OVER']], ['floor util', [[['A', 2]], 3, 1], [1, 1, 6666, 'OK']], ['adjustment nets out', [[['A', 3], ['A', -3], ['B', 1]], 4, 1], [1, 3, 2500, 'OK']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['generated mix 8', [[['C', 2], ['A', 8]], 3, 2], [4, 2, 8333, 'OVER']]], [['generated mix 9', [[['D', 8], ['D', -3], ['C', 1], ['A', 3], ['C', 8]], 3, 8], [6, 1, 9444, 'OK']], ['generated mix 2', [[['D', 2], ['D', 4], ['D', 9], ['B', 3], ['B', 2]], 2, 6], [11, 2, 9090, 'OVER']], ['adjustment nets out', [[['A', 3], ['A', -3], ['B', 1]], 4, 1], [1, 3, 2500, 'OK']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['mixed', [[['A', 5], ['B', 8]], 4, 10], [4, 3, 8125, 'OK']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['generated mix 11', [[['C', 4], ['C', 8]], 5, 2], [3, 3, 8000, 'OVER']], ['generated mix 19', [[['A', 5], ['A', 3], ['D', -3], ['C', 8], ['D', 1]], 5, 1], [4, 4, 8000, 'OVER']]], [['generated mix 24', [[['A', 1], ['D', -3], ['B', 9]], 3, 8], [4, 2, 8333, 'OK']], ['generated mix 9', [[['D', 8], ['D', -3], ['C', 1], ['A', 3], ['C', 8]], 3, 8], [6, 1, 9444, 'OK']], ['floor util', [[['A', 2]], 3, 1], [1, 1, 6666, 'OK']], ['lanes equal available', [[['A', 8]], 4, 2], [2, 0, 10000, 'OK']], ['adjustment nets out', [[['A', 3], ['A', -3], ['B', 1]], 4, 1], [1, 3, 2500, 'OK']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['generated mix 21', [[['B', -3]], 4, 8], [0, 0, 0, 'OK']], ['generated mix 30', [[['D', 8]], 5, 2], [2, 2, 8000, 'OK']]], [['generated mix 41', [[['A', 8], ['B', -3], ['A', 9], ['C', 9], ['B', -3]], 3, 2], [9, 1, 9629, 'OVER']], ['generated mix 15', [[['A', 2], ['A', 8], ['A', -3]], 2, 3], [4, 1, 8750, 'OVER']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['over', [[['A', 9]], 4, 2], [3, 3, 7500, 'OVER']], ['floor util', [[['A', 2]], 3, 1], [1, 1, 6666, 'OK']], ['lanes equal available', [[['A', 8]], 4, 2], [2, 0, 10000, 'OK']], ['generated mix 32', [[['B', 1], ['D', 9], ['D', 4], ['D', 2], ['D', 8]], 4, 3], [7, 4, 8571, 'OVER']], ['generated mix 40', [[['B', 4], ['A', 8], ['B', 3], ['A', 1]], 3, 1], [6, 2, 8888, 'OVER']]], [['generated mix 51', [[['C', 4]], 4, 1], [1, 0, 10000, 'OK']], ['generated mix 20', [[['A', 2], ['D', -1], ['C', 8], ['D', 2], ['B', 1]], 2, 2], [7, 2, 8571, 'OVER']], ['empty', [[], 4, 1], [0, 0, 0, 'OK']], ['mixed', [[['A', 5], ['B', 8]], 4, 10], [4, 3, 8125, 'OK']], ['merge lines', [[['A', 3], ['A', 2]], 4, 5], [2, 3, 6250, 'OK']], ['over', [[['A', 9]], 4, 2], [3, 3, 7500, 'OVER']], ['generated mix 43', [[['B', -3]], 3, 6], [0, 0, 0, 'OK']], ['generated mix 52', [[['C', 4], ['C', 8], ['C', 5]], 4, 6], [5, 3, 8500, 'OK']]]]\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 single-SKU lane policy. 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-warehouse-slotting-lane-honeycomb-lane-ceiling","generated_at":"2026-09-29T14:52:12.474900+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Deep-lane storage loses positions when lanes cannot be mixed across SKUs.","root_cause":"Lanes are computed as floor plus one instead of ceiling.","sha256":"98bbcd163d92748bb01389cb2f6cc53030cf607e61d7dab047bdedf1cc6b5069","title":"Honeycombing: extra lane on exact multiples · 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":41.208,"exit_code":1,"observations":[{"actual":[3,-1,10833,"OK"],"check":"mixed","expected":[4,3,8125,"OK"],"passed":false},{"actual":[1,-1,12500,"OK"],"check":"merge lines","expected":[2,3,6250,"OK"],"passed":false},{"actual":[2,0,10000,"OK"],"check":"lanes equal available","expected":[2,0,10000,"OK"],"passed":true},{"actual":[2,-1,11250,"OK"],"check":"over","expected":[3,3,7500,"OVER"],"passed":false},{"actual":[0,-2,0,"OK"],"check":"floor util","expected":[1,1,6666,"OK"],"passed":false},{"actual":[0,-1,0,"OK"],"check":"adjustment nets out","expected":[1,3,2500,"OK"],"passed":false},{"actual":[0,0,0,"OK"],"check":"empty","expected":[0,0,0,"OK"],"passed":true},{"actual":[2,-4,16666,"OK"],"check":"generated mix 8","expected":[4,2,8333,"OVER"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed\", \"actual\": [3, -1, 10833, \"OK\"], \"expected\": [4, 3, 8125, \"OK\"], \"passed\": false}, {\"check\": \"merge lines\", \"actual\": [1, -1, 12500, \"OK\"], \"expected\": [2, 3, 6250, \"OK\"], \"passed\": false}, {\"check\": \"lanes equal available\", \"actual\": [2, 0, 10000, \"OK\"], \"expected\": [2, 0, 10000, \"OK\"], \"passed\": true}, {\"check\": \"over\", \"actual\": [2, -1, 11250, \"OK\"], \"expected\": [3, 3, 7500, \"OVER\"], \"passed\": false}, {\"check\": \"floor util\", \"actual\": [0, -2, 0, \"OK\"], \"expected\": [1, 1, 6666, \"OK\"], \"passed\": false}, {\"check\": \"adjustment nets out\", \"actual\": [0, -1, 0, \"OK\"], \"expected\": [1, 3, 2500, \"OK\"], \"passed\": false}, {\"check\": \"empty\", \"actual\": [0, 0, 0, \"OK\"], \"expected\": [0, 0, 0, \"OK\"], \"passed\": true}, {\"check\": \"generated mix 8\", \"actual\": [2, -4, 16666, \"OK\"], \"expected\": [4, 2, 8333, \"OVER\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.303,"exit_code":1,"observations":[{"actual":[5,7,6500,"OK"],"check":"mixed","expected":[4,3,8125,"OK"],"passed":false},{"actual":[2,3,6250,"OK"],"check":"merge lines","expected":[2,3,6250,"OK"],"passed":true},{"actual":[3,4,6666,"OVER"],"check":"lanes equal available","expected":[2,0,10000,"OK"],"passed":false},{"actual":[3,3,7500,"OVER"],"check":"over","expected":[3,3,7500,"OVER"],"passed":true},{"actual":[1,1,6666,"OK"],"check":"floor util","expected":[1,1,6666,"OK"],"passed":true},{"actual":[1,3,2500,"OK"],"check":"adjustment nets out","expected":[1,3,2500,"OK"],"passed":true},{"actual":[0,0,0,"OK"],"check":"empty","expected":[0,0,0,"OK"],"passed":true},{"actual":[4,2,8333,"OVER"],"check":"generated mix 8","expected":[4,2,8333,"OVER"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mixed\", \"actual\": [5, 7, 6500, \"OK\"], \"expected\": [4, 3, 8125, \"OK\"], \"passed\": false}, {\"check\": \"merge lines\", \"actual\": [2, 3, 6250, \"OK\"], \"expected\": [2, 3, 6250, \"OK\"], \"passed\": true}, {\"check\": \"lanes equal available\", \"actual\": [3, 4, 6666, \"OVER\"], \"expected\": [2, 0, 10000, \"OK\"], \"passed\": false}, {\"check\": \"over\", \"actual\": [3, 3, 7500, \"OVER\"], \"expected\": [3, 3, 7500, \"OVER\"], \"passed\": true}, {\"check\": \"floor util\", \"actual\": [1, 1, 6666, \"OK\"], \"expected\": [1, 1, 6666, \"OK\"], \"passed\": true}, {\"check\": \"adjustment nets out\", \"actual\": [1, 3, 2500, \"OK\"], \"expected\": [1, 3, 2500, \"OK\"], \"passed\": true}, {\"check\": \"empty\", \"actual\": [0, 0, 0, \"OK\"], \"expected\": [0, 0, 0, \"OK\"], \"passed\": true}, {\"check\": \"generated mix 8\", \"actual\": [4, 2, 8333, \"OVER\"], \"expected\": [4, 2, 8333, \"OVER\"], \"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."}}