{"abstract":"Tree queries and test counts double for proxies touched twice.","category":"Collision detection broadphase","checks":8,"contract":"solve(proxies, moved): dynamic-tree pair update. For each distinct moved proxy q (first occurrence order) test every other proxy p; skip p when p also moved and p>q (that pair is found from p). Count every overlap test performed; closed intervals. Return [sorted unique [min,max] pairs, test count].","contract_signature":"proxies, moved","evaluation_group":"w2-collision_detection_broadphase-move-buffer-pairs","failed_approach":"Checking the seen set without recording entries has no effect.","family":"w2-collision_detection_broadphase-move-buffer-pairs-repeated-move-entries","id":"FA-87721","implementations":{"attempt":{"sha256":"b8d342dbb309ff348ecb7cd4edebe3cbc7aa029610bbb147af87e29a2c7b281e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(proxies, moved):\n    box = {p[0]: p for p in proxies}\n    mv = set(moved)\n    seen = set()\n    raw = []\n    tests = 0\n    for q in moved:\n        if q in seen:\n            continue\n        a = box[q]\n        for p in proxies:\n            if p[0] == q:\n                continue\n            if p[0] in mv and p[0] > q:\n                continue\n            tests += 1\n            if a[1] <= p[3] and p[1] <= a[3] and a[2] <= p[4] and p[2] <= a[4]:\n                raw.append((min(q, p[0]), max(q, p[0])))\n    pairs = sorted(set(raw))\n    return [[list(x) for x in pairs], tests]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[24, -2.0, 5.0, -2.0, 8.0], [9, -2.0, 2.0, 0.0, 3.0], [30, -2.0, 1.0, 0.0, 3.0]], [24, 24, 9]], [[[9, 30]], 3]], [[[[8, 1.0, 2.0, 1.0, 3.0], [24, 3.0, 2.0, 5.0, 2.0], [33, 3.0, -4.0, 3.0, -3.0], [7, 3.0, -5.0, 4.0, -2.0], [36, -3.0, -3.0, -1.0, -1.0], [30, 0.0, -1.0, 0.0, 1.0], [35, -1.0, -2.0, 0.0, -2.0]], [30, 30]], [[], 6]], [[[[23, -3.0, -1.0, 0.0, 2.0], [7, -4.0, 0.0, -4.0, 1.0], [13, 5.0, 2.0, 8.0, 5.0], [8, -4.0, 0.0, -2.0, 2.0], [37, 1.0, -2.0, 1.0, 1.0], [31, 0.0, 2.0, 3.0, 3.0]], [23, 7, 8]], [[[7, 8], [8, 23], [23, 31]], 12]], [[[[25, 0.0, -1.0, 3.0, 2.0], [24, -1.0, -5.0, 1.0, -2.0], [9, -4.0, 4.0, -1.0, 4.0], [20, 4.0, 3.0, 5.0, 6.0], [1, 1.0, -5.0, 3.0, -5.0], [30, -5.0, 1.0, -4.0, 1.0], [31, -5.0, 0.0, -3.0, 3.0]], [25]], [[], 6]], [[[[19, 4.0, -4.0, 7.0, -1.0], [31, 3.0, -1.0, 4.0, 2.0], [24, -3.0, -3.0, -2.0, -3.0]], [24, 24, 31, 31]], [[[19, 31]], 3]], [[[[12, -3.0, -4.0, -3.0, -3.0], [30, -3.0, 0.0, 0.0, 3.0], [38, 5.0, -3.0, 5.0, -2.0], [39, -1.0, -4.0, -1.0, -4.0], [1, 1.0, 0.0, 4.0, 3.0], [34, 1.0, 5.0, 4.0, 6.0]], [39, 38, 39, 12]], [[], 12]], [[[[18, 3.0, 5.0, 3.0, 6.0], [29, 3.0, -2.0, 5.0, -1.0], [13, 1.0, -5.0, 1.0, -5.0], [31, 0.0, -5.0, 0.0, -2.0], [22, 4.0, 4.0, 6.0, 4.0], [12, 2.0, 3.0, 2.0, 5.0], [6, -4.0, -5.0, -4.0, -4.0]], [6, 6, 31, 18, 18]], [[], 15]], [[[[36, 1.0, -4.0, 2.0, -4.0], [23, 3.0, -4.0, 4.0, -3.0]], [36, 23]], [[], 1]]], [[[[[28, 5.0, -2.0, 6.0, 0.0], [11, 5.0, -3.0, 5.0, -3.0], [10, -3.0, -4.0, -3.0, -2.0], [32, -4.0, 3.0, -4.0, 3.0]], [32]], [[], 3]], [[[[7, 5.0, 0.0, 7.0, 1.0], [34, -5.0, 3.0, -2.0, 6.0], [1, 1.0, 4.0, 1.0, 5.0], [38, -2.0, -4.0, -2.0, -1.0]], [7, 7, 34]], [[], 5]], [[[[38, 0.0, 0.0, 1.0, 0.0], [17, -4.0, -1.0, -1.0, 0.0], [1, 4.0, 1.0, 5.0, 1.0], [37, 2.0, 5.0, 4.0, 6.0]], [37, 1]], [[], 5]], [[[[25, -5.0, 1.0, -3.0, 3.0], [16, 5.0, -3.0, 6.0, -1.0]], [25, 25, 16, 25, 16]], [[], 1]], [[[[21, -2.0, 5.0, -2.0, 5.0], [6, -5.0, -2.0, -4.0, 1.0], [7, 4.0, -1.0, 5.0, 1.0], [13, -3.0, 1.0, 0.0, 2.0], [30, -1.0, -2.0, -1.0, -2.0]], [30]], [[], 4]], [[[[2, -5.0, 2.0, -5.0, 4.0], [39, -5.0, -4.0, -2.0, -4.0]], [39]], [[], 1]], [[[[32, -3.0, 0.0, -1.0, 2.0], [29, 3.0, 2.0, 3.0, 4.0], [5, 4.0, -1.0, 6.0, 1.0], [30, -4.0, -1.0, -3.0, 0.0], [16, -5.0, 2.0, -4.0, 5.0], [26, 1.0, -4.0, 3.0, -2.0], [11, 0.0, -2.0, 0.0, -2.0], [31, 1.0, -4.0, 4.0, -4.0]], [30, 30, 31, 11, 30]], [[[26, 31], [30, 32]], 18]], [[[[4, -5.0, -1.0, -3.0, -1.0], [2, -4.0, 5.0, -3.0, 7.0], [15, 1.0, 4.0, 4.0, 6.0]], [2, 2, 15]], [[], 3]]], [[[[[36, -2.0, -5.0, -2.0, -5.0], [11, 1.0, 4.0, 1.0, 7.0], [23, 0.0, 3.0, 3.0, 5.0], [6, 5.0, 0.0, 5.0, 2.0], [17, 4.0, -3.0, 7.0, -2.0]], [36, 6, 6, 23, 23]], [[[11, 23]], 9]], [[[[17, 2.0, 0.0, 4.0, 2.0], [3, -5.0, 0.0, -5.0, 2.0], [2, 1.0, 3.0, 2.0, 5.0], [20, -2.0, 1.0, 0.0, 1.0]], [3]], [[], 3]], [[[[20, -5.0, 1.0, -3.0, 2.0], [7, 1.0, 0.0, 2.0, 1.0], [8, 1.0, -3.0, 2.0, -1.0], [3, -4.0, -1.0, -4.0, 2.0], [19, 2.0, -4.0, 3.0, -2.0], [32, 1.0, 0.0, 3.0, 3.0], [35, -2.0, -1.0, 1.0, 0.0], [18, -5.0, -2.0, -4.0, -1.0]], [32]], [[[7, 32], [32, 35]], 7]], [[[[29, 1.0, -2.0, 2.0, 0.0], [11, -1.0, -5.0, 2.0, -5.0], [35, 4.0, 2.0, 6.0, 3.0], [39, 2.0, -2.0, 5.0, 0.0], [17, -5.0, -2.0, -5.0, 0.0], [4, 3.0, 5.0, 4.0, 7.0], [33, 4.0, -4.0, 4.0, -4.0], [13, 1.0, -5.0, 1.0, -2.0], [31, 4.0, -5.0, 7.0, -4.0]], [29, 39, 31]], [[[13, 29], [29, 39], [31, 33]], 21]], [[[[39, 5.0, -1.0, 7.0, -1.0], [8, 2.0, 4.0, 2.0, 7.0], [3, -1.0, 5.0, 1.0, 8.0], [30, 0.0, 2.0, 2.0, 5.0], [21, -4.0, 3.0, -3.0, 4.0], [27, 5.0, 4.0, 8.0, 5.0]], [27, 30, 30, 3]], [[[3, 30], [8, 30]], 12]], [[[[8, 3.0, -5.0, 5.0, -3.0], [38, -4.0, -3.0, -1.0, -1.0], [9, -4.0, -3.0, -4.0, 0.0], [24, 4.0, 5.0, 5.0, 5.0], [16, 4.0, -1.0, 7.0, 0.0]], [8, 8, 24, 16, 38]], [[[9, 38]], 10]], [[[[2, -5.0, 2.0, -4.0, 5.0], [30, -5.0, 1.0, -5.0, 3.0], [3, -4.0, 1.0, -3.0, 3.0], [14, -4.0, -4.0, -3.0, -1.0]], [3, 30, 14, 14]], [[[2, 3], [2, 30]], 6]], [[[[37, -4.0, -3.0, -3.0, 0.0], [25, 1.0, 2.0, 4.0, 4.0], [19, -2.0, 3.0, 1.0, 6.0], [15, -3.0, -1.0, -2.0, 1.0]], [15, 19, 25]], [[[15, 37], [19, 25]], 6]]], [[[[[35, 5.0, 5.0, 8.0, 6.0], [39, -4.0, -4.0, -3.0, -4.0], [32, 1.0, 1.0, 2.0, 3.0], [26, -5.0, 0.0, -5.0, 1.0], [23, -2.0, 1.0, -2.0, 2.0], [13, -3.0, -3.0, -1.0, 0.0], [1, 5.0, 0.0, 5.0, 3.0], [34, 3.0, -2.0, 5.0, -1.0]], [39]], [[], 7]], [[[[23, 2.0, -2.0, 5.0, -2.0], [27, 2.0, 4.0, 2.0, 7.0], [5, 4.0, 2.0, 5.0, 2.0], [7, -2.0, 1.0, -2.0, 3.0], [35, 0.0, 0.0, 3.0, 3.0], [2, 5.0, -4.0, 7.0, -1.0], [26, -2.0, 4.0, -1.0, 7.0]], [26, 27, 23, 27, 7]], [[[2, 23]], 18]], [[[[31, 1.0, 3.0, 4.0, 4.0], [36, 2.0, 3.0, 3.0, 6.0], [39, -5.0, -2.0, -5.0, -1.0], [15, -2.0, 0.0, -2.0, 1.0]], [15, 36]], [[[31, 36]], 5]], [[[[4, 2.0, -3.0, 5.0, 0.0], [27, 5.0, -3.0, 8.0, -1.0], [39, 2.0, 4.0, 5.0, 6.0], [13, -5.0, 0.0, -2.0, 0.0], [37, -2.0, -5.0, -1.0, -2.0], [16, 4.0, 3.0, 4.0, 6.0]], [13, 37, 37, 13]], [[], 9]], [[[[9, 0.0, 0.0, 2.0, 0.0], [27, -2.0, -5.0, 1.0, -2.0], [35, 2.0, 3.0, 4.0, 3.0], [34, -2.0, -2.0, -1.0, -1.0], [6, 1.0, -4.0, 2.0, -3.0]], [9, 35, 34]], [[[27, 34]], 9]], [[[[31, -1.0, 5.0, -1.0, 8.0], [1, -4.0, -1.0, -1.0, 1.0], [23, 0.0, -3.0, 1.0, 0.0], [14, 2.0, 3.0, 4.0, 4.0], [34, 2.0, -5.0, 2.0, -4.0], [28, -1.0, 2.0, 2.0, 5.0], [29, 4.0, 2.0, 6.0, 5.0], [37, -1.0, -2.0, 0.0, -1.0], [30, -1.0, 2.0, -1.0, 5.0]], [29, 37, 37]], [[[1, 37], [14, 29], [23, 37]], 15]], [[[[32, 5.0, 3.0, 5.0, 5.0], [12, -1.0, 1.0, 0.0, 4.0], [2, -2.0, 1.0, 1.0, 2.0], [1, 5.0, 2.0, 7.0, 2.0], [27, 2.0, 1.0, 2.0, 1.0], [11, 2.0, 4.0, 5.0, 5.0], [39, 1.0, -5.0, 1.0, -4.0], [29, 3.0, 1.0, 5.0, 2.0], [19, -3.0, 2.0, -2.0, 4.0], [10, 5.0, -3.0, 6.0, -3.0]], [39, 11, 10, 10]], [[[11, 32]], 24]], [[[[16, 5.0, 5.0, 6.0, 6.0], [14, -1.0, 5.0, -1.0, 7.0]], [16, 16, 14]], [[], 1]]], [[[[[19, 4.0, 2.0, 5.0, 4.0], [3, -5.0, 0.0, -3.0, 2.0], [7, 1.0, -5.0, 3.0, -5.0], [20, -3.0, -4.0, 0.0, -4.0], [31, 2.0, -4.0, 2.0, -2.0], [29, -2.0, -2.0, 0.0, -2.0], [27, 3.0, -4.0, 4.0, -2.0], [28, 1.0, 2.0, 1.0, 4.0]], [3, 27, 28, 3, 28]], [[], 18]], [[[[19, 3.0, -3.0, 3.0, -3.0], [35, -2.0, 5.0, 0.0, 6.0], [11, 4.0, -3.0, 7.0, -3.0], [20, 1.0, -3.0, 1.0, -3.0], [31, -1.0, 4.0, 2.0, 4.0], [33, -1.0, -3.0, 1.0, -3.0], [7, 0.0, 5.0, 0.0, 8.0], [14, 3.0, 2.0, 6.0, 2.0]], [19, 11, 20, 33, 14]], [[[20, 33]], 25]], [[[[28, -5.0, 1.0, -2.0, 4.0], [20, -3.0, -2.0, -1.0, -2.0], [21, 0.0, -3.0, 0.0, 0.0], [29, -5.0, -4.0, -3.0, -4.0], [17, 4.0, 4.0, 5.0, 6.0], [14, -4.0, -5.0, -4.0, -5.0], [6, 4.0, 3.0, 7.0, 5.0], [25, -2.0, -4.0, 1.0, -3.0], [22, 5.0, 5.0, 7.0, 6.0]], [17, 14]], [[[6, 17], [17, 22]], 15]], [[[[12, 4.0, -2.0, 4.0, 1.0], [23, 5.0, 3.0, 8.0, 6.0], [21, 3.0, 3.0, 6.0, 3.0], [16, -2.0, -3.0, -1.0, -2.0], [19, -1.0, 5.0, 0.0, 6.0]], [19, 16]], [[], 7]], [[[[25, -3.0, -4.0, -1.0, -1.0], [1, -1.0, 1.0, 1.0, 4.0], [22, -4.0, 3.0, -2.0, 4.0], [10, -3.0, -1.0, -3.0, 1.0], [2, 1.0, 0.0, 2.0, 0.0], [24, -1.0, 0.0, -1.0, 0.0]], [22, 10, 10, 25, 2]], [[[10, 25]], 14]], [[[[7, -4.0, -3.0, -2.0, -3.0], [33, 3.0, 0.0, 4.0, 3.0], [19, -5.0, 1.0, -2.0, 2.0], [5, -5.0, 2.0, -2.0, 2.0], [20, -2.0, 1.0, 1.0, 4.0], [35, -4.0, 0.0, -1.0, 2.0], [15, 1.0, 5.0, 1.0, 8.0], [10, 3.0, -3.0, 3.0, -3.0]], [19, 5, 19]], [[[5, 19], [5, 20], [5, 35], [19, 20], [19, 35]], 13]], [[[[27, 5.0, 2.0, 8.0, 4.0], [6, -4.0, 2.0, -3.0, 4.0], [20, -1.0, -1.0, 0.0, -1.0], [24, 3.0, -1.0, 4.0, 2.0], [22, -2.0, -1.0, 1.0, 2.0], [4, -2.0, -2.0, -1.0, 1.0], [11, -1.0, 0.0, 1.0, 2.0], [39, -1.0, -4.0, 1.0, -1.0], [28, 1.0, -5.0, 4.0, -3.0]], [11, 11, 20, 24, 39]], [[[4, 11], [4, 20], [4, 39], [11, 22], [20, 22], [20, 39], [22, 39], [28, 39]], 26]], [[[[34, -2.0, 3.0, -1.0, 5.0], [16, 1.0, 4.0, 1.0, 7.0], [14, 1.0, 4.0, 3.0, 4.0], [21, 4.0, 0.0, 7.0, 0.0], [23, 4.0, -3.0, 5.0, 0.0], [3, -3.0, -5.0, -1.0, -4.0], [19, -2.0, 2.0, -2.0, 2.0], [29, 4.0, -3.0, 7.0, -1.0]], [23, 23, 29]], [[[21, 23], [23, 29]], 13]]]]\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":"9c9f5dac96ecda709e6c5690c824ecf8c70bda4112c6486a491a125a8f513cfa","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(proxies, moved):\n    box = {p[0]: p for p in proxies}\n    mv = set(moved)\n    seen = set()\n    raw = []\n    tests = 0\n    for q in moved:\n        seen.add(q)\n        a = box[q]\n        for p in proxies:\n            if p[0] == q:\n                continue\n            if p[0] in mv and p[0] > q:\n                continue\n            tests += 1\n            if a[1] <= p[3] and p[1] <= a[3] and a[2] <= p[4] and p[2] <= a[4]:\n                raw.append((min(q, p[0]), max(q, p[0])))\n    pairs = sorted(set(raw))\n    return [[list(x) for x in pairs], tests]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[[24, -2.0, 5.0, -2.0, 8.0], [9, -2.0, 2.0, 0.0, 3.0], [30, -2.0, 1.0, 0.0, 3.0]], [24, 24, 9]], [[[9, 30]], 3]], [[[[8, 1.0, 2.0, 1.0, 3.0], [24, 3.0, 2.0, 5.0, 2.0], [33, 3.0, -4.0, 3.0, -3.0], [7, 3.0, -5.0, 4.0, -2.0], [36, -3.0, -3.0, -1.0, -1.0], [30, 0.0, -1.0, 0.0, 1.0], [35, -1.0, -2.0, 0.0, -2.0]], [30, 30]], [[], 6]], [[[[23, -3.0, -1.0, 0.0, 2.0], [7, -4.0, 0.0, -4.0, 1.0], [13, 5.0, 2.0, 8.0, 5.0], [8, -4.0, 0.0, -2.0, 2.0], [37, 1.0, -2.0, 1.0, 1.0], [31, 0.0, 2.0, 3.0, 3.0]], [23, 7, 8]], [[[7, 8], [8, 23], [23, 31]], 12]], [[[[25, 0.0, -1.0, 3.0, 2.0], [24, -1.0, -5.0, 1.0, -2.0], [9, -4.0, 4.0, -1.0, 4.0], [20, 4.0, 3.0, 5.0, 6.0], [1, 1.0, -5.0, 3.0, -5.0], [30, -5.0, 1.0, -4.0, 1.0], [31, -5.0, 0.0, -3.0, 3.0]], [25]], [[], 6]], [[[[19, 4.0, -4.0, 7.0, -1.0], [31, 3.0, -1.0, 4.0, 2.0], [24, -3.0, -3.0, -2.0, -3.0]], [24, 24, 31, 31]], [[[19, 31]], 3]], [[[[12, -3.0, -4.0, -3.0, -3.0], [30, -3.0, 0.0, 0.0, 3.0], [38, 5.0, -3.0, 5.0, -2.0], [39, -1.0, -4.0, -1.0, -4.0], [1, 1.0, 0.0, 4.0, 3.0], [34, 1.0, 5.0, 4.0, 6.0]], [39, 38, 39, 12]], [[], 12]], [[[[18, 3.0, 5.0, 3.0, 6.0], [29, 3.0, -2.0, 5.0, -1.0], [13, 1.0, -5.0, 1.0, -5.0], [31, 0.0, -5.0, 0.0, -2.0], [22, 4.0, 4.0, 6.0, 4.0], [12, 2.0, 3.0, 2.0, 5.0], [6, -4.0, -5.0, -4.0, -4.0]], [6, 6, 31, 18, 18]], [[], 15]], [[[[36, 1.0, -4.0, 2.0, -4.0], [23, 3.0, -4.0, 4.0, -3.0]], [36, 23]], [[], 1]]], [[[[[28, 5.0, -2.0, 6.0, 0.0], [11, 5.0, -3.0, 5.0, -3.0], [10, -3.0, -4.0, -3.0, -2.0], [32, -4.0, 3.0, -4.0, 3.0]], [32]], [[], 3]], [[[[7, 5.0, 0.0, 7.0, 1.0], [34, -5.0, 3.0, -2.0, 6.0], [1, 1.0, 4.0, 1.0, 5.0], [38, -2.0, -4.0, -2.0, -1.0]], [7, 7, 34]], [[], 5]], [[[[38, 0.0, 0.0, 1.0, 0.0], [17, -4.0, -1.0, -1.0, 0.0], [1, 4.0, 1.0, 5.0, 1.0], [37, 2.0, 5.0, 4.0, 6.0]], [37, 1]], [[], 5]], [[[[25, -5.0, 1.0, -3.0, 3.0], [16, 5.0, -3.0, 6.0, -1.0]], [25, 25, 16, 25, 16]], [[], 1]], [[[[21, -2.0, 5.0, -2.0, 5.0], [6, -5.0, -2.0, -4.0, 1.0], [7, 4.0, -1.0, 5.0, 1.0], [13, -3.0, 1.0, 0.0, 2.0], [30, -1.0, -2.0, -1.0, -2.0]], [30]], [[], 4]], [[[[2, -5.0, 2.0, -5.0, 4.0], [39, -5.0, -4.0, -2.0, -4.0]], [39]], [[], 1]], [[[[32, -3.0, 0.0, -1.0, 2.0], [29, 3.0, 2.0, 3.0, 4.0], [5, 4.0, -1.0, 6.0, 1.0], [30, -4.0, -1.0, -3.0, 0.0], [16, -5.0, 2.0, -4.0, 5.0], [26, 1.0, -4.0, 3.0, -2.0], [11, 0.0, -2.0, 0.0, -2.0], [31, 1.0, -4.0, 4.0, -4.0]], [30, 30, 31, 11, 30]], [[[26, 31], [30, 32]], 18]], [[[[4, -5.0, -1.0, -3.0, -1.0], [2, -4.0, 5.0, -3.0, 7.0], [15, 1.0, 4.0, 4.0, 6.0]], [2, 2, 15]], [[], 3]]], [[[[[36, -2.0, -5.0, -2.0, -5.0], [11, 1.0, 4.0, 1.0, 7.0], [23, 0.0, 3.0, 3.0, 5.0], [6, 5.0, 0.0, 5.0, 2.0], [17, 4.0, -3.0, 7.0, -2.0]], [36, 6, 6, 23, 23]], [[[11, 23]], 9]], [[[[17, 2.0, 0.0, 4.0, 2.0], [3, -5.0, 0.0, -5.0, 2.0], [2, 1.0, 3.0, 2.0, 5.0], [20, -2.0, 1.0, 0.0, 1.0]], [3]], [[], 3]], [[[[20, -5.0, 1.0, -3.0, 2.0], [7, 1.0, 0.0, 2.0, 1.0], [8, 1.0, -3.0, 2.0, -1.0], [3, -4.0, -1.0, -4.0, 2.0], [19, 2.0, -4.0, 3.0, -2.0], [32, 1.0, 0.0, 3.0, 3.0], [35, -2.0, -1.0, 1.0, 0.0], [18, -5.0, -2.0, -4.0, -1.0]], [32]], [[[7, 32], [32, 35]], 7]], [[[[29, 1.0, -2.0, 2.0, 0.0], [11, -1.0, -5.0, 2.0, -5.0], [35, 4.0, 2.0, 6.0, 3.0], [39, 2.0, -2.0, 5.0, 0.0], [17, -5.0, -2.0, -5.0, 0.0], [4, 3.0, 5.0, 4.0, 7.0], [33, 4.0, -4.0, 4.0, -4.0], [13, 1.0, -5.0, 1.0, -2.0], [31, 4.0, -5.0, 7.0, -4.0]], [29, 39, 31]], [[[13, 29], [29, 39], [31, 33]], 21]], [[[[39, 5.0, -1.0, 7.0, -1.0], [8, 2.0, 4.0, 2.0, 7.0], [3, -1.0, 5.0, 1.0, 8.0], [30, 0.0, 2.0, 2.0, 5.0], [21, -4.0, 3.0, -3.0, 4.0], [27, 5.0, 4.0, 8.0, 5.0]], [27, 30, 30, 3]], [[[3, 30], [8, 30]], 12]], [[[[8, 3.0, -5.0, 5.0, -3.0], [38, -4.0, -3.0, -1.0, -1.0], [9, -4.0, -3.0, -4.0, 0.0], [24, 4.0, 5.0, 5.0, 5.0], [16, 4.0, -1.0, 7.0, 0.0]], [8, 8, 24, 16, 38]], [[[9, 38]], 10]], [[[[2, -5.0, 2.0, -4.0, 5.0], [30, -5.0, 1.0, -5.0, 3.0], [3, -4.0, 1.0, -3.0, 3.0], [14, -4.0, -4.0, -3.0, -1.0]], [3, 30, 14, 14]], [[[2, 3], [2, 30]], 6]], [[[[37, -4.0, -3.0, -3.0, 0.0], [25, 1.0, 2.0, 4.0, 4.0], [19, -2.0, 3.0, 1.0, 6.0], [15, -3.0, -1.0, -2.0, 1.0]], [15, 19, 25]], [[[15, 37], [19, 25]], 6]]], [[[[[35, 5.0, 5.0, 8.0, 6.0], [39, -4.0, -4.0, -3.0, -4.0], [32, 1.0, 1.0, 2.0, 3.0], [26, -5.0, 0.0, -5.0, 1.0], [23, -2.0, 1.0, -2.0, 2.0], [13, -3.0, -3.0, -1.0, 0.0], [1, 5.0, 0.0, 5.0, 3.0], [34, 3.0, -2.0, 5.0, -1.0]], [39]], [[], 7]], [[[[23, 2.0, -2.0, 5.0, -2.0], [27, 2.0, 4.0, 2.0, 7.0], [5, 4.0, 2.0, 5.0, 2.0], [7, -2.0, 1.0, -2.0, 3.0], [35, 0.0, 0.0, 3.0, 3.0], [2, 5.0, -4.0, 7.0, -1.0], [26, -2.0, 4.0, -1.0, 7.0]], [26, 27, 23, 27, 7]], [[[2, 23]], 18]], [[[[31, 1.0, 3.0, 4.0, 4.0], [36, 2.0, 3.0, 3.0, 6.0], [39, -5.0, -2.0, -5.0, -1.0], [15, -2.0, 0.0, -2.0, 1.0]], [15, 36]], [[[31, 36]], 5]], [[[[4, 2.0, -3.0, 5.0, 0.0], [27, 5.0, -3.0, 8.0, -1.0], [39, 2.0, 4.0, 5.0, 6.0], [13, -5.0, 0.0, -2.0, 0.0], [37, -2.0, -5.0, -1.0, -2.0], [16, 4.0, 3.0, 4.0, 6.0]], [13, 37, 37, 13]], [[], 9]], [[[[9, 0.0, 0.0, 2.0, 0.0], [27, -2.0, -5.0, 1.0, -2.0], [35, 2.0, 3.0, 4.0, 3.0], [34, -2.0, -2.0, -1.0, -1.0], [6, 1.0, -4.0, 2.0, -3.0]], [9, 35, 34]], [[[27, 34]], 9]], [[[[31, -1.0, 5.0, -1.0, 8.0], [1, -4.0, -1.0, -1.0, 1.0], [23, 0.0, -3.0, 1.0, 0.0], [14, 2.0, 3.0, 4.0, 4.0], [34, 2.0, -5.0, 2.0, -4.0], [28, -1.0, 2.0, 2.0, 5.0], [29, 4.0, 2.0, 6.0, 5.0], [37, -1.0, -2.0, 0.0, -1.0], [30, -1.0, 2.0, -1.0, 5.0]], [29, 37, 37]], [[[1, 37], [14, 29], [23, 37]], 15]], [[[[32, 5.0, 3.0, 5.0, 5.0], [12, -1.0, 1.0, 0.0, 4.0], [2, -2.0, 1.0, 1.0, 2.0], [1, 5.0, 2.0, 7.0, 2.0], [27, 2.0, 1.0, 2.0, 1.0], [11, 2.0, 4.0, 5.0, 5.0], [39, 1.0, -5.0, 1.0, -4.0], [29, 3.0, 1.0, 5.0, 2.0], [19, -3.0, 2.0, -2.0, 4.0], [10, 5.0, -3.0, 6.0, -3.0]], [39, 11, 10, 10]], [[[11, 32]], 24]], [[[[16, 5.0, 5.0, 6.0, 6.0], [14, -1.0, 5.0, -1.0, 7.0]], [16, 16, 14]], [[], 1]]], [[[[[19, 4.0, 2.0, 5.0, 4.0], [3, -5.0, 0.0, -3.0, 2.0], [7, 1.0, -5.0, 3.0, -5.0], [20, -3.0, -4.0, 0.0, -4.0], [31, 2.0, -4.0, 2.0, -2.0], [29, -2.0, -2.0, 0.0, -2.0], [27, 3.0, -4.0, 4.0, -2.0], [28, 1.0, 2.0, 1.0, 4.0]], [3, 27, 28, 3, 28]], [[], 18]], [[[[19, 3.0, -3.0, 3.0, -3.0], [35, -2.0, 5.0, 0.0, 6.0], [11, 4.0, -3.0, 7.0, -3.0], [20, 1.0, -3.0, 1.0, -3.0], [31, -1.0, 4.0, 2.0, 4.0], [33, -1.0, -3.0, 1.0, -3.0], [7, 0.0, 5.0, 0.0, 8.0], [14, 3.0, 2.0, 6.0, 2.0]], [19, 11, 20, 33, 14]], [[[20, 33]], 25]], [[[[28, -5.0, 1.0, -2.0, 4.0], [20, -3.0, -2.0, -1.0, -2.0], [21, 0.0, -3.0, 0.0, 0.0], [29, -5.0, -4.0, -3.0, -4.0], [17, 4.0, 4.0, 5.0, 6.0], [14, -4.0, -5.0, -4.0, -5.0], [6, 4.0, 3.0, 7.0, 5.0], [25, -2.0, -4.0, 1.0, -3.0], [22, 5.0, 5.0, 7.0, 6.0]], [17, 14]], [[[6, 17], [17, 22]], 15]], [[[[12, 4.0, -2.0, 4.0, 1.0], [23, 5.0, 3.0, 8.0, 6.0], [21, 3.0, 3.0, 6.0, 3.0], [16, -2.0, -3.0, -1.0, -2.0], [19, -1.0, 5.0, 0.0, 6.0]], [19, 16]], [[], 7]], [[[[25, -3.0, -4.0, -1.0, -1.0], [1, -1.0, 1.0, 1.0, 4.0], [22, -4.0, 3.0, -2.0, 4.0], [10, -3.0, -1.0, -3.0, 1.0], [2, 1.0, 0.0, 2.0, 0.0], [24, -1.0, 0.0, -1.0, 0.0]], [22, 10, 10, 25, 2]], [[[10, 25]], 14]], [[[[7, -4.0, -3.0, -2.0, -3.0], [33, 3.0, 0.0, 4.0, 3.0], [19, -5.0, 1.0, -2.0, 2.0], [5, -5.0, 2.0, -2.0, 2.0], [20, -2.0, 1.0, 1.0, 4.0], [35, -4.0, 0.0, -1.0, 2.0], [15, 1.0, 5.0, 1.0, 8.0], [10, 3.0, -3.0, 3.0, -3.0]], [19, 5, 19]], [[[5, 19], [5, 20], [5, 35], [19, 20], [19, 35]], 13]], [[[[27, 5.0, 2.0, 8.0, 4.0], [6, -4.0, 2.0, -3.0, 4.0], [20, -1.0, -1.0, 0.0, -1.0], [24, 3.0, -1.0, 4.0, 2.0], [22, -2.0, -1.0, 1.0, 2.0], [4, -2.0, -2.0, -1.0, 1.0], [11, -1.0, 0.0, 1.0, 2.0], [39, -1.0, -4.0, 1.0, -1.0], [28, 1.0, -5.0, 4.0, -3.0]], [11, 11, 20, 24, 39]], [[[4, 11], [4, 20], [4, 39], [11, 22], [20, 22], [20, 39], [22, 39], [28, 39]], 26]], [[[[34, -2.0, 3.0, -1.0, 5.0], [16, 1.0, 4.0, 1.0, 7.0], [14, 1.0, 4.0, 3.0, 4.0], [21, 4.0, 0.0, 7.0, 0.0], [23, 4.0, -3.0, 5.0, 0.0], [3, -3.0, -5.0, -1.0, -4.0], [19, -2.0, 2.0, -2.0, 2.0], [29, 4.0, -3.0, 7.0, -1.0]], [23, 23, 29]], [[[21, 23], [23, 29]], 13]]]]\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-move-buffer-pairs-repeated-move-entries","generated_at":"2026-09-29T14:51:01.496657+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":"The move buffer is not deduplicated.","sha256":"6b4ce9032c4bc753e35c50815c65d0beff3d6dad1cb5642488246c0461a0dec8","title":"Proxies moved twice in a frame are queried twice · 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.317,"exit_code":1,"observations":[{"actual":[[[9,30]],5],"check":"case 0","expected":[[[9,30]],3],"passed":false},{"actual":[[],12],"check":"case 1","expected":[[],6],"passed":false},{"actual":[[[7,8],[8,23],[23,31]],12],"check":"case 2","expected":[[[7,8],[8,23],[23,31]],12],"passed":true},{"actual":[[],6],"check":"case 3","expected":[[],6],"passed":true},{"actual":[[[19,31]],6],"check":"case 4","expected":[[[19,31]],3],"passed":false},{"actual":[[],17],"check":"case 5","expected":[[],12],"passed":false},{"actual":[[],24],"check":"case 6","expected":[[],15],"passed":false},{"actual":[[],1],"check":"case 7","expected":[[],1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [[[9, 30]], 5], \"expected\": [[[9, 30]], 3], \"passed\": false}, {\"check\": \"case 1\", \"actual\": [[], 12], \"expected\": [[], 6], \"passed\": false}, {\"check\": \"case 2\", \"actual\": [[[7, 8], [8, 23], [23, 31]], 12], \"expected\": [[[7, 8], [8, 23], [23, 31]], 12], \"passed\": true}, {\"check\": \"case 3\", \"actual\": [[], 6], \"expected\": [[], 6], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [[[19, 31]], 6], \"expected\": [[[19, 31]], 3], \"passed\": false}, {\"check\": \"case 5\", \"actual\": [[], 17], \"expected\": [[], 12], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [[], 24], \"expected\": [[], 15], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [[], 1], \"expected\": [[], 1], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.991,"exit_code":1,"observations":[{"actual":[[[9,30]],5],"check":"case 0","expected":[[[9,30]],3],"passed":false},{"actual":[[],12],"check":"case 1","expected":[[],6],"passed":false},{"actual":[[[7,8],[8,23],[23,31]],12],"check":"case 2","expected":[[[7,8],[8,23],[23,31]],12],"passed":true},{"actual":[[],6],"check":"case 3","expected":[[],6],"passed":true},{"actual":[[[19,31]],6],"check":"case 4","expected":[[[19,31]],3],"passed":false},{"actual":[[],17],"check":"case 5","expected":[[],12],"passed":false},{"actual":[[],24],"check":"case 6","expected":[[],15],"passed":false},{"actual":[[],1],"check":"case 7","expected":[[],1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [[[9, 30]], 5], \"expected\": [[[9, 30]], 3], \"passed\": false}, {\"check\": \"case 1\", \"actual\": [[], 12], \"expected\": [[], 6], \"passed\": false}, {\"check\": \"case 2\", \"actual\": [[[7, 8], [8, 23], [23, 31]], 12], \"expected\": [[[7, 8], [8, 23], [23, 31]], 12], \"passed\": true}, {\"check\": \"case 3\", \"actual\": [[], 6], \"expected\": [[], 6], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [[[19, 31]], 6], \"expected\": [[[19, 31]], 3], \"passed\": false}, {\"check\": \"case 5\", \"actual\": [[], 17], \"expected\": [[], 12], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [[], 24], \"expected\": [[], 15], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [[], 1], \"expected\": [[], 1], \"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."}}