{"abstract":"Vertices merely inside the bounding box of a diagonal edge are reported.","category":"GIS polygon topology","checks":8,"contract":"Input: polygons as closed integer rings forming a coverage. For each polygon i and each distinct vertex v (closing duplicate excluded), and each other polygon j, report [i, v, j] when v lies exactly on an edge of j (zero cross product, inside the closed segment box) but is not one of that edge endpoints. Return the reports sorted.","evaluation_group":"w2-gis-polygon-topology-coverage-noding-check","failed_approach":"A cross-product tolerance of 1 flags near-miss vertices on integer grids.","family":"w2-gis-polygon-topology-coverage-noding-check-collinearity-requirement","id":"FA-70831","implementations":{"attempt":{"sha256":"44d7abe7797f6d4f3a8d6f781aed26cc0c140d10765989879a172e812ed32ffd","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    polys = x\n    out = []\n    for i, P in enumerate(polys):\n        for v in P[:-1]:\n            for j, Q in enumerate(polys):\n                if i == j:\n                    continue\n                for a, b in zip(Q, Q[1:]):\n                    if v == a or v == b:\n                        continue\n                    cross = (b[0] - a[0]) * (v[1] - a[1]) - (b[1] - a[1]) * (v[0] - a[0])\n                    if abs(cross) <= 1 and min(a[0], b[0]) <= v[0] <= max(a[0], b[0]) and min(a[1], b[1]) <= v[1] <= max(a[1], b[1]):\n                        out.append([i, list(v), j])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #1', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]]], [[1, [4, 2], 0]]), ('regression #2', [[[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]], [[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]]], [[0, [4, 2], 1]]), ('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #4', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[2, 4], [6, 4], [6, 8], [2, 8], [2, 4]]], [[0, [4, 4], 1], [1, [2, 4], 0]]), ('regression #5', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[10, 2], [14, 2], [14, 6], [10, 2]]], [[0, [12, 4], 1], [1, [10, 2], 0]]), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], [])], [('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #4', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[2, 4], [6, 4], [6, 8], [2, 8], [2, 4]]], [[0, [4, 4], 1], [1, [2, 4], 0]]), ('regression #5', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[10, 2], [14, 2], [14, 6], [10, 2]]], [[0, [12, 4], 1], [1, [10, 2], 0]]), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #7', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[6, 2], [9, 2], [9, 4], [6, 2]]], [[1, [6, 2], 0]]), ('regression #8', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[9, 2], [6, 2], [6, 4], [9, 2]]], [[1, [6, 2], 0], [1, [6, 4], 0]]), ('control #9', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[10, 10], [12, 10], [12, 12], [10, 12], [10, 10]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], [])], [('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #7', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[6, 2], [9, 2], [9, 4], [6, 2]]], [[1, [6, 2], 0]]), ('regression #8', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[9, 2], [6, 2], [6, 4], [9, 2]]], [[1, [6, 2], 0], [1, [6, 4], 0]]), ('control #9', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[10, 10], [12, 10], [12, 12], [10, 12], [10, 10]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('regression #11', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[4, 4], [8, 0], [9, 9], [4, 4]]], [[0, [8, 8], 1], [1, [4, 4], 0]]), ('regression #12', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 1], [8, 1], [8, 3], [4, 3], [4, 1]]], [[1, [4, 1], 0], [1, [4, 3], 0]]), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], [])], [('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('regression #11', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[4, 4], [8, 0], [9, 9], [4, 4]]], [[0, [8, 8], 1], [1, [4, 4], 0]]), ('regression #12', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 1], [8, 1], [8, 3], [4, 3], [4, 1]]], [[1, [4, 1], 0], [1, [4, 3], 0]]), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], []), ('regression #14', [[[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]]], [[1, [2, 4], 0], [1, [6, 4], 0]]), ('regression #15', [[[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]], [[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[0, 8], [8, 8], [8, 12], [0, 12], [0, 8]]], [[0, [2, 4], 1], [0, [2, 8], 2], [0, [6, 4], 1], [0, [6, 8], 2]])], [('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #1', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]]], [[1, [4, 2], 0]]), ('regression #2', [[[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]], [[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]]], [[0, [4, 2], 1]]), ('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], []), ('regression #14', [[[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]]], [[1, [2, 4], 0], [1, [6, 4], 0]]), ('regression #15', [[[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]], [[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[0, 8], [8, 8], [8, 12], [0, 12], [0, 8]]], [[0, [2, 4], 1], [0, [2, 8], 2], [0, [6, 4], 1], [0, [6, 8], 2]])]]\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":"a78f169355fce3d5df926ca692434dbc78acf843ad9669ac43f5f97f00a1dba5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    polys = x\n    out = []\n    for i, P in enumerate(polys):\n        for v in P[:-1]:\n            for j, Q in enumerate(polys):\n                if i == j:\n                    continue\n                for a, b in zip(Q, Q[1:]):\n                    if v == a or v == b:\n                        continue\n                    cross = (b[0] - a[0]) * (v[1] - a[1]) - (b[1] - a[1]) * (v[0] - a[0])\n                    if min(a[0], b[0]) <= v[0] <= max(a[0], b[0]) and min(a[1], b[1]) <= v[1] <= max(a[1], b[1]):\n                        out.append([i, list(v), j])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #1', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]]], [[1, [4, 2], 0]]), ('regression #2', [[[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]], [[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]]], [[0, [4, 2], 1]]), ('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #4', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[2, 4], [6, 4], [6, 8], [2, 8], [2, 4]]], [[0, [4, 4], 1], [1, [2, 4], 0]]), ('regression #5', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[10, 2], [14, 2], [14, 6], [10, 2]]], [[0, [12, 4], 1], [1, [10, 2], 0]]), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], [])], [('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #4', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[2, 4], [6, 4], [6, 8], [2, 8], [2, 4]]], [[0, [4, 4], 1], [1, [2, 4], 0]]), ('regression #5', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[10, 2], [14, 2], [14, 6], [10, 2]]], [[0, [12, 4], 1], [1, [10, 2], 0]]), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #7', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[6, 2], [9, 2], [9, 4], [6, 2]]], [[1, [6, 2], 0]]), ('regression #8', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[9, 2], [6, 2], [6, 4], [9, 2]]], [[1, [6, 2], 0], [1, [6, 4], 0]]), ('control #9', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[10, 10], [12, 10], [12, 12], [10, 12], [10, 10]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], [])], [('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #7', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[6, 2], [9, 2], [9, 4], [6, 2]]], [[1, [6, 2], 0]]), ('regression #8', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[9, 2], [6, 2], [6, 4], [9, 2]]], [[1, [6, 2], 0], [1, [6, 4], 0]]), ('control #9', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[10, 10], [12, 10], [12, 12], [10, 12], [10, 10]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('regression #11', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[4, 4], [8, 0], [9, 9], [4, 4]]], [[0, [8, 8], 1], [1, [4, 4], 0]]), ('regression #12', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 1], [8, 1], [8, 3], [4, 3], [4, 1]]], [[1, [4, 1], 0], [1, [4, 3], 0]]), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], [])], [('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('regression #11', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[4, 4], [8, 0], [9, 9], [4, 4]]], [[0, [8, 8], 1], [1, [4, 4], 0]]), ('regression #12', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 1], [8, 1], [8, 3], [4, 3], [4, 1]]], [[1, [4, 1], 0], [1, [4, 3], 0]]), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], []), ('regression #14', [[[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]]], [[1, [2, 4], 0], [1, [6, 4], 0]]), ('regression #15', [[[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]], [[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[0, 8], [8, 8], [8, 12], [0, 12], [0, 8]]], [[0, [2, 4], 1], [0, [2, 8], 2], [0, [6, 4], 1], [0, [6, 8], 2]])], [('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #1', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]]], [[1, [4, 2], 0]]), ('regression #2', [[[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]], [[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]]], [[0, [4, 2], 1]]), ('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], []), ('regression #14', [[[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]]], [[1, [2, 4], 0], [1, [6, 4], 0]]), ('regression #15', [[[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]], [[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[0, 8], [8, 8], [8, 12], [0, 12], [0, 8]]], [[0, [2, 4], 1], [0, [2, 8], 2], [0, [6, 4], 1], [0, [6, 8], 2]])]]\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"},"fixed":{"sha256":"a85ceac686cce2332a44c35debb0fe2e8d97bb5c7f0688f1fe67f6ce32bffbf3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    polys = x\n    out = []\n    for i, P in enumerate(polys):\n        for v in P[:-1]:\n            for j, Q in enumerate(polys):\n                if i == j:\n                    continue\n                for a, b in zip(Q, Q[1:]):\n                    if v == a or v == b:\n                        continue\n                    cross = (b[0] - a[0]) * (v[1] - a[1]) - (b[1] - a[1]) * (v[0] - a[0])\n                    if cross == 0 and min(a[0], b[0]) <= v[0] <= max(a[0], b[0]) and min(a[1], b[1]) <= v[1] <= max(a[1], b[1]):\n                        out.append([i, list(v), j])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #1', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]]], [[1, [4, 2], 0]]), ('regression #2', [[[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]], [[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]]], [[0, [4, 2], 1]]), ('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #4', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[2, 4], [6, 4], [6, 8], [2, 8], [2, 4]]], [[0, [4, 4], 1], [1, [2, 4], 0]]), ('regression #5', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[10, 2], [14, 2], [14, 6], [10, 2]]], [[0, [12, 4], 1], [1, [10, 2], 0]]), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], [])], [('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #4', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[2, 4], [6, 4], [6, 8], [2, 8], [2, 4]]], [[0, [4, 4], 1], [1, [2, 4], 0]]), ('regression #5', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[10, 2], [14, 2], [14, 6], [10, 2]]], [[0, [12, 4], 1], [1, [10, 2], 0]]), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #7', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[6, 2], [9, 2], [9, 4], [6, 2]]], [[1, [6, 2], 0]]), ('regression #8', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[9, 2], [6, 2], [6, 4], [9, 2]]], [[1, [6, 2], 0], [1, [6, 4], 0]]), ('control #9', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[10, 10], [12, 10], [12, 12], [10, 12], [10, 10]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], [])], [('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #7', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[6, 2], [9, 2], [9, 4], [6, 2]]], [[1, [6, 2], 0]]), ('regression #8', [[[0, 0], [6, 0], [6, 6], [0, 6], [0, 0]], [[9, 2], [6, 2], [6, 4], [9, 2]]], [[1, [6, 2], 0], [1, [6, 4], 0]]), ('control #9', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[10, 10], [12, 10], [12, 12], [10, 12], [10, 10]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('regression #11', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[4, 4], [8, 0], [9, 9], [4, 4]]], [[0, [8, 8], 1], [1, [4, 4], 0]]), ('regression #12', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 1], [8, 1], [8, 3], [4, 3], [4, 1]]], [[1, [4, 1], 0], [1, [4, 3], 0]]), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], [])], [('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #6', [[[8, 0], [12, 4], [8, 4], [8, 0]], [[9, 1], [9, 6], [5, 6], [9, 1]]], [[1, [9, 1], 0]]), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('regression #11', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[4, 4], [8, 0], [9, 9], [4, 4]]], [[0, [8, 8], 1], [1, [4, 4], 0]]), ('regression #12', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 1], [8, 1], [8, 3], [4, 3], [4, 1]]], [[1, [4, 1], 0], [1, [4, 3], 0]]), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], []), ('regression #14', [[[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]]], [[1, [2, 4], 0], [1, [6, 4], 0]]), ('regression #15', [[[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]], [[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[0, 8], [8, 8], [8, 12], [0, 12], [0, 8]]], [[0, [2, 4], 1], [0, [2, 8], 2], [0, [6, 4], 1], [0, [6, 8], 2]])], [('control #0', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]]], []), ('regression #1', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]]], [[1, [4, 2], 0]]), ('regression #2', [[[4, 0], [8, 0], [8, 4], [4, 4], [4, 2], [4, 0]], [[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]]], [[0, [4, 2], 1]]), ('regression #3', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[0, 4], [4, 4], [4, 8], [0, 8], [0, 4]]], []), ('regression #10', [[[0, 0], [8, 8], [0, 8], [0, 0]], [[3, 4], [9, 1], [9, 9], [3, 4]]], []), ('control #13', [[[0, 0], [4, 0], [4, 4], [0, 4], [0, 0]], [[4, 0], [8, 0], [8, 4], [4, 4], [4, 0]], [[8, 0], [12, 0], [12, 4], [8, 4], [8, 0]]], []), ('regression #14', [[[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]]], [[1, [2, 4], 0], [1, [6, 4], 0]]), ('regression #15', [[[6, 4], [6, 8], [2, 8], [2, 4], [6, 4]], [[0, 0], [8, 0], [8, 4], [0, 4], [0, 0]], [[0, 8], [8, 8], [8, 12], [0, 12], [0, 8]]], [[0, [2, 4], 1], [0, [2, 8], 2], [0, [6, 4], 1], [0, [6, 8], 2]])]]\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 deterministic toy contract on a bounded input domain; results are rounded as stated and no conformance with any published standard or library is claimed. 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-gis-polygon-topology-coverage-noding-check-collinearity-requirement","generated_at":"2026-09-29T14:48:24.288726+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Coverage cleaning requires shared boundaries to have identical vertices; T-junctions cause gaps after simplification and must be noded first.","repair":"At the collinearity requirement step restore `if cross == 0 and`, leaving the rest of the model unchanged.","root_cause":"Only the segment bounding box is tested, not collinearity.","sha256":"b3fa71bfd80399297974cc298163fe927edd87a0a7ac0667184cf4aa9bd3d1b7","title":"Missing node (T-junction) detection in a coverage: collinearity requirement · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.777,"exit_code":1,"observations":[{"actual":[],"check":"control #0","expected":[],"passed":true},{"actual":[[1,[4,2],0]],"check":"regression #1","expected":[[1,[4,2],0]],"passed":true},{"actual":[[0,[4,2],1]],"check":"regression #2","expected":[[0,[4,2],1]],"passed":true},{"actual":[],"check":"regression #3","expected":[],"passed":true},{"actual":[[0,[4,4],1],[1,[2,4],0]],"check":"regression #4","expected":[[0,[4,4],1],[1,[2,4],0]],"passed":true},{"actual":[[0,[12,4],1],[1,[10,2],0]],"check":"regression #5","expected":[[0,[12,4],1],[1,[10,2],0]],"passed":true},{"actual":[[1,[9,1],0]],"check":"regression #6","expected":[[1,[9,1],0]],"passed":true},{"actual":[[0,[8,8],1]],"check":"regression #10","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression #1\", \"actual\": [[1, [4, 2], 0]], \"expected\": [[1, [4, 2], 0]], \"passed\": true}, {\"check\": \"regression #2\", \"actual\": [[0, [4, 2], 1]], \"expected\": [[0, [4, 2], 1]], \"passed\": true}, {\"check\": \"regression #3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression #4\", \"actual\": [[0, [4, 4], 1], [1, [2, 4], 0]], \"expected\": [[0, [4, 4], 1], [1, [2, 4], 0]], \"passed\": true}, {\"check\": \"regression #5\", \"actual\": [[0, [12, 4], 1], [1, [10, 2], 0]], \"expected\": [[0, [12, 4], 1], [1, [10, 2], 0]], \"passed\": true}, {\"check\": \"regression #6\", \"actual\": [[1, [9, 1], 0]], \"expected\": [[1, [9, 1], 0]], \"passed\": true}, {\"check\": \"regression #10\", \"actual\": [[0, [8, 8], 1]], \"expected\": [], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.101,"exit_code":1,"observations":[{"actual":[],"check":"control #0","expected":[],"passed":true},{"actual":[[1,[4,2],0]],"check":"regression #1","expected":[[1,[4,2],0]],"passed":true},{"actual":[[0,[4,2],1]],"check":"regression #2","expected":[[0,[4,2],1]],"passed":true},{"actual":[],"check":"regression #3","expected":[],"passed":true},{"actual":[[0,[4,4],1],[1,[2,4],0]],"check":"regression #4","expected":[[0,[4,4],1],[1,[2,4],0]],"passed":true},{"actual":[[0,[12,4],1],[1,[10,2],0]],"check":"regression #5","expected":[[0,[12,4],1],[1,[10,2],0]],"passed":true},{"actual":[[0,[8,4],1],[1,[9,1],0]],"check":"regression #6","expected":[[1,[9,1],0]],"passed":false},{"actual":[[0,[8,8],1],[1,[3,4],0]],"check":"regression #10","expected":[],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression #1\", \"actual\": [[1, [4, 2], 0]], \"expected\": [[1, [4, 2], 0]], \"passed\": true}, {\"check\": \"regression #2\", \"actual\": [[0, [4, 2], 1]], \"expected\": [[0, [4, 2], 1]], \"passed\": true}, {\"check\": \"regression #3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression #4\", \"actual\": [[0, [4, 4], 1], [1, [2, 4], 0]], \"expected\": [[0, [4, 4], 1], [1, [2, 4], 0]], \"passed\": true}, {\"check\": \"regression #5\", \"actual\": [[0, [12, 4], 1], [1, [10, 2], 0]], \"expected\": [[0, [12, 4], 1], [1, [10, 2], 0]], \"passed\": true}, {\"check\": \"regression #6\", \"actual\": [[0, [8, 4], 1], [1, [9, 1], 0]], \"expected\": [[1, [9, 1], 0]], \"passed\": false}, {\"check\": \"regression #10\", \"actual\": [[0, [8, 8], 1], [1, [3, 4], 0]], \"expected\": [], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.286,"exit_code":0,"observations":[{"actual":[],"check":"control #0","expected":[],"passed":true},{"actual":[[1,[4,2],0]],"check":"regression #1","expected":[[1,[4,2],0]],"passed":true},{"actual":[[0,[4,2],1]],"check":"regression #2","expected":[[0,[4,2],1]],"passed":true},{"actual":[],"check":"regression #3","expected":[],"passed":true},{"actual":[[0,[4,4],1],[1,[2,4],0]],"check":"regression #4","expected":[[0,[4,4],1],[1,[2,4],0]],"passed":true},{"actual":[[0,[12,4],1],[1,[10,2],0]],"check":"regression #5","expected":[[0,[12,4],1],[1,[10,2],0]],"passed":true},{"actual":[[1,[9,1],0]],"check":"regression #6","expected":[[1,[9,1],0]],"passed":true},{"actual":[],"check":"regression #10","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression #1\", \"actual\": [[1, [4, 2], 0]], \"expected\": [[1, [4, 2], 0]], \"passed\": true}, {\"check\": \"regression #2\", \"actual\": [[0, [4, 2], 1]], \"expected\": [[0, [4, 2], 1]], \"passed\": true}, {\"check\": \"regression #3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"regression #4\", \"actual\": [[0, [4, 4], 1], [1, [2, 4], 0]], \"expected\": [[0, [4, 4], 1], [1, [2, 4], 0]], \"passed\": true}, {\"check\": \"regression #5\", \"actual\": [[0, [12, 4], 1], [1, [10, 2], 0]], \"expected\": [[0, [12, 4], 1], [1, [10, 2], 0]], \"passed\": true}, {\"check\": \"regression #6\", \"actual\": [[1, [9, 1], 0]], \"expected\": [[1, [9, 1], 0]], \"passed\": true}, {\"check\": \"regression #10\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}