{"abstract":"Fold pieces consume half the fabric in the estimate.","category":"Knitting and sewing pattern grading","checks":8,"contract":"Pieces [name, finished_w, finished_h, on_fold, hemmed]. Cut width = w/2 + sa when cut on the fold (no allowance on the fold), else w + 2*sa. Cut height = h + sa (top) + (hem if hemmed else sa). Fabric area counts the unfolded piece (2*cut width for fold pieces) * cut height, summed and half-up to cm^2. A non-positive finished dimension -> \"error: piece\". Return [[name, cut_w, cut_h] floats, area].","evaluation_group":"w2-knitting_and_sewing_pattern_grading-seam-allowance","failed_approach":"Removing allowance at the fold double-counts the fold saving.","family":"w2-knitting_and_sewing_pattern_grading-seam-allowance-unfolded-fabric-area","id":"FA-97561","implementations":{"attempt":{"sha256":"9a34d56a66f0d7a34b6136adcd19422a5bf215ece70b637eeac9332add55a810","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(pieces, sa, hem):\n    S = Fraction(str(sa))\n    H = Fraction(str(hem))\n    out = []\n    area = Fraction(0)\n    for name, w, h, fold, hemmed in pieces:\n        W = Fraction(str(w))\n        Hh = Fraction(str(h))\n        if W <= 0 or Hh <= 0:\n            return 'error: piece'\n        cw = W / 2 + S if fold else W + 2 * S\n        ch = Hh + S + (H if hemmed else S)\n        out.append([name, float(cw), float(ch)])\n        area += (2 * cw - 2 * S if fold else cw) * ch\n    return [out, math.floor(area + Fraction(1, 2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['regression: unfolded fabric area', [[['front0', 25, 15, True, False]], 1, 4],\n   [[['front0', 13.5, 17.0]], 459]],\n  ['repair check: unfolded fabric area',\n   [[['back0', 30.5, 55, False, False], ['facing1', 25, 40, True, False]], 2, 3],\n   [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312]],\n  ['generated control 1',\n   [[['facing0', 0, 15, False, True], ['sleeve1', 30.5, 0, True, False], ['front2', 0, 55, False, True]], 1.6,\n    2.5],\n   'error: piece'],\n  ['generated control 2', [[['yoke0', 0, 55, False, False], ['back1', 50, 55, True, True]], 1.5, 4],\n   'error: piece'],\n  ['generated control 3', [[['front0', 42, 15, False, False], ['sleeve1', 50, 0, False, False]], 1, 3],\n   'error: piece']],\n [['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['regression: unfolded fabric area', [[['yoke0', 20, 15, True, False]], 1.6, 4],\n   [[['yoke0', 11.6, 18.2]], 422]],\n  ['repair check: unfolded fabric area',\n   [[['back0', 30.5, 55, False, True], ['facing1', 42, 62.5, False, False], ['front2', 25, 15, True, False]],\n    1.5, 2.5],\n   [[['back0', 33.5, 59.0], ['facing1', 45.0, 65.5], ['front2', 14.0, 18.0]], 5428]],\n  ['generated control 1', [[['facing0', 42, 40, False, False]], 2, 2.5], [[['facing0', 46.0, 44.0]], 2024]],\n  ['generated control 2',\n   [[['facing0', 30.5, 62.5, False, True], ['facing1', 20, 0, False, False],\n     ['back2', 50, 62.5, False, True]],\n    2, 2.5],\n   'error: piece'],\n  ['generated control 3', [[['sleeve0', 20, 40, False, True]], 1, 2.5], [[['sleeve0', 22.0, 43.5]], 957]]],\n [['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['regression: unfolded fabric area',\n   [[['front0', 50, 62.5, False, False], ['back1', 20, 15, False, True], ['back2', 25, 62.5, False, True],\n     ['facing3', 50, 55, True, False]],\n    1.6, 3],\n   [[['front0', 53.2, 65.7], ['back1', 23.2, 19.6], ['back2', 28.2, 67.1], ['facing3', 26.6, 58.2]], 8938]],\n  ['repair check: unfolded fabric area',\n   [[['yoke0', 20, 55, False, False], ['facing1', 50, 15, True, False], ['facing2', 50, 62.5, True, False]],\n    2, 2.5],\n   [[['yoke0', 24.0, 59.0], ['facing1', 27.0, 19.0], ['facing2', 27.0, 66.5]], 6033]],\n  ['generated control 1',\n   [[['facing0', 0, 62.5, True, True], ['facing1', 50, 40, True, False], ['back2', 30.5, 0, False, True],\n     ['yoke3', 50, 40, True, False]],\n    1, 4],\n   'error: piece'],\n  ['generated control 2', [[['facing0', 0, 15, False, True], ['yoke1', 42, 55, False, False]], 1.5, 2.5],\n   'error: piece'],\n  ['generated control 3', [[['front0', 50, 62.5, False, True], ['facing1', 30.5, 0, False, False]], 1.5, 2.5],\n   'error: piece']],\n [['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['regression: unfolded fabric area',\n   [[['facing0', 20, 15, True, False], ['yoke1', 20, 55, True, True], ['yoke2', 30.5, 62.5, False, False],\n     ['yoke3', 50, 40, True, False]],\n    2, 2.5],\n   [[['facing0', 12.0, 19.0], ['yoke1', 12.0, 59.5], ['yoke2', 34.5, 66.5], ['yoke3', 27.0, 44.0]], 6554]],\n  ['repair check: unfolded fabric area',\n   [[['front0', 30.5, 40, False, False], ['facing1', 25, 55, False, True], ['back2', 25, 15, True, True],\n     ['facing3', 25, 40, True, False]],\n    1.5, 4],\n   [[['front0', 33.5, 43.0], ['facing1', 28.0, 60.5], ['back2', 14.0, 20.5], ['facing3', 14.0, 43.0]], 4913]],\n  ['generated control 1',\n   [[['front0', 20, 0, True, True], ['back1', 42, 40, False, True], ['facing2', 42, 55, False, True],\n     ['front3', 20, 55, False, True]],\n    1, 4],\n   'error: piece'],\n  ['generated control 2',\n   [[['facing0', 50, 0, True, True], ['front1', 42, 40, False, True], ['yoke2', 30.5, 62.5, True, False]], 1,\n    3],\n   'error: piece'],\n  ['generated control 3', [[['facing0', 0, 15, True, True], ['facing1', 42, 0, True, True]], 1.6, 3],\n   'error: piece']],\n [['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['regression: unfolded fabric area',\n   [[['yoke0', 30.5, 15, True, False], ['sleeve1', 50, 15, True, True]], 1, 3],\n   [[['yoke0', 16.25, 17.0], ['sleeve1', 26.0, 19.0]], 1541]],\n  ['repair check: unfolded fabric area', [[['yoke0', 50, 62.5, True, True]], 1.5, 4],\n   [[['yoke0', 26.5, 68.0]], 3604]],\n  ['generated control 1', [[['yoke0', 25, 62.5, True, False], ['back1', 0, 0, True, False]], 1.6, 4],\n   'error: piece'],\n  ['generated control 2',\n   [[['front0', 50, 0, True, False], ['sleeve1', 50, 62.5, False, True], ['facing2', 42, 0, False, False],\n     ['front3', 0, 62.5, False, True]],\n    2, 4],\n   'error: piece'],\n  ['generated control 3', [[['sleeve0', 0, 15, True, False], ['sleeve1', 50, 40, False, True]], 2, 3],\n   'error: piece']]]\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":"dd27c35861a2043ff5206fee2467307e90c55f0957ba45d51395e5da8196f6e7","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(pieces, sa, hem):\n    S = Fraction(str(sa))\n    H = Fraction(str(hem))\n    out = []\n    area = Fraction(0)\n    for name, w, h, fold, hemmed in pieces:\n        W = Fraction(str(w))\n        Hh = Fraction(str(h))\n        if W <= 0 or Hh <= 0:\n            return 'error: piece'\n        cw = W / 2 + S if fold else W + 2 * S\n        ch = Hh + S + (H if hemmed else S)\n        out.append([name, float(cw), float(ch)])\n        area += cw * ch\n    return [out, math.floor(area + Fraction(1, 2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['regression: unfolded fabric area', [[['front0', 25, 15, True, False]], 1, 4],\n   [[['front0', 13.5, 17.0]], 459]],\n  ['repair check: unfolded fabric area',\n   [[['back0', 30.5, 55, False, False], ['facing1', 25, 40, True, False]], 2, 3],\n   [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312]],\n  ['generated control 1',\n   [[['facing0', 0, 15, False, True], ['sleeve1', 30.5, 0, True, False], ['front2', 0, 55, False, True]], 1.6,\n    2.5],\n   'error: piece'],\n  ['generated control 2', [[['yoke0', 0, 55, False, False], ['back1', 50, 55, True, True]], 1.5, 4],\n   'error: piece'],\n  ['generated control 3', [[['front0', 42, 15, False, False], ['sleeve1', 50, 0, False, False]], 1, 3],\n   'error: piece']],\n [['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['regression: unfolded fabric area', [[['yoke0', 20, 15, True, False]], 1.6, 4],\n   [[['yoke0', 11.6, 18.2]], 422]],\n  ['repair check: unfolded fabric area',\n   [[['back0', 30.5, 55, False, True], ['facing1', 42, 62.5, False, False], ['front2', 25, 15, True, False]],\n    1.5, 2.5],\n   [[['back0', 33.5, 59.0], ['facing1', 45.0, 65.5], ['front2', 14.0, 18.0]], 5428]],\n  ['generated control 1', [[['facing0', 42, 40, False, False]], 2, 2.5], [[['facing0', 46.0, 44.0]], 2024]],\n  ['generated control 2',\n   [[['facing0', 30.5, 62.5, False, True], ['facing1', 20, 0, False, False],\n     ['back2', 50, 62.5, False, True]],\n    2, 2.5],\n   'error: piece'],\n  ['generated control 3', [[['sleeve0', 20, 40, False, True]], 1, 2.5], [[['sleeve0', 22.0, 43.5]], 957]]],\n [['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['regression: unfolded fabric area',\n   [[['front0', 50, 62.5, False, False], ['back1', 20, 15, False, True], ['back2', 25, 62.5, False, True],\n     ['facing3', 50, 55, True, False]],\n    1.6, 3],\n   [[['front0', 53.2, 65.7], ['back1', 23.2, 19.6], ['back2', 28.2, 67.1], ['facing3', 26.6, 58.2]], 8938]],\n  ['repair check: unfolded fabric area',\n   [[['yoke0', 20, 55, False, False], ['facing1', 50, 15, True, False], ['facing2', 50, 62.5, True, False]],\n    2, 2.5],\n   [[['yoke0', 24.0, 59.0], ['facing1', 27.0, 19.0], ['facing2', 27.0, 66.5]], 6033]],\n  ['generated control 1',\n   [[['facing0', 0, 62.5, True, True], ['facing1', 50, 40, True, False], ['back2', 30.5, 0, False, True],\n     ['yoke3', 50, 40, True, False]],\n    1, 4],\n   'error: piece'],\n  ['generated control 2', [[['facing0', 0, 15, False, True], ['yoke1', 42, 55, False, False]], 1.5, 2.5],\n   'error: piece'],\n  ['generated control 3', [[['front0', 50, 62.5, False, True], ['facing1', 30.5, 0, False, False]], 1.5, 2.5],\n   'error: piece']],\n [['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['regression: unfolded fabric area',\n   [[['facing0', 20, 15, True, False], ['yoke1', 20, 55, True, True], ['yoke2', 30.5, 62.5, False, False],\n     ['yoke3', 50, 40, True, False]],\n    2, 2.5],\n   [[['facing0', 12.0, 19.0], ['yoke1', 12.0, 59.5], ['yoke2', 34.5, 66.5], ['yoke3', 27.0, 44.0]], 6554]],\n  ['repair check: unfolded fabric area',\n   [[['front0', 30.5, 40, False, False], ['facing1', 25, 55, False, True], ['back2', 25, 15, True, True],\n     ['facing3', 25, 40, True, False]],\n    1.5, 4],\n   [[['front0', 33.5, 43.0], ['facing1', 28.0, 60.5], ['back2', 14.0, 20.5], ['facing3', 14.0, 43.0]], 4913]],\n  ['generated control 1',\n   [[['front0', 20, 0, True, True], ['back1', 42, 40, False, True], ['facing2', 42, 55, False, True],\n     ['front3', 20, 55, False, True]],\n    1, 4],\n   'error: piece'],\n  ['generated control 2',\n   [[['facing0', 50, 0, True, True], ['front1', 42, 40, False, True], ['yoke2', 30.5, 62.5, True, False]], 1,\n    3],\n   'error: piece'],\n  ['generated control 3', [[['facing0', 0, 15, True, True], ['facing1', 42, 0, True, True]], 1.6, 3],\n   'error: piece']],\n [['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['regression: unfolded fabric area',\n   [[['yoke0', 30.5, 15, True, False], ['sleeve1', 50, 15, True, True]], 1, 3],\n   [[['yoke0', 16.25, 17.0], ['sleeve1', 26.0, 19.0]], 1541]],\n  ['repair check: unfolded fabric area', [[['yoke0', 50, 62.5, True, True]], 1.5, 4],\n   [[['yoke0', 26.5, 68.0]], 3604]],\n  ['generated control 1', [[['yoke0', 25, 62.5, True, False], ['back1', 0, 0, True, False]], 1.6, 4],\n   'error: piece'],\n  ['generated control 2',\n   [[['front0', 50, 0, True, False], ['sleeve1', 50, 62.5, False, True], ['facing2', 42, 0, False, False],\n     ['front3', 0, 62.5, False, True]],\n    2, 4],\n   'error: piece'],\n  ['generated control 3', [[['sleeve0', 0, 15, True, False], ['sleeve1', 50, 40, False, True]], 2, 3],\n   'error: piece']]]\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":"2773a917a870936219719a650bb802306db837fe8484a74acdc4bcc4a8cc5e82","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(pieces, sa, hem):\n    S = Fraction(str(sa))\n    H = Fraction(str(hem))\n    out = []\n    area = Fraction(0)\n    for name, w, h, fold, hemmed in pieces:\n        W = Fraction(str(w))\n        Hh = Fraction(str(h))\n        if W <= 0 or Hh <= 0:\n            return 'error: piece'\n        cw = W / 2 + S if fold else W + 2 * S\n        ch = Hh + S + (H if hemmed else S)\n        out.append([name, float(cw), float(ch)])\n        area += (2 * cw if fold else cw) * ch\n    return [out, math.floor(area + Fraction(1, 2))]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['regression: unfolded fabric area', [[['front0', 25, 15, True, False]], 1, 4],\n   [[['front0', 13.5, 17.0]], 459]],\n  ['repair check: unfolded fabric area',\n   [[['back0', 30.5, 55, False, False], ['facing1', 25, 40, True, False]], 2, 3],\n   [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312]],\n  ['generated control 1',\n   [[['facing0', 0, 15, False, True], ['sleeve1', 30.5, 0, True, False], ['front2', 0, 55, False, True]], 1.6,\n    2.5],\n   'error: piece'],\n  ['generated control 2', [[['yoke0', 0, 55, False, False], ['back1', 50, 55, True, True]], 1.5, 4],\n   'error: piece'],\n  ['generated control 3', [[['front0', 42, 15, False, False], ['sleeve1', 50, 0, False, False]], 1, 3],\n   'error: piece']],\n [['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['regression: unfolded fabric area', [[['yoke0', 20, 15, True, False]], 1.6, 4],\n   [[['yoke0', 11.6, 18.2]], 422]],\n  ['repair check: unfolded fabric area',\n   [[['back0', 30.5, 55, False, True], ['facing1', 42, 62.5, False, False], ['front2', 25, 15, True, False]],\n    1.5, 2.5],\n   [[['back0', 33.5, 59.0], ['facing1', 45.0, 65.5], ['front2', 14.0, 18.0]], 5428]],\n  ['generated control 1', [[['facing0', 42, 40, False, False]], 2, 2.5], [[['facing0', 46.0, 44.0]], 2024]],\n  ['generated control 2',\n   [[['facing0', 30.5, 62.5, False, True], ['facing1', 20, 0, False, False],\n     ['back2', 50, 62.5, False, True]],\n    2, 2.5],\n   'error: piece'],\n  ['generated control 3', [[['sleeve0', 20, 40, False, True]], 1, 2.5], [[['sleeve0', 22.0, 43.5]], 957]]],\n [['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['regression: unfolded fabric area',\n   [[['front0', 50, 62.5, False, False], ['back1', 20, 15, False, True], ['back2', 25, 62.5, False, True],\n     ['facing3', 50, 55, True, False]],\n    1.6, 3],\n   [[['front0', 53.2, 65.7], ['back1', 23.2, 19.6], ['back2', 28.2, 67.1], ['facing3', 26.6, 58.2]], 8938]],\n  ['repair check: unfolded fabric area',\n   [[['yoke0', 20, 55, False, False], ['facing1', 50, 15, True, False], ['facing2', 50, 62.5, True, False]],\n    2, 2.5],\n   [[['yoke0', 24.0, 59.0], ['facing1', 27.0, 19.0], ['facing2', 27.0, 66.5]], 6033]],\n  ['generated control 1',\n   [[['facing0', 0, 62.5, True, True], ['facing1', 50, 40, True, False], ['back2', 30.5, 0, False, True],\n     ['yoke3', 50, 40, True, False]],\n    1, 4],\n   'error: piece'],\n  ['generated control 2', [[['facing0', 0, 15, False, True], ['yoke1', 42, 55, False, False]], 1.5, 2.5],\n   'error: piece'],\n  ['generated control 3', [[['front0', 50, 62.5, False, True], ['facing1', 30.5, 0, False, False]], 1.5, 2.5],\n   'error: piece']],\n [['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['regression: unfolded fabric area',\n   [[['facing0', 20, 15, True, False], ['yoke1', 20, 55, True, True], ['yoke2', 30.5, 62.5, False, False],\n     ['yoke3', 50, 40, True, False]],\n    2, 2.5],\n   [[['facing0', 12.0, 19.0], ['yoke1', 12.0, 59.5], ['yoke2', 34.5, 66.5], ['yoke3', 27.0, 44.0]], 6554]],\n  ['repair check: unfolded fabric area',\n   [[['front0', 30.5, 40, False, False], ['facing1', 25, 55, False, True], ['back2', 25, 15, True, True],\n     ['facing3', 25, 40, True, False]],\n    1.5, 4],\n   [[['front0', 33.5, 43.0], ['facing1', 28.0, 60.5], ['back2', 14.0, 20.5], ['facing3', 14.0, 43.0]], 4913]],\n  ['generated control 1',\n   [[['front0', 20, 0, True, True], ['back1', 42, 40, False, True], ['facing2', 42, 55, False, True],\n     ['front3', 20, 55, False, True]],\n    1, 4],\n   'error: piece'],\n  ['generated control 2',\n   [[['facing0', 50, 0, True, True], ['front1', 42, 40, False, True], ['yoke2', 30.5, 62.5, True, False]], 1,\n    3],\n   'error: piece'],\n  ['generated control 3', [[['facing0', 0, 15, True, True], ['facing1', 42, 0, True, True]], 1.6, 3],\n   'error: piece']],\n [['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],\n  ['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],\n  ['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],\n  ['regression: unfolded fabric area',\n   [[['yoke0', 30.5, 15, True, False], ['sleeve1', 50, 15, True, True]], 1, 3],\n   [[['yoke0', 16.25, 17.0], ['sleeve1', 26.0, 19.0]], 1541]],\n  ['repair check: unfolded fabric area', [[['yoke0', 50, 62.5, True, True]], 1.5, 4],\n   [[['yoke0', 26.5, 68.0]], 3604]],\n  ['generated control 1', [[['yoke0', 25, 62.5, True, False], ['back1', 0, 0, True, False]], 1.6, 4],\n   'error: piece'],\n  ['generated control 2',\n   [[['front0', 50, 0, True, False], ['sleeve1', 50, 62.5, False, True], ['facing2', 42, 0, False, False],\n     ['front3', 0, 62.5, False, True]],\n    2, 4],\n   'error: piece'],\n  ['generated control 3', [[['sleeve0', 0, 15, True, False], ['sleeve1', 50, 40, False, True]], 2, 3],\n   'error: piece']]]\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-seam-allowance-unfolded-fabric-area","generated_at":"2026-09-29T14:52:33.423582+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Pattern drafting software adds seam and hem allowances and handles place-on-fold pieces.","repair":"Count fold pieces at twice the cut width.","root_cause":"The fabric area uses the folded half-piece.","sha256":"28b6a82e5546125192293f1b268efbfe81263b9a6730482dafa0c3253899a399","title":"Seam and hem allowance cutter: unfolded fabric area · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.576,"exit_code":1,"observations":[{"actual":[[["back",43.0,64.5]],2774],"check":"plain piece","expected":[[["back",43.0,64.5]],2774],"passed":true},{"actual":[[["front",22.5,58.0]],2436],"check":"fold piece","expected":[[["front",22.5,58.0]],2610],"passed":false},{"actual":"error: piece","check":"zero width","expected":"error: piece","passed":true},{"actual":[[["front0",13.5,17.0]],425],"check":"regression: unfolded fabric area","expected":[[["front0",13.5,17.0]],459],"passed":false},{"actual":[[["back0",34.5,59.0],["facing1",14.5,44.0]],3136],"check":"repair check: unfolded fabric area","expected":[[["back0",34.5,59.0],["facing1",14.5,44.0]],3312],"passed":false},{"actual":"error: piece","check":"generated control 1","expected":"error: piece","passed":true},{"actual":"error: piece","check":"generated control 2","expected":"error: piece","passed":true},{"actual":"error: piece","check":"generated control 3","expected":"error: piece","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"plain piece\", \"actual\": [[[\"back\", 43.0, 64.5]], 2774], \"expected\": [[[\"back\", 43.0, 64.5]], 2774], \"passed\": true}, {\"check\": \"fold piece\", \"actual\": [[[\"front\", 22.5, 58.0]], 2436], \"expected\": [[[\"front\", 22.5, 58.0]], 2610], \"passed\": false}, {\"check\": \"zero width\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"regression: unfolded fabric area\", \"actual\": [[[\"front0\", 13.5, 17.0]], 425], \"expected\": [[[\"front0\", 13.5, 17.0]], 459], \"passed\": false}, {\"check\": \"repair check: unfolded fabric area\", \"actual\": [[[\"back0\", 34.5, 59.0], [\"facing1\", 14.5, 44.0]], 3136], \"expected\": [[[\"back0\", 34.5, 59.0], [\"facing1\", 14.5, 44.0]], 3312], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.232,"exit_code":1,"observations":[{"actual":[[["back",43.0,64.5]],2774],"check":"plain piece","expected":[[["back",43.0,64.5]],2774],"passed":true},{"actual":[[["front",22.5,58.0]],1305],"check":"fold piece","expected":[[["front",22.5,58.0]],2610],"passed":false},{"actual":"error: piece","check":"zero width","expected":"error: piece","passed":true},{"actual":[[["front0",13.5,17.0]],230],"check":"regression: unfolded fabric area","expected":[[["front0",13.5,17.0]],459],"passed":false},{"actual":[[["back0",34.5,59.0],["facing1",14.5,44.0]],2674],"check":"repair check: unfolded fabric area","expected":[[["back0",34.5,59.0],["facing1",14.5,44.0]],3312],"passed":false},{"actual":"error: piece","check":"generated control 1","expected":"error: piece","passed":true},{"actual":"error: piece","check":"generated control 2","expected":"error: piece","passed":true},{"actual":"error: piece","check":"generated control 3","expected":"error: piece","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"plain piece\", \"actual\": [[[\"back\", 43.0, 64.5]], 2774], \"expected\": [[[\"back\", 43.0, 64.5]], 2774], \"passed\": true}, {\"check\": \"fold piece\", \"actual\": [[[\"front\", 22.5, 58.0]], 1305], \"expected\": [[[\"front\", 22.5, 58.0]], 2610], \"passed\": false}, {\"check\": \"zero width\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"regression: unfolded fabric area\", \"actual\": [[[\"front0\", 13.5, 17.0]], 230], \"expected\": [[[\"front0\", 13.5, 17.0]], 459], \"passed\": false}, {\"check\": \"repair check: unfolded fabric area\", \"actual\": [[[\"back0\", 34.5, 59.0], [\"facing1\", 14.5, 44.0]], 2674], \"expected\": [[[\"back0\", 34.5, 59.0], [\"facing1\", 14.5, 44.0]], 3312], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.542,"exit_code":0,"observations":[{"actual":[[["back",43.0,64.5]],2774],"check":"plain piece","expected":[[["back",43.0,64.5]],2774],"passed":true},{"actual":[[["front",22.5,58.0]],2610],"check":"fold piece","expected":[[["front",22.5,58.0]],2610],"passed":true},{"actual":"error: piece","check":"zero width","expected":"error: piece","passed":true},{"actual":[[["front0",13.5,17.0]],459],"check":"regression: unfolded fabric area","expected":[[["front0",13.5,17.0]],459],"passed":true},{"actual":[[["back0",34.5,59.0],["facing1",14.5,44.0]],3312],"check":"repair check: unfolded fabric area","expected":[[["back0",34.5,59.0],["facing1",14.5,44.0]],3312],"passed":true},{"actual":"error: piece","check":"generated control 1","expected":"error: piece","passed":true},{"actual":"error: piece","check":"generated control 2","expected":"error: piece","passed":true},{"actual":"error: piece","check":"generated control 3","expected":"error: piece","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"plain piece\", \"actual\": [[[\"back\", 43.0, 64.5]], 2774], \"expected\": [[[\"back\", 43.0, 64.5]], 2774], \"passed\": true}, {\"check\": \"fold piece\", \"actual\": [[[\"front\", 22.5, 58.0]], 2610], \"expected\": [[[\"front\", 22.5, 58.0]], 2610], \"passed\": true}, {\"check\": \"zero width\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"regression: unfolded fabric area\", \"actual\": [[[\"front0\", 13.5, 17.0]], 459], \"expected\": [[[\"front0\", 13.5, 17.0]], 459], \"passed\": true}, {\"check\": \"repair check: unfolded fabric area\", \"actual\": [[[\"back0\", 34.5, 59.0], [\"facing1\", 14.5, 44.0]], 3312], \"expected\": [[[\"back0\", 34.5, 59.0], [\"facing1\", 14.5, 44.0]], 3312], \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": \"error: piece\", \"expected\": \"error: piece\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}