{"abstract":"Vertices exactly at the tolerance are retained.","category":"GIS polygon topology","checks":8,"contract":"Input [points, tol]: an arc as integer [x, y] positions (possibly closed, first == last). Keep both endpoints; recursively (explicit stack) find the interior vertex farthest from the SEGMENT between the current endpoints (projection clamped to the segment; distance to the point itself if the endpoints coincide), taking the first maximum; keep it and split when that distance is strictly greater than tol. Return kept positions in order.","contract_signature":"x","evaluation_group":"w2-gis-polygon-topology-douglas-peucker-arc","failed_approach":"Rounding the distance before comparing drops vertices slightly beyond tolerance.","family":"w2-gis-polygon-topology-douglas-peucker-arc-tolerance-comparison","id":"FA-70596","implementations":{"attempt":{"sha256":"7b3e960484074ca0f47cff9eceaf90a11486f5db69919e5cac45e32cc9bf0e52","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    pts, tol = x\n    def dist(p, a, b):\n        dx, dy = b[0] - a[0], b[1] - a[1]\n        if dx == 0 and dy == 0:\n            return math.hypot(p[0] - a[0], p[1] - a[1])\n        t = ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / (dx * dx + dy * dy)\n        t = max(0.0, min(1.0, t))\n        return math.hypot(p[0] - a[0] - t * dx, p[1] - a[1] - t * dy)\n    keep = [False] * len(pts)\n    keep[0] = keep[-1] = True\n    stack = [(0, len(pts) - 1)]\n    while stack:\n        i, j = stack.pop()\n        best, idx = -1.0, -1\n        for k in range(i + 1, j):\n            d = dist(pts[k], pts[i], pts[j])\n            if d > best:\n                best, idx = d, k\n        if idx != -1 and round(best) > tol:\n            keep[idx] = True\n            stack.append((i, idx))\n            stack.append((idx, j))\n    return [p for p, f in zip(pts, keep) if f]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[0, 0], [3, 1], [6, -1], [9, 1], [12, 1], [15, 4], [18, 1], [21, -2], [24, 1]], 2], [[0, 0], [6, -1], [15, 4], [21, -2], [24, 1]]), ('control #1', [[[0, 3], [3, -4], [6, 1], [9, 3], [12, -4], [15, 1], [18, -1]], 1], [[0, 3], [3, -4], [9, 3], [12, -4], [15, 1], [18, -1]]), ('control #2', [[[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], 0], [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]]), ('control #3', [[[0, -3], [3, -1], [6, -3], [9, -2]], 3], [[0, -3], [9, -2]]), ('control #4', [[[0, -2], [3, -4], [6, -1], [9, -4], [12, 1], [15, 2]], 3], [[0, -2], [9, -4], [15, 2]]), ('control #5', [[[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], 0], [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]]), ('control #6', [[[0, 4], [3, -1], [6, 2], [9, 2], [12, 2]], 3], [[0, 4], [3, -1], [12, 2]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]])], [('control #3', [[[0, -3], [3, -1], [6, -3], [9, -2]], 3], [[0, -3], [9, -2]]), ('control #4', [[[0, -2], [3, -4], [6, -1], [9, -4], [12, 1], [15, 2]], 3], [[0, -2], [9, -4], [15, 2]]), ('control #5', [[[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], 0], [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]]), ('control #6', [[[0, 4], [3, -1], [6, 2], [9, 2], [12, 2]], 3], [[0, 4], [3, -1], [12, 2]]), ('control #7', [[[0, -4], [3, 0], [6, -3], [9, 1], [12, 1], [15, 3]], 2], [[0, -4], [3, 0], [6, -3], [15, 3]]), ('control #8', [[[0, -4], [3, -4], [6, 1], [9, 3], [12, 3], [15, -4]], 1], [[0, -4], [3, -4], [9, 3], [12, 3], [15, -4]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]]), ('boundary #18', [[[0, 0], [5, 2], [10, 0]], 2], [[0, 0], [10, 0]])], [('control #6', [[[0, 4], [3, -1], [6, 2], [9, 2], [12, 2]], 3], [[0, 4], [3, -1], [12, 2]]), ('control #7', [[[0, -4], [3, 0], [6, -3], [9, 1], [12, 1], [15, 3]], 2], [[0, -4], [3, 0], [6, -3], [15, 3]]), ('control #8', [[[0, -4], [3, -4], [6, 1], [9, 3], [12, 3], [15, -4]], 1], [[0, -4], [3, -4], [9, 3], [12, 3], [15, -4]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]]), ('control #10', [[[0, -4], [3, -2], [6, 1], [9, 1]], 2], [[0, -4], [9, 1]]), ('control #11', [[[0, 4], [3, -3], [6, -2], [9, -4], [12, 4], [15, 4], [18, -1]], 2], [[0, 4], [3, -3], [9, -4], [12, 4], [18, -1]]), ('regression #14', [[[0, 0], [10, 0], [14, 3], [20, 0]], 2], [[0, 0], [10, 0], [14, 3], [20, 0]]), ('boundary #28', [[[0, 0], [4, 3], [1, 4], [0, 0]], 5], [[0, 0], [0, 0]])], [('control #2', [[[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], 0], [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]]), ('control #11', [[[0, 4], [3, -3], [6, -2], [9, -4], [12, 4], [15, 4], [18, -1]], 2], [[0, 4], [3, -3], [9, -4], [12, 4], [18, -1]]), ('control #12', [[[0, 2], [3, -3], [6, 3], [9, -1]], 1], [[0, 2], [3, -3], [6, 3], [9, -1]]), ('control #13', [[[0, 4], [3, -1], [6, -4], [9, -2], [12, 4], [15, -3], [18, -1], [21, 0]], 3], [[0, 4], [6, -4], [12, 4], [15, -3], [21, 0]]), ('regression #14', [[[0, 0], [10, 0], [14, 3], [20, 0]], 2], [[0, 0], [10, 0], [14, 3], [20, 0]]), ('regression #15', [[[0, 0], [5, 0], [-6, 1], [10, 0]], 2], [[0, 0], [5, 0], [-6, 1], [10, 0]]), ('regression #16', [[[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]], 1], [[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]])], [('control #7', [[[0, -4], [3, 0], [6, -3], [9, 1], [12, 1], [15, 3]], 2], [[0, -4], [3, 0], [6, -3], [15, 3]]), ('control #13', [[[0, 4], [3, -1], [6, -4], [9, -2], [12, 4], [15, -3], [18, -1], [21, 0]], 3], [[0, 4], [6, -4], [12, 4], [15, -3], [21, 0]]), ('regression #14', [[[0, 0], [10, 0], [14, 3], [20, 0]], 2], [[0, 0], [10, 0], [14, 3], [20, 0]]), ('regression #15', [[[0, 0], [5, 0], [-6, 1], [10, 0]], 2], [[0, 0], [5, 0], [-6, 1], [10, 0]]), ('regression #16', [[[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]], 1], [[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]]), ('regression #17', [[[0, 0], [6, 1], [6, 7], [0, 6], [0, 0]], 2], [[0, 0], [6, 1], [6, 7], [0, 6], [0, 0]]), ('boundary #18', [[[0, 0], [5, 2], [10, 0]], 2], [[0, 0], [10, 0]]), ('boundary #19', [[[0, 0], [5, 3], [10, 0]], 2], [[0, 0], [5, 3], [10, 0]])]]\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":"8a12c74eba63e29845d265a2e4116c979805d34a13fcb0c0305fa2deb5d95e42","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    pts, tol = x\n    def dist(p, a, b):\n        dx, dy = b[0] - a[0], b[1] - a[1]\n        if dx == 0 and dy == 0:\n            return math.hypot(p[0] - a[0], p[1] - a[1])\n        t = ((p[0] - a[0]) * dx + (p[1] - a[1]) * dy) / (dx * dx + dy * dy)\n        t = max(0.0, min(1.0, t))\n        return math.hypot(p[0] - a[0] - t * dx, p[1] - a[1] - t * dy)\n    keep = [False] * len(pts)\n    keep[0] = keep[-1] = True\n    stack = [(0, len(pts) - 1)]\n    while stack:\n        i, j = stack.pop()\n        best, idx = -1.0, -1\n        for k in range(i + 1, j):\n            d = dist(pts[k], pts[i], pts[j])\n            if d > best:\n                best, idx = d, k\n        if idx != -1 and best >= tol:\n            keep[idx] = True\n            stack.append((i, idx))\n            stack.append((idx, j))\n    return [p for p, f in zip(pts, keep) if f]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[0, 0], [3, 1], [6, -1], [9, 1], [12, 1], [15, 4], [18, 1], [21, -2], [24, 1]], 2], [[0, 0], [6, -1], [15, 4], [21, -2], [24, 1]]), ('control #1', [[[0, 3], [3, -4], [6, 1], [9, 3], [12, -4], [15, 1], [18, -1]], 1], [[0, 3], [3, -4], [9, 3], [12, -4], [15, 1], [18, -1]]), ('control #2', [[[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], 0], [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]]), ('control #3', [[[0, -3], [3, -1], [6, -3], [9, -2]], 3], [[0, -3], [9, -2]]), ('control #4', [[[0, -2], [3, -4], [6, -1], [9, -4], [12, 1], [15, 2]], 3], [[0, -2], [9, -4], [15, 2]]), ('control #5', [[[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], 0], [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]]), ('control #6', [[[0, 4], [3, -1], [6, 2], [9, 2], [12, 2]], 3], [[0, 4], [3, -1], [12, 2]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]])], [('control #3', [[[0, -3], [3, -1], [6, -3], [9, -2]], 3], [[0, -3], [9, -2]]), ('control #4', [[[0, -2], [3, -4], [6, -1], [9, -4], [12, 1], [15, 2]], 3], [[0, -2], [9, -4], [15, 2]]), ('control #5', [[[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], 0], [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]]), ('control #6', [[[0, 4], [3, -1], [6, 2], [9, 2], [12, 2]], 3], [[0, 4], [3, -1], [12, 2]]), ('control #7', [[[0, -4], [3, 0], [6, -3], [9, 1], [12, 1], [15, 3]], 2], [[0, -4], [3, 0], [6, -3], [15, 3]]), ('control #8', [[[0, -4], [3, -4], [6, 1], [9, 3], [12, 3], [15, -4]], 1], [[0, -4], [3, -4], [9, 3], [12, 3], [15, -4]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]]), ('boundary #18', [[[0, 0], [5, 2], [10, 0]], 2], [[0, 0], [10, 0]])], [('control #6', [[[0, 4], [3, -1], [6, 2], [9, 2], [12, 2]], 3], [[0, 4], [3, -1], [12, 2]]), ('control #7', [[[0, -4], [3, 0], [6, -3], [9, 1], [12, 1], [15, 3]], 2], [[0, -4], [3, 0], [6, -3], [15, 3]]), ('control #8', [[[0, -4], [3, -4], [6, 1], [9, 3], [12, 3], [15, -4]], 1], [[0, -4], [3, -4], [9, 3], [12, 3], [15, -4]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]]), ('control #10', [[[0, -4], [3, -2], [6, 1], [9, 1]], 2], [[0, -4], [9, 1]]), ('control #11', [[[0, 4], [3, -3], [6, -2], [9, -4], [12, 4], [15, 4], [18, -1]], 2], [[0, 4], [3, -3], [9, -4], [12, 4], [18, -1]]), ('regression #14', [[[0, 0], [10, 0], [14, 3], [20, 0]], 2], [[0, 0], [10, 0], [14, 3], [20, 0]]), ('boundary #28', [[[0, 0], [4, 3], [1, 4], [0, 0]], 5], [[0, 0], [0, 0]])], [('control #2', [[[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], 0], [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]]), ('control #9', [[[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], 0], [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]]), ('control #11', [[[0, 4], [3, -3], [6, -2], [9, -4], [12, 4], [15, 4], [18, -1]], 2], [[0, 4], [3, -3], [9, -4], [12, 4], [18, -1]]), ('control #12', [[[0, 2], [3, -3], [6, 3], [9, -1]], 1], [[0, 2], [3, -3], [6, 3], [9, -1]]), ('control #13', [[[0, 4], [3, -1], [6, -4], [9, -2], [12, 4], [15, -3], [18, -1], [21, 0]], 3], [[0, 4], [6, -4], [12, 4], [15, -3], [21, 0]]), ('regression #14', [[[0, 0], [10, 0], [14, 3], [20, 0]], 2], [[0, 0], [10, 0], [14, 3], [20, 0]]), ('regression #15', [[[0, 0], [5, 0], [-6, 1], [10, 0]], 2], [[0, 0], [5, 0], [-6, 1], [10, 0]]), ('regression #16', [[[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]], 1], [[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]])], [('control #7', [[[0, -4], [3, 0], [6, -3], [9, 1], [12, 1], [15, 3]], 2], [[0, -4], [3, 0], [6, -3], [15, 3]]), ('control #13', [[[0, 4], [3, -1], [6, -4], [9, -2], [12, 4], [15, -3], [18, -1], [21, 0]], 3], [[0, 4], [6, -4], [12, 4], [15, -3], [21, 0]]), ('regression #14', [[[0, 0], [10, 0], [14, 3], [20, 0]], 2], [[0, 0], [10, 0], [14, 3], [20, 0]]), ('regression #15', [[[0, 0], [5, 0], [-6, 1], [10, 0]], 2], [[0, 0], [5, 0], [-6, 1], [10, 0]]), ('regression #16', [[[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]], 1], [[0, 0], [4, 4], [8, 0], [4, -4], [0, 0]]), ('regression #17', [[[0, 0], [6, 1], [6, 7], [0, 6], [0, 0]], 2], [[0, 0], [6, 1], [6, 7], [0, 6], [0, 0]]), ('boundary #18', [[[0, 0], [5, 2], [10, 0]], 2], [[0, 0], [10, 0]]), ('boundary #19', [[[0, 0], [5, 3], [10, 0]], 2], [[0, 0], [5, 3], [10, 0]])]]\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-douglas-peucker-arc-tolerance-comparison","generated_at":"2026-09-29T14:48:22.232043+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Shared arcs are simplified once so adjacent polygons stay gap-free; distance and split errors change which boundary vertices survive.","root_cause":"The split test uses >=, keeping vertices whose distance equals the tolerance.","sha256":"03c5dcdca123757bb25d5984c4b444197b1e1bbfd793874d9f3189bd6147f1ba","title":"Douglas-Peucker simplification of a topology arc: tolerance comparison · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.354,"exit_code":1,"observations":[{"actual":[[0,0],[6,-1],[15,4],[21,-2],[24,1]],"check":"control #0","expected":[[0,0],[6,-1],[15,4],[21,-2],[24,1]],"passed":true},{"actual":[[0,3],[3,-4],[9,3],[12,-4],[15,1],[18,-1]],"check":"control #1","expected":[[0,3],[3,-4],[9,3],[12,-4],[15,1],[18,-1]],"passed":true},{"actual":[[0,-4],[3,3],[6,-2],[9,-1],[12,2],[18,1]],"check":"control #2","expected":[[0,-4],[3,3],[6,-2],[9,-1],[12,2],[15,1],[18,1]],"passed":false},{"actual":[[0,-3],[9,-2]],"check":"control #3","expected":[[0,-3],[9,-2]],"passed":true},{"actual":[[0,-2],[9,-4],[15,2]],"check":"control #4","expected":[[0,-2],[9,-4],[15,2]],"passed":true},{"actual":[[0,-2],[3,2],[6,2],[9,-3],[12,3],[15,4],[18,2],[21,-2]],"check":"control #5","expected":[[0,-2],[3,2],[6,2],[9,-3],[12,3],[15,4],[18,2],[21,-2]],"passed":true},{"actual":[[0,4],[3,-1],[12,2]],"check":"control #6","expected":[[0,4],[3,-1],[12,2]],"passed":true},{"actual":[[0,-3],[3,4],[9,-4],[12,0],[15,-1],[18,4]],"check":"control #9","expected":[[0,-3],[3,4],[9,-4],[12,0],[15,-1],[18,4]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [[0, 0], [6, -1], [15, 4], [21, -2], [24, 1]], \"expected\": [[0, 0], [6, -1], [15, 4], [21, -2], [24, 1]], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[0, 3], [3, -4], [9, 3], [12, -4], [15, 1], [18, -1]], \"expected\": [[0, 3], [3, -4], [9, 3], [12, -4], [15, 1], [18, -1]], \"passed\": true}, {\"check\": \"control #2\", \"actual\": [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [18, 1]], \"expected\": [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], \"passed\": false}, {\"check\": \"control #3\", \"actual\": [[0, -3], [9, -2]], \"expected\": [[0, -3], [9, -2]], \"passed\": true}, {\"check\": \"control #4\", \"actual\": [[0, -2], [9, -4], [15, 2]], \"expected\": [[0, -2], [9, -4], [15, 2]], \"passed\": true}, {\"check\": \"control #5\", \"actual\": [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], \"expected\": [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], \"passed\": true}, {\"check\": \"control #6\", \"actual\": [[0, 4], [3, -1], [12, 2]], \"expected\": [[0, 4], [3, -1], [12, 2]], \"passed\": true}, {\"check\": \"control #9\", \"actual\": [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]], \"expected\": [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.229,"exit_code":1,"observations":[{"actual":[[0,0],[6,-1],[15,4],[21,-2],[24,1]],"check":"control #0","expected":[[0,0],[6,-1],[15,4],[21,-2],[24,1]],"passed":true},{"actual":[[0,3],[3,-4],[9,3],[12,-4],[15,1],[18,-1]],"check":"control #1","expected":[[0,3],[3,-4],[9,3],[12,-4],[15,1],[18,-1]],"passed":true},{"actual":[[0,-4],[3,3],[6,-2],[9,-1],[12,2],[15,1],[18,1]],"check":"control #2","expected":[[0,-4],[3,3],[6,-2],[9,-1],[12,2],[15,1],[18,1]],"passed":true},{"actual":[[0,-3],[9,-2]],"check":"control #3","expected":[[0,-3],[9,-2]],"passed":true},{"actual":[[0,-2],[9,-4],[15,2]],"check":"control #4","expected":[[0,-2],[9,-4],[15,2]],"passed":true},{"actual":[[0,-2],[3,2],[6,2],[9,-3],[12,3],[15,4],[18,2],[21,-2]],"check":"control #5","expected":[[0,-2],[3,2],[6,2],[9,-3],[12,3],[15,4],[18,2],[21,-2]],"passed":true},{"actual":[[0,4],[3,-1],[12,2]],"check":"control #6","expected":[[0,4],[3,-1],[12,2]],"passed":true},{"actual":[[0,-3],[3,4],[6,0],[9,-4],[12,0],[15,-1],[18,4]],"check":"control #9","expected":[[0,-3],[3,4],[9,-4],[12,0],[15,-1],[18,4]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [[0, 0], [6, -1], [15, 4], [21, -2], [24, 1]], \"expected\": [[0, 0], [6, -1], [15, 4], [21, -2], [24, 1]], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[0, 3], [3, -4], [9, 3], [12, -4], [15, 1], [18, -1]], \"expected\": [[0, 3], [3, -4], [9, 3], [12, -4], [15, 1], [18, -1]], \"passed\": true}, {\"check\": \"control #2\", \"actual\": [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], \"expected\": [[0, -4], [3, 3], [6, -2], [9, -1], [12, 2], [15, 1], [18, 1]], \"passed\": true}, {\"check\": \"control #3\", \"actual\": [[0, -3], [9, -2]], \"expected\": [[0, -3], [9, -2]], \"passed\": true}, {\"check\": \"control #4\", \"actual\": [[0, -2], [9, -4], [15, 2]], \"expected\": [[0, -2], [9, -4], [15, 2]], \"passed\": true}, {\"check\": \"control #5\", \"actual\": [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], \"expected\": [[0, -2], [3, 2], [6, 2], [9, -3], [12, 3], [15, 4], [18, 2], [21, -2]], \"passed\": true}, {\"check\": \"control #6\", \"actual\": [[0, 4], [3, -1], [12, 2]], \"expected\": [[0, 4], [3, -1], [12, 2]], \"passed\": true}, {\"check\": \"control #9\", \"actual\": [[0, -3], [3, 4], [6, 0], [9, -4], [12, 0], [15, -1], [18, 4]], \"expected\": [[0, -3], [3, 4], [9, -4], [12, 0], [15, -1], [18, 4]], \"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."}}