{"abstract":"Non-manifold books get an orientability answer instead of \"non-manifold\".","category":"Mesh topology invariants","checks":7,"contract":"Input: polygon faces. If any undirected edge has more than two incident faces return \"non-manifold\". Otherwise propagate orientation by breadth-first search from the lowest unvisited face of each component (that seed keeps its orientation). A neighbour across an edge used in the same direction must have the opposite flip state. Any conflict returns [false, []], else [true, sorted indices of faces to flip].","evaluation_group":"w2-mesh_topology_invariants-orientation-propagation","failed_approach":"Rejecting two incident faces rejects every closed mesh.","family":"w2-mesh_topology_invariants-orientation-propagation-fin-precondition","id":"FA-88556","implementations":{"attempt":{"sha256":"ebbc9e79ab11df3cc8a436c4db40fc5fe84f8feab43a7134bc413273a7ddf5ba","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    faces=x\n    edge_faces={}\n    for fi,f in enumerate(faces):\n        n=len(f)\n        for i in range(n):\n            a,b=f[i],f[(i+1)%n]\n            edge_faces.setdefault((min(a,b),max(a,b)),[]).append((fi,a,b))\n    if any(len(v)>=2 for v in edge_faces.values()): return 'non-manifold'\n    flip=[None]*len(faces)\n    for seed in range(len(faces)):\n        if flip[seed] is not None: continue\n        flip[seed]=0\n        queue=[seed]\n        while queue:\n            fi=queue.pop(0)\n            f=faces[fi]\n            n=len(f)\n            for i in range(n):\n                a,b=f[i],f[(i+1)%n]\n                for gj,c,d in edge_faces[(min(a,b),max(a,b))]:\n                    if gj==fi: continue\n                    same=1 if (c,d)==(a,b) else 0\n                    want=flip[fi]^same\n                    if flip[gj] is None:\n                        flip[gj]=want\n                        queue.append(gj)\n                    elif flip[gj]!=want:\n                        return [False,[]]\n    return [True,[i for i in range(len(faces)) if flip[i]]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['consistent tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], [True, []]], ['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]]], [['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]], ['two components second flipped', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2], [4, 5, 6], [4, 5, 7]]], [True, [5]]], ['cube one flipped', [[[0, 3, 2, 1], [4, 5, 6, 7], [0, 4, 5, 1], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [True, [2]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [True, []]]], [['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['cube one flipped', [[[0, 3, 2, 1], [4, 5, 6, 7], [0, 4, 5, 1], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [True, [2]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [True, []]], ['chain of flips', [[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5]]], [True, [1, 3]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [True, []]], ['second component consistent', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 11, 13]]], [True, [6]]]], [['consistent tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], [True, []]], ['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [True, []]], ['second component consistent', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 11, 13]]], [True, [6]]]], [['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]], ['two components second flipped', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2], [4, 5, 6], [4, 5, 7]]], [True, [5]]]]]\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":"25bc8d5f346b234eaa627113e31d7824512c69395c813ebfda972b4f21c289e2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    faces=x\n    edge_faces={}\n    for fi,f in enumerate(faces):\n        n=len(f)\n        for i in range(n):\n            a,b=f[i],f[(i+1)%n]\n            edge_faces.setdefault((min(a,b),max(a,b)),[]).append((fi,a,b))\n    if any(len(v)>3 for v in edge_faces.values()): return 'non-manifold'\n    flip=[None]*len(faces)\n    for seed in range(len(faces)):\n        if flip[seed] is not None: continue\n        flip[seed]=0\n        queue=[seed]\n        while queue:\n            fi=queue.pop(0)\n            f=faces[fi]\n            n=len(f)\n            for i in range(n):\n                a,b=f[i],f[(i+1)%n]\n                for gj,c,d in edge_faces[(min(a,b),max(a,b))]:\n                    if gj==fi: continue\n                    same=1 if (c,d)==(a,b) else 0\n                    want=flip[fi]^same\n                    if flip[gj] is None:\n                        flip[gj]=want\n                        queue.append(gj)\n                    elif flip[gj]!=want:\n                        return [False,[]]\n    return [True,[i for i in range(len(faces)) if flip[i]]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['consistent tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], [True, []]], ['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]]], [['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]], ['two components second flipped', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2], [4, 5, 6], [4, 5, 7]]], [True, [5]]], ['cube one flipped', [[[0, 3, 2, 1], [4, 5, 6, 7], [0, 4, 5, 1], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [True, [2]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [True, []]]], [['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['cube one flipped', [[[0, 3, 2, 1], [4, 5, 6, 7], [0, 4, 5, 1], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [True, [2]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [True, []]], ['chain of flips', [[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5]]], [True, [1, 3]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [True, []]], ['second component consistent', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 11, 13]]], [True, [6]]]], [['consistent tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], [True, []]], ['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [True, []]], ['second component consistent', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 11, 13]]], [True, [6]]]], [['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]], ['two components second flipped', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2], [4, 5, 6], [4, 5, 7]]], [True, [5]]]]]\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":"8fc3ffc83cc67c870f7b7bc5478438eb61039399155ad3e84fdeb533e0676e26","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(x):\n    faces=x\n    edge_faces={}\n    for fi,f in enumerate(faces):\n        n=len(f)\n        for i in range(n):\n            a,b=f[i],f[(i+1)%n]\n            edge_faces.setdefault((min(a,b),max(a,b)),[]).append((fi,a,b))\n    if any(len(v)>2 for v in edge_faces.values()): return 'non-manifold'\n    flip=[None]*len(faces)\n    for seed in range(len(faces)):\n        if flip[seed] is not None: continue\n        flip[seed]=0\n        queue=[seed]\n        while queue:\n            fi=queue.pop(0)\n            f=faces[fi]\n            n=len(f)\n            for i in range(n):\n                a,b=f[i],f[(i+1)%n]\n                for gj,c,d in edge_faces[(min(a,b),max(a,b))]:\n                    if gj==fi: continue\n                    same=1 if (c,d)==(a,b) else 0\n                    want=flip[fi]^same\n                    if flip[gj] is None:\n                        flip[gj]=want\n                        queue.append(gj)\n                    elif flip[gj]!=want:\n                        return [False,[]]\n    return [True,[i for i in range(len(faces)) if flip[i]]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['consistent tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], [True, []]], ['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]]], [['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]], ['two components second flipped', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2], [4, 5, 6], [4, 5, 7]]], [True, [5]]], ['cube one flipped', [[[0, 3, 2, 1], [4, 5, 6, 7], [0, 4, 5, 1], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [True, [2]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [True, []]]], [['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['cube one flipped', [[[0, 3, 2, 1], [4, 5, 6, 7], [0, 4, 5, 1], [1, 2, 6, 5], [2, 3, 7, 6], [3, 0, 4, 7]]], [True, [2]]], ['annulus', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 3, 0]]], [True, []]], ['chain of flips', [[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5]]], [True, [1, 3]]], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [True, []]], ['second component consistent', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 11, 13]]], [True, [6]]]], [['consistent tetrahedron', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2]]], [True, []]], ['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['quad grid', [[[0, 1, 4, 3], [1, 2, 5, 4], [3, 4, 7, 6], [4, 5, 8, 7]]], [True, []]], ['second component consistent', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [10, 11, 12], [10, 11, 13]]], [True, [6]]]], [['one flipped face', [[[0, 2, 1], [0, 3, 1], [1, 2, 3], [0, 3, 2]]], [True, [1]]], ['mobius', [[[0, 3, 4, 1], [1, 4, 5, 2], [2, 5, 0, 3]]], [False, []]], ['projective plane', [[[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 4], [2, 3, 5], [3, 4, 1], [4, 5, 2], [5, 1, 3]]], [False, []]], ['book', [[[0, 1, 2], [1, 0, 3], [0, 1, 4]]], 'non-manifold'], ['flipped pair', [[[0, 1, 2], [0, 1, 3]]], [True, [1]]], ['disk with two flips', [[[0, 1, 2], [0, 3, 2], [0, 3, 4], [0, 5, 4], [0, 5, 1]]], [True, [1, 3]]], ['two components second flipped', [[[0, 2, 1], [0, 1, 3], [1, 2, 3], [0, 3, 2], [4, 5, 6], [4, 5, 7]]], [True, [5]]]]]\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-orientation-propagation-fin-precondition","generated_at":"2026-09-29T14:51:09.090881+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":"Reject any edge with more than two incident faces.","root_cause":"The fin test only rejects edges with more than three faces.","sha256":"c444006aec727fb21f9d753ecb797c68a1ca69e8b1dbfd012cbf23286e9b2d8b","title":"Orientation propagation runs through three-face fins · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.808,"exit_code":1,"observations":[{"actual":"non-manifold","check":"consistent tetrahedron","expected":[true,[]],"passed":false},{"actual":"non-manifold","check":"one flipped face","expected":[true,[1]],"passed":false},{"actual":"non-manifold","check":"mobius","expected":[false,[]],"passed":false},{"actual":"non-manifold","check":"projective plane","expected":[false,[]],"passed":false},{"actual":"non-manifold","check":"book","expected":"non-manifold","passed":true},{"actual":"non-manifold","check":"flipped pair","expected":[true,[1]],"passed":false},{"actual":"non-manifold","check":"disk with two flips","expected":[true,[1,3]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"consistent tetrahedron\", \"actual\": \"non-manifold\", \"expected\": [true, []], \"passed\": false}, {\"check\": \"one flipped face\", \"actual\": \"non-manifold\", \"expected\": [true, [1]], \"passed\": false}, {\"check\": \"mobius\", \"actual\": \"non-manifold\", \"expected\": [false, []], \"passed\": false}, {\"check\": \"projective plane\", \"actual\": \"non-manifold\", \"expected\": [false, []], \"passed\": false}, {\"check\": \"book\", \"actual\": \"non-manifold\", \"expected\": \"non-manifold\", \"passed\": true}, {\"check\": \"flipped pair\", \"actual\": \"non-manifold\", \"expected\": [true, [1]], \"passed\": false}, {\"check\": \"disk with two flips\", \"actual\": \"non-manifold\", \"expected\": [true, [1, 3]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.357,"exit_code":1,"observations":[{"actual":[true,[]],"check":"consistent tetrahedron","expected":[true,[]],"passed":true},{"actual":[true,[1]],"check":"one flipped face","expected":[true,[1]],"passed":true},{"actual":[false,[]],"check":"mobius","expected":[false,[]],"passed":true},{"actual":[false,[]],"check":"projective plane","expected":[false,[]],"passed":true},{"actual":[false,[]],"check":"book","expected":"non-manifold","passed":false},{"actual":[true,[1]],"check":"flipped pair","expected":[true,[1]],"passed":true},{"actual":[true,[1,3]],"check":"disk with two flips","expected":[true,[1,3]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"consistent tetrahedron\", \"actual\": [true, []], \"expected\": [true, []], \"passed\": true}, {\"check\": \"one flipped face\", \"actual\": [true, [1]], \"expected\": [true, [1]], \"passed\": true}, {\"check\": \"mobius\", \"actual\": [false, []], \"expected\": [false, []], \"passed\": true}, {\"check\": \"projective plane\", \"actual\": [false, []], \"expected\": [false, []], \"passed\": true}, {\"check\": \"book\", \"actual\": [false, []], \"expected\": \"non-manifold\", \"passed\": false}, {\"check\": \"flipped pair\", \"actual\": [true, [1]], \"expected\": [true, [1]], \"passed\": true}, {\"check\": \"disk with two flips\", \"actual\": [true, [1, 3]], \"expected\": [true, [1, 3]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.234,"exit_code":0,"observations":[{"actual":[true,[]],"check":"consistent tetrahedron","expected":[true,[]],"passed":true},{"actual":[true,[1]],"check":"one flipped face","expected":[true,[1]],"passed":true},{"actual":[false,[]],"check":"mobius","expected":[false,[]],"passed":true},{"actual":[false,[]],"check":"projective plane","expected":[false,[]],"passed":true},{"actual":"non-manifold","check":"book","expected":"non-manifold","passed":true},{"actual":[true,[1]],"check":"flipped pair","expected":[true,[1]],"passed":true},{"actual":[true,[1,3]],"check":"disk with two flips","expected":[true,[1,3]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"consistent tetrahedron\", \"actual\": [true, []], \"expected\": [true, []], \"passed\": true}, {\"check\": \"one flipped face\", \"actual\": [true, [1]], \"expected\": [true, [1]], \"passed\": true}, {\"check\": \"mobius\", \"actual\": [false, []], \"expected\": [false, []], \"passed\": true}, {\"check\": \"projective plane\", \"actual\": [false, []], \"expected\": [false, []], \"passed\": true}, {\"check\": \"book\", \"actual\": \"non-manifold\", \"expected\": \"non-manifold\", \"passed\": true}, {\"check\": \"flipped pair\", \"actual\": [true, [1]], \"expected\": [true, [1]], \"passed\": true}, {\"check\": \"disk with two flips\", \"actual\": [true, [1, 3]], \"expected\": [true, [1, 3]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}