{"abstract":"Loops start at whichever vertex was inserted first rather than at their smallest vertex.","category":"Mesh topology invariants","checks":7,"contract":"Input: consistently oriented polygon faces. A half-edge (a,b) is boundary when (b,a) is not a half-edge. If any vertex starts two boundary half-edges return \"ambiguous\". Otherwise walk loops along the half-edge direction, each starting at its smallest vertex, and return them sorted by descending length then first vertex.","evaluation_group":"w2-mesh_topology_invariants-boundary-loops","failed_approach":"Iterating in descending order starts each loop at its largest vertex.","family":"w2-mesh_topology_invariants-boundary-loops-loop-start-vertex","id":"FA-88411","implementations":{"attempt":{"sha256":"8df670a91dfe7537992205d091953e356bb28cea39a2251d08d757cb1229895d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    faces=x\n    he=[]\n    for f in faces:\n        n=len(f)\n        for i in range(n):\n            he.append((f[i],f[(i+1)%n]))\n    hs=set(he)\n    nxt={}\n    for a,b in he:\n        if (b,a) not in hs:\n            if a in nxt: return 'ambiguous'\n            nxt[a]=b\n    loops=[]\n    seen=set()\n    for s in sorted(nxt,reverse=True):\n        if s in seen: continue\n        loop=[]\n        v=s\n        while v not in seen:\n            seen.add(v)\n            loop.append(v)\n            v=nxt[v]\n        loops.append(loop)\n    return sorted(loops,key=lambda l:(-len(l),l[0]))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['disk', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1]]], [[1, 2, 3, 4, 5]]], ['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous']], [['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous'], ['two disks', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 12, 13], [10, 13, 14]]], [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14]]], ['open cylinder', [[[0, 1, 5], [0, 5, 4], [1, 2, 6], [1, 6, 5], [2, 3, 7], [2, 7, 6], [3, 0, 4], [3, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]]], [['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['two disks', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 12, 13], [10, 13, 14]]], [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14]]], ['open cylinder', [[[0, 1, 5], [0, 5, 4], [1, 2, 6], [1, 6, 5], [2, 3, 7], [2, 7, 6], [3, 0, 4], [3, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]], ['single quad', [[[3, 1, 0, 2]]], [[0, 2, 3, 1]]], ['triangle grid', [[[0, 1, 4], [0, 4, 3], [1, 2, 5], [1, 5, 4]]], [[0, 1, 2, 5, 4, 3]]], ['disk with small far island', [[[5, 6, 7], [5, 7, 8], [5, 8, 9], [5, 9, 10], [5, 10, 6], [0, 1, 2]]], [[6, 7, 8, 9, 10], [0, 1, 2]]]], [['disk', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1]]], [[1, 2, 3, 4, 5]]], ['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]], ['triangle grid', [[[0, 1, 4], [0, 4, 3], [1, 2, 5], [1, 5, 4]]], [[0, 1, 2, 5, 4, 3]]], ['disk with small far island', [[[5, 6, 7], [5, 7, 8], [5, 8, 9], [5, 9, 10], [5, 10, 6], [0, 1, 2]]], [[6, 7, 8, 9, 10], [0, 1, 2]]]], [['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous'], ['single quad', [[[3, 1, 0, 2]]], [[0, 2, 3, 1]]]]]\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":"bddfd08dabfc4c7ce0ec43c161daf6cc7141a9f36b19d96f88b8a77fd3cb9288","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    faces=x\n    he=[]\n    for f in faces:\n        n=len(f)\n        for i in range(n):\n            he.append((f[i],f[(i+1)%n]))\n    hs=set(he)\n    nxt={}\n    for a,b in he:\n        if (b,a) not in hs:\n            if a in nxt: return 'ambiguous'\n            nxt[a]=b\n    loops=[]\n    seen=set()\n    for s in nxt:\n        if s in seen: continue\n        loop=[]\n        v=s\n        while v not in seen:\n            seen.add(v)\n            loop.append(v)\n            v=nxt[v]\n        loops.append(loop)\n    return sorted(loops,key=lambda l:(-len(l),l[0]))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['disk', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1]]], [[1, 2, 3, 4, 5]]], ['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous']], [['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous'], ['two disks', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 12, 13], [10, 13, 14]]], [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14]]], ['open cylinder', [[[0, 1, 5], [0, 5, 4], [1, 2, 6], [1, 6, 5], [2, 3, 7], [2, 7, 6], [3, 0, 4], [3, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]]], [['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['two disks', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 12, 13], [10, 13, 14]]], [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14]]], ['open cylinder', [[[0, 1, 5], [0, 5, 4], [1, 2, 6], [1, 6, 5], [2, 3, 7], [2, 7, 6], [3, 0, 4], [3, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]], ['single quad', [[[3, 1, 0, 2]]], [[0, 2, 3, 1]]], ['triangle grid', [[[0, 1, 4], [0, 4, 3], [1, 2, 5], [1, 5, 4]]], [[0, 1, 2, 5, 4, 3]]], ['disk with small far island', [[[5, 6, 7], [5, 7, 8], [5, 8, 9], [5, 9, 10], [5, 10, 6], [0, 1, 2]]], [[6, 7, 8, 9, 10], [0, 1, 2]]]], [['disk', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1]]], [[1, 2, 3, 4, 5]]], ['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]], ['triangle grid', [[[0, 1, 4], [0, 4, 3], [1, 2, 5], [1, 5, 4]]], [[0, 1, 2, 5, 4, 3]]], ['disk with small far island', [[[5, 6, 7], [5, 7, 8], [5, 8, 9], [5, 9, 10], [5, 10, 6], [0, 1, 2]]], [[6, 7, 8, 9, 10], [0, 1, 2]]]], [['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous'], ['single quad', [[[3, 1, 0, 2]]], [[0, 2, 3, 1]]]]]\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":"126c47876a5a69168bc3fe93a2bdc8cc58109b0b333cd646e2d9345766352b09","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    faces=x\n    he=[]\n    for f in faces:\n        n=len(f)\n        for i in range(n):\n            he.append((f[i],f[(i+1)%n]))\n    hs=set(he)\n    nxt={}\n    for a,b in he:\n        if (b,a) not in hs:\n            if a in nxt: return 'ambiguous'\n            nxt[a]=b\n    loops=[]\n    seen=set()\n    for s in sorted(nxt):\n        if s in seen: continue\n        loop=[]\n        v=s\n        while v not in seen:\n            seen.add(v)\n            loop.append(v)\n            v=nxt[v]\n        loops.append(loop)\n    return sorted(loops,key=lambda l:(-len(l),l[0]))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['disk', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1]]], [[1, 2, 3, 4, 5]]], ['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous']], [['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous'], ['two disks', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 12, 13], [10, 13, 14]]], [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14]]], ['open cylinder', [[[0, 1, 5], [0, 5, 4], [1, 2, 6], [1, 6, 5], [2, 3, 7], [2, 7, 6], [3, 0, 4], [3, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]]], [['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['two disks', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 12, 13], [10, 13, 14]]], [[1, 2, 3, 4, 5], [10, 11, 12, 13, 14]]], ['open cylinder', [[[0, 1, 5], [0, 5, 4], [1, 2, 6], [1, 6, 5], [2, 3, 7], [2, 7, 6], [3, 0, 4], [3, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]], ['single quad', [[[3, 1, 0, 2]]], [[0, 2, 3, 1]]], ['triangle grid', [[[0, 1, 4], [0, 4, 3], [1, 2, 5], [1, 5, 4]]], [[0, 1, 2, 5, 4, 3]]], ['disk with small far island', [[[5, 6, 7], [5, 7, 8], [5, 8, 9], [5, 9, 10], [5, 10, 6], [0, 1, 2]]], [[6, 7, 8, 9, 10], [0, 1, 2]]]], [['disk', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1]]], [[1, 2, 3, 4, 5]]], ['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['single triangle', [[[4, 2, 7]]], [[2, 7, 4]]], ['triangle grid', [[[0, 1, 4], [0, 4, 3], [1, 2, 5], [1, 5, 4]]], [[0, 1, 2, 5, 4, 3]]], ['disk with small far island', [[[5, 6, 7], [5, 7, 8], [5, 8, 9], [5, 9, 10], [5, 10, 6], [0, 1, 2]]], [[6, 7, 8, 9, 10], [0, 1, 2]]]], [['fan', [[[0, 1, 2], [0, 2, 3], [0, 3, 4]]], [[0, 1, 2, 3, 4]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [[0, 2, 1], [3, 4, 5]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [[0, 1, 2, 5, 8, 7, 6, 3]]], ['square with hole', [[[0, 1, 5, 4], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [[0, 1, 2, 3], [4, 7, 6, 5]]], ['closed tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], []], ['bowtie', [[[0, 1, 2], [0, 3, 4]]], 'ambiguous'], ['single quad', [[[3, 1, 0, 2]]], [[0, 2, 3, 1]]]]]\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":"Pure combinatorial teaching model over integer face lists with a stipulated contract; no geometry kernel or file format is implied. 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-mesh_topology_invariants-boundary-loops-loop-start-vertex","generated_at":"2026-09-29T14:51:07.785401+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Mesh processing pipelines (remeshing, export, simulation, printing) trust these topological counts and adjacency answers; a wrong invariant silently accepts broken meshes or rejects valid ones.","repair":"Start each loop at the smallest unvisited boundary vertex.","root_cause":"The walk iterates successor keys in insertion order.","sha256":"f3fc9bdebf5d1d589dc2eb9aa457265600dd6c44614e4af1108f865c76619663","title":"Boundary loop walk starts from an arbitrary vertex · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.965,"exit_code":1,"observations":[{"actual":[[5,1,2,3,4]],"check":"disk","expected":[[1,2,3,4,5]],"passed":false},{"actual":[[4,0,1,2,3]],"check":"fan","expected":[[0,1,2,3,4]],"passed":false},{"actual":[[2,1,0],[5,3,4]],"check":"annulus","expected":[[0,2,1],[3,4,5]],"passed":false},{"actual":[[8,7,6,3,0,1,2,5]],"check":"quad grid","expected":[[0,1,2,5,8,7,6,3]],"passed":false},{"actual":[[3,0,1,2],[7,6,5,4]],"check":"square with hole","expected":[[0,1,2,3],[4,7,6,5]],"passed":false},{"actual":[],"check":"closed tetrahedron","expected":[],"passed":true},{"actual":"ambiguous","check":"bowtie","expected":"ambiguous","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disk\", \"actual\": [[5, 1, 2, 3, 4]], \"expected\": [[1, 2, 3, 4, 5]], \"passed\": false}, {\"check\": \"fan\", \"actual\": [[4, 0, 1, 2, 3]], \"expected\": [[0, 1, 2, 3, 4]], \"passed\": false}, {\"check\": \"annulus\", \"actual\": [[2, 1, 0], [5, 3, 4]], \"expected\": [[0, 2, 1], [3, 4, 5]], \"passed\": false}, {\"check\": \"quad grid\", \"actual\": [[8, 7, 6, 3, 0, 1, 2, 5]], \"expected\": [[0, 1, 2, 5, 8, 7, 6, 3]], \"passed\": false}, {\"check\": \"square with hole\", \"actual\": [[3, 0, 1, 2], [7, 6, 5, 4]], \"expected\": [[0, 1, 2, 3], [4, 7, 6, 5]], \"passed\": false}, {\"check\": \"closed tetrahedron\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"bowtie\", \"actual\": \"ambiguous\", \"expected\": \"ambiguous\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.551,"exit_code":1,"observations":[{"actual":[[1,2,3,4,5]],"check":"disk","expected":[[1,2,3,4,5]],"passed":true},{"actual":[[0,1,2,3,4]],"check":"fan","expected":[[0,1,2,3,4]],"passed":true},{"actual":[[1,0,2],[3,4,5]],"check":"annulus","expected":[[0,2,1],[3,4,5]],"passed":false},{"actual":[[0,1,2,5,8,7,6,3]],"check":"quad grid","expected":[[0,1,2,5,8,7,6,3]],"passed":true},{"actual":[[0,1,2,3],[5,4,7,6]],"check":"square with hole","expected":[[0,1,2,3],[4,7,6,5]],"passed":false},{"actual":[],"check":"closed tetrahedron","expected":[],"passed":true},{"actual":"ambiguous","check":"bowtie","expected":"ambiguous","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disk\", \"actual\": [[1, 2, 3, 4, 5]], \"expected\": [[1, 2, 3, 4, 5]], \"passed\": true}, {\"check\": \"fan\", \"actual\": [[0, 1, 2, 3, 4]], \"expected\": [[0, 1, 2, 3, 4]], \"passed\": true}, {\"check\": \"annulus\", \"actual\": [[1, 0, 2], [3, 4, 5]], \"expected\": [[0, 2, 1], [3, 4, 5]], \"passed\": false}, {\"check\": \"quad grid\", \"actual\": [[0, 1, 2, 5, 8, 7, 6, 3]], \"expected\": [[0, 1, 2, 5, 8, 7, 6, 3]], \"passed\": true}, {\"check\": \"square with hole\", \"actual\": [[0, 1, 2, 3], [5, 4, 7, 6]], \"expected\": [[0, 1, 2, 3], [4, 7, 6, 5]], \"passed\": false}, {\"check\": \"closed tetrahedron\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"bowtie\", \"actual\": \"ambiguous\", \"expected\": \"ambiguous\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.632,"exit_code":0,"observations":[{"actual":[[1,2,3,4,5]],"check":"disk","expected":[[1,2,3,4,5]],"passed":true},{"actual":[[0,1,2,3,4]],"check":"fan","expected":[[0,1,2,3,4]],"passed":true},{"actual":[[0,2,1],[3,4,5]],"check":"annulus","expected":[[0,2,1],[3,4,5]],"passed":true},{"actual":[[0,1,2,5,8,7,6,3]],"check":"quad grid","expected":[[0,1,2,5,8,7,6,3]],"passed":true},{"actual":[[0,1,2,3],[4,7,6,5]],"check":"square with hole","expected":[[0,1,2,3],[4,7,6,5]],"passed":true},{"actual":[],"check":"closed tetrahedron","expected":[],"passed":true},{"actual":"ambiguous","check":"bowtie","expected":"ambiguous","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disk\", \"actual\": [[1, 2, 3, 4, 5]], \"expected\": [[1, 2, 3, 4, 5]], \"passed\": true}, {\"check\": \"fan\", \"actual\": [[0, 1, 2, 3, 4]], \"expected\": [[0, 1, 2, 3, 4]], \"passed\": true}, {\"check\": \"annulus\", \"actual\": [[0, 2, 1], [3, 4, 5]], \"expected\": [[0, 2, 1], [3, 4, 5]], \"passed\": true}, {\"check\": \"quad grid\", \"actual\": [[0, 1, 2, 5, 8, 7, 6, 3]], \"expected\": [[0, 1, 2, 5, 8, 7, 6, 3]], \"passed\": true}, {\"check\": \"square with hole\", \"actual\": [[0, 1, 2, 3], [4, 7, 6, 5]], \"expected\": [[0, 1, 2, 3], [4, 7, 6, 5]], \"passed\": true}, {\"check\": \"closed tetrahedron\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"bowtie\", \"actual\": \"ambiguous\", \"expected\": \"ambiguous\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}