FA-97561 / Knitting and sewing pattern grading / Open access
Seam and hem allowance cutter: unfolded fabric area · case 01
Fold pieces consume half the fabric in the estimate.
ROOT CAUSE
The fabric area uses the folded half-piece.
VERIFIED REPAIR
Count fold pieces at twice the cut width.
Unsuccessful approach: Removing allowance at the fold double-counts the fold saving.
Case 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].
Why this case matters
Pattern drafting software adds seam and hem allowances and handles place-on-fold pieces.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(pieces, sa, hem):
S = Fraction(str(sa))
H = Fraction(str(hem))
out = []
area = Fraction(0)
for name, w, h, fold, hemmed in pieces:
W = Fraction(str(w))
Hh = Fraction(str(h))
if W <= 0 or Hh <= 0:
return 'error: piece'
cw = W / 2 + S if fold else W + 2 * S
ch = Hh + S + (H if hemmed else S)
out.append([name, float(cw), float(ch)])
area += cw * ch
return [out, math.floor(area + Fraction(1, 2))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['regression: unfolded fabric area', [[['front0', 25, 15, True, False]], 1, 4],
[[['front0', 13.5, 17.0]], 459]],
['repair check: unfolded fabric area',
[[['back0', 30.5, 55, False, False], ['facing1', 25, 40, True, False]], 2, 3],
[[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312]],
['generated control 1',
[[['facing0', 0, 15, False, True], ['sleeve1', 30.5, 0, True, False], ['front2', 0, 55, False, True]], 1.6,
2.5],
'error: piece'],
['generated control 2', [[['yoke0', 0, 55, False, False], ['back1', 50, 55, True, True]], 1.5, 4],
'error: piece'],
['generated control 3', [[['front0', 42, 15, False, False], ['sleeve1', 50, 0, False, False]], 1, 3],
'error: piece']],
[['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['regression: unfolded fabric area', [[['yoke0', 20, 15, True, False]], 1.6, 4],
[[['yoke0', 11.6, 18.2]], 422]],
['repair check: unfolded fabric area',
[[['back0', 30.5, 55, False, True], ['facing1', 42, 62.5, False, False], ['front2', 25, 15, True, False]],
1.5, 2.5],
[[['back0', 33.5, 59.0], ['facing1', 45.0, 65.5], ['front2', 14.0, 18.0]], 5428]],
['generated control 1', [[['facing0', 42, 40, False, False]], 2, 2.5], [[['facing0', 46.0, 44.0]], 2024]],
['generated control 2',
[[['facing0', 30.5, 62.5, False, True], ['facing1', 20, 0, False, False],
['back2', 50, 62.5, False, True]],
2, 2.5],
'error: piece'],
['generated control 3', [[['sleeve0', 20, 40, False, True]], 1, 2.5], [[['sleeve0', 22.0, 43.5]], 957]]],
[['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['regression: unfolded fabric area',
[[['front0', 50, 62.5, False, False], ['back1', 20, 15, False, True], ['back2', 25, 62.5, False, True],
['facing3', 50, 55, True, False]],
1.6, 3],
[[['front0', 53.2, 65.7], ['back1', 23.2, 19.6], ['back2', 28.2, 67.1], ['facing3', 26.6, 58.2]], 8938]],
['repair check: unfolded fabric area',
[[['yoke0', 20, 55, False, False], ['facing1', 50, 15, True, False], ['facing2', 50, 62.5, True, False]],
2, 2.5],
[[['yoke0', 24.0, 59.0], ['facing1', 27.0, 19.0], ['facing2', 27.0, 66.5]], 6033]],
['generated control 1',
[[['facing0', 0, 62.5, True, True], ['facing1', 50, 40, True, False], ['back2', 30.5, 0, False, True],
['yoke3', 50, 40, True, False]],
1, 4],
'error: piece'],
['generated control 2', [[['facing0', 0, 15, False, True], ['yoke1', 42, 55, False, False]], 1.5, 2.5],
'error: piece'],
['generated control 3', [[['front0', 50, 62.5, False, True], ['facing1', 30.5, 0, False, False]], 1.5, 2.5],
'error: piece']],
[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['regression: unfolded fabric area',
[[['facing0', 20, 15, True, False], ['yoke1', 20, 55, True, True], ['yoke2', 30.5, 62.5, False, False],
['yoke3', 50, 40, True, False]],
2, 2.5],
[[['facing0', 12.0, 19.0], ['yoke1', 12.0, 59.5], ['yoke2', 34.5, 66.5], ['yoke3', 27.0, 44.0]], 6554]],
['repair check: unfolded fabric area',
[[['front0', 30.5, 40, False, False], ['facing1', 25, 55, False, True], ['back2', 25, 15, True, True],
['facing3', 25, 40, True, False]],
1.5, 4],
[[['front0', 33.5, 43.0], ['facing1', 28.0, 60.5], ['back2', 14.0, 20.5], ['facing3', 14.0, 43.0]], 4913]],
['generated control 1',
[[['front0', 20, 0, True, True], ['back1', 42, 40, False, True], ['facing2', 42, 55, False, True],
['front3', 20, 55, False, True]],
1, 4],
'error: piece'],
['generated control 2',
[[['facing0', 50, 0, True, True], ['front1', 42, 40, False, True], ['yoke2', 30.5, 62.5, True, False]], 1,
3],
'error: piece'],
['generated control 3', [[['facing0', 0, 15, True, True], ['facing1', 42, 0, True, True]], 1.6, 3],
'error: piece']],
[['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['regression: unfolded fabric area',
[[['yoke0', 30.5, 15, True, False], ['sleeve1', 50, 15, True, True]], 1, 3],
[[['yoke0', 16.25, 17.0], ['sleeve1', 26.0, 19.0]], 1541]],
['repair check: unfolded fabric area', [[['yoke0', 50, 62.5, True, True]], 1.5, 4],
[[['yoke0', 26.5, 68.0]], 3604]],
['generated control 1', [[['yoke0', 25, 62.5, True, False], ['back1', 0, 0, True, False]], 1.6, 4],
'error: piece'],
['generated control 2',
[[['front0', 50, 0, True, False], ['sleeve1', 50, 62.5, False, True], ['facing2', 42, 0, False, False],
['front3', 0, 62.5, False, True]],
2, 4],
'error: piece'],
['generated control 3', [[['sleeve0', 0, 15, True, False], ['sleeve1', 50, 40, False, True]], 2, 3],
'error: piece']]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| plain piece | [[['back', 43.0, 64.5]], 2774] | [[['back', 43.0, 64.5]], 2774] | Passed |
| fold piece | [[['front', 22.5, 58.0]], 1305] | [[['front', 22.5, 58.0]], 2610] | Failed |
| zero width | error: piece | error: piece | Passed |
| regression: unfolded fabric area | [[['front0', 13.5, 17.0]], 230] | [[['front0', 13.5, 17.0]], 459] | Failed |
| repair check: unfolded fabric area | [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 2674] | [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312] | Failed |
| generated control 1 | error: piece | error: piece | Passed |
| generated control 2 | error: piece | error: piece | Passed |
| generated control 3 | error: piece | error: piece | Passed |
SHA-256 / dd27c35861a2043ff5206fee2467307e90c55f0957ba45d51395e5da8196f6e7
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(pieces, sa, hem):
S = Fraction(str(sa))
H = Fraction(str(hem))
out = []
area = Fraction(0)
for name, w, h, fold, hemmed in pieces:
W = Fraction(str(w))
Hh = Fraction(str(h))
if W <= 0 or Hh <= 0:
return 'error: piece'
cw = W / 2 + S if fold else W + 2 * S
ch = Hh + S + (H if hemmed else S)
out.append([name, float(cw), float(ch)])
area += (2 * cw - 2 * S if fold else cw) * ch
return [out, math.floor(area + Fraction(1, 2))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['regression: unfolded fabric area', [[['front0', 25, 15, True, False]], 1, 4],
[[['front0', 13.5, 17.0]], 459]],
['repair check: unfolded fabric area',
[[['back0', 30.5, 55, False, False], ['facing1', 25, 40, True, False]], 2, 3],
[[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312]],
['generated control 1',
[[['facing0', 0, 15, False, True], ['sleeve1', 30.5, 0, True, False], ['front2', 0, 55, False, True]], 1.6,
2.5],
'error: piece'],
['generated control 2', [[['yoke0', 0, 55, False, False], ['back1', 50, 55, True, True]], 1.5, 4],
'error: piece'],
['generated control 3', [[['front0', 42, 15, False, False], ['sleeve1', 50, 0, False, False]], 1, 3],
'error: piece']],
[['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['regression: unfolded fabric area', [[['yoke0', 20, 15, True, False]], 1.6, 4],
[[['yoke0', 11.6, 18.2]], 422]],
['repair check: unfolded fabric area',
[[['back0', 30.5, 55, False, True], ['facing1', 42, 62.5, False, False], ['front2', 25, 15, True, False]],
1.5, 2.5],
[[['back0', 33.5, 59.0], ['facing1', 45.0, 65.5], ['front2', 14.0, 18.0]], 5428]],
['generated control 1', [[['facing0', 42, 40, False, False]], 2, 2.5], [[['facing0', 46.0, 44.0]], 2024]],
['generated control 2',
[[['facing0', 30.5, 62.5, False, True], ['facing1', 20, 0, False, False],
['back2', 50, 62.5, False, True]],
2, 2.5],
'error: piece'],
['generated control 3', [[['sleeve0', 20, 40, False, True]], 1, 2.5], [[['sleeve0', 22.0, 43.5]], 957]]],
[['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['regression: unfolded fabric area',
[[['front0', 50, 62.5, False, False], ['back1', 20, 15, False, True], ['back2', 25, 62.5, False, True],
['facing3', 50, 55, True, False]],
1.6, 3],
[[['front0', 53.2, 65.7], ['back1', 23.2, 19.6], ['back2', 28.2, 67.1], ['facing3', 26.6, 58.2]], 8938]],
['repair check: unfolded fabric area',
[[['yoke0', 20, 55, False, False], ['facing1', 50, 15, True, False], ['facing2', 50, 62.5, True, False]],
2, 2.5],
[[['yoke0', 24.0, 59.0], ['facing1', 27.0, 19.0], ['facing2', 27.0, 66.5]], 6033]],
['generated control 1',
[[['facing0', 0, 62.5, True, True], ['facing1', 50, 40, True, False], ['back2', 30.5, 0, False, True],
['yoke3', 50, 40, True, False]],
1, 4],
'error: piece'],
['generated control 2', [[['facing0', 0, 15, False, True], ['yoke1', 42, 55, False, False]], 1.5, 2.5],
'error: piece'],
['generated control 3', [[['front0', 50, 62.5, False, True], ['facing1', 30.5, 0, False, False]], 1.5, 2.5],
'error: piece']],
[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['regression: unfolded fabric area',
[[['facing0', 20, 15, True, False], ['yoke1', 20, 55, True, True], ['yoke2', 30.5, 62.5, False, False],
['yoke3', 50, 40, True, False]],
2, 2.5],
[[['facing0', 12.0, 19.0], ['yoke1', 12.0, 59.5], ['yoke2', 34.5, 66.5], ['yoke3', 27.0, 44.0]], 6554]],
['repair check: unfolded fabric area',
[[['front0', 30.5, 40, False, False], ['facing1', 25, 55, False, True], ['back2', 25, 15, True, True],
['facing3', 25, 40, True, False]],
1.5, 4],
[[['front0', 33.5, 43.0], ['facing1', 28.0, 60.5], ['back2', 14.0, 20.5], ['facing3', 14.0, 43.0]], 4913]],
['generated control 1',
[[['front0', 20, 0, True, True], ['back1', 42, 40, False, True], ['facing2', 42, 55, False, True],
['front3', 20, 55, False, True]],
1, 4],
'error: piece'],
['generated control 2',
[[['facing0', 50, 0, True, True], ['front1', 42, 40, False, True], ['yoke2', 30.5, 62.5, True, False]], 1,
3],
'error: piece'],
['generated control 3', [[['facing0', 0, 15, True, True], ['facing1', 42, 0, True, True]], 1.6, 3],
'error: piece']],
[['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['regression: unfolded fabric area',
[[['yoke0', 30.5, 15, True, False], ['sleeve1', 50, 15, True, True]], 1, 3],
[[['yoke0', 16.25, 17.0], ['sleeve1', 26.0, 19.0]], 1541]],
['repair check: unfolded fabric area', [[['yoke0', 50, 62.5, True, True]], 1.5, 4],
[[['yoke0', 26.5, 68.0]], 3604]],
['generated control 1', [[['yoke0', 25, 62.5, True, False], ['back1', 0, 0, True, False]], 1.6, 4],
'error: piece'],
['generated control 2',
[[['front0', 50, 0, True, False], ['sleeve1', 50, 62.5, False, True], ['facing2', 42, 0, False, False],
['front3', 0, 62.5, False, True]],
2, 4],
'error: piece'],
['generated control 3', [[['sleeve0', 0, 15, True, False], ['sleeve1', 50, 40, False, True]], 2, 3],
'error: piece']]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| plain piece | [[['back', 43.0, 64.5]], 2774] | [[['back', 43.0, 64.5]], 2774] | Passed |
| fold piece | [[['front', 22.5, 58.0]], 2436] | [[['front', 22.5, 58.0]], 2610] | Failed |
| zero width | error: piece | error: piece | Passed |
| regression: unfolded fabric area | [[['front0', 13.5, 17.0]], 425] | [[['front0', 13.5, 17.0]], 459] | Failed |
| repair check: unfolded fabric area | [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3136] | [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312] | Failed |
| generated control 1 | error: piece | error: piece | Passed |
| generated control 2 | error: piece | error: piece | Passed |
| generated control 3 | error: piece | error: piece | Passed |
SHA-256 / 9a34d56a66f0d7a34b6136adcd19422a5bf215ece70b637eeac9332add55a810
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(pieces, sa, hem):
S = Fraction(str(sa))
H = Fraction(str(hem))
out = []
area = Fraction(0)
for name, w, h, fold, hemmed in pieces:
W = Fraction(str(w))
Hh = Fraction(str(h))
if W <= 0 or Hh <= 0:
return 'error: piece'
cw = W / 2 + S if fold else W + 2 * S
ch = Hh + S + (H if hemmed else S)
out.append([name, float(cw), float(ch)])
area += (2 * cw if fold else cw) * ch
return [out, math.floor(area + Fraction(1, 2))]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['regression: unfolded fabric area', [[['front0', 25, 15, True, False]], 1, 4],
[[['front0', 13.5, 17.0]], 459]],
['repair check: unfolded fabric area',
[[['back0', 30.5, 55, False, False], ['facing1', 25, 40, True, False]], 2, 3],
[[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312]],
['generated control 1',
[[['facing0', 0, 15, False, True], ['sleeve1', 30.5, 0, True, False], ['front2', 0, 55, False, True]], 1.6,
2.5],
'error: piece'],
['generated control 2', [[['yoke0', 0, 55, False, False], ['back1', 50, 55, True, True]], 1.5, 4],
'error: piece'],
['generated control 3', [[['front0', 42, 15, False, False], ['sleeve1', 50, 0, False, False]], 1, 3],
'error: piece']],
[['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['regression: unfolded fabric area', [[['yoke0', 20, 15, True, False]], 1.6, 4],
[[['yoke0', 11.6, 18.2]], 422]],
['repair check: unfolded fabric area',
[[['back0', 30.5, 55, False, True], ['facing1', 42, 62.5, False, False], ['front2', 25, 15, True, False]],
1.5, 2.5],
[[['back0', 33.5, 59.0], ['facing1', 45.0, 65.5], ['front2', 14.0, 18.0]], 5428]],
['generated control 1', [[['facing0', 42, 40, False, False]], 2, 2.5], [[['facing0', 46.0, 44.0]], 2024]],
['generated control 2',
[[['facing0', 30.5, 62.5, False, True], ['facing1', 20, 0, False, False],
['back2', 50, 62.5, False, True]],
2, 2.5],
'error: piece'],
['generated control 3', [[['sleeve0', 20, 40, False, True]], 1, 2.5], [[['sleeve0', 22.0, 43.5]], 957]]],
[['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['regression: unfolded fabric area',
[[['front0', 50, 62.5, False, False], ['back1', 20, 15, False, True], ['back2', 25, 62.5, False, True],
['facing3', 50, 55, True, False]],
1.6, 3],
[[['front0', 53.2, 65.7], ['back1', 23.2, 19.6], ['back2', 28.2, 67.1], ['facing3', 26.6, 58.2]], 8938]],
['repair check: unfolded fabric area',
[[['yoke0', 20, 55, False, False], ['facing1', 50, 15, True, False], ['facing2', 50, 62.5, True, False]],
2, 2.5],
[[['yoke0', 24.0, 59.0], ['facing1', 27.0, 19.0], ['facing2', 27.0, 66.5]], 6033]],
['generated control 1',
[[['facing0', 0, 62.5, True, True], ['facing1', 50, 40, True, False], ['back2', 30.5, 0, False, True],
['yoke3', 50, 40, True, False]],
1, 4],
'error: piece'],
['generated control 2', [[['facing0', 0, 15, False, True], ['yoke1', 42, 55, False, False]], 1.5, 2.5],
'error: piece'],
['generated control 3', [[['front0', 50, 62.5, False, True], ['facing1', 30.5, 0, False, False]], 1.5, 2.5],
'error: piece']],
[['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['regression: unfolded fabric area',
[[['facing0', 20, 15, True, False], ['yoke1', 20, 55, True, True], ['yoke2', 30.5, 62.5, False, False],
['yoke3', 50, 40, True, False]],
2, 2.5],
[[['facing0', 12.0, 19.0], ['yoke1', 12.0, 59.5], ['yoke2', 34.5, 66.5], ['yoke3', 27.0, 44.0]], 6554]],
['repair check: unfolded fabric area',
[[['front0', 30.5, 40, False, False], ['facing1', 25, 55, False, True], ['back2', 25, 15, True, True],
['facing3', 25, 40, True, False]],
1.5, 4],
[[['front0', 33.5, 43.0], ['facing1', 28.0, 60.5], ['back2', 14.0, 20.5], ['facing3', 14.0, 43.0]], 4913]],
['generated control 1',
[[['front0', 20, 0, True, True], ['back1', 42, 40, False, True], ['facing2', 42, 55, False, True],
['front3', 20, 55, False, True]],
1, 4],
'error: piece'],
['generated control 2',
[[['facing0', 50, 0, True, True], ['front1', 42, 40, False, True], ['yoke2', 30.5, 62.5, True, False]], 1,
3],
'error: piece'],
['generated control 3', [[['facing0', 0, 15, True, True], ['facing1', 42, 0, True, True]], 1.6, 3],
'error: piece']],
[['fold piece', [[['front', 42, 55, True, False]], 1.5, 3], [[['front', 22.5, 58.0]], 2610]],
['zero width', [[['yoke', 0, 10, False, False]], 1, 2], 'error: piece'],
['plain piece', [[['back', 40, 60, False, True]], 1.5, 3], [[['back', 43.0, 64.5]], 2774]],
['regression: unfolded fabric area',
[[['yoke0', 30.5, 15, True, False], ['sleeve1', 50, 15, True, True]], 1, 3],
[[['yoke0', 16.25, 17.0], ['sleeve1', 26.0, 19.0]], 1541]],
['repair check: unfolded fabric area', [[['yoke0', 50, 62.5, True, True]], 1.5, 4],
[[['yoke0', 26.5, 68.0]], 3604]],
['generated control 1', [[['yoke0', 25, 62.5, True, False], ['back1', 0, 0, True, False]], 1.6, 4],
'error: piece'],
['generated control 2',
[[['front0', 50, 0, True, False], ['sleeve1', 50, 62.5, False, True], ['facing2', 42, 0, False, False],
['front3', 0, 62.5, False, True]],
2, 4],
'error: piece'],
['generated control 3', [[['sleeve0', 0, 15, True, False], ['sleeve1', 50, 40, False, True]], 2, 3],
'error: piece']]]
for label, args, expected in fixtures[N - 1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| plain piece | [[['back', 43.0, 64.5]], 2774] | [[['back', 43.0, 64.5]], 2774] | Passed |
| fold piece | [[['front', 22.5, 58.0]], 2610] | [[['front', 22.5, 58.0]], 2610] | Passed |
| zero width | error: piece | error: piece | Passed |
| regression: unfolded fabric area | [[['front0', 13.5, 17.0]], 459] | [[['front0', 13.5, 17.0]], 459] | Passed |
| repair check: unfolded fabric area | [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312] | [[['back0', 34.5, 59.0], ['facing1', 14.5, 44.0]], 3312] | Passed |
| generated control 1 | error: piece | error: piece | Passed |
| generated control 2 | error: piece | error: piece | Passed |
| generated control 3 | error: piece | error: piece | Passed |
SHA-256 / 2773a917a870936219719a650bb802306db837fe8484a74acdc4bcc4a8cc5e82
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:52:33.423582+00:00.
Case digest / 28b6a82e5546125192293f1b268efbfe81263b9a6730482dafa0c3253899a399