{"abstract":"Static boxes that just touch a dynamic box are missed.","category":"Collision detection broadphase","checks":8,"contract":"solve(A, B): bipartite box pruning (dynamic set A vs static set B), boxes [id,minx,miny,maxx,maxy], closed intervals. Sort both by (minx,id). Pass 1: for each a, B boxes with minx in [a.minx, a.maxx]; pass 2: for each b, A boxes with minx in (b.minx, b.maxx]; y overlap required. Return sorted [a id, b id] pairs.","contract_signature":"A, B","evaluation_group":"w2-collision_detection_broadphase-bipartite-box-pruning","failed_approach":"Making pass 2 strict instead misses touching pairs from the other side.","family":"w2-collision_detection_broadphase-bipartite-box-pruning-pass-one-touching","id":"FA-87766","implementations":{"attempt":{"sha256":"54ecff396fee211fcc7fb9294832898c2f91c1dd563e539754428ad366a02bd5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(A, B):\n    As = sorted(A, key=lambda r: (r[1], r[0]))\n    Bs = sorted(B, key=lambda r: (r[1], r[0]))\n    def yover(p, q):\n        return p[2] <= q[4] and q[2] <= p[4]\n    pairs = []\n    j = 0\n    for a in As:\n        while j < len(Bs) and Bs[j][1] < a[1]:\n            j += 1\n        k = j\n        while k < len(Bs) and Bs[k][1] <= a[3]:\n            if yover(a, Bs[k]):\n                pairs.append([a[0], Bs[k][0]])\n            k += 1\n    j2 = 0\n    for b in Bs:\n        while j2 < len(As) and As[j2][1] <= b[1]:\n            j2 += 1\n        k = j2\n        while k < len(As) and As[k][1] < b[3]:\n            if yover(As[k], b):\n                pairs.append([As[k][0], b[0]])\n            k += 1\n    pairs.sort()\n    return pairs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[8, 3.0, 4.0, 5.0, 7.0]], [[35, -2.0, -1.0, 1.0, 2.0], [25, -3.0, -1.0, -3.0, -1.0], [19, -3.0, -4.0, 0.0, -2.0], [26, 0.0, 0.0, 2.0, 1.0]]], []], [[[[10, 4.0, 0.0, 4.0, 1.0], [22, -4.0, 5.0, -2.0, 8.0], [8, -1.0, -2.0, 2.0, 0.0], [24, 0.0, 2.0, 1.0, 2.0]], [[35, 1.0, 1.0, 4.0, 4.0], [13, 2.0, 0.0, 4.0, 1.0], [18, -4.0, 1.0, -2.0, 2.0], [6, -3.0, -1.0, -3.0, 0.0]]], [[8, 13], [10, 13], [10, 35], [24, 35]]], [[[[8, 2.0, -1.0, 4.0, 1.0]], [[21, 2.0, 4.0, 5.0, 7.0]]], []], [[[[16, -3.0, 4.0, -3.0, 4.0], [21, 0.0, -2.0, 1.0, -2.0], [17, -3.0, -1.0, -2.0, 0.0]], [[11, -3.0, -2.0, 2.0, -2.0], [24, -5.0, 4.0, -3.0, 7.0], [5, -5.0, 0.0, -4.0, 2.0]]], [[16, 24], [21, 11]]], [[[[4, -5.0, -2.0, -5.0, -1.0], [36, 5.0, -4.0, 6.0, -3.0], [16, -3.0, -2.0, 0.0, 0.0]], [[39, -5.0, -2.0, -1.0, -1.0], [20, 0.0, 0.0, 3.0, 2.0], [26, -1.0, -5.0, -1.0, -4.0], [5, 2.0, 5.0, 2.0, 7.0]]], [[4, 39], [16, 20], [16, 39]]], [[[[11, 4.0, 0.0, 6.0, 1.0]], [[5, 4.0, 2.0, 4.0, 5.0], [24, -4.0, 0.0, -3.0, 2.0], [1, 3.0, 1.0, 4.0, 3.0], [27, 3.0, 1.0, 4.0, 1.0]]], [[11, 1], [11, 27]]], [[[[17, -1.0, -3.0, -1.0, -2.0], [6, -3.0, 1.0, -1.0, 3.0], [34, 1.0, -2.0, 3.0, 1.0]], [[27, -1.0, -4.0, 1.0, -2.0], [12, -1.0, -5.0, 2.0, -5.0], [4, -2.0, 3.0, -1.0, 4.0]]], [[6, 4], [17, 27], [34, 27]]], [[[[1, 2.0, -1.0, 4.0, 1.0], [29, 0.0, -3.0, 1.0, -1.0], [7, 0.0, 4.0, 1.0, 4.0]], [[19, 2.0, 2.0, 2.0, 4.0], [28, -3.0, 4.0, -1.0, 4.0], [30, 4.0, 1.0, 5.0, 1.0]]], [[1, 30]]]], [[[[[31, -2.0, -1.0, -2.0, 1.0]], [[18, -2.0, -5.0, 1.0, -3.0]]], []], [[[[24, 1.0, -3.0, 4.0, -1.0], [9, -3.0, 1.0, -2.0, 3.0], [27, 2.0, 2.0, 3.0, 5.0]], [[32, 4.0, 5.0, 5.0, 8.0], [1, -2.0, -4.0, 0.0, -2.0], [6, 2.0, -2.0, 2.0, 0.0]]], [[24, 6]]], [[[[9, 1.0, 5.0, 2.0, 7.0], [2, 2.0, 3.0, 5.0, 5.0], [18, -1.0, 1.0, 1.0, 2.0]], [[10, 5.0, -4.0, 7.0, -2.0], [7, -4.0, 2.0, -1.0, 4.0], [37, 4.0, 3.0, 5.0, 3.0], [23, 1.0, -2.0, 1.0, -2.0]]], [[2, 37], [18, 7]]], [[[[8, -2.0, 3.0, -2.0, 6.0], [12, 2.0, 1.0, 2.0, 4.0], [37, -1.0, 4.0, 1.0, 7.0], [32, 0.0, -3.0, 2.0, -3.0]], [[26, 2.0, 4.0, 4.0, 6.0], [22, 0.0, -1.0, 2.0, 2.0], [38, 3.0, -1.0, 4.0, -1.0], [16, -3.0, 1.0, -3.0, 4.0]]], [[12, 22], [12, 26]]], [[[[6, -3.0, -3.0, -3.0, 0.0], [9, -3.0, 5.0, -2.0, 8.0]], [[28, -3.0, -3.0, 1.0, -2.0]]], [[6, 28]]], [[[[23, 1.0, 3.0, 1.0, 5.0], [15, 0.0, -5.0, 3.0, -4.0]], [[1, 1.0, 2.0, 1.0, 3.0], [35, 3.0, -3.0, 5.0, 0.0]]], [[23, 1]]], [[[[19, 2.0, 1.0, 2.0, 2.0], [32, -1.0, 2.0, -1.0, 3.0], [18, 5.0, -2.0, 5.0, 0.0]], [[25, 2.0, 1.0, 2.0, 2.0], [33, 5.0, -1.0, 5.0, 0.0], [30, 0.0, 5.0, 3.0, 7.0]]], [[18, 33], [19, 25]]], [[[[17, -2.0, -5.0, 1.0, -2.0], [23, 5.0, 3.0, 6.0, 5.0], [31, -3.0, -5.0, -1.0, -5.0]], [[7, -2.0, -1.0, 5.0, -1.0]]], []]], [[[[[12, -5.0, 1.0, -2.0, 3.0], [27, -5.0, 0.0, -2.0, 0.0], [31, 4.0, 0.0, 4.0, 1.0], [25, 3.0, 5.0, 6.0, 6.0]], [[32, 1.0, 1.0, 3.0, 2.0], [9, -3.0, -3.0, 0.0, 0.0], [30, -4.0, 2.0, -4.0, 2.0], [8, -2.0, -4.0, 1.0, -1.0]]], [[12, 30], [27, 9]]], [[[[23, 4.0, -4.0, 4.0, -1.0], [10, 3.0, -5.0, 3.0, -5.0], [29, -5.0, -5.0, -4.0, -5.0]], [[39, 4.0, -4.0, 4.0, -2.0], [12, 0.0, -4.0, 0.0, -1.0], [25, 3.0, -5.0, 6.0, -2.0]]], [[10, 25], [23, 25], [23, 39]]], [[[[18, -5.0, 4.0, -5.0, 5.0], [6, -1.0, -2.0, 1.0, -1.0]], [[21, 1.0, -2.0, 1.0, 1.0], [9, 0.0, 0.0, 0.0, 1.0], [14, -2.0, -3.0, -1.0, -2.0], [30, 4.0, -5.0, 6.0, -2.0]]], [[6, 14], [6, 21]]], [[[[11, 1.0, 2.0, 1.0, 4.0], [5, 4.0, 2.0, 5.0, 2.0], [32, -2.0, -5.0, -1.0, -2.0]], [[30, 0.0, 4.0, 0.0, 7.0], [36, 1.0, 1.0, 4.0, 1.0], [19, -4.0, -4.0, -1.0, -3.0], [31, -2.0, 3.0, 1.0, 6.0]]], [[11, 31], [32, 19]]], [[[[31, -2.0, 2.0, -2.0, 3.0], [26, -5.0, -5.0, -3.0, -5.0], [12, -3.0, 4.0, -2.0, 4.0]], [[38, -3.0, -1.0, -2.0, -1.0], [7, -3.0, 5.0, -1.0, 8.0]]], []], [[[[32, 3.0, -5.0, 4.0, -3.0]], [[9, -3.0, 3.0, 0.0, 4.0], [19, -4.0, -2.0, -2.0, -1.0], [28, -3.0, -4.0, 0.0, -3.0], [18, 0.0, 3.0, 0.0, 6.0]]], []], [[[[31, 4.0, -2.0, 4.0, 0.0], [8, -5.0, -5.0, -3.0, -2.0]], [[18, 0.0, -5.0, 2.0, -3.0], [25, 0.0, 5.0, 0.0, 7.0], [6, -2.0, 4.0, -1.0, 7.0]]], []], [[[[35, 4.0, -2.0, 5.0, 0.0], [12, 0.0, 2.0, 3.0, 4.0]], [[39, 4.0, 0.0, 4.0, 3.0], [18, 2.0, 2.0, 3.0, 5.0], [34, 2.0, 0.0, 5.0, 3.0], [22, 3.0, 3.0, 3.0, 3.0]]], [[12, 18], [12, 22], [12, 34], [35, 34], [35, 39]]]], [[[[[16, -3.0, -1.0, -1.0, -1.0], [31, -2.0, -2.0, 1.0, 0.0]], [[23, -3.0, 4.0, 4.0, 6.0], [14, 1.0, -2.0, 3.0, -2.0]]], [[31, 14]]], [[[[25, 5.0, 5.0, 8.0, 6.0], [4, -1.0, -3.0, 1.0, 0.0]], [[33, 5.0, 5.0, 5.0, 8.0], [20, -4.0, -3.0, -1.0, -3.0], [37, 4.0, 5.0, 7.0, 6.0], [17, -4.0, 4.0, -3.0, 7.0]]], [[4, 20], [25, 33], [25, 37]]], [[[[28, -1.0, 5.0, -1.0, 6.0], [1, 4.0, 2.0, 5.0, 4.0]], [[13, -1.0, 3.0, 1.0, 3.0], [21, -1.0, 1.0, 2.0, 4.0], [17, 4.0, -1.0, 6.0, 0.0]]], []], [[[[32, 1.0, 3.0, 1.0, 4.0]], [[10, -1.0, 3.0, 1.0, 5.0], [8, 1.0, 1.0, 4.0, 2.0], [30, -5.0, 4.0, -3.0, 6.0], [24, 4.0, 5.0, 5.0, 7.0]]], [[32, 10]]], [[[[33, 5.0, -3.0, 6.0, -3.0], [29, -3.0, 2.0, 0.0, 3.0], [20, 4.0, -5.0, 4.0, -2.0], [30, 3.0, -1.0, 6.0, -1.0]], [[13, 5.0, -2.0, 5.0, -1.0], [24, -3.0, 3.0, -3.0, 5.0]]], [[29, 24], [30, 13]]], [[[[37, 4.0, 2.0, 4.0, 3.0], [11, 3.0, -3.0, 3.0, 0.0]], [[3, 4.0, 1.0, 6.0, 3.0], [24, 4.0, 3.0, 6.0, 3.0], [13, 4.0, 5.0, 4.0, 7.0], [39, 0.0, 4.0, 3.0, 6.0]]], [[37, 3], [37, 24]]], [[[[39, -4.0, 2.0, -2.0, 2.0], [36, -4.0, -3.0, -4.0, -1.0]], [[20, 5.0, -5.0, 7.0, -2.0], [22, -5.0, 4.0, -5.0, 4.0], [25, -3.0, 3.0, -2.0, 3.0]]], []], [[[[36, 4.0, -3.0, 4.0, 0.0], [6, -3.0, 1.0, -3.0, 1.0], [37, -3.0, -3.0, -1.0, -2.0]], [[33, 3.0, -2.0, 4.0, -2.0], [18, -1.0, 5.0, -1.0, 7.0], [25, -3.0, -1.0, -1.0, 1.0], [2, -3.0, 5.0, 0.0, 6.0]]], [[6, 25], [36, 33]]]], [[[[[26, -3.0, -3.0, -1.0, -1.0], [2, 1.0, 5.0, 3.0, 5.0], [7, 2.0, 5.0, 5.0, 5.0]], [[20, -1.0, -1.0, -1.0, 0.0], [14, 5.0, 2.0, 7.0, 2.0], [5, 0.0, 3.0, 3.0, 6.0]]], [[2, 5], [7, 5], [26, 20]]], [[[[14, -5.0, -5.0, -5.0, -5.0], [26, -3.0, -1.0, -1.0, 1.0], [20, 1.0, 3.0, 3.0, 4.0]], [[10, -5.0, -5.0, 2.0, -4.0]]], [[14, 10]]], [[[[7, 5.0, 3.0, 6.0, 4.0], [29, 0.0, -3.0, 2.0, -3.0]], [[14, 5.0, 0.0, 5.0, 0.0], [9, 3.0, 0.0, 4.0, 2.0], [19, -2.0, -3.0, 0.0, -2.0]]], [[29, 19]]], [[[[32, 0.0, 2.0, 3.0, 2.0]], [[37, 0.0, -5.0, 4.0, -3.0]]], []], [[[[21, -2.0, 4.0, -2.0, 6.0], [3, 3.0, -5.0, 4.0, -2.0], [36, -1.0, -3.0, 1.0, -2.0]], [[23, -1.0, 0.0, 2.0, 0.0], [12, 0.0, -1.0, 2.0, 0.0], [8, -2.0, 5.0, 1.0, 7.0], [1, -1.0, 0.0, 0.0, 1.0]]], [[21, 8]]], [[[[19, 2.0, 1.0, 5.0, 4.0]], [[39, 2.0, 4.0, 6.0, 7.0], [14, 5.0, -3.0, 8.0, 0.0]]], [[19, 39]]], [[[[15, 1.0, 1.0, 3.0, 2.0], [27, 2.0, 4.0, 4.0, 4.0], [6, -4.0, -4.0, -3.0, -4.0]], [[20, 2.0, -4.0, 3.0, -3.0], [2, 0.0, 0.0, 1.0, 2.0]]], [[15, 2]]], [[[[38, 5.0, 0.0, 5.0, 2.0], [37, -5.0, 5.0, -4.0, 5.0]], [[7, 3.0, 1.0, 5.0, 4.0], [33, -5.0, 3.0, -4.0, 5.0], [13, -4.0, -4.0, -4.0, -1.0]]], [[37, 33], [38, 7]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, 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":"c9a13eac85e40d97f4d9e856e24a23a0e21018e9198bde49d3acf6636f1e6760","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(A, B):\n    As = sorted(A, key=lambda r: (r[1], r[0]))\n    Bs = sorted(B, key=lambda r: (r[1], r[0]))\n    def yover(p, q):\n        return p[2] <= q[4] and q[2] <= p[4]\n    pairs = []\n    j = 0\n    for a in As:\n        while j < len(Bs) and Bs[j][1] < a[1]:\n            j += 1\n        k = j\n        while k < len(Bs) and Bs[k][1] < a[3]:\n            if yover(a, Bs[k]):\n                pairs.append([a[0], Bs[k][0]])\n            k += 1\n    j2 = 0\n    for b in Bs:\n        while j2 < len(As) and As[j2][1] <= b[1]:\n            j2 += 1\n        k = j2\n        while k < len(As) and As[k][1] <= b[3]:\n            if yover(As[k], b):\n                pairs.append([As[k][0], b[0]])\n            k += 1\n    pairs.sort()\n    return pairs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[8, 3.0, 4.0, 5.0, 7.0]], [[35, -2.0, -1.0, 1.0, 2.0], [25, -3.0, -1.0, -3.0, -1.0], [19, -3.0, -4.0, 0.0, -2.0], [26, 0.0, 0.0, 2.0, 1.0]]], []], [[[[10, 4.0, 0.0, 4.0, 1.0], [22, -4.0, 5.0, -2.0, 8.0], [8, -1.0, -2.0, 2.0, 0.0], [24, 0.0, 2.0, 1.0, 2.0]], [[35, 1.0, 1.0, 4.0, 4.0], [13, 2.0, 0.0, 4.0, 1.0], [18, -4.0, 1.0, -2.0, 2.0], [6, -3.0, -1.0, -3.0, 0.0]]], [[8, 13], [10, 13], [10, 35], [24, 35]]], [[[[8, 2.0, -1.0, 4.0, 1.0]], [[21, 2.0, 4.0, 5.0, 7.0]]], []], [[[[16, -3.0, 4.0, -3.0, 4.0], [21, 0.0, -2.0, 1.0, -2.0], [17, -3.0, -1.0, -2.0, 0.0]], [[11, -3.0, -2.0, 2.0, -2.0], [24, -5.0, 4.0, -3.0, 7.0], [5, -5.0, 0.0, -4.0, 2.0]]], [[16, 24], [21, 11]]], [[[[4, -5.0, -2.0, -5.0, -1.0], [36, 5.0, -4.0, 6.0, -3.0], [16, -3.0, -2.0, 0.0, 0.0]], [[39, -5.0, -2.0, -1.0, -1.0], [20, 0.0, 0.0, 3.0, 2.0], [26, -1.0, -5.0, -1.0, -4.0], [5, 2.0, 5.0, 2.0, 7.0]]], [[4, 39], [16, 20], [16, 39]]], [[[[11, 4.0, 0.0, 6.0, 1.0]], [[5, 4.0, 2.0, 4.0, 5.0], [24, -4.0, 0.0, -3.0, 2.0], [1, 3.0, 1.0, 4.0, 3.0], [27, 3.0, 1.0, 4.0, 1.0]]], [[11, 1], [11, 27]]], [[[[17, -1.0, -3.0, -1.0, -2.0], [6, -3.0, 1.0, -1.0, 3.0], [34, 1.0, -2.0, 3.0, 1.0]], [[27, -1.0, -4.0, 1.0, -2.0], [12, -1.0, -5.0, 2.0, -5.0], [4, -2.0, 3.0, -1.0, 4.0]]], [[6, 4], [17, 27], [34, 27]]], [[[[1, 2.0, -1.0, 4.0, 1.0], [29, 0.0, -3.0, 1.0, -1.0], [7, 0.0, 4.0, 1.0, 4.0]], [[19, 2.0, 2.0, 2.0, 4.0], [28, -3.0, 4.0, -1.0, 4.0], [30, 4.0, 1.0, 5.0, 1.0]]], [[1, 30]]]], [[[[[31, -2.0, -1.0, -2.0, 1.0]], [[18, -2.0, -5.0, 1.0, -3.0]]], []], [[[[24, 1.0, -3.0, 4.0, -1.0], [9, -3.0, 1.0, -2.0, 3.0], [27, 2.0, 2.0, 3.0, 5.0]], [[32, 4.0, 5.0, 5.0, 8.0], [1, -2.0, -4.0, 0.0, -2.0], [6, 2.0, -2.0, 2.0, 0.0]]], [[24, 6]]], [[[[9, 1.0, 5.0, 2.0, 7.0], [2, 2.0, 3.0, 5.0, 5.0], [18, -1.0, 1.0, 1.0, 2.0]], [[10, 5.0, -4.0, 7.0, -2.0], [7, -4.0, 2.0, -1.0, 4.0], [37, 4.0, 3.0, 5.0, 3.0], [23, 1.0, -2.0, 1.0, -2.0]]], [[2, 37], [18, 7]]], [[[[8, -2.0, 3.0, -2.0, 6.0], [12, 2.0, 1.0, 2.0, 4.0], [37, -1.0, 4.0, 1.0, 7.0], [32, 0.0, -3.0, 2.0, -3.0]], [[26, 2.0, 4.0, 4.0, 6.0], [22, 0.0, -1.0, 2.0, 2.0], [38, 3.0, -1.0, 4.0, -1.0], [16, -3.0, 1.0, -3.0, 4.0]]], [[12, 22], [12, 26]]], [[[[6, -3.0, -3.0, -3.0, 0.0], [9, -3.0, 5.0, -2.0, 8.0]], [[28, -3.0, -3.0, 1.0, -2.0]]], [[6, 28]]], [[[[23, 1.0, 3.0, 1.0, 5.0], [15, 0.0, -5.0, 3.0, -4.0]], [[1, 1.0, 2.0, 1.0, 3.0], [35, 3.0, -3.0, 5.0, 0.0]]], [[23, 1]]], [[[[19, 2.0, 1.0, 2.0, 2.0], [32, -1.0, 2.0, -1.0, 3.0], [18, 5.0, -2.0, 5.0, 0.0]], [[25, 2.0, 1.0, 2.0, 2.0], [33, 5.0, -1.0, 5.0, 0.0], [30, 0.0, 5.0, 3.0, 7.0]]], [[18, 33], [19, 25]]], [[[[17, -2.0, -5.0, 1.0, -2.0], [23, 5.0, 3.0, 6.0, 5.0], [31, -3.0, -5.0, -1.0, -5.0]], [[7, -2.0, -1.0, 5.0, -1.0]]], []]], [[[[[12, -5.0, 1.0, -2.0, 3.0], [27, -5.0, 0.0, -2.0, 0.0], [31, 4.0, 0.0, 4.0, 1.0], [25, 3.0, 5.0, 6.0, 6.0]], [[32, 1.0, 1.0, 3.0, 2.0], [9, -3.0, -3.0, 0.0, 0.0], [30, -4.0, 2.0, -4.0, 2.0], [8, -2.0, -4.0, 1.0, -1.0]]], [[12, 30], [27, 9]]], [[[[23, 4.0, -4.0, 4.0, -1.0], [10, 3.0, -5.0, 3.0, -5.0], [29, -5.0, -5.0, -4.0, -5.0]], [[39, 4.0, -4.0, 4.0, -2.0], [12, 0.0, -4.0, 0.0, -1.0], [25, 3.0, -5.0, 6.0, -2.0]]], [[10, 25], [23, 25], [23, 39]]], [[[[18, -5.0, 4.0, -5.0, 5.0], [6, -1.0, -2.0, 1.0, -1.0]], [[21, 1.0, -2.0, 1.0, 1.0], [9, 0.0, 0.0, 0.0, 1.0], [14, -2.0, -3.0, -1.0, -2.0], [30, 4.0, -5.0, 6.0, -2.0]]], [[6, 14], [6, 21]]], [[[[11, 1.0, 2.0, 1.0, 4.0], [5, 4.0, 2.0, 5.0, 2.0], [32, -2.0, -5.0, -1.0, -2.0]], [[30, 0.0, 4.0, 0.0, 7.0], [36, 1.0, 1.0, 4.0, 1.0], [19, -4.0, -4.0, -1.0, -3.0], [31, -2.0, 3.0, 1.0, 6.0]]], [[11, 31], [32, 19]]], [[[[31, -2.0, 2.0, -2.0, 3.0], [26, -5.0, -5.0, -3.0, -5.0], [12, -3.0, 4.0, -2.0, 4.0]], [[38, -3.0, -1.0, -2.0, -1.0], [7, -3.0, 5.0, -1.0, 8.0]]], []], [[[[32, 3.0, -5.0, 4.0, -3.0]], [[9, -3.0, 3.0, 0.0, 4.0], [19, -4.0, -2.0, -2.0, -1.0], [28, -3.0, -4.0, 0.0, -3.0], [18, 0.0, 3.0, 0.0, 6.0]]], []], [[[[31, 4.0, -2.0, 4.0, 0.0], [8, -5.0, -5.0, -3.0, -2.0]], [[18, 0.0, -5.0, 2.0, -3.0], [25, 0.0, 5.0, 0.0, 7.0], [6, -2.0, 4.0, -1.0, 7.0]]], []], [[[[35, 4.0, -2.0, 5.0, 0.0], [12, 0.0, 2.0, 3.0, 4.0]], [[39, 4.0, 0.0, 4.0, 3.0], [18, 2.0, 2.0, 3.0, 5.0], [34, 2.0, 0.0, 5.0, 3.0], [22, 3.0, 3.0, 3.0, 3.0]]], [[12, 18], [12, 22], [12, 34], [35, 34], [35, 39]]]], [[[[[16, -3.0, -1.0, -1.0, -1.0], [31, -2.0, -2.0, 1.0, 0.0]], [[23, -3.0, 4.0, 4.0, 6.0], [14, 1.0, -2.0, 3.0, -2.0]]], [[31, 14]]], [[[[25, 5.0, 5.0, 8.0, 6.0], [4, -1.0, -3.0, 1.0, 0.0]], [[33, 5.0, 5.0, 5.0, 8.0], [20, -4.0, -3.0, -1.0, -3.0], [37, 4.0, 5.0, 7.0, 6.0], [17, -4.0, 4.0, -3.0, 7.0]]], [[4, 20], [25, 33], [25, 37]]], [[[[28, -1.0, 5.0, -1.0, 6.0], [1, 4.0, 2.0, 5.0, 4.0]], [[13, -1.0, 3.0, 1.0, 3.0], [21, -1.0, 1.0, 2.0, 4.0], [17, 4.0, -1.0, 6.0, 0.0]]], []], [[[[32, 1.0, 3.0, 1.0, 4.0]], [[10, -1.0, 3.0, 1.0, 5.0], [8, 1.0, 1.0, 4.0, 2.0], [30, -5.0, 4.0, -3.0, 6.0], [24, 4.0, 5.0, 5.0, 7.0]]], [[32, 10]]], [[[[33, 5.0, -3.0, 6.0, -3.0], [29, -3.0, 2.0, 0.0, 3.0], [20, 4.0, -5.0, 4.0, -2.0], [30, 3.0, -1.0, 6.0, -1.0]], [[13, 5.0, -2.0, 5.0, -1.0], [24, -3.0, 3.0, -3.0, 5.0]]], [[29, 24], [30, 13]]], [[[[37, 4.0, 2.0, 4.0, 3.0], [11, 3.0, -3.0, 3.0, 0.0]], [[3, 4.0, 1.0, 6.0, 3.0], [24, 4.0, 3.0, 6.0, 3.0], [13, 4.0, 5.0, 4.0, 7.0], [39, 0.0, 4.0, 3.0, 6.0]]], [[37, 3], [37, 24]]], [[[[39, -4.0, 2.0, -2.0, 2.0], [36, -4.0, -3.0, -4.0, -1.0]], [[20, 5.0, -5.0, 7.0, -2.0], [22, -5.0, 4.0, -5.0, 4.0], [25, -3.0, 3.0, -2.0, 3.0]]], []], [[[[36, 4.0, -3.0, 4.0, 0.0], [6, -3.0, 1.0, -3.0, 1.0], [37, -3.0, -3.0, -1.0, -2.0]], [[33, 3.0, -2.0, 4.0, -2.0], [18, -1.0, 5.0, -1.0, 7.0], [25, -3.0, -1.0, -1.0, 1.0], [2, -3.0, 5.0, 0.0, 6.0]]], [[6, 25], [36, 33]]]], [[[[[26, -3.0, -3.0, -1.0, -1.0], [2, 1.0, 5.0, 3.0, 5.0], [7, 2.0, 5.0, 5.0, 5.0]], [[20, -1.0, -1.0, -1.0, 0.0], [14, 5.0, 2.0, 7.0, 2.0], [5, 0.0, 3.0, 3.0, 6.0]]], [[2, 5], [7, 5], [26, 20]]], [[[[14, -5.0, -5.0, -5.0, -5.0], [26, -3.0, -1.0, -1.0, 1.0], [20, 1.0, 3.0, 3.0, 4.0]], [[10, -5.0, -5.0, 2.0, -4.0]]], [[14, 10]]], [[[[7, 5.0, 3.0, 6.0, 4.0], [29, 0.0, -3.0, 2.0, -3.0]], [[14, 5.0, 0.0, 5.0, 0.0], [9, 3.0, 0.0, 4.0, 2.0], [19, -2.0, -3.0, 0.0, -2.0]]], [[29, 19]]], [[[[32, 0.0, 2.0, 3.0, 2.0]], [[37, 0.0, -5.0, 4.0, -3.0]]], []], [[[[21, -2.0, 4.0, -2.0, 6.0], [3, 3.0, -5.0, 4.0, -2.0], [36, -1.0, -3.0, 1.0, -2.0]], [[23, -1.0, 0.0, 2.0, 0.0], [12, 0.0, -1.0, 2.0, 0.0], [8, -2.0, 5.0, 1.0, 7.0], [1, -1.0, 0.0, 0.0, 1.0]]], [[21, 8]]], [[[[19, 2.0, 1.0, 5.0, 4.0]], [[39, 2.0, 4.0, 6.0, 7.0], [14, 5.0, -3.0, 8.0, 0.0]]], [[19, 39]]], [[[[15, 1.0, 1.0, 3.0, 2.0], [27, 2.0, 4.0, 4.0, 4.0], [6, -4.0, -4.0, -3.0, -4.0]], [[20, 2.0, -4.0, 3.0, -3.0], [2, 0.0, 0.0, 1.0, 2.0]]], [[15, 2]]], [[[[38, 5.0, 0.0, 5.0, 2.0], [37, -5.0, 5.0, -4.0, 5.0]], [[7, 3.0, 1.0, 5.0, 4.0], [33, -5.0, 3.0, -4.0, 5.0], [13, -4.0, -4.0, -4.0, -1.0]]], [[37, 33], [38, 7]]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, 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":"A deterministic bounded teaching model with stipulated toy conventions; not a production physics engine or spatial index. 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-collision_detection_broadphase-bipartite-box-pruning-pass-one-touching","generated_at":"2026-09-29T14:51:01.900989+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Broadphase stages decide which object pairs ever reach narrowphase; a wrong boundary, ordering or bookkeeping rule silently drops real contacts or floods the solver with false candidates.","root_cause":"Pass 1 scans while minx < a.maxx.","sha256":"5aa8139c3e00d555b4a634974df8ebfd88633da0e939c265fb1def8a547bd0d5","title":"First pruning pass excludes boxes starting at the end of a · 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.748,"exit_code":1,"observations":[{"actual":[],"check":"case 0","expected":[],"passed":true},{"actual":[[8,13],[24,35]],"check":"case 1","expected":[[8,13],[10,13],[10,35],[24,35]],"passed":false},{"actual":[],"check":"case 2","expected":[],"passed":true},{"actual":[[21,11]],"check":"case 3","expected":[[16,24],[21,11]],"passed":false},{"actual":[[4,39],[16,20],[16,39]],"check":"case 4","expected":[[4,39],[16,20],[16,39]],"passed":true},{"actual":[],"check":"case 5","expected":[[11,1],[11,27]],"passed":false},{"actual":[[6,4],[17,27]],"check":"case 6","expected":[[6,4],[17,27],[34,27]],"passed":false},{"actual":[[1,30]],"check":"case 7","expected":[[1,30]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"case 1\", \"actual\": [[8, 13], [24, 35]], \"expected\": [[8, 13], [10, 13], [10, 35], [24, 35]], \"passed\": false}, {\"check\": \"case 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"case 3\", \"actual\": [[21, 11]], \"expected\": [[16, 24], [21, 11]], \"passed\": false}, {\"check\": \"case 4\", \"actual\": [[4, 39], [16, 20], [16, 39]], \"expected\": [[4, 39], [16, 20], [16, 39]], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [], \"expected\": [[11, 1], [11, 27]], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [[6, 4], [17, 27]], \"expected\": [[6, 4], [17, 27], [34, 27]], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [[1, 30]], \"expected\": [[1, 30]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.402,"exit_code":1,"observations":[{"actual":[],"check":"case 0","expected":[],"passed":true},{"actual":[[10,13],[10,35]],"check":"case 1","expected":[[8,13],[10,13],[10,35],[24,35]],"passed":false},{"actual":[],"check":"case 2","expected":[],"passed":true},{"actual":[[16,24],[21,11]],"check":"case 3","expected":[[16,24],[21,11]],"passed":true},{"actual":[[16,39]],"check":"case 4","expected":[[4,39],[16,20],[16,39]],"passed":false},{"actual":[[11,1],[11,27]],"check":"case 5","expected":[[11,1],[11,27]],"passed":true},{"actual":[[6,4],[34,27]],"check":"case 6","expected":[[6,4],[17,27],[34,27]],"passed":false},{"actual":[],"check":"case 7","expected":[[1,30]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"case 1\", \"actual\": [[10, 13], [10, 35]], \"expected\": [[8, 13], [10, 13], [10, 35], [24, 35]], \"passed\": false}, {\"check\": \"case 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"case 3\", \"actual\": [[16, 24], [21, 11]], \"expected\": [[16, 24], [21, 11]], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [[16, 39]], \"expected\": [[4, 39], [16, 20], [16, 39]], \"passed\": false}, {\"check\": \"case 5\", \"actual\": [[11, 1], [11, 27]], \"expected\": [[11, 1], [11, 27]], \"passed\": true}, {\"check\": \"case 6\", \"actual\": [[6, 4], [34, 27]], \"expected\": [[6, 4], [17, 27], [34, 27]], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [], \"expected\": [[1, 30]], \"passed\": false}], \"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."}}