{"abstract":"Products in different aisles with the same bay number are reported as too close.","category":"Warehouse slotting and bin packing","checks":8,"contract":"placements [[sku, hazard class, aisle, bay]]; rules [[class_a, class_b, min_bay_gap]] apply in either order within the same aisle. A rule class matches a hazard class equal to it or a division of it (\"4\" matches \"4.1\"). A pair violates when |bay difference| < min_gap. Different SKUs only. Return sorted unique [sku_low, sku_high] pairs.","contract_signature":"placements, rules","evaluation_group":"w2-warehouse-slotting-hazmat-segregation","failed_approach":"Treating neighbouring aisles as the same aisle still compares bay numbers that are not adjacent.","family":"w2-warehouse-slotting-hazmat-segregation-aisle-scope","id":"FA-95026","implementations":{"attempt":{"sha256":"399264f96e62b2c1a189eaf41fe3548f4921647649360dc3844aad004850d854","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(placements, rules):\n    def matches(cls, rule):\n        return cls == rule or cls.startswith(rule + '.')\n    found = set()\n    n = len(placements)\n    for i in range(n):\n        for j in range(i + 1, n):\n            sa, ca, aa, ba = placements[i]\n            sb, cb, ab, bb = placements[j]\n            if sa == sb or abs(aa - ab) > 1:\n                continue\n            gap = abs(ba - bb)\n            for ra, rb, min_gap in rules:\n                hit = (matches(ca, ra) and matches(cb, rb)) or (matches(ca, rb) and matches(cb, ra))\n                if hit and gap < min_gap:\n                    found.add(tuple(sorted([sa, sb])))\n    return [list(p) for p in sorted(found)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['other aisle', [[['F', '3', 1, 4], ['O', '5.1', 2, 4]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 4', [[['H0', '8', 2, 3], ['H1', '8', 1, 6], ['H2', '5.1', 2, 3], ['H3', '3', 1, 3], ['H4', '4.3', 2, 4], ['H5', '4.3', 2, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['adjacent oxidizer', [[['F', '3', 1, 4], ['O', '5.1', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['F', 'O']]], ['division match', [[['W', '4.3', 2, 2], ['C', '8', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['C', 'W']]], ['same sku twice', [[['P', '5.2', 1, 3], ['P', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['two pairs', [[['A', '3', 1, 1], ['Z', '5.1', 1, 2], ['B', '3', 1, 5], ['C', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['A', 'Z'], ['B', 'C']]], ['gap equal ok', [[['F', '3', 1, 4], ['O', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 7', [[['H0', '2.1', 2, 1], ['H1', '5.2', 1, 6], ['H2', '4.1', 1, 6], ['H3', '8', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]], [['generated mix 54', [[['H0', '8', 2, 4], ['H1', '4.1', 1, 4], ['H2', '2.1', 1, 1]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 46', [[['H0', '2.1', 1, 5], ['H1', '8', 2, 4], ['H2', '9', 2, 2], ['H3', '5.1', 2, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['other aisle', [[['F', '3', 1, 4], ['O', '5.1', 2, 4]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['same sku twice', [[['P', '5.2', 1, 3], ['P', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['two pairs', [[['A', '3', 1, 1], ['Z', '5.1', 1, 2], ['B', '3', 1, 5], ['C', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['A', 'Z'], ['B', 'C']]], ['gap equal ok', [[['F', '3', 1, 4], ['O', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 8', [[['H0', '5.1', 1, 6], ['H1', '3', 1, 1], ['H2', '5.2', 1, 2], ['H3', '2.1', 2, 1], ['H0', '5.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 16', [[['H0', '5.2', 1, 6], ['H1', '4.1', 1, 5], ['H2', '2.1', 1, 2], ['H3', '5.1', 1, 1], ['H4', '5.1', 1, 1], ['H5', '8', 2, 5], ['H0', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['H0', 'H2'], ['H2', 'H3'], ['H2', 'H4']]]], [['generated mix 8', [[['H0', '5.1', 1, 6], ['H1', '3', 1, 1], ['H2', '5.2', 1, 2], ['H3', '2.1', 2, 1], ['H0', '5.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 80', [[['H0', '5.1', 2, 2], ['H1', '2.1', 1, 4], ['H0', '5.1', 2, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['reverse order', [[['O', '5.1', 1, 1], ['G', '2.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['G', 'O']]], ['adjacent oxidizer', [[['F', '3', 1, 4], ['O', '5.1', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['F', 'O']]], ['division match', [[['W', '4.3', 2, 2], ['C', '8', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['C', 'W']]], ['same class rule', [[['P', '5.2', 1, 3], ['Q', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['P', 'Q']]], ['generated mix 20', [[['H0', '8', 1, 5], ['H1', '5.2', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 28', [[['H0', '4.3', 2, 3], ['H1', '5.1', 1, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]], [['generated mix 61', [[['H0', '5.1', 2, 3], ['H1', '3', 1, 3], ['H2', '9', 2, 2], ['H3', '9', 2, 2], ['H4', '8', 1, 1], ['H5', '4.1', 2, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 16', [[['H0', '5.2', 1, 6], ['H1', '4.1', 1, 5], ['H2', '2.1', 1, 2], ['H3', '5.1', 1, 1], ['H4', '5.1', 1, 1], ['H5', '8', 2, 5], ['H0', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['H0', 'H2'], ['H2', 'H3'], ['H2', 'H4']]], ['gap equal ok', [[['F', '3', 1, 4], ['O', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['other aisle', [[['F', '3', 1, 4], ['O', '5.1', 2, 4]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['same sku twice', [[['P', '5.2', 1, 3], ['P', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['two pairs', [[['A', '3', 1, 1], ['Z', '5.1', 1, 2], ['B', '3', 1, 5], ['C', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['A', 'Z'], ['B', 'C']]], ['generated mix 31', [[['H0', '3', 1, 6], ['H1', '4.1', 2, 4], ['H2', '2.1', 2, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 39', [[['H0', '8', 1, 2], ['H1', '8', 2, 5], ['H2', '3', 1, 1], ['H3', '4.3', 2, 3], ['H0', '8', 1, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]], [['generated mix 16', [[['H0', '5.2', 1, 6], ['H1', '4.1', 1, 5], ['H2', '2.1', 1, 2], ['H3', '5.1', 1, 1], ['H4', '5.1', 1, 1], ['H5', '8', 2, 5], ['H0', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['H0', 'H2'], ['H2', 'H3'], ['H2', 'H4']]], ['generated mix 61', [[['H0', '5.1', 2, 3], ['H1', '3', 1, 3], ['H2', '9', 2, 2], ['H3', '9', 2, 2], ['H4', '8', 1, 1], ['H5', '4.1', 2, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['same class rule', [[['P', '5.2', 1, 3], ['Q', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['P', 'Q']]], ['reverse order', [[['O', '5.1', 1, 1], ['G', '2.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['G', 'O']]], ['adjacent oxidizer', [[['F', '3', 1, 4], ['O', '5.1', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['F', 'O']]], ['division match', [[['W', '4.3', 2, 2], ['C', '8', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['C', 'W']]], ['generated mix 42', [[['H0', '8', 2, 1], ['H1', '3', 2, 6], ['H2', '3', 1, 5], ['H3', '5.2', 2, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 50', [[['H0', '8', 1, 2], ['H1', '2.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]]]\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":"580d6183a13ba3f31930cc8aa83b3e4559173e384b6735f5297e4abce3053b30","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(placements, rules):\n    def matches(cls, rule):\n        return cls == rule or cls.startswith(rule + '.')\n    found = set()\n    n = len(placements)\n    for i in range(n):\n        for j in range(i + 1, n):\n            sa, ca, aa, ba = placements[i]\n            sb, cb, ab, bb = placements[j]\n            if sa == sb:\n                continue\n            gap = abs(ba - bb)\n            for ra, rb, min_gap in rules:\n                hit = (matches(ca, ra) and matches(cb, rb)) or (matches(ca, rb) and matches(cb, ra))\n                if hit and gap < min_gap:\n                    found.add(tuple(sorted([sa, sb])))\n    return [list(p) for p in sorted(found)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['other aisle', [[['F', '3', 1, 4], ['O', '5.1', 2, 4]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 4', [[['H0', '8', 2, 3], ['H1', '8', 1, 6], ['H2', '5.1', 2, 3], ['H3', '3', 1, 3], ['H4', '4.3', 2, 4], ['H5', '4.3', 2, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['adjacent oxidizer', [[['F', '3', 1, 4], ['O', '5.1', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['F', 'O']]], ['division match', [[['W', '4.3', 2, 2], ['C', '8', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['C', 'W']]], ['same sku twice', [[['P', '5.2', 1, 3], ['P', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['two pairs', [[['A', '3', 1, 1], ['Z', '5.1', 1, 2], ['B', '3', 1, 5], ['C', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['A', 'Z'], ['B', 'C']]], ['gap equal ok', [[['F', '3', 1, 4], ['O', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 7', [[['H0', '2.1', 2, 1], ['H1', '5.2', 1, 6], ['H2', '4.1', 1, 6], ['H3', '8', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]], [['generated mix 54', [[['H0', '8', 2, 4], ['H1', '4.1', 1, 4], ['H2', '2.1', 1, 1]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 46', [[['H0', '2.1', 1, 5], ['H1', '8', 2, 4], ['H2', '9', 2, 2], ['H3', '5.1', 2, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['other aisle', [[['F', '3', 1, 4], ['O', '5.1', 2, 4]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['same sku twice', [[['P', '5.2', 1, 3], ['P', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['two pairs', [[['A', '3', 1, 1], ['Z', '5.1', 1, 2], ['B', '3', 1, 5], ['C', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['A', 'Z'], ['B', 'C']]], ['gap equal ok', [[['F', '3', 1, 4], ['O', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 8', [[['H0', '5.1', 1, 6], ['H1', '3', 1, 1], ['H2', '5.2', 1, 2], ['H3', '2.1', 2, 1], ['H0', '5.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 16', [[['H0', '5.2', 1, 6], ['H1', '4.1', 1, 5], ['H2', '2.1', 1, 2], ['H3', '5.1', 1, 1], ['H4', '5.1', 1, 1], ['H5', '8', 2, 5], ['H0', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['H0', 'H2'], ['H2', 'H3'], ['H2', 'H4']]]], [['generated mix 8', [[['H0', '5.1', 1, 6], ['H1', '3', 1, 1], ['H2', '5.2', 1, 2], ['H3', '2.1', 2, 1], ['H0', '5.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 80', [[['H0', '5.1', 2, 2], ['H1', '2.1', 1, 4], ['H0', '5.1', 2, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['reverse order', [[['O', '5.1', 1, 1], ['G', '2.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['G', 'O']]], ['adjacent oxidizer', [[['F', '3', 1, 4], ['O', '5.1', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['F', 'O']]], ['division match', [[['W', '4.3', 2, 2], ['C', '8', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['C', 'W']]], ['same class rule', [[['P', '5.2', 1, 3], ['Q', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['P', 'Q']]], ['generated mix 20', [[['H0', '8', 1, 5], ['H1', '5.2', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 28', [[['H0', '4.3', 2, 3], ['H1', '5.1', 1, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]], [['generated mix 61', [[['H0', '5.1', 2, 3], ['H1', '3', 1, 3], ['H2', '9', 2, 2], ['H3', '9', 2, 2], ['H4', '8', 1, 1], ['H5', '4.1', 2, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 16', [[['H0', '5.2', 1, 6], ['H1', '4.1', 1, 5], ['H2', '2.1', 1, 2], ['H3', '5.1', 1, 1], ['H4', '5.1', 1, 1], ['H5', '8', 2, 5], ['H0', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['H0', 'H2'], ['H2', 'H3'], ['H2', 'H4']]], ['gap equal ok', [[['F', '3', 1, 4], ['O', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['other aisle', [[['F', '3', 1, 4], ['O', '5.1', 2, 4]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['same sku twice', [[['P', '5.2', 1, 3], ['P', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['two pairs', [[['A', '3', 1, 1], ['Z', '5.1', 1, 2], ['B', '3', 1, 5], ['C', '5.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['A', 'Z'], ['B', 'C']]], ['generated mix 31', [[['H0', '3', 1, 6], ['H1', '4.1', 2, 4], ['H2', '2.1', 2, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 39', [[['H0', '8', 1, 2], ['H1', '8', 2, 5], ['H2', '3', 1, 1], ['H3', '4.3', 2, 3], ['H0', '8', 1, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]], [['generated mix 16', [[['H0', '5.2', 1, 6], ['H1', '4.1', 1, 5], ['H2', '2.1', 1, 2], ['H3', '5.1', 1, 1], ['H4', '5.1', 1, 1], ['H5', '8', 2, 5], ['H0', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['H0', 'H2'], ['H2', 'H3'], ['H2', 'H4']]], ['generated mix 61', [[['H0', '5.1', 2, 3], ['H1', '3', 1, 3], ['H2', '9', 2, 2], ['H3', '9', 2, 2], ['H4', '8', 1, 1], ['H5', '4.1', 2, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['same class rule', [[['P', '5.2', 1, 3], ['Q', '5.2', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['P', 'Q']]], ['reverse order', [[['O', '5.1', 1, 1], ['G', '2.1', 1, 3]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['G', 'O']]], ['adjacent oxidizer', [[['F', '3', 1, 4], ['O', '5.1', 1, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['F', 'O']]], ['division match', [[['W', '4.3', 2, 2], ['C', '8', 2, 2]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], [['C', 'W']]], ['generated mix 42', [[['H0', '8', 2, 1], ['H1', '3', 2, 6], ['H2', '3', 1, 5], ['H3', '5.2', 2, 5]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []], ['generated mix 50', [[['H0', '8', 1, 2], ['H1', '2.1', 1, 6]], [['3', '5.1', 2], ['4', '8', 1], ['5.2', '5.2', 1], ['2.1', '5', 3]]], []]]]\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 bay-gap rule table; not a regulatory segregation chart. 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-hazmat-segregation-aisle-scope","generated_at":"2026-09-29T14:52:09.886176+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Dangerous goods storage requires separation between incompatible hazard classes.","root_cause":"The aisle equality guard is missing, so bay numbers from different aisles are compared.","sha256":"2023c5b12fea0b975f8ecaf52421fa0dc8f7098650306ad5444017dc1f77f974","title":"Hazmat audit: bays compared across aisles · 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":39.949,"exit_code":1,"observations":[{"actual":[["F","O"]],"check":"other aisle","expected":[],"passed":false},{"actual":[["H1","H5"],["H2","H3"]],"check":"generated mix 4","expected":[],"passed":false},{"actual":[["F","O"]],"check":"adjacent oxidizer","expected":[["F","O"]],"passed":true},{"actual":[["C","W"]],"check":"division match","expected":[["C","W"]],"passed":true},{"actual":[],"check":"same sku twice","expected":[],"passed":true},{"actual":[["A","Z"],["B","C"]],"check":"two pairs","expected":[["A","Z"],["B","C"]],"passed":true},{"actual":[],"check":"gap equal ok","expected":[],"passed":true},{"actual":[],"check":"generated mix 7","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"other aisle\", \"actual\": [[\"F\", \"O\"]], \"expected\": [], \"passed\": false}, {\"check\": \"generated mix 4\", \"actual\": [[\"H1\", \"H5\"], [\"H2\", \"H3\"]], \"expected\": [], \"passed\": false}, {\"check\": \"adjacent oxidizer\", \"actual\": [[\"F\", \"O\"]], \"expected\": [[\"F\", \"O\"]], \"passed\": true}, {\"check\": \"division match\", \"actual\": [[\"C\", \"W\"]], \"expected\": [[\"C\", \"W\"]], \"passed\": true}, {\"check\": \"same sku twice\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"two pairs\", \"actual\": [[\"A\", \"Z\"], [\"B\", \"C\"]], \"expected\": [[\"A\", \"Z\"], [\"B\", \"C\"]], \"passed\": true}, {\"check\": \"gap equal ok\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.151,"exit_code":1,"observations":[{"actual":[["F","O"]],"check":"other aisle","expected":[],"passed":false},{"actual":[["H1","H5"],["H2","H3"]],"check":"generated mix 4","expected":[],"passed":false},{"actual":[["F","O"]],"check":"adjacent oxidizer","expected":[["F","O"]],"passed":true},{"actual":[["C","W"]],"check":"division match","expected":[["C","W"]],"passed":true},{"actual":[],"check":"same sku twice","expected":[],"passed":true},{"actual":[["A","Z"],["B","C"]],"check":"two pairs","expected":[["A","Z"],["B","C"]],"passed":true},{"actual":[],"check":"gap equal ok","expected":[],"passed":true},{"actual":[],"check":"generated mix 7","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"other aisle\", \"actual\": [[\"F\", \"O\"]], \"expected\": [], \"passed\": false}, {\"check\": \"generated mix 4\", \"actual\": [[\"H1\", \"H5\"], [\"H2\", \"H3\"]], \"expected\": [], \"passed\": false}, {\"check\": \"adjacent oxidizer\", \"actual\": [[\"F\", \"O\"]], \"expected\": [[\"F\", \"O\"]], \"passed\": true}, {\"check\": \"division match\", \"actual\": [[\"C\", \"W\"]], \"expected\": [[\"C\", \"W\"]], \"passed\": true}, {\"check\": \"same sku twice\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"two pairs\", \"actual\": [[\"A\", \"Z\"], [\"B\", \"C\"]], \"expected\": [[\"A\", \"Z\"], [\"B\", \"C\"]], \"passed\": true}, {\"check\": \"gap equal ok\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"generated mix 7\", \"actual\": [], \"expected\": [], \"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."}}