{"abstract":"Valid cleaned triangles are rejected.","category":"GIS polygon topology","checks":8,"contract":"Input [ring, eps] where ring is an open or closed list of integer [x, y] positions and eps >= 0. Walk the ring and drop a position whose Chebyshev distance to the last KEPT position is <= eps. Then repeatedly drop trailing kept positions within eps of the first kept position. If fewer than 3 positions remain return None, else return the kept positions closed by repeating the first.","contract_signature":"x","evaluation_group":"w2-gis-polygon-topology-ring-tolerance-cleaning","failed_approach":"Lowering the threshold to 2 accepts collapsed two-vertex rings.","family":"w2-gis-polygon-topology-ring-tolerance-cleaning-minimum-distinct-vertices","id":"FA-70386","implementations":{"attempt":{"sha256":"edbc33895ef8f78dccc12de13c9ef0a9093e3ca46509ac357ec3cc1d91217552","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    ring, eps = x\n    clean = []\n    for p in ring:\n        if clean and max(abs(p[0] - clean[-1][0]), abs(p[1] - clean[-1][1])) <= eps:\n            continue\n        clean.append(list(p))\n    while len(clean) > 1 and max(abs(clean[0][0] - clean[-1][0]), abs(clean[0][1] - clean[-1][1])) <= eps:\n        clean.pop()\n    if len(clean) < 2:\n        return None\n    return clean + [clean[0]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44]], 0], [[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44], [78, 61]]), ('control #1', [[[72, 54], [73, 61], [57, 81], [26, 60], [28, 59], [20, 26], [45, 23], [45, 25], [56, 15]], 2], [[72, 54], [73, 61], [57, 81], [26, 60], [20, 26], [45, 23], [56, 15], [72, 54]]), ('control #2', [[[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37]], 0], [[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37], [38, 79]]), ('control #3', [[[64, 69], [62, 67], [54, 72], [44, 80], [43, 82], [38, 76], [36, 75], [22, 74], [13, 56], [12, 42]], 2], [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]]), ('control #4', [[[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52]], 0], [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]]), ('control #5', [[[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29]], 0], [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]]), ('boundary #15', [[[0, 0], [10, 0], [10, 10], [0, 0]], 0], [[0, 0], [10, 0], [10, 10], [0, 0]]), ('boundary #16', [[[0, 0], [10, 0], [10, 1], [0, 0]], 1], None)], [('control #3', [[[64, 69], [62, 67], [54, 72], [44, 80], [43, 82], [38, 76], [36, 75], [22, 74], [13, 56], [12, 42]], 2], [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]]), ('control #4', [[[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52]], 0], [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]]), ('control #5', [[[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29]], 0], [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]]), ('control #6', [[[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20]], 1], [[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20], [72, 55]]), ('control #7', [[[80, 63], [82, 63], [64, 80], [47, 82], [62, 19], [60, 20], [80, 47], [78, 45], [79, 63]], 2], [[80, 63], [64, 80], [47, 82], [62, 19], [80, 47], [80, 63]]), ('control #8', [[[87, 57], [18, 50], [18, 51], [51, 20], [51, 21], [53, 11], [86, 57]], 1], [[87, 57], [18, 50], [51, 20], [53, 11], [87, 57]]), ('boundary #17', [[[0, 0], [10, 0], [0, 0]], 0], None), ('boundary #20', [[[0, 0], [2, 2], [10, 0], [10, 10]], 3], [[0, 0], [10, 0], [10, 10], [0, 0]])], [('control #6', [[[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20]], 1], [[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20], [72, 55]]), ('control #7', [[[80, 63], [82, 63], [64, 80], [47, 82], [62, 19], [60, 20], [80, 47], [78, 45], [79, 63]], 2], [[80, 63], [64, 80], [47, 82], [62, 19], [80, 47], [80, 63]]), ('control #8', [[[87, 57], [18, 50], [18, 51], [51, 20], [51, 21], [53, 11], [86, 57]], 1], [[87, 57], [18, 50], [51, 20], [53, 11], [87, 57]]), ('control #9', [[[23, 71], [30, 60], [32, 61], [24, 33], [25, 33], [28, 33], [28, 33], [26, 37]], 1], [[23, 71], [30, 60], [32, 61], [24, 33], [28, 33], [26, 37], [23, 71]]), ('control #10', [[[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [78, 38], [73, 49], [75, 47]], 2], [[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [73, 49], [30, 78]]), ('control #11', [[[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [72, 63]], 1], [[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [71, 63]]), ('boundary #15', [[[0, 0], [10, 0], [10, 10], [0, 0]], 0], [[0, 0], [10, 0], [10, 10], [0, 0]]), ('boundary #16', [[[0, 0], [10, 0], [10, 1], [0, 0]], 1], None)], [('control #9', [[[23, 71], [30, 60], [32, 61], [24, 33], [25, 33], [28, 33], [28, 33], [26, 37]], 1], [[23, 71], [30, 60], [32, 61], [24, 33], [28, 33], [26, 37], [23, 71]]), ('control #10', [[[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [78, 38], [73, 49], [75, 47]], 2], [[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [73, 49], [30, 78]]), ('control #11', [[[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [72, 63]], 1], [[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [71, 63]]), ('boundary #12', [[[0, 0], [2, 0], [10, 0], [10, 10], [0, 10]], 2], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #13', [[[0, 0], [1, 0], [2, 0], [3, 0], [10, 0], [10, 10], [0, 10]], 1], [[0, 0], [2, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #14', [[[0, 0], [10, 0], [10, 10], [0, 10], [0, 1], [1, 0]], 1], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('boundary #17', [[[0, 0], [10, 0], [0, 0]], 0], None), ('boundary #20', [[[0, 0], [2, 2], [10, 0], [10, 10]], 3], [[0, 0], [10, 0], [10, 10], [0, 0]])], [('boundary #12', [[[0, 0], [2, 0], [10, 0], [10, 10], [0, 10]], 2], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #13', [[[0, 0], [1, 0], [2, 0], [3, 0], [10, 0], [10, 10], [0, 10]], 1], [[0, 0], [2, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #14', [[[0, 0], [10, 0], [10, 10], [0, 10], [0, 1], [1, 0]], 1], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('boundary #15', [[[0, 0], [10, 0], [10, 10], [0, 0]], 0], [[0, 0], [10, 0], [10, 10], [0, 0]]), ('boundary #16', [[[0, 0], [10, 0], [10, 1], [0, 0]], 1], None), ('boundary #17', [[[0, 0], [10, 0], [0, 0]], 0], None), ('regression #18', [[[0, 0], [1, 1], [10, 0], [10, 10], [0, 10]], 1], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #19', [[[0, 0], [2, 1], [10, 0], [10, 10], [0, 10]], 2], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 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":"555cfd13a41081deb0204cf7a856cedc8c5f3e2bc4c6506829bbef567ad18ecb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    ring, eps = x\n    clean = []\n    for p in ring:\n        if clean and max(abs(p[0] - clean[-1][0]), abs(p[1] - clean[-1][1])) <= eps:\n            continue\n        clean.append(list(p))\n    while len(clean) > 1 and max(abs(clean[0][0] - clean[-1][0]), abs(clean[0][1] - clean[-1][1])) <= eps:\n        clean.pop()\n    if len(clean) < 4:\n        return None\n    return clean + [clean[0]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('control #0', [[[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44]], 0], [[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44], [78, 61]]), ('control #1', [[[72, 54], [73, 61], [57, 81], [26, 60], [28, 59], [20, 26], [45, 23], [45, 25], [56, 15]], 2], [[72, 54], [73, 61], [57, 81], [26, 60], [20, 26], [45, 23], [56, 15], [72, 54]]), ('control #2', [[[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37]], 0], [[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37], [38, 79]]), ('control #3', [[[64, 69], [62, 67], [54, 72], [44, 80], [43, 82], [38, 76], [36, 75], [22, 74], [13, 56], [12, 42]], 2], [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]]), ('control #4', [[[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52]], 0], [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]]), ('control #5', [[[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29]], 0], [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]]), ('boundary #15', [[[0, 0], [10, 0], [10, 10], [0, 0]], 0], [[0, 0], [10, 0], [10, 10], [0, 0]]), ('boundary #16', [[[0, 0], [10, 0], [10, 1], [0, 0]], 1], None)], [('control #3', [[[64, 69], [62, 67], [54, 72], [44, 80], [43, 82], [38, 76], [36, 75], [22, 74], [13, 56], [12, 42]], 2], [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]]), ('control #4', [[[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52]], 0], [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]]), ('control #5', [[[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29]], 0], [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]]), ('control #6', [[[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20]], 1], [[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20], [72, 55]]), ('control #7', [[[80, 63], [82, 63], [64, 80], [47, 82], [62, 19], [60, 20], [80, 47], [78, 45], [79, 63]], 2], [[80, 63], [64, 80], [47, 82], [62, 19], [80, 47], [80, 63]]), ('control #8', [[[87, 57], [18, 50], [18, 51], [51, 20], [51, 21], [53, 11], [86, 57]], 1], [[87, 57], [18, 50], [51, 20], [53, 11], [87, 57]]), ('boundary #17', [[[0, 0], [10, 0], [0, 0]], 0], None), ('boundary #20', [[[0, 0], [2, 2], [10, 0], [10, 10]], 3], [[0, 0], [10, 0], [10, 10], [0, 0]])], [('control #6', [[[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20]], 1], [[72, 55], [75, 56], [57, 84], [18, 62], [62, 21], [60, 20], [72, 55]]), ('control #7', [[[80, 63], [82, 63], [64, 80], [47, 82], [62, 19], [60, 20], [80, 47], [78, 45], [79, 63]], 2], [[80, 63], [64, 80], [47, 82], [62, 19], [80, 47], [80, 63]]), ('control #8', [[[87, 57], [18, 50], [18, 51], [51, 20], [51, 21], [53, 11], [86, 57]], 1], [[87, 57], [18, 50], [51, 20], [53, 11], [87, 57]]), ('control #9', [[[23, 71], [30, 60], [32, 61], [24, 33], [25, 33], [28, 33], [28, 33], [26, 37]], 1], [[23, 71], [30, 60], [32, 61], [24, 33], [28, 33], [26, 37], [23, 71]]), ('control #10', [[[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [78, 38], [73, 49], [75, 47]], 2], [[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [73, 49], [30, 78]]), ('control #11', [[[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [72, 63]], 1], [[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [71, 63]]), ('boundary #15', [[[0, 0], [10, 0], [10, 10], [0, 0]], 0], [[0, 0], [10, 0], [10, 10], [0, 0]]), ('boundary #16', [[[0, 0], [10, 0], [10, 1], [0, 0]], 1], None)], [('control #9', [[[23, 71], [30, 60], [32, 61], [24, 33], [25, 33], [28, 33], [28, 33], [26, 37]], 1], [[23, 71], [30, 60], [32, 61], [24, 33], [28, 33], [26, 37], [23, 71]]), ('control #10', [[[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [78, 38], [73, 49], [75, 47]], 2], [[30, 78], [22, 36], [32, 33], [50, 13], [76, 40], [73, 49], [30, 78]]), ('control #11', [[[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [72, 63]], 1], [[71, 63], [73, 64], [45, 75], [31, 77], [17, 36], [38, 23], [83, 37], [85, 39], [71, 63]]), ('boundary #12', [[[0, 0], [2, 0], [10, 0], [10, 10], [0, 10]], 2], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #13', [[[0, 0], [1, 0], [2, 0], [3, 0], [10, 0], [10, 10], [0, 10]], 1], [[0, 0], [2, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #14', [[[0, 0], [10, 0], [10, 10], [0, 10], [0, 1], [1, 0]], 1], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('boundary #17', [[[0, 0], [10, 0], [0, 0]], 0], None), ('boundary #20', [[[0, 0], [2, 2], [10, 0], [10, 10]], 3], [[0, 0], [10, 0], [10, 10], [0, 0]])], [('boundary #12', [[[0, 0], [2, 0], [10, 0], [10, 10], [0, 10]], 2], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #13', [[[0, 0], [1, 0], [2, 0], [3, 0], [10, 0], [10, 10], [0, 10]], 1], [[0, 0], [2, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #14', [[[0, 0], [10, 0], [10, 10], [0, 10], [0, 1], [1, 0]], 1], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('boundary #15', [[[0, 0], [10, 0], [10, 10], [0, 0]], 0], [[0, 0], [10, 0], [10, 10], [0, 0]]), ('boundary #16', [[[0, 0], [10, 0], [10, 1], [0, 0]], 1], None), ('boundary #17', [[[0, 0], [10, 0], [0, 0]], 0], None), ('regression #18', [[[0, 0], [1, 1], [10, 0], [10, 10], [0, 10]], 1], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]), ('regression #19', [[[0, 0], [2, 1], [10, 0], [10, 10], [0, 10]], 2], [[0, 0], [10, 0], [10, 10], [0, 10], [0, 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-ring-tolerance-cleaning-minimum-distinct-vertices","generated_at":"2026-09-29T14:48:20.378808+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Digitised boundaries carry jitter and duplicate clicks; cleaning must not let small steps accumulate into dropped corners or leave near-closing duplicates.","root_cause":"The threshold counts the closing position, requiring four distinct vertices.","sha256":"06977e314872721fca474dad7e9926fe8558702600f4e8089452b929dc32a7ff","title":"Ring vertex cleaning with snapping tolerance: minimum distinct vertices · 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":38.52,"exit_code":1,"observations":[{"actual":[[78,61],[78,62],[65,72],[48,82],[18,63],[26,38],[24,36],[81,44],[78,61]],"check":"control #0","expected":[[78,61],[78,62],[65,72],[48,82],[18,63],[26,38],[24,36],[81,44],[78,61]],"passed":true},{"actual":[[72,54],[73,61],[57,81],[26,60],[20,26],[45,23],[56,15],[72,54]],"check":"control #1","expected":[[72,54],[73,61],[57,81],[26,60],[20,26],[45,23],[56,15],[72,54]],"passed":true},{"actual":[[38,79],[40,79],[41,24],[39,22],[49,21],[68,28],[73,37],[38,79]],"check":"control #2","expected":[[38,79],[40,79],[41,24],[39,22],[49,21],[68,28],[73,37],[38,79]],"passed":true},{"actual":[[64,69],[54,72],[44,80],[38,76],[22,74],[13,56],[12,42],[64,69]],"check":"control #3","expected":[[64,69],[54,72],[44,80],[38,76],[22,74],[13,56],[12,42],[64,69]],"passed":true},{"actual":[[76,52],[76,53],[70,74],[68,73],[69,77],[40,80],[39,78],[57,16],[56,14],[85,46],[77,52],[76,52]],"check":"control #4","expected":[[76,52],[76,53],[70,74],[68,73],[69,77],[40,80],[39,78],[57,16],[56,14],[85,46],[77,52],[76,52]],"passed":true},{"actual":[[76,62],[76,76],[77,78],[47,80],[20,63],[22,65],[50,22],[51,20],[60,29],[62,29],[76,62]],"check":"control #5","expected":[[76,62],[76,76],[77,78],[47,80],[20,63],[22,65],[50,22],[51,20],[60,29],[62,29],[76,62]],"passed":true},{"actual":[[0,0],[10,0],[10,10],[0,0]],"check":"boundary #15","expected":[[0,0],[10,0],[10,10],[0,0]],"passed":true},{"actual":[[0,0],[10,0],[0,0]],"check":"boundary #16","expected":null,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44], [78, 61]], \"expected\": [[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44], [78, 61]], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[72, 54], [73, 61], [57, 81], [26, 60], [20, 26], [45, 23], [56, 15], [72, 54]], \"expected\": [[72, 54], [73, 61], [57, 81], [26, 60], [20, 26], [45, 23], [56, 15], [72, 54]], \"passed\": true}, {\"check\": \"control #2\", \"actual\": [[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37], [38, 79]], \"expected\": [[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37], [38, 79]], \"passed\": true}, {\"check\": \"control #3\", \"actual\": [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]], \"expected\": [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]], \"passed\": true}, {\"check\": \"control #4\", \"actual\": [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]], \"expected\": [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]], \"passed\": true}, {\"check\": \"control #5\", \"actual\": [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]], \"expected\": [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]], \"passed\": true}, {\"check\": \"boundary #15\", \"actual\": [[0, 0], [10, 0], [10, 10], [0, 0]], \"expected\": [[0, 0], [10, 0], [10, 10], [0, 0]], \"passed\": true}, {\"check\": \"boundary #16\", \"actual\": [[0, 0], [10, 0], [0, 0]], \"expected\": null, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.53,"exit_code":1,"observations":[{"actual":[[78,61],[78,62],[65,72],[48,82],[18,63],[26,38],[24,36],[81,44],[78,61]],"check":"control #0","expected":[[78,61],[78,62],[65,72],[48,82],[18,63],[26,38],[24,36],[81,44],[78,61]],"passed":true},{"actual":[[72,54],[73,61],[57,81],[26,60],[20,26],[45,23],[56,15],[72,54]],"check":"control #1","expected":[[72,54],[73,61],[57,81],[26,60],[20,26],[45,23],[56,15],[72,54]],"passed":true},{"actual":[[38,79],[40,79],[41,24],[39,22],[49,21],[68,28],[73,37],[38,79]],"check":"control #2","expected":[[38,79],[40,79],[41,24],[39,22],[49,21],[68,28],[73,37],[38,79]],"passed":true},{"actual":[[64,69],[54,72],[44,80],[38,76],[22,74],[13,56],[12,42],[64,69]],"check":"control #3","expected":[[64,69],[54,72],[44,80],[38,76],[22,74],[13,56],[12,42],[64,69]],"passed":true},{"actual":[[76,52],[76,53],[70,74],[68,73],[69,77],[40,80],[39,78],[57,16],[56,14],[85,46],[77,52],[76,52]],"check":"control #4","expected":[[76,52],[76,53],[70,74],[68,73],[69,77],[40,80],[39,78],[57,16],[56,14],[85,46],[77,52],[76,52]],"passed":true},{"actual":[[76,62],[76,76],[77,78],[47,80],[20,63],[22,65],[50,22],[51,20],[60,29],[62,29],[76,62]],"check":"control #5","expected":[[76,62],[76,76],[77,78],[47,80],[20,63],[22,65],[50,22],[51,20],[60,29],[62,29],[76,62]],"passed":true},{"actual":null,"check":"boundary #15","expected":[[0,0],[10,0],[10,10],[0,0]],"passed":false},{"actual":null,"check":"boundary #16","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control #0\", \"actual\": [[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44], [78, 61]], \"expected\": [[78, 61], [78, 62], [65, 72], [48, 82], [18, 63], [26, 38], [24, 36], [81, 44], [78, 61]], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[72, 54], [73, 61], [57, 81], [26, 60], [20, 26], [45, 23], [56, 15], [72, 54]], \"expected\": [[72, 54], [73, 61], [57, 81], [26, 60], [20, 26], [45, 23], [56, 15], [72, 54]], \"passed\": true}, {\"check\": \"control #2\", \"actual\": [[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37], [38, 79]], \"expected\": [[38, 79], [40, 79], [41, 24], [39, 22], [49, 21], [68, 28], [73, 37], [38, 79]], \"passed\": true}, {\"check\": \"control #3\", \"actual\": [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]], \"expected\": [[64, 69], [54, 72], [44, 80], [38, 76], [22, 74], [13, 56], [12, 42], [64, 69]], \"passed\": true}, {\"check\": \"control #4\", \"actual\": [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]], \"expected\": [[76, 52], [76, 53], [70, 74], [68, 73], [69, 77], [40, 80], [39, 78], [57, 16], [56, 14], [85, 46], [77, 52], [76, 52]], \"passed\": true}, {\"check\": \"control #5\", \"actual\": [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]], \"expected\": [[76, 62], [76, 76], [77, 78], [47, 80], [20, 63], [22, 65], [50, 22], [51, 20], [60, 29], [62, 29], [76, 62]], \"passed\": true}, {\"check\": \"boundary #15\", \"actual\": null, \"expected\": [[0, 0], [10, 0], [10, 10], [0, 0]], \"passed\": false}, {\"check\": \"boundary #16\", \"actual\": null, \"expected\": null, \"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."}}