{"abstract":"Buying the rounded yardage leaves the layout a few cm short.","category":"Knitting and sewing pattern grading","checks":8,"contract":"Pieces [w, h, qty] (cm; w across the fabric). A piece wider than the fabric is rotated if the fabric is not directional and its height fits, else \"error: piece too wide\". Expand qty, sort by (height, width) descending, then shelf-pack: start a new row when the row width plus the piece would exceed the fabric width; each row is as tall as its tallest piece. Return [length_cm, eighths_of_a_yard] with eighths = ceiling(length/91.44*8).","evaluation_group":"w2-knitting_and_sewing_pattern_grading-layout-length","failed_approach":"A 90 cm \"yard\" overstates yardage.","family":"w2-knitting_and_sewing_pattern_grading-layout-length-yardage-rounding","id":"FA-97591","implementations":{"attempt":{"sha256":"c1d12be9dcf997998952eab0a0400aec8e07d5c244ef7944c51e4b9002ba17c5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(pieces, width, directional):\n    items = []\n    for w, h, qty in pieces:\n        for _ in range(qty):\n            if w > width:\n                if directional or h > width:\n                    return 'error: piece too wide'\n                w, h = h, w\n            items.append((h, w))\n    items.sort(reverse=True)\n    length = 0\n    row_w = 0\n    row_h = 0\n    for h, w in items:\n        if row_w + w > width:\n            length += row_h\n            row_w, row_h = 0, 0\n        row_w += w\n        row_h = max(row_h, h)\n    length += row_h\n    return [length, math.ceil(Fraction(length) / 90 * 8)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['regression: yardage rounding', [[[35, 45, 3], [70, 45, 3], [40, 100, 3], [70, 100, 2]], 150, False],\n   [335, 30]],\n  ['repair check: yardage rounding', [[[55, 80, 1], [20, 30, 2]], 140, False], [80, 7]],\n  ['generated control 1', [[[150, 45, 1], [20, 60, 3]], 140, True], 'error: piece too wide'],\n  ['generated control 2', [[[70, 60, 3], [110, 60, 1], [70, 45, 3], [40, 100, 1]], 150, False], [265, 24]],\n  ['generated control 3', [[[35, 100, 1], [55, 80, 1]], 140, True], [100, 9]]],\n [['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['regression: yardage rounding', [[[110, 60, 1], [35, 100, 2], [110, 80, 2], [55, 60, 2]], 140, False],\n   [380, 34]],\n  ['repair check: yardage rounding', [[[40, 60, 1], [70, 45, 3], [40, 45, 3], [40, 80, 1]], 140, False],\n   [215, 19]],\n  ['generated control 1', [[[35, 60, 2], [20, 60, 3], [150, 45, 1], [55, 45, 2]], 140, False], [255, 23]],\n  ['generated control 2', [[[55, 30, 2], [110, 80, 2]], 150, False], [190, 17]],\n  ['generated control 3', [[[150, 30, 1], [55, 45, 1]], 140, False], [150, 14]]],\n [['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['regression: yardage rounding', [[[40, 60, 1], [70, 100, 1], [35, 100, 1], [150, 60, 2]], 150, False],\n   [280, 25]],\n  ['repair check: yardage rounding', [[[150, 45, 1], [20, 80, 1], [110, 100, 2], [110, 80, 2]], 140, False],\n   [510, 45]],\n  ['generated control 1', [[[150, 30, 1], [20, 100, 1]], 110, False], [150, 14]],\n  ['generated control 2', [[[35, 100, 1], [150, 100, 1]], 150, True], [200, 18]],\n  ['generated control 3', [[[40, 100, 1]], 140, False], [100, 9]]],\n [['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['regression: yardage rounding', [[[40, 60, 2]], 150, False], [60, 6]],\n  ['repair check: yardage rounding', [[[40, 80, 3]], 110, False], [160, 14]],\n  ['generated control 1', [[[55, 45, 1]], 110, True], [45, 4]],\n  ['generated control 2', [[[35, 45, 3]], 150, False], [45, 4]],\n  ['generated control 3', [[[70, 100, 2], [110, 45, 1], [150, 80, 1]], 110, True], 'error: piece too wide']],\n [['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['regression: yardage rounding', [[[150, 100, 1], [110, 60, 1], [55, 80, 1], [55, 100, 3]], 150, False],\n   [360, 32]],\n  ['repair check: yardage rounding', [[[110, 80, 1]], 110, False], [80, 7]],\n  ['generated control 1', [[[110, 100, 3], [40, 60, 1], [40, 60, 3], [110, 100, 1]], 150, False], [460, 41]],\n  ['generated control 2', [[[70, 30, 2], [20, 80, 1], [150, 100, 1], [20, 80, 1]], 150, False], [210, 19]],\n  ['generated control 3', [[[35, 45, 1]], 110, False], [45, 4]]]]\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":"cfec83d5997d1038fbe7cdb81b508005ec09d584fbe01be62f8c9e5582b4f88e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(pieces, width, directional):\n    items = []\n    for w, h, qty in pieces:\n        for _ in range(qty):\n            if w > width:\n                if directional or h > width:\n                    return 'error: piece too wide'\n                w, h = h, w\n            items.append((h, w))\n    items.sort(reverse=True)\n    length = 0\n    row_w = 0\n    row_h = 0\n    for h, w in items:\n        if row_w + w > width:\n            length += row_h\n            row_w, row_h = 0, 0\n        row_w += w\n        row_h = max(row_h, h)\n    length += row_h\n    return [length, math.floor(Fraction(length) / Fraction(9144, 100) * 8 + Fraction(1, 2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['regression: yardage rounding', [[[35, 45, 3], [70, 45, 3], [40, 100, 3], [70, 100, 2]], 150, False],\n   [335, 30]],\n  ['repair check: yardage rounding', [[[55, 80, 1], [20, 30, 2]], 140, False], [80, 7]],\n  ['generated control 1', [[[150, 45, 1], [20, 60, 3]], 140, True], 'error: piece too wide'],\n  ['generated control 2', [[[70, 60, 3], [110, 60, 1], [70, 45, 3], [40, 100, 1]], 150, False], [265, 24]],\n  ['generated control 3', [[[35, 100, 1], [55, 80, 1]], 140, True], [100, 9]]],\n [['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['regression: yardage rounding', [[[110, 60, 1], [35, 100, 2], [110, 80, 2], [55, 60, 2]], 140, False],\n   [380, 34]],\n  ['repair check: yardage rounding', [[[40, 60, 1], [70, 45, 3], [40, 45, 3], [40, 80, 1]], 140, False],\n   [215, 19]],\n  ['generated control 1', [[[35, 60, 2], [20, 60, 3], [150, 45, 1], [55, 45, 2]], 140, False], [255, 23]],\n  ['generated control 2', [[[55, 30, 2], [110, 80, 2]], 150, False], [190, 17]],\n  ['generated control 3', [[[150, 30, 1], [55, 45, 1]], 140, False], [150, 14]]],\n [['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['regression: yardage rounding', [[[40, 60, 1], [70, 100, 1], [35, 100, 1], [150, 60, 2]], 150, False],\n   [280, 25]],\n  ['repair check: yardage rounding', [[[150, 45, 1], [20, 80, 1], [110, 100, 2], [110, 80, 2]], 140, False],\n   [510, 45]],\n  ['generated control 1', [[[150, 30, 1], [20, 100, 1]], 110, False], [150, 14]],\n  ['generated control 2', [[[35, 100, 1], [150, 100, 1]], 150, True], [200, 18]],\n  ['generated control 3', [[[40, 100, 1]], 140, False], [100, 9]]],\n [['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['regression: yardage rounding', [[[40, 60, 2]], 150, False], [60, 6]],\n  ['repair check: yardage rounding', [[[40, 80, 3]], 110, False], [160, 14]],\n  ['generated control 1', [[[55, 45, 1]], 110, True], [45, 4]],\n  ['generated control 2', [[[35, 45, 3]], 150, False], [45, 4]],\n  ['generated control 3', [[[70, 100, 2], [110, 45, 1], [150, 80, 1]], 110, True], 'error: piece too wide']],\n [['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['regression: yardage rounding', [[[150, 100, 1], [110, 60, 1], [55, 80, 1], [55, 100, 3]], 150, False],\n   [360, 32]],\n  ['repair check: yardage rounding', [[[110, 80, 1]], 110, False], [80, 7]],\n  ['generated control 1', [[[110, 100, 3], [40, 60, 1], [40, 60, 3], [110, 100, 1]], 150, False], [460, 41]],\n  ['generated control 2', [[[70, 30, 2], [20, 80, 1], [150, 100, 1], [20, 80, 1]], 150, False], [210, 19]],\n  ['generated control 3', [[[35, 45, 1]], 110, False], [45, 4]]]]\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":"52b13465390d20d61c10cb57bedfe8bb28a662ee1178db7f096a2785ecb487a4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(pieces, width, directional):\n    items = []\n    for w, h, qty in pieces:\n        for _ in range(qty):\n            if w > width:\n                if directional or h > width:\n                    return 'error: piece too wide'\n                w, h = h, w\n            items.append((h, w))\n    items.sort(reverse=True)\n    length = 0\n    row_w = 0\n    row_h = 0\n    for h, w in items:\n        if row_w + w > width:\n            length += row_h\n            row_w, row_h = 0, 0\n        row_w += w\n        row_h = max(row_h, h)\n    length += row_h\n    return [length, math.ceil(Fraction(length) / Fraction(9144, 100) * 8)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['regression: yardage rounding', [[[35, 45, 3], [70, 45, 3], [40, 100, 3], [70, 100, 2]], 150, False],\n   [335, 30]],\n  ['repair check: yardage rounding', [[[55, 80, 1], [20, 30, 2]], 140, False], [80, 7]],\n  ['generated control 1', [[[150, 45, 1], [20, 60, 3]], 140, True], 'error: piece too wide'],\n  ['generated control 2', [[[70, 60, 3], [110, 60, 1], [70, 45, 3], [40, 100, 1]], 150, False], [265, 24]],\n  ['generated control 3', [[[35, 100, 1], [55, 80, 1]], 140, True], [100, 9]]],\n [['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['regression: yardage rounding', [[[110, 60, 1], [35, 100, 2], [110, 80, 2], [55, 60, 2]], 140, False],\n   [380, 34]],\n  ['repair check: yardage rounding', [[[40, 60, 1], [70, 45, 3], [40, 45, 3], [40, 80, 1]], 140, False],\n   [215, 19]],\n  ['generated control 1', [[[35, 60, 2], [20, 60, 3], [150, 45, 1], [55, 45, 2]], 140, False], [255, 23]],\n  ['generated control 2', [[[55, 30, 2], [110, 80, 2]], 150, False], [190, 17]],\n  ['generated control 3', [[[150, 30, 1], [55, 45, 1]], 140, False], [150, 14]]],\n [['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['regression: yardage rounding', [[[40, 60, 1], [70, 100, 1], [35, 100, 1], [150, 60, 2]], 150, False],\n   [280, 25]],\n  ['repair check: yardage rounding', [[[150, 45, 1], [20, 80, 1], [110, 100, 2], [110, 80, 2]], 140, False],\n   [510, 45]],\n  ['generated control 1', [[[150, 30, 1], [20, 100, 1]], 110, False], [150, 14]],\n  ['generated control 2', [[[35, 100, 1], [150, 100, 1]], 150, True], [200, 18]],\n  ['generated control 3', [[[40, 100, 1]], 140, False], [100, 9]]],\n [['exact fit row', [[[55, 80, 2], [40, 45, 1]], 150, False], [80, 7]],\n  ['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['regression: yardage rounding', [[[40, 60, 2]], 150, False], [60, 6]],\n  ['repair check: yardage rounding', [[[40, 80, 3]], 110, False], [160, 14]],\n  ['generated control 1', [[[55, 45, 1]], 110, True], [45, 4]],\n  ['generated control 2', [[[35, 45, 3]], 150, False], [45, 4]],\n  ['generated control 3', [[[70, 100, 2], [110, 45, 1], [150, 80, 1]], 110, True], 'error: piece too wide']],\n [['two pieces one row', [[[70, 60, 2]], 140, False], [60, 6]],\n  ['rotate wide piece', [[[150, 60, 1]], 140, False], [150, 14]],\n  ['directional wide piece', [[[150, 60, 1]], 140, True], 'error: piece too wide'],\n  ['regression: yardage rounding', [[[150, 100, 1], [110, 60, 1], [55, 80, 1], [55, 100, 3]], 150, False],\n   [360, 32]],\n  ['repair check: yardage rounding', [[[110, 80, 1]], 110, False], [80, 7]],\n  ['generated control 1', [[[110, 100, 3], [40, 60, 1], [40, 60, 3], [110, 100, 1]], 150, False], [460, 41]],\n  ['generated control 2', [[[70, 30, 2], [20, 80, 1], [150, 100, 1], [20, 80, 1]], 150, False], [210, 19]],\n  ['generated control 3', [[[35, 45, 1]], 110, False], [45, 4]]]]\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-layout-length-yardage-rounding","generated_at":"2026-09-29T14:52:33.688776+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Pattern envelopes and cutting planners estimate yardage from piece layouts and nap direction.","repair":"Round eighths up.","root_cause":"Eighths of a yard are rounded to nearest instead of up.","sha256":"5693ab1d1cd090cf8abb28f35ca0c4feeebe24c4a59a469d3f773bf32aad2496","title":"Cutting layout fabric length: yardage rounding · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.722,"exit_code":1,"observations":[{"actual":[60,6],"check":"two pieces one row","expected":[60,6],"passed":true},{"actual":[150,14],"check":"rotate wide piece","expected":[150,14],"passed":true},{"actual":"error: piece too wide","check":"directional wide piece","expected":"error: piece too wide","passed":true},{"actual":[335,30],"check":"regression: yardage rounding","expected":[335,30],"passed":true},{"actual":[80,8],"check":"repair check: yardage rounding","expected":[80,7],"passed":false},{"actual":"error: piece too wide","check":"generated control 1","expected":"error: piece too wide","passed":true},{"actual":[265,24],"check":"generated control 2","expected":[265,24],"passed":true},{"actual":[100,9],"check":"generated control 3","expected":[100,9],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"two pieces one row\", \"actual\": [60, 6], \"expected\": [60, 6], \"passed\": true}, {\"check\": \"rotate wide piece\", \"actual\": [150, 14], \"expected\": [150, 14], \"passed\": true}, {\"check\": \"directional wide piece\", \"actual\": \"error: piece too wide\", \"expected\": \"error: piece too wide\", \"passed\": true}, {\"check\": \"regression: yardage rounding\", \"actual\": [335, 30], \"expected\": [335, 30], \"passed\": true}, {\"check\": \"repair check: yardage rounding\", \"actual\": [80, 8], \"expected\": [80, 7], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": \"error: piece too wide\", \"expected\": \"error: piece too wide\", \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [265, 24], \"expected\": [265, 24], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [100, 9], \"expected\": [100, 9], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.043,"exit_code":1,"observations":[{"actual":[60,5],"check":"two pieces one row","expected":[60,6],"passed":false},{"actual":[150,13],"check":"rotate wide piece","expected":[150,14],"passed":false},{"actual":"error: piece too wide","check":"directional wide piece","expected":"error: piece too wide","passed":true},{"actual":[335,29],"check":"regression: yardage rounding","expected":[335,30],"passed":false},{"actual":[80,7],"check":"repair check: yardage rounding","expected":[80,7],"passed":true},{"actual":"error: piece too wide","check":"generated control 1","expected":"error: piece too wide","passed":true},{"actual":[265,23],"check":"generated control 2","expected":[265,24],"passed":false},{"actual":[100,9],"check":"generated control 3","expected":[100,9],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"two pieces one row\", \"actual\": [60, 5], \"expected\": [60, 6], \"passed\": false}, {\"check\": \"rotate wide piece\", \"actual\": [150, 13], \"expected\": [150, 14], \"passed\": false}, {\"check\": \"directional wide piece\", \"actual\": \"error: piece too wide\", \"expected\": \"error: piece too wide\", \"passed\": true}, {\"check\": \"regression: yardage rounding\", \"actual\": [335, 29], \"expected\": [335, 30], \"passed\": false}, {\"check\": \"repair check: yardage rounding\", \"actual\": [80, 7], \"expected\": [80, 7], \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": \"error: piece too wide\", \"expected\": \"error: piece too wide\", \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [265, 23], \"expected\": [265, 24], \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": [100, 9], \"expected\": [100, 9], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.623,"exit_code":0,"observations":[{"actual":[60,6],"check":"two pieces one row","expected":[60,6],"passed":true},{"actual":[150,14],"check":"rotate wide piece","expected":[150,14],"passed":true},{"actual":"error: piece too wide","check":"directional wide piece","expected":"error: piece too wide","passed":true},{"actual":[335,30],"check":"regression: yardage rounding","expected":[335,30],"passed":true},{"actual":[80,7],"check":"repair check: yardage rounding","expected":[80,7],"passed":true},{"actual":"error: piece too wide","check":"generated control 1","expected":"error: piece too wide","passed":true},{"actual":[265,24],"check":"generated control 2","expected":[265,24],"passed":true},{"actual":[100,9],"check":"generated control 3","expected":[100,9],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"two pieces one row\", \"actual\": [60, 6], \"expected\": [60, 6], \"passed\": true}, {\"check\": \"rotate wide piece\", \"actual\": [150, 14], \"expected\": [150, 14], \"passed\": true}, {\"check\": \"directional wide piece\", \"actual\": \"error: piece too wide\", \"expected\": \"error: piece too wide\", \"passed\": true}, {\"check\": \"regression: yardage rounding\", \"actual\": [335, 30], \"expected\": [335, 30], \"passed\": true}, {\"check\": \"repair check: yardage rounding\", \"actual\": [80, 7], \"expected\": [80, 7], \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": \"error: piece too wide\", \"expected\": \"error: piece too wide\", \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [265, 24], \"expected\": [265, 24], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [100, 9], \"expected\": [100, 9], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}