{"abstract":"A 2x3 image and its 3x2 rotation compare by raw pixel order, so different aspect ratios canonicalise inconsistently.","category":"Image orientation metadata","checks":8,"contract":"For duplicate detection, bring a pixel grid into a canonical orientation: of the eight orientations (tags 1..8, same pixel mapping as EXIF baking), pick the one whose key (height, width, row-major pixels) is smallest; ties go to the lowest tag. Return [tag, inverse_tag, canonical_grid] where the inverse tag restores the original (6 and 8 are mutual inverses, every other tag is self-inverse).","evaluation_group":"w2-image-orientation-metadata-dedup-canonical-orientation","failed_approach":"Ordering by width before height picks the landscape orientation where the contract picks the portrait one.","family":"w2-image-orientation-metadata-dedup-canonical-orientation-shape-in-key","id":"FA-79296","implementations":{"attempt":{"sha256":"d4fc5a81399f1ad4ee6b9c8b5d336fc6e12034f07fa19a4d255726862514dd96","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid):\n    h = len(grid)\n    w = len(grid[0])\n    def src(t, r, c):\n        return {1: (r, c), 2: (r, w - 1 - c), 3: (h - 1 - r, w - 1 - c), 4: (h - 1 - r, c),\n                5: (c, r), 6: (h - 1 - c, r), 7: (h - 1 - c, w - 1 - r), 8: (c, w - 1 - r)}[t]\n    best = None\n    for t in range(1, 9):\n        oh, ow = (w, h) if t >= 5 else (h, w)\n        img = [[grid[src(t, r, c)[0]][src(t, r, c)[1]] for c in range(ow)] for r in range(oh)]\n        key = (ow, oh, [v for row in img for v in row])\n        if best is None or key < best[0]:\n            best = (key, t, img)\n    inverse = {6: 8, 8: 6}.get(best[1], best[1])\n    return [best[1], inverse, best[2]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[0, 0], [1, 1], [0, 1]], [5, 5, [[0, 1, 0], [0, 1, 1]]]], [[[0], [0], [0]], [5, 5, [[0, 0, 0]]]], [[[6, 3, 0], [0, 8, 5], [1, 5, 5]], [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]]], [[[7]], [1, 1, [[7]]]], [[[8]], [1, 1, [[8]]]], [[[9, 4, 8], [1, 6, 4], [6, 4, 0]], [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]]], [[[0, 1], [5, 1]], [1, 1, [[0, 1], [5, 1]]]], [[[6], [0], [9]], [5, 5, [[6, 0, 9]]]]], [[[[4], [3], [0]], [6, 8, [[0, 3, 4]]]], [[[4, 4]], [1, 1, [[4, 4]]]], [[[9], [0], [1]], [6, 8, [[1, 0, 9]]]], [[[1, 0], [1, 0]], [7, 7, [[0, 0], [1, 1]]]], [[[9]], [1, 1, [[9]]]], [[[8, 6, 5], [0, 7, 5], [2, 0, 8]], [4, 4, [[2, 0, 8], [0, 7, 5], [8, 6, 5]]]], [[[1]], [1, 1, [[1]]]], [[[1, 1], [4, 4], [9, 1]], [8, 6, [[1, 4, 1], [1, 4, 9]]]]], [[[[5], [4]], [6, 8, [[4, 5]]]], [[[1, 1, 0], [1, 1, 0]], [2, 2, [[0, 1, 1], [0, 1, 1]]]], [[[0, 0], [1, 1]], [1, 1, [[0, 0], [1, 1]]]], [[[0, 0, 0], [0, 1, 0], [1, 0, 1]], [1, 1, [[0, 0, 0], [0, 1, 0], [1, 0, 1]]]], [[[9, 3], [4, 8]], [8, 6, [[3, 8], [9, 4]]]], [[[9]], [1, 1, [[9]]]], [[[4]], [1, 1, [[4]]]], [[[6], [8]], [5, 5, [[6, 8]]]]], [[[[4], [5], [0]], [6, 8, [[0, 5, 4]]]], [[[3, 8, 5]], [1, 1, [[3, 8, 5]]]], [[[4], [4]], [5, 5, [[4, 4]]]], [[[6, 7, 5], [1, 9, 6], [6, 4, 6]], [8, 6, [[5, 6, 6], [7, 9, 4], [6, 1, 6]]]], [[[9, 4], [2, 1]], [3, 3, [[1, 2], [4, 9]]]], [[[9, 6, 1], [5, 6, 6], [8, 1, 0]], [3, 3, [[0, 1, 8], [6, 6, 5], [1, 6, 9]]]], [[[2, 9], [0, 0]], [4, 4, [[0, 0], [2, 9]]]], [[[8, 7, 3], [3, 8, 4]], [2, 2, [[3, 7, 8], [4, 8, 3]]]]], [[[[0], [1], [0]], [5, 5, [[0, 1, 0]]]], [[[3, 0, 4]], [1, 1, [[3, 0, 4]]]], [[[6], [5]], [6, 8, [[5, 6]]]], [[[2, 0, 5], [5, 0, 3], [2, 8, 2]], [1, 1, [[2, 0, 5], [5, 0, 3], [2, 8, 2]]]], [[[1, 1], [1, 0]], [3, 3, [[0, 1], [1, 1]]]], [[[0, 0], [0, 1]], [1, 1, [[0, 0], [0, 1]]]], [[[1]], [1, 1, [[1]]]], [[[1, 2, 5], [2, 4, 3]], [1, 1, [[1, 2, 5], [2, 4, 3]]]]]]\nlabels = [\"regression: shape in comparison key\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), 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":"8914073695ec2a9e4ca540b7320813a76eab4d44352c73ab8d928ed2ac7a9a59","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid):\n    h = len(grid)\n    w = len(grid[0])\n    def src(t, r, c):\n        return {1: (r, c), 2: (r, w - 1 - c), 3: (h - 1 - r, w - 1 - c), 4: (h - 1 - r, c),\n                5: (c, r), 6: (h - 1 - c, r), 7: (h - 1 - c, w - 1 - r), 8: (c, w - 1 - r)}[t]\n    best = None\n    for t in range(1, 9):\n        oh, ow = (w, h) if t >= 5 else (h, w)\n        img = [[grid[src(t, r, c)[0]][src(t, r, c)[1]] for c in range(ow)] for r in range(oh)]\n        key = [v for row in img for v in row]\n        if best is None or key < best[0]:\n            best = (key, t, img)\n    inverse = {6: 8, 8: 6}.get(best[1], best[1])\n    return [best[1], inverse, best[2]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[0, 0], [1, 1], [0, 1]], [5, 5, [[0, 1, 0], [0, 1, 1]]]], [[[0], [0], [0]], [5, 5, [[0, 0, 0]]]], [[[6, 3, 0], [0, 8, 5], [1, 5, 5]], [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]]], [[[7]], [1, 1, [[7]]]], [[[8]], [1, 1, [[8]]]], [[[9, 4, 8], [1, 6, 4], [6, 4, 0]], [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]]], [[[0, 1], [5, 1]], [1, 1, [[0, 1], [5, 1]]]], [[[6], [0], [9]], [5, 5, [[6, 0, 9]]]]], [[[[4], [3], [0]], [6, 8, [[0, 3, 4]]]], [[[4, 4]], [1, 1, [[4, 4]]]], [[[9], [0], [1]], [6, 8, [[1, 0, 9]]]], [[[1, 0], [1, 0]], [7, 7, [[0, 0], [1, 1]]]], [[[9]], [1, 1, [[9]]]], [[[8, 6, 5], [0, 7, 5], [2, 0, 8]], [4, 4, [[2, 0, 8], [0, 7, 5], [8, 6, 5]]]], [[[1]], [1, 1, [[1]]]], [[[1, 1], [4, 4], [9, 1]], [8, 6, [[1, 4, 1], [1, 4, 9]]]]], [[[[5], [4]], [6, 8, [[4, 5]]]], [[[1, 1, 0], [1, 1, 0]], [2, 2, [[0, 1, 1], [0, 1, 1]]]], [[[0, 0], [1, 1]], [1, 1, [[0, 0], [1, 1]]]], [[[0, 0, 0], [0, 1, 0], [1, 0, 1]], [1, 1, [[0, 0, 0], [0, 1, 0], [1, 0, 1]]]], [[[9, 3], [4, 8]], [8, 6, [[3, 8], [9, 4]]]], [[[9]], [1, 1, [[9]]]], [[[4]], [1, 1, [[4]]]], [[[6], [8]], [5, 5, [[6, 8]]]]], [[[[4], [5], [0]], [6, 8, [[0, 5, 4]]]], [[[3, 8, 5]], [1, 1, [[3, 8, 5]]]], [[[4], [4]], [5, 5, [[4, 4]]]], [[[6, 7, 5], [1, 9, 6], [6, 4, 6]], [8, 6, [[5, 6, 6], [7, 9, 4], [6, 1, 6]]]], [[[9, 4], [2, 1]], [3, 3, [[1, 2], [4, 9]]]], [[[9, 6, 1], [5, 6, 6], [8, 1, 0]], [3, 3, [[0, 1, 8], [6, 6, 5], [1, 6, 9]]]], [[[2, 9], [0, 0]], [4, 4, [[0, 0], [2, 9]]]], [[[8, 7, 3], [3, 8, 4]], [2, 2, [[3, 7, 8], [4, 8, 3]]]]], [[[[0], [1], [0]], [5, 5, [[0, 1, 0]]]], [[[3, 0, 4]], [1, 1, [[3, 0, 4]]]], [[[6], [5]], [6, 8, [[5, 6]]]], [[[2, 0, 5], [5, 0, 3], [2, 8, 2]], [1, 1, [[2, 0, 5], [5, 0, 3], [2, 8, 2]]]], [[[1, 1], [1, 0]], [3, 3, [[0, 1], [1, 1]]]], [[[0, 0], [0, 1]], [1, 1, [[0, 0], [0, 1]]]], [[[1]], [1, 1, [[1]]]], [[[1, 2, 5], [2, 4, 3]], [1, 1, [[1, 2, 5], [2, 4, 3]]]]]]\nlabels = [\"regression: shape in comparison key\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), 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":"4e94f4d3a8a26b128c3a2edb381a681e68e4bcaf6289bf9fde0decf6d76a8ad3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid):\n    h = len(grid)\n    w = len(grid[0])\n    def src(t, r, c):\n        return {1: (r, c), 2: (r, w - 1 - c), 3: (h - 1 - r, w - 1 - c), 4: (h - 1 - r, c),\n                5: (c, r), 6: (h - 1 - c, r), 7: (h - 1 - c, w - 1 - r), 8: (c, w - 1 - r)}[t]\n    best = None\n    for t in range(1, 9):\n        oh, ow = (w, h) if t >= 5 else (h, w)\n        img = [[grid[src(t, r, c)[0]][src(t, r, c)[1]] for c in range(ow)] for r in range(oh)]\n        key = (oh, ow, [v for row in img for v in row])\n        if best is None or key < best[0]:\n            best = (key, t, img)\n    inverse = {6: 8, 8: 6}.get(best[1], best[1])\n    return [best[1], inverse, best[2]]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[0, 0], [1, 1], [0, 1]], [5, 5, [[0, 1, 0], [0, 1, 1]]]], [[[0], [0], [0]], [5, 5, [[0, 0, 0]]]], [[[6, 3, 0], [0, 8, 5], [1, 5, 5]], [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]]], [[[7]], [1, 1, [[7]]]], [[[8]], [1, 1, [[8]]]], [[[9, 4, 8], [1, 6, 4], [6, 4, 0]], [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]]], [[[0, 1], [5, 1]], [1, 1, [[0, 1], [5, 1]]]], [[[6], [0], [9]], [5, 5, [[6, 0, 9]]]]], [[[[4], [3], [0]], [6, 8, [[0, 3, 4]]]], [[[4, 4]], [1, 1, [[4, 4]]]], [[[9], [0], [1]], [6, 8, [[1, 0, 9]]]], [[[1, 0], [1, 0]], [7, 7, [[0, 0], [1, 1]]]], [[[9]], [1, 1, [[9]]]], [[[8, 6, 5], [0, 7, 5], [2, 0, 8]], [4, 4, [[2, 0, 8], [0, 7, 5], [8, 6, 5]]]], [[[1]], [1, 1, [[1]]]], [[[1, 1], [4, 4], [9, 1]], [8, 6, [[1, 4, 1], [1, 4, 9]]]]], [[[[5], [4]], [6, 8, [[4, 5]]]], [[[1, 1, 0], [1, 1, 0]], [2, 2, [[0, 1, 1], [0, 1, 1]]]], [[[0, 0], [1, 1]], [1, 1, [[0, 0], [1, 1]]]], [[[0, 0, 0], [0, 1, 0], [1, 0, 1]], [1, 1, [[0, 0, 0], [0, 1, 0], [1, 0, 1]]]], [[[9, 3], [4, 8]], [8, 6, [[3, 8], [9, 4]]]], [[[9]], [1, 1, [[9]]]], [[[4]], [1, 1, [[4]]]], [[[6], [8]], [5, 5, [[6, 8]]]]], [[[[4], [5], [0]], [6, 8, [[0, 5, 4]]]], [[[3, 8, 5]], [1, 1, [[3, 8, 5]]]], [[[4], [4]], [5, 5, [[4, 4]]]], [[[6, 7, 5], [1, 9, 6], [6, 4, 6]], [8, 6, [[5, 6, 6], [7, 9, 4], [6, 1, 6]]]], [[[9, 4], [2, 1]], [3, 3, [[1, 2], [4, 9]]]], [[[9, 6, 1], [5, 6, 6], [8, 1, 0]], [3, 3, [[0, 1, 8], [6, 6, 5], [1, 6, 9]]]], [[[2, 9], [0, 0]], [4, 4, [[0, 0], [2, 9]]]], [[[8, 7, 3], [3, 8, 4]], [2, 2, [[3, 7, 8], [4, 8, 3]]]]], [[[[0], [1], [0]], [5, 5, [[0, 1, 0]]]], [[[3, 0, 4]], [1, 1, [[3, 0, 4]]]], [[[6], [5]], [6, 8, [[5, 6]]]], [[[2, 0, 5], [5, 0, 3], [2, 8, 2]], [1, 1, [[2, 0, 5], [5, 0, 3], [2, 8, 2]]]], [[[1, 1], [1, 0]], [3, 3, [[0, 1], [1, 1]]]], [[[0, 0], [0, 1]], [1, 1, [[0, 0], [0, 1]]]], [[[1]], [1, 1, [[1]]]], [[[1, 2, 5], [2, 4, 3]], [1, 1, [[1, 2, 5], [2, 4, 3]]]]]]\nlabels = [\"regression: shape in comparison key\", \"repair trap\", \"combined fault\", \"control\", \"control\", \"boundary\", \"boundary\", \"control\"]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"%s %d\" % (labels[i % len(labels)], i), 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":"A deterministic bounded teaching model with a stipulated contract; it makes no claim of conformance to any published specification. 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-image-orientation-metadata-dedup-canonical-orientation-shape-in-key","generated_at":"2026-09-29T14:49:43.172353+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Camera, phone and scanner images carry an orientation hint separately from the stored pixels; galleries, thumbnailers, editors and upload pipelines must interpret it consistently or photos appear sideways, mirrored or doubly rotated.","repair":"Compare (height, width, pixels) so the shape decides first.","root_cause":"The comparison key drops the height and width.","sha256":"bd4cc7bad97a04375cadedbac240f5d09857ace776cda4b7c2758f30af62b964","title":"Canonical key compares pixels without the shape · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.487,"exit_code":1,"observations":[{"actual":[1,1,[[0,0],[1,1],[0,1]]],"check":"regression: shape in comparison key 0","expected":[5,5,[[0,1,0],[0,1,1]]],"passed":false},{"actual":[1,1,[[0],[0],[0]]],"check":"repair trap 1","expected":[5,5,[[0,0,0]]],"passed":false},{"actual":[2,2,[[0,3,6],[5,8,0],[5,5,1]]],"check":"combined fault 2","expected":[2,2,[[0,3,6],[5,8,0],[5,5,1]]],"passed":true},{"actual":[1,1,[[7]]],"check":"control 3","expected":[1,1,[[7]]],"passed":true},{"actual":[1,1,[[8]]],"check":"control 4","expected":[1,1,[[8]]],"passed":true},{"actual":[3,3,[[0,4,6],[4,6,1],[8,4,9]]],"check":"boundary 5","expected":[3,3,[[0,4,6],[4,6,1],[8,4,9]]],"passed":true},{"actual":[1,1,[[0,1],[5,1]]],"check":"boundary 6","expected":[1,1,[[0,1],[5,1]]],"passed":true},{"actual":[1,1,[[6],[0],[9]]],"check":"control 7","expected":[5,5,[[6,0,9]]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: shape in comparison key 0\", \"actual\": [1, 1, [[0, 0], [1, 1], [0, 1]]], \"expected\": [5, 5, [[0, 1, 0], [0, 1, 1]]], \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": [1, 1, [[0], [0], [0]]], \"expected\": [5, 5, [[0, 0, 0]]], \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]], \"expected\": [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]], \"passed\": true}, {\"check\": \"control 3\", \"actual\": [1, 1, [[7]]], \"expected\": [1, 1, [[7]]], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [1, 1, [[8]]], \"expected\": [1, 1, [[8]]], \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]], \"expected\": [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]], \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": [1, 1, [[0, 1], [5, 1]]], \"expected\": [1, 1, [[0, 1], [5, 1]]], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [1, 1, [[6], [0], [9]]], \"expected\": [5, 5, [[6, 0, 9]]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.591,"exit_code":1,"observations":[{"actual":[1,1,[[0,0],[1,1],[0,1]]],"check":"regression: shape in comparison key 0","expected":[5,5,[[0,1,0],[0,1,1]]],"passed":false},{"actual":[1,1,[[0],[0],[0]]],"check":"repair trap 1","expected":[5,5,[[0,0,0]]],"passed":false},{"actual":[2,2,[[0,3,6],[5,8,0],[5,5,1]]],"check":"combined fault 2","expected":[2,2,[[0,3,6],[5,8,0],[5,5,1]]],"passed":true},{"actual":[1,1,[[7]]],"check":"control 3","expected":[1,1,[[7]]],"passed":true},{"actual":[1,1,[[8]]],"check":"control 4","expected":[1,1,[[8]]],"passed":true},{"actual":[3,3,[[0,4,6],[4,6,1],[8,4,9]]],"check":"boundary 5","expected":[3,3,[[0,4,6],[4,6,1],[8,4,9]]],"passed":true},{"actual":[1,1,[[0,1],[5,1]]],"check":"boundary 6","expected":[1,1,[[0,1],[5,1]]],"passed":true},{"actual":[1,1,[[6],[0],[9]]],"check":"control 7","expected":[5,5,[[6,0,9]]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: shape in comparison key 0\", \"actual\": [1, 1, [[0, 0], [1, 1], [0, 1]]], \"expected\": [5, 5, [[0, 1, 0], [0, 1, 1]]], \"passed\": false}, {\"check\": \"repair trap 1\", \"actual\": [1, 1, [[0], [0], [0]]], \"expected\": [5, 5, [[0, 0, 0]]], \"passed\": false}, {\"check\": \"combined fault 2\", \"actual\": [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]], \"expected\": [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]], \"passed\": true}, {\"check\": \"control 3\", \"actual\": [1, 1, [[7]]], \"expected\": [1, 1, [[7]]], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [1, 1, [[8]]], \"expected\": [1, 1, [[8]]], \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]], \"expected\": [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]], \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": [1, 1, [[0, 1], [5, 1]]], \"expected\": [1, 1, [[0, 1], [5, 1]]], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [1, 1, [[6], [0], [9]]], \"expected\": [5, 5, [[6, 0, 9]]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.952,"exit_code":0,"observations":[{"actual":[5,5,[[0,1,0],[0,1,1]]],"check":"regression: shape in comparison key 0","expected":[5,5,[[0,1,0],[0,1,1]]],"passed":true},{"actual":[5,5,[[0,0,0]]],"check":"repair trap 1","expected":[5,5,[[0,0,0]]],"passed":true},{"actual":[2,2,[[0,3,6],[5,8,0],[5,5,1]]],"check":"combined fault 2","expected":[2,2,[[0,3,6],[5,8,0],[5,5,1]]],"passed":true},{"actual":[1,1,[[7]]],"check":"control 3","expected":[1,1,[[7]]],"passed":true},{"actual":[1,1,[[8]]],"check":"control 4","expected":[1,1,[[8]]],"passed":true},{"actual":[3,3,[[0,4,6],[4,6,1],[8,4,9]]],"check":"boundary 5","expected":[3,3,[[0,4,6],[4,6,1],[8,4,9]]],"passed":true},{"actual":[1,1,[[0,1],[5,1]]],"check":"boundary 6","expected":[1,1,[[0,1],[5,1]]],"passed":true},{"actual":[5,5,[[6,0,9]]],"check":"control 7","expected":[5,5,[[6,0,9]]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: shape in comparison key 0\", \"actual\": [5, 5, [[0, 1, 0], [0, 1, 1]]], \"expected\": [5, 5, [[0, 1, 0], [0, 1, 1]]], \"passed\": true}, {\"check\": \"repair trap 1\", \"actual\": [5, 5, [[0, 0, 0]]], \"expected\": [5, 5, [[0, 0, 0]]], \"passed\": true}, {\"check\": \"combined fault 2\", \"actual\": [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]], \"expected\": [2, 2, [[0, 3, 6], [5, 8, 0], [5, 5, 1]]], \"passed\": true}, {\"check\": \"control 3\", \"actual\": [1, 1, [[7]]], \"expected\": [1, 1, [[7]]], \"passed\": true}, {\"check\": \"control 4\", \"actual\": [1, 1, [[8]]], \"expected\": [1, 1, [[8]]], \"passed\": true}, {\"check\": \"boundary 5\", \"actual\": [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]], \"expected\": [3, 3, [[0, 4, 6], [4, 6, 1], [8, 4, 9]]], \"passed\": true}, {\"check\": \"boundary 6\", \"actual\": [1, 1, [[0, 1], [5, 1]]], \"expected\": [1, 1, [[0, 1], [5, 1]]], \"passed\": true}, {\"check\": \"control 7\", \"actual\": [5, 5, [[6, 0, 9]]], \"expected\": [5, 5, [[6, 0, 9]]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}