{"abstract":"The fabric width check ignores the hem allowance and the skirt cannot be cut in one piece.","category":"Knitting and sewing pattern grading","checks":8,"contract":"kind full/half/quarter covers fraction 1, 1/2, 1/4 of a circle (else \"error: kind\"). Waist radius r = (waist+ease)/(2*pi*fraction); cut radius = r - sa (seam extends into the waist hole). Hem circumference = 2*pi*fraction*(r + length). Fabric span needed = 2*(cut_r + length + hem) for full and half, (cut_r + length + hem) for quarter. Return floats rounded to 1 decimal: [r, cut_r, hem_circumference, span].","evaluation_group":"w2-knitting_and_sewing_pattern_grading-circle-skirt","failed_approach":"Adding a single hem covers only one side.","family":"w2-knitting_and_sewing_pattern_grading-circle-skirt-fabric-span-hem","id":"FA-97816","implementations":{"attempt":{"sha256":"b43d980aa56c805a86df6e8d61cb6bcaf37a6675a4b34384223a513f70ae851a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(waist, kind, ease, sa, length, hem):\n    FR = {'full': 1, 'half': 0.5, 'quarter': 0.25}\n    if kind not in FR:\n        return 'error: kind'\n    W = waist + ease\n    r = W / (2 * math.pi * FR[kind])\n    cut_r = r - sa\n    hem_c = 2 * math.pi * FR[kind] * (r + length)\n    span = 2 * (cut_r + length) + hem if kind != 'quarter' else cut_r + length + hem\n    return [round(r, 1), round(cut_r, 1), round(hem_c, 1), round(span, 1)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['regression: fabric span hem', [70, 'full', 0, 1, 70, 3], [11.1, 10.1, 509.8, 166.3]],\n  ['repair check: fabric span hem', [92, 'full', 2, 1.5, 70, 3], [15.0, 13.5, 533.8, 172.9]],\n  ['generated control 1', [66, 'quarter', 1, 1, 70, 2], [42.7, 41.7, 177.0, 113.7]],\n  ['generated control 2', [74.5, 'gored', 1, 1.5, 40, 2], 'error: kind'],\n  ['generated control 3', [92, 'full', 2, 1, 70, 2], [15.0, 14.0, 533.8, 171.9]]],\n [['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['regression: fabric span hem', [60, 'half', 0, 1, 40, 3], [19.1, 18.1, 185.7, 122.2]],\n  ['repair check: fabric span hem', [80, 'half', 0, 1, 55, 2], [25.5, 24.5, 252.8, 162.9]],\n  ['generated control 1', [60, 'gored', 1, 1.5, 40, 2], 'error: kind'],\n  ['generated control 2', [74.5, 'gored', 0, 1, 70, 3], 'error: kind'],\n  ['generated control 3', [60, 'quarter', 1, 1, 70, 3], [38.8, 37.8, 171.0, 110.8]]],\n [['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['regression: fabric span hem', [92, 'full', 1, 1, 70, 2], [14.8, 13.8, 532.8, 171.6]],\n  ['repair check: fabric span hem', [66, 'half', 1, 1.5, 55, 2], [21.3, 19.8, 239.8, 153.7]],\n  ['generated control 1', [66, 'gored', 1, 1, 70, 3], 'error: kind'],\n  ['generated control 2', [92, 'quarter', 2, 1, 40, 2], [59.8, 58.8, 156.8, 100.8]],\n  ['generated control 3', [70, 'gored', 0, 1.5, 40, 2], 'error: kind']],\n [['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['regression: fabric span hem', [74.5, 'half', 1, 1.5, 55, 2], [24.0, 22.5, 248.3, 159.1]],\n  ['repair check: fabric span hem', [70, 'full', 0, 1, 55, 2], [11.1, 10.1, 415.6, 134.3]],\n  ['generated control 1', [80, 'quarter', 1, 1, 40, 2], [51.6, 50.6, 143.8, 92.6]],\n  ['generated control 2', [80, 'gored', 0, 1, 70, 2], 'error: kind'],\n  ['generated control 3', [80, 'gored', 0, 1, 55, 2], 'error: kind']],\n [['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['regression: fabric span hem', [70, 'half', 0, 1, 55, 3], [22.3, 21.3, 242.8, 158.6]],\n  ['repair check: fabric span hem', [60, 'half', 1, 1.5, 40, 3], [19.4, 17.9, 186.7, 121.8]],\n  ['generated control 1', [60, 'gored', 1, 1, 40, 3], 'error: kind'],\n  ['generated control 2', [70, 'full', 0, 1.5, 40, 2], [11.1, 9.6, 321.3, 103.3]],\n  ['generated control 3', [60, 'full', 2, 1.5, 55, 2], [9.9, 8.4, 407.6, 130.7]]]]\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":"594101319452d61ddac1caee0d4138f107b0547527625c521d77c3f0d1f04544","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(waist, kind, ease, sa, length, hem):\n    FR = {'full': 1, 'half': 0.5, 'quarter': 0.25}\n    if kind not in FR:\n        return 'error: kind'\n    W = waist + ease\n    r = W / (2 * math.pi * FR[kind])\n    cut_r = r - sa\n    hem_c = 2 * math.pi * FR[kind] * (r + length)\n    span = 2 * (cut_r + length) if kind != 'quarter' else cut_r + length + hem\n    return [round(r, 1), round(cut_r, 1), round(hem_c, 1), round(span, 1)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['regression: fabric span hem', [70, 'full', 0, 1, 70, 3], [11.1, 10.1, 509.8, 166.3]],\n  ['repair check: fabric span hem', [92, 'full', 2, 1.5, 70, 3], [15.0, 13.5, 533.8, 172.9]],\n  ['generated control 1', [66, 'quarter', 1, 1, 70, 2], [42.7, 41.7, 177.0, 113.7]],\n  ['generated control 2', [74.5, 'gored', 1, 1.5, 40, 2], 'error: kind'],\n  ['generated control 3', [92, 'full', 2, 1, 70, 2], [15.0, 14.0, 533.8, 171.9]]],\n [['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['regression: fabric span hem', [60, 'half', 0, 1, 40, 3], [19.1, 18.1, 185.7, 122.2]],\n  ['repair check: fabric span hem', [80, 'half', 0, 1, 55, 2], [25.5, 24.5, 252.8, 162.9]],\n  ['generated control 1', [60, 'gored', 1, 1.5, 40, 2], 'error: kind'],\n  ['generated control 2', [74.5, 'gored', 0, 1, 70, 3], 'error: kind'],\n  ['generated control 3', [60, 'quarter', 1, 1, 70, 3], [38.8, 37.8, 171.0, 110.8]]],\n [['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['regression: fabric span hem', [92, 'full', 1, 1, 70, 2], [14.8, 13.8, 532.8, 171.6]],\n  ['repair check: fabric span hem', [66, 'half', 1, 1.5, 55, 2], [21.3, 19.8, 239.8, 153.7]],\n  ['generated control 1', [66, 'gored', 1, 1, 70, 3], 'error: kind'],\n  ['generated control 2', [92, 'quarter', 2, 1, 40, 2], [59.8, 58.8, 156.8, 100.8]],\n  ['generated control 3', [70, 'gored', 0, 1.5, 40, 2], 'error: kind']],\n [['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['regression: fabric span hem', [74.5, 'half', 1, 1.5, 55, 2], [24.0, 22.5, 248.3, 159.1]],\n  ['repair check: fabric span hem', [70, 'full', 0, 1, 55, 2], [11.1, 10.1, 415.6, 134.3]],\n  ['generated control 1', [80, 'quarter', 1, 1, 40, 2], [51.6, 50.6, 143.8, 92.6]],\n  ['generated control 2', [80, 'gored', 0, 1, 70, 2], 'error: kind'],\n  ['generated control 3', [80, 'gored', 0, 1, 55, 2], 'error: kind']],\n [['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['regression: fabric span hem', [70, 'half', 0, 1, 55, 3], [22.3, 21.3, 242.8, 158.6]],\n  ['repair check: fabric span hem', [60, 'half', 1, 1.5, 40, 3], [19.4, 17.9, 186.7, 121.8]],\n  ['generated control 1', [60, 'gored', 1, 1, 40, 3], 'error: kind'],\n  ['generated control 2', [70, 'full', 0, 1.5, 40, 2], [11.1, 9.6, 321.3, 103.3]],\n  ['generated control 3', [60, 'full', 2, 1.5, 55, 2], [9.9, 8.4, 407.6, 130.7]]]]\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":"3c1f64887b1101d16a96f5c88dd9c956aa7b380a1f3cacf1d3a9a879281c921c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(waist, kind, ease, sa, length, hem):\n    FR = {'full': 1, 'half': 0.5, 'quarter': 0.25}\n    if kind not in FR:\n        return 'error: kind'\n    W = waist + ease\n    r = W / (2 * math.pi * FR[kind])\n    cut_r = r - sa\n    hem_c = 2 * math.pi * FR[kind] * (r + length)\n    span = 2 * (cut_r + length + hem) if kind != 'quarter' else cut_r + length + hem\n    return [round(r, 1), round(cut_r, 1), round(hem_c, 1), round(span, 1)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['regression: fabric span hem', [70, 'full', 0, 1, 70, 3], [11.1, 10.1, 509.8, 166.3]],\n  ['repair check: fabric span hem', [92, 'full', 2, 1.5, 70, 3], [15.0, 13.5, 533.8, 172.9]],\n  ['generated control 1', [66, 'quarter', 1, 1, 70, 2], [42.7, 41.7, 177.0, 113.7]],\n  ['generated control 2', [74.5, 'gored', 1, 1.5, 40, 2], 'error: kind'],\n  ['generated control 3', [92, 'full', 2, 1, 70, 2], [15.0, 14.0, 533.8, 171.9]]],\n [['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['regression: fabric span hem', [60, 'half', 0, 1, 40, 3], [19.1, 18.1, 185.7, 122.2]],\n  ['repair check: fabric span hem', [80, 'half', 0, 1, 55, 2], [25.5, 24.5, 252.8, 162.9]],\n  ['generated control 1', [60, 'gored', 1, 1.5, 40, 2], 'error: kind'],\n  ['generated control 2', [74.5, 'gored', 0, 1, 70, 3], 'error: kind'],\n  ['generated control 3', [60, 'quarter', 1, 1, 70, 3], [38.8, 37.8, 171.0, 110.8]]],\n [['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['regression: fabric span hem', [92, 'full', 1, 1, 70, 2], [14.8, 13.8, 532.8, 171.6]],\n  ['repair check: fabric span hem', [66, 'half', 1, 1.5, 55, 2], [21.3, 19.8, 239.8, 153.7]],\n  ['generated control 1', [66, 'gored', 1, 1, 70, 3], 'error: kind'],\n  ['generated control 2', [92, 'quarter', 2, 1, 40, 2], [59.8, 58.8, 156.8, 100.8]],\n  ['generated control 3', [70, 'gored', 0, 1.5, 40, 2], 'error: kind']],\n [['gored rejected', [70, 'gored', 0, 1, 50, 2], 'error: kind'],\n  ['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['regression: fabric span hem', [74.5, 'half', 1, 1.5, 55, 2], [24.0, 22.5, 248.3, 159.1]],\n  ['repair check: fabric span hem', [70, 'full', 0, 1, 55, 2], [11.1, 10.1, 415.6, 134.3]],\n  ['generated control 1', [80, 'quarter', 1, 1, 40, 2], [51.6, 50.6, 143.8, 92.6]],\n  ['generated control 2', [80, 'gored', 0, 1, 70, 2], 'error: kind'],\n  ['generated control 3', [80, 'gored', 0, 1, 55, 2], 'error: kind']],\n [['full circle', [70, 'full', 2, 1.5, 55, 2], [11.5, 10.0, 417.6, 133.9]],\n  ['half circle', [66, 'half', 0, 1, 40, 3], [21.0, 20.0, 191.7, 126.0]],\n  ['quarter', [80, 'quarter', 1, 1.5, 70, 2], [51.6, 50.1, 191.0, 122.1]],\n  ['regression: fabric span hem', [70, 'half', 0, 1, 55, 3], [22.3, 21.3, 242.8, 158.6]],\n  ['repair check: fabric span hem', [60, 'half', 1, 1.5, 40, 3], [19.4, 17.9, 186.7, 121.8]],\n  ['generated control 1', [60, 'gored', 1, 1, 40, 3], 'error: kind'],\n  ['generated control 2', [70, 'full', 0, 1.5, 40, 2], [11.1, 9.6, 321.3, 103.3]],\n  ['generated control 3', [60, 'full', 2, 1.5, 55, 2], [9.9, 8.4, 407.6, 130.7]]]]\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":"A deterministic toy contract stated in full here; it is a bounded teaching model, not an authoritative reference or standards implementation. 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-knitting_and_sewing_pattern_grading-circle-skirt-fabric-span-hem","generated_at":"2026-09-29T14:52:35.827218+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Circle skirt drafting converts waist size into a radius and checks the fabric width needed.","repair":"Include the hem allowance on both sides of the span.","root_cause":"Span omits the hem allowance on both sides.","sha256":"bed6dcd2aaeeb4ca5914a79ef56a12d41ebc7fb4359a6d0da1d358e0e37af170","title":"Circle skirt drafter: fabric span hem · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.831,"exit_code":1,"observations":[{"actual":[11.5,10.0,417.6,131.9],"check":"full circle","expected":[11.5,10.0,417.6,133.9],"passed":false},{"actual":[21.0,20.0,191.7,123.0],"check":"half circle","expected":[21.0,20.0,191.7,126.0],"passed":false},{"actual":[51.6,50.1,191.0,122.1],"check":"quarter","expected":[51.6,50.1,191.0,122.1],"passed":true},{"actual":[11.1,10.1,509.8,163.3],"check":"regression: fabric span hem","expected":[11.1,10.1,509.8,166.3],"passed":false},{"actual":[15.0,13.5,533.8,169.9],"check":"repair check: fabric span hem","expected":[15.0,13.5,533.8,172.9],"passed":false},{"actual":[42.7,41.7,177.0,113.7],"check":"generated control 1","expected":[42.7,41.7,177.0,113.7],"passed":true},{"actual":"error: kind","check":"generated control 2","expected":"error: kind","passed":true},{"actual":[15.0,14.0,533.8,169.9],"check":"generated control 3","expected":[15.0,14.0,533.8,171.9],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full circle\", \"actual\": [11.5, 10.0, 417.6, 131.9], \"expected\": [11.5, 10.0, 417.6, 133.9], \"passed\": false}, {\"check\": \"half circle\", \"actual\": [21.0, 20.0, 191.7, 123.0], \"expected\": [21.0, 20.0, 191.7, 126.0], \"passed\": false}, {\"check\": \"quarter\", \"actual\": [51.6, 50.1, 191.0, 122.1], \"expected\": [51.6, 50.1, 191.0, 122.1], \"passed\": true}, {\"check\": \"regression: fabric span hem\", \"actual\": [11.1, 10.1, 509.8, 163.3], \"expected\": [11.1, 10.1, 509.8, 166.3], \"passed\": false}, {\"check\": \"repair check: fabric span hem\", \"actual\": [15.0, 13.5, 533.8, 169.9], \"expected\": [15.0, 13.5, 533.8, 172.9], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [42.7, 41.7, 177.0, 113.7], \"expected\": [42.7, 41.7, 177.0, 113.7], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: kind\", \"expected\": \"error: kind\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [15.0, 14.0, 533.8, 169.9], \"expected\": [15.0, 14.0, 533.8, 171.9], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.098,"exit_code":1,"observations":[{"actual":[11.5,10.0,417.6,129.9],"check":"full circle","expected":[11.5,10.0,417.6,133.9],"passed":false},{"actual":[21.0,20.0,191.7,120.0],"check":"half circle","expected":[21.0,20.0,191.7,126.0],"passed":false},{"actual":[51.6,50.1,191.0,122.1],"check":"quarter","expected":[51.6,50.1,191.0,122.1],"passed":true},{"actual":[11.1,10.1,509.8,160.3],"check":"regression: fabric span hem","expected":[11.1,10.1,509.8,166.3],"passed":false},{"actual":[15.0,13.5,533.8,166.9],"check":"repair check: fabric span hem","expected":[15.0,13.5,533.8,172.9],"passed":false},{"actual":[42.7,41.7,177.0,113.7],"check":"generated control 1","expected":[42.7,41.7,177.0,113.7],"passed":true},{"actual":"error: kind","check":"generated control 2","expected":"error: kind","passed":true},{"actual":[15.0,14.0,533.8,167.9],"check":"generated control 3","expected":[15.0,14.0,533.8,171.9],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full circle\", \"actual\": [11.5, 10.0, 417.6, 129.9], \"expected\": [11.5, 10.0, 417.6, 133.9], \"passed\": false}, {\"check\": \"half circle\", \"actual\": [21.0, 20.0, 191.7, 120.0], \"expected\": [21.0, 20.0, 191.7, 126.0], \"passed\": false}, {\"check\": \"quarter\", \"actual\": [51.6, 50.1, 191.0, 122.1], \"expected\": [51.6, 50.1, 191.0, 122.1], \"passed\": true}, {\"check\": \"regression: fabric span hem\", \"actual\": [11.1, 10.1, 509.8, 160.3], \"expected\": [11.1, 10.1, 509.8, 166.3], \"passed\": false}, {\"check\": \"repair check: fabric span hem\", \"actual\": [15.0, 13.5, 533.8, 166.9], \"expected\": [15.0, 13.5, 533.8, 172.9], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [42.7, 41.7, 177.0, 113.7], \"expected\": [42.7, 41.7, 177.0, 113.7], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: kind\", \"expected\": \"error: kind\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [15.0, 14.0, 533.8, 167.9], \"expected\": [15.0, 14.0, 533.8, 171.9], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.216,"exit_code":0,"observations":[{"actual":[11.5,10.0,417.6,133.9],"check":"full circle","expected":[11.5,10.0,417.6,133.9],"passed":true},{"actual":[21.0,20.0,191.7,126.0],"check":"half circle","expected":[21.0,20.0,191.7,126.0],"passed":true},{"actual":[51.6,50.1,191.0,122.1],"check":"quarter","expected":[51.6,50.1,191.0,122.1],"passed":true},{"actual":[11.1,10.1,509.8,166.3],"check":"regression: fabric span hem","expected":[11.1,10.1,509.8,166.3],"passed":true},{"actual":[15.0,13.5,533.8,172.9],"check":"repair check: fabric span hem","expected":[15.0,13.5,533.8,172.9],"passed":true},{"actual":[42.7,41.7,177.0,113.7],"check":"generated control 1","expected":[42.7,41.7,177.0,113.7],"passed":true},{"actual":"error: kind","check":"generated control 2","expected":"error: kind","passed":true},{"actual":[15.0,14.0,533.8,171.9],"check":"generated control 3","expected":[15.0,14.0,533.8,171.9],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"full circle\", \"actual\": [11.5, 10.0, 417.6, 133.9], \"expected\": [11.5, 10.0, 417.6, 133.9], \"passed\": true}, {\"check\": \"half circle\", \"actual\": [21.0, 20.0, 191.7, 126.0], \"expected\": [21.0, 20.0, 191.7, 126.0], \"passed\": true}, {\"check\": \"quarter\", \"actual\": [51.6, 50.1, 191.0, 122.1], \"expected\": [51.6, 50.1, 191.0, 122.1], \"passed\": true}, {\"check\": \"regression: fabric span hem\", \"actual\": [11.1, 10.1, 509.8, 166.3], \"expected\": [11.1, 10.1, 509.8, 166.3], \"passed\": true}, {\"check\": \"repair check: fabric span hem\", \"actual\": [15.0, 13.5, 533.8, 172.9], \"expected\": [15.0, 13.5, 533.8, 172.9], \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": [42.7, 41.7, 177.0, 113.7], \"expected\": [42.7, 41.7, 177.0, 113.7], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: kind\", \"expected\": \"error: kind\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [15.0, 14.0, 533.8, 171.9], \"expected\": [15.0, 14.0, 533.8, 171.9], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}