{"abstract":"The exact primitive pythagorean triples result violates the stated contract at triple canonical ordering.","category":"Numerics","checks":8,"contract":"Input bound L>=1; return lexicographically sorted [a,b,c] with 0<a<b<c<=L, coprime a,b,c and a^2+b^2=c^2.","evaluation_group":"s3-numerics-primitive-pythagorean-triples","failed_approach":"The partial repair sorted(out,key=lambda z:z[2]) still violates the triple canonical ordering invariant.","family":"s3-numerics-primitive-pythagorean-triples-triple-canonical-ordering","id":"FA-14961","implementations":{"attempt":{"sha256":"7a7f1709309630ed035a6aa1afb7429df5f16d477aa6066caf0585c0577ef8ad","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport itertools\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    L=x;out=[]\n    for m in range(2,math.isqrt(L)+2):\n     for n in range(1,m):\n      if math.gcd(m,n)!=1:continue\n      if (m-n)%2==0:continue\n      a,b,c=m*m-n*n,2*m*n,m*m+n*n\n      a,b=sorted((a,b))\n      if c<=L:out.append([a,b,c])\n    return sorted(out,key=lambda z:z[2])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[(25, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (2, []), (3, []), (4, []), (5, [[3, 4, 5]]), (6, [[3, 4, 5]])], [(26, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (28, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (18, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (19, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (20, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (21, [[3, 4, 5], [5, 12, 13], [8, 15, 17]])], [(27, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (31, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (35, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (36, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (37, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]]), (38, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]])], [(28, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (34, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (52, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29]]), (53, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]]), (54, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]]), (55, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]])], [(29, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (37, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (69, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (70, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (71, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (72, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]])]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"explicit oracle %d\" % 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":"0b15884ccb497d857ccc29e6d4ed10628716856bbbe49e433f58942b0b0bc3c1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport itertools\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    L=x;out=[]\n    for m in range(2,math.isqrt(L)+2):\n     for n in range(1,m):\n      if math.gcd(m,n)!=1:continue\n      if (m-n)%2==0:continue\n      a,b,c=m*m-n*n,2*m*n,m*m+n*n\n      a,b=sorted((a,b))\n      if c<=L:out.append([a,b,c])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[(25, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (2, []), (3, []), (4, []), (5, [[3, 4, 5]]), (6, [[3, 4, 5]])], [(26, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (28, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (18, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (19, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (20, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (21, [[3, 4, 5], [5, 12, 13], [8, 15, 17]])], [(27, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (31, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (35, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (36, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (37, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]]), (38, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]])], [(28, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (34, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (52, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29]]), (53, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]]), (54, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]]), (55, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]])], [(29, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (37, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (69, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (70, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (71, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (72, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]])]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"explicit oracle %d\" % 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":"9932c2f4682ba1085e688c043d29933c3d0dd9ec7c9a99394fc29c51ab7f41eb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport itertools\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    L=x;out=[]\n    for m in range(2,math.isqrt(L)+2):\n     for n in range(1,m):\n      if math.gcd(m,n)!=1:continue\n      if (m-n)%2==0:continue\n      a,b,c=m*m-n*n,2*m*n,m*m+n*n\n      a,b=sorted((a,b))\n      if c<=L:out.append([a,b,c])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[(25, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (2, []), (3, []), (4, []), (5, [[3, 4, 5]]), (6, [[3, 4, 5]])], [(26, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (28, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (18, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (19, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (20, [[3, 4, 5], [5, 12, 13], [8, 15, 17]]), (21, [[3, 4, 5], [5, 12, 13], [8, 15, 17]])], [(27, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (31, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (35, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (36, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (37, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]]), (38, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]])], [(28, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]]), (34, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (52, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29]]), (53, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]]), (54, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]]), (55, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [12, 35, 37], [20, 21, 29], [28, 45, 53]])], [(29, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [20, 21, 29]]), (37, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [12, 35, 37], [20, 21, 29]]), (1, []), (180, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]]), (69, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (70, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (71, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]]), (72, [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [16, 63, 65], [20, 21, 29], [28, 45, 53], [33, 56, 65]])]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"explicit oracle %d\" % 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. Inputs are restricted to the explicit contract; this is not a production algebra library. 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":"s3-numerics-primitive-pythagorean-triples-triple-canonical-ordering","generated_at":"2026-09-29T14:39:22.019499+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Exact discrete arithmetic with observable algorithmic state; no floating point approximation is used.","repair":"Use sorted(out) at the triple canonical ordering step.","root_cause":"The triple canonical ordering step uses out instead of sorted(out).","sha256":"20834538e712c35b7b26e8181fcefaac43e8174cad293442c160a86037f47c28","title":"Primitive pythagorean triples: triple canonical ordering · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.034,"exit_code":1,"observations":[{"actual":[[3,4,5],[5,12,13],[8,15,17],[7,24,25]],"check":"explicit oracle 0","expected":[[3,4,5],[5,12,13],[7,24,25],[8,15,17]],"passed":false},{"actual":[],"check":"explicit oracle 1","expected":[],"passed":true},{"actual":[[3,4,5],[5,12,13],[8,15,17],[7,24,25],[20,21,29],[12,35,37],[9,40,41],[28,45,53],[11,60,61],[33,56,65],[16,63,65],[48,55,73],[13,84,85],[36,77,85],[39,80,89],[65,72,97],[20,99,101],[60,91,109],[15,112,113],[44,117,125],[88,105,137],[17,144,145],[24,143,145],[51,140,149],[85,132,157],[119,120,169],[52,165,173]],"check":"explicit oracle 2","expected":[[3,4,5],[5,12,13],[7,24,25],[8,15,17],[9,40,41],[11,60,61],[12,35,37],[13,84,85],[15,112,113],[16,63,65],[17,144,145],[20,21,29],[20,99,101],[24,143,145],[28,45,53],[33,56,65],[36,77,85],[39,80,89],[44,117,125],[48,55,73],[51,140,149],[52,165,173],[60,91,109],[65,72,97],[85,132,157],[88,105,137],[119,120,169]],"passed":false},{"actual":[],"check":"explicit oracle 3","expected":[],"passed":true},{"actual":[],"check":"explicit oracle 4","expected":[],"passed":true},{"actual":[],"check":"explicit oracle 5","expected":[],"passed":true},{"actual":[[3,4,5]],"check":"explicit oracle 6","expected":[[3,4,5]],"passed":true},{"actual":[[3,4,5]],"check":"explicit oracle 7","expected":[[3,4,5]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit oracle 0\", \"actual\": [[3, 4, 5], [5, 12, 13], [8, 15, 17], [7, 24, 25]], \"expected\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]], \"passed\": false}, {\"check\": \"explicit oracle 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 2\", \"actual\": [[3, 4, 5], [5, 12, 13], [8, 15, 17], [7, 24, 25], [20, 21, 29], [12, 35, 37], [9, 40, 41], [28, 45, 53], [11, 60, 61], [33, 56, 65], [16, 63, 65], [48, 55, 73], [13, 84, 85], [36, 77, 85], [39, 80, 89], [65, 72, 97], [20, 99, 101], [60, 91, 109], [15, 112, 113], [44, 117, 125], [88, 105, 137], [17, 144, 145], [24, 143, 145], [51, 140, 149], [85, 132, 157], [119, 120, 169], [52, 165, 173]], \"expected\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]], \"passed\": false}, {\"check\": \"explicit oracle 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 6\", \"actual\": [[3, 4, 5]], \"expected\": [[3, 4, 5]], \"passed\": true}, {\"check\": \"explicit oracle 7\", \"actual\": [[3, 4, 5]], \"expected\": [[3, 4, 5]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.523,"exit_code":1,"observations":[{"actual":[[3,4,5],[5,12,13],[8,15,17],[7,24,25]],"check":"explicit oracle 0","expected":[[3,4,5],[5,12,13],[7,24,25],[8,15,17]],"passed":false},{"actual":[],"check":"explicit oracle 1","expected":[],"passed":true},{"actual":[[3,4,5],[5,12,13],[8,15,17],[7,24,25],[20,21,29],[9,40,41],[12,35,37],[11,60,61],[28,45,53],[33,56,65],[13,84,85],[16,63,65],[48,55,73],[39,80,89],[15,112,113],[36,77,85],[65,72,97],[17,144,145],[20,99,101],[60,91,109],[51,140,149],[44,117,125],[88,105,137],[85,132,157],[24,143,145],[119,120,169],[52,165,173]],"check":"explicit oracle 2","expected":[[3,4,5],[5,12,13],[7,24,25],[8,15,17],[9,40,41],[11,60,61],[12,35,37],[13,84,85],[15,112,113],[16,63,65],[17,144,145],[20,21,29],[20,99,101],[24,143,145],[28,45,53],[33,56,65],[36,77,85],[39,80,89],[44,117,125],[48,55,73],[51,140,149],[52,165,173],[60,91,109],[65,72,97],[85,132,157],[88,105,137],[119,120,169]],"passed":false},{"actual":[],"check":"explicit oracle 3","expected":[],"passed":true},{"actual":[],"check":"explicit oracle 4","expected":[],"passed":true},{"actual":[],"check":"explicit oracle 5","expected":[],"passed":true},{"actual":[[3,4,5]],"check":"explicit oracle 6","expected":[[3,4,5]],"passed":true},{"actual":[[3,4,5]],"check":"explicit oracle 7","expected":[[3,4,5]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit oracle 0\", \"actual\": [[3, 4, 5], [5, 12, 13], [8, 15, 17], [7, 24, 25]], \"expected\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]], \"passed\": false}, {\"check\": \"explicit oracle 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 2\", \"actual\": [[3, 4, 5], [5, 12, 13], [8, 15, 17], [7, 24, 25], [20, 21, 29], [9, 40, 41], [12, 35, 37], [11, 60, 61], [28, 45, 53], [33, 56, 65], [13, 84, 85], [16, 63, 65], [48, 55, 73], [39, 80, 89], [15, 112, 113], [36, 77, 85], [65, 72, 97], [17, 144, 145], [20, 99, 101], [60, 91, 109], [51, 140, 149], [44, 117, 125], [88, 105, 137], [85, 132, 157], [24, 143, 145], [119, 120, 169], [52, 165, 173]], \"expected\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]], \"passed\": false}, {\"check\": \"explicit oracle 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 6\", \"actual\": [[3, 4, 5]], \"expected\": [[3, 4, 5]], \"passed\": true}, {\"check\": \"explicit oracle 7\", \"actual\": [[3, 4, 5]], \"expected\": [[3, 4, 5]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.351,"exit_code":0,"observations":[{"actual":[[3,4,5],[5,12,13],[7,24,25],[8,15,17]],"check":"explicit oracle 0","expected":[[3,4,5],[5,12,13],[7,24,25],[8,15,17]],"passed":true},{"actual":[],"check":"explicit oracle 1","expected":[],"passed":true},{"actual":[[3,4,5],[5,12,13],[7,24,25],[8,15,17],[9,40,41],[11,60,61],[12,35,37],[13,84,85],[15,112,113],[16,63,65],[17,144,145],[20,21,29],[20,99,101],[24,143,145],[28,45,53],[33,56,65],[36,77,85],[39,80,89],[44,117,125],[48,55,73],[51,140,149],[52,165,173],[60,91,109],[65,72,97],[85,132,157],[88,105,137],[119,120,169]],"check":"explicit oracle 2","expected":[[3,4,5],[5,12,13],[7,24,25],[8,15,17],[9,40,41],[11,60,61],[12,35,37],[13,84,85],[15,112,113],[16,63,65],[17,144,145],[20,21,29],[20,99,101],[24,143,145],[28,45,53],[33,56,65],[36,77,85],[39,80,89],[44,117,125],[48,55,73],[51,140,149],[52,165,173],[60,91,109],[65,72,97],[85,132,157],[88,105,137],[119,120,169]],"passed":true},{"actual":[],"check":"explicit oracle 3","expected":[],"passed":true},{"actual":[],"check":"explicit oracle 4","expected":[],"passed":true},{"actual":[],"check":"explicit oracle 5","expected":[],"passed":true},{"actual":[[3,4,5]],"check":"explicit oracle 6","expected":[[3,4,5]],"passed":true},{"actual":[[3,4,5]],"check":"explicit oracle 7","expected":[[3,4,5]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"explicit oracle 0\", \"actual\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]], \"expected\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17]], \"passed\": true}, {\"check\": \"explicit oracle 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 2\", \"actual\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]], \"expected\": [[3, 4, 5], [5, 12, 13], [7, 24, 25], [8, 15, 17], [9, 40, 41], [11, 60, 61], [12, 35, 37], [13, 84, 85], [15, 112, 113], [16, 63, 65], [17, 144, 145], [20, 21, 29], [20, 99, 101], [24, 143, 145], [28, 45, 53], [33, 56, 65], [36, 77, 85], [39, 80, 89], [44, 117, 125], [48, 55, 73], [51, 140, 149], [52, 165, 173], [60, 91, 109], [65, 72, 97], [85, 132, 157], [88, 105, 137], [119, 120, 169]], \"passed\": true}, {\"check\": \"explicit oracle 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"explicit oracle 6\", \"actual\": [[3, 4, 5]], \"expected\": [[3, 4, 5]], \"passed\": true}, {\"check\": \"explicit oracle 7\", \"actual\": [[3, 4, 5]], \"expected\": [[3, 4, 5]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}