FA-97031 / Recipe scaling and nutrition / Open access
Baking pan substitution: round pan radius · case 01
A 9-inch round is treated as four times larger than it is.
ROOT CAUSE
The diameter is squared as if it were the radius.
VERIFIED REPAIR
Square half the diameter.
Unsuccessful approach: Without parentheses 2 ** 2 binds first, giving pi*d/4 instead of pi*(d/2)^2.
Case contract
Pans: ["round", diameter], ["square", side], ["rect", w, l] in inches; other -> "error: pan". If scale_to_fill, return factor round(area_new/area_old, 2), same minutes, warning None. Otherwise the same batter goes into the new pan: depth ratio = area_old/area_new, minutes = bake_min*(1+(ratio-1)/2) rounded half-up to a multiple of 5, factor 1.0, warning "overflow risk" when ratio > 1.5 else None.
Why this case matters
Bakers swap pan shapes and must scale the batter or adjust bake time for batter depth.
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(old_pan, new_pan, bake_min, scale_to_fill):
def area(p):
if p[0] == 'round':
return math.pi * p[1] ** 2
if p[0] == 'square':
return p[1] * p[1]
if p[0] == 'rect':
return p[1] * p[2]
return None
a0, a1 = area(old_pan), area(new_pan)
if not a0 or not a1:
return 'error: pan'
if scale_to_fill:
return {'factor': round(a1 / a0, 2), 'minutes': bake_min, 'warning': None}
depth = a0 / a1
minutes = 5 * math.floor(bake_min * (1 + (depth - 1) / 2) / 5 + 0.5)
return {'factor': 1.0, 'minutes': minutes, 'warning': 'overflow risk' if depth > 1.5 else None}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['rect', 8, 13], ['round', 10], 30, False],
{'factor': 1.0, 'minutes': 35, 'warning': None}],
['repair check: round pan radius', [['round', 8], ['round', 6], 20, True],
{'factor': 0.56, 'minutes': 20, 'warning': None}],
['generated control 1', [['rect', 8, 15], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 35, 'warning': None}],
['generated control 2', [['square', 9], ['rect', 8, 13], 30, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 3', [['rect', 9, 15], ['rect', 9, 13], 30, True],
{'factor': 0.87, 'minutes': 30, 'warning': None}]],
[['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['regression: round pan radius', [['square', 8], ['round', 9], 45, False],
{'factor': 1.0, 'minutes': 45, 'warning': None}],
['repair check: round pan radius', [['round', 12], ['round', 6], 35, True],
{'factor': 0.25, 'minutes': 35, 'warning': None}],
['generated control 1', [['rect', 9, 12], ['square', 12], 35, False],
{'factor': 1.0, 'minutes': 30, 'warning': None}],
['generated control 2', [['round', 6], ['square', 12], 25, False],
{'factor': 1.0, 'minutes': 15, 'warning': None}],
['generated control 3', [['rect', 11, 12], ['rect', 8, 13], 30, True],
{'factor': 0.79, 'minutes': 30, 'warning': None}]],
[['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['square', 12], ['round', 10], 35, False],
{'factor': 1.0, 'minutes': 50, 'warning': 'overflow risk'}],
['repair check: round pan radius', [['round', 9], ['round', 6], 20, False],
{'factor': 1.0, 'minutes': 35, 'warning': 'overflow risk'}],
['generated control 1', [['rect', 9, 12], ['rect', 11, 12], 30, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 2', [['rect', 8, 15], ['rect', 11, 15], 30, True],
{'factor': 1.38, 'minutes': 30, 'warning': None}],
['generated control 3', [['rect', 9, 13], ['rect', 11, 15], 25, True],
{'factor': 1.41, 'minutes': 25, 'warning': None}]],
[['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['regression: round pan radius', [['rect', 9, 15], ['round', 6], 45, True],
{'factor': 0.21, 'minutes': 45, 'warning': None}],
['repair check: round pan radius', [['rect', 9, 13], ['round', 12], 30, True],
{'factor': 0.97, 'minutes': 30, 'warning': None}],
['generated control 1', [['rect', 11, 12], ['square', 6], 35, False],
{'factor': 1.0, 'minutes': 80, 'warning': 'overflow risk'}],
['generated control 2', [['rect', 8, 12], ['rect', 9, 12], 35, True],
{'factor': 1.12, 'minutes': 35, 'warning': None}],
['generated control 3', [['rect', 8, 12], ['rect', 11, 15], 25, False],
{'factor': 1.0, 'minutes': 20, 'warning': None}]],
[['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['rect', 9, 12], ['round', 8], 30, True],
{'factor': 0.47, 'minutes': 30, 'warning': None}],
['repair check: round pan radius', [['rect', 8, 13], ['round', 6], 25, False],
{'factor': 1.0, 'minutes': 60, 'warning': 'overflow risk'}],
['generated control 1', [['rect', 11, 13], ['rect', 8, 15], 20, False],
{'factor': 1.0, 'minutes': 20, 'warning': None}],
['generated control 2', [['rect', 9, 15], ['square', 12], 25, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 3', [['square', 9], ['square', 12], 30, True],
{'factor': 1.78, 'minutes': 30, 'warning': None}]]]
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 |
|---|---|---|---|
| same pan | {'factor': 1.0, 'minutes': 30, 'warning': None} | {'factor': 1.0, 'minutes': 30, 'warning': None} | Passed |
| ratio exactly 1.5 | {'factor': 1.0, 'minutes': 40, 'warning': None} | {'factor': 1.0, 'minutes': 40, 'warning': None} | Passed |
| round to square fill | {'factor': 0.32, 'minutes': 30, 'warning': None} | {'factor': 1.27, 'minutes': 30, 'warning': None} | Failed |
| regression: round pan radius | {'factor': 1.0, 'minutes': 20, 'warning': None} | {'factor': 1.0, 'minutes': 35, 'warning': None} | Failed |
| repair check: round pan radius | {'factor': 0.56, 'minutes': 20, 'warning': None} | {'factor': 0.56, 'minutes': 20, 'warning': None} | Passed |
| generated control 1 | {'factor': 1.0, 'minutes': 35, 'warning': None} | {'factor': 1.0, 'minutes': 35, 'warning': None} | Passed |
| generated control 2 | {'factor': 1.0, 'minutes': 25, 'warning': None} | {'factor': 1.0, 'minutes': 25, 'warning': None} | Passed |
| generated control 3 | {'factor': 0.87, 'minutes': 30, 'warning': None} | {'factor': 0.87, 'minutes': 30, 'warning': None} | Passed |
SHA-256 / 1ef791113811962518fcd92a146181e8878460b7ed2b33bca246d0b471246609
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(old_pan, new_pan, bake_min, scale_to_fill):
def area(p):
if p[0] == 'round':
return math.pi * p[1] / 2 ** 2
if p[0] == 'square':
return p[1] * p[1]
if p[0] == 'rect':
return p[1] * p[2]
return None
a0, a1 = area(old_pan), area(new_pan)
if not a0 or not a1:
return 'error: pan'
if scale_to_fill:
return {'factor': round(a1 / a0, 2), 'minutes': bake_min, 'warning': None}
depth = a0 / a1
minutes = 5 * math.floor(bake_min * (1 + (depth - 1) / 2) / 5 + 0.5)
return {'factor': 1.0, 'minutes': minutes, 'warning': 'overflow risk' if depth > 1.5 else None}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['rect', 8, 13], ['round', 10], 30, False],
{'factor': 1.0, 'minutes': 35, 'warning': None}],
['repair check: round pan radius', [['round', 8], ['round', 6], 20, True],
{'factor': 0.56, 'minutes': 20, 'warning': None}],
['generated control 1', [['rect', 8, 15], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 35, 'warning': None}],
['generated control 2', [['square', 9], ['rect', 8, 13], 30, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 3', [['rect', 9, 15], ['rect', 9, 13], 30, True],
{'factor': 0.87, 'minutes': 30, 'warning': None}]],
[['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['regression: round pan radius', [['square', 8], ['round', 9], 45, False],
{'factor': 1.0, 'minutes': 45, 'warning': None}],
['repair check: round pan radius', [['round', 12], ['round', 6], 35, True],
{'factor': 0.25, 'minutes': 35, 'warning': None}],
['generated control 1', [['rect', 9, 12], ['square', 12], 35, False],
{'factor': 1.0, 'minutes': 30, 'warning': None}],
['generated control 2', [['round', 6], ['square', 12], 25, False],
{'factor': 1.0, 'minutes': 15, 'warning': None}],
['generated control 3', [['rect', 11, 12], ['rect', 8, 13], 30, True],
{'factor': 0.79, 'minutes': 30, 'warning': None}]],
[['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['square', 12], ['round', 10], 35, False],
{'factor': 1.0, 'minutes': 50, 'warning': 'overflow risk'}],
['repair check: round pan radius', [['round', 9], ['round', 6], 20, False],
{'factor': 1.0, 'minutes': 35, 'warning': 'overflow risk'}],
['generated control 1', [['rect', 9, 12], ['rect', 11, 12], 30, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 2', [['rect', 8, 15], ['rect', 11, 15], 30, True],
{'factor': 1.38, 'minutes': 30, 'warning': None}],
['generated control 3', [['rect', 9, 13], ['rect', 11, 15], 25, True],
{'factor': 1.41, 'minutes': 25, 'warning': None}]],
[['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['regression: round pan radius', [['rect', 9, 15], ['round', 6], 45, True],
{'factor': 0.21, 'minutes': 45, 'warning': None}],
['repair check: round pan radius', [['rect', 9, 13], ['round', 12], 30, True],
{'factor': 0.97, 'minutes': 30, 'warning': None}],
['generated control 1', [['rect', 11, 12], ['square', 6], 35, False],
{'factor': 1.0, 'minutes': 80, 'warning': 'overflow risk'}],
['generated control 2', [['rect', 8, 12], ['rect', 9, 12], 35, True],
{'factor': 1.12, 'minutes': 35, 'warning': None}],
['generated control 3', [['rect', 8, 12], ['rect', 11, 15], 25, False],
{'factor': 1.0, 'minutes': 20, 'warning': None}]],
[['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['rect', 9, 12], ['round', 8], 30, True],
{'factor': 0.47, 'minutes': 30, 'warning': None}],
['repair check: round pan radius', [['rect', 8, 13], ['round', 6], 25, False],
{'factor': 1.0, 'minutes': 60, 'warning': 'overflow risk'}],
['generated control 1', [['rect', 11, 13], ['rect', 8, 15], 20, False],
{'factor': 1.0, 'minutes': 20, 'warning': None}],
['generated control 2', [['rect', 9, 15], ['square', 12], 25, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 3', [['square', 9], ['square', 12], 30, True],
{'factor': 1.78, 'minutes': 30, 'warning': None}]]]
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 |
|---|---|---|---|
| same pan | {'factor': 1.0, 'minutes': 30, 'warning': None} | {'factor': 1.0, 'minutes': 30, 'warning': None} | Passed |
| ratio exactly 1.5 | {'factor': 1.0, 'minutes': 40, 'warning': None} | {'factor': 1.0, 'minutes': 40, 'warning': None} | Passed |
| round to square fill | {'factor': 11.46, 'minutes': 30, 'warning': None} | {'factor': 1.27, 'minutes': 30, 'warning': None} | Failed |
| regression: round pan radius | {'factor': 1.0, 'minutes': 215, 'warning': 'overflow risk'} | {'factor': 1.0, 'minutes': 35, 'warning': None} | Failed |
| repair check: round pan radius | {'factor': 0.75, 'minutes': 20, 'warning': None} | {'factor': 0.56, 'minutes': 20, 'warning': None} | Failed |
| generated control 1 | {'factor': 1.0, 'minutes': 35, 'warning': None} | {'factor': 1.0, 'minutes': 35, 'warning': None} | Passed |
| generated control 2 | {'factor': 1.0, 'minutes': 25, 'warning': None} | {'factor': 1.0, 'minutes': 25, 'warning': None} | Passed |
| generated control 3 | {'factor': 0.87, 'minutes': 30, 'warning': None} | {'factor': 0.87, 'minutes': 30, 'warning': None} | Passed |
SHA-256 / 4570093525e196661a81ec6ceac90c1dcdcae882b655e274b0344ab9fea7bdb5
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(old_pan, new_pan, bake_min, scale_to_fill):
def area(p):
if p[0] == 'round':
return math.pi * (p[1] / 2) ** 2
if p[0] == 'square':
return p[1] * p[1]
if p[0] == 'rect':
return p[1] * p[2]
return None
a0, a1 = area(old_pan), area(new_pan)
if not a0 or not a1:
return 'error: pan'
if scale_to_fill:
return {'factor': round(a1 / a0, 2), 'minutes': bake_min, 'warning': None}
depth = a0 / a1
minutes = 5 * math.floor(bake_min * (1 + (depth - 1) / 2) / 5 + 0.5)
return {'factor': 1.0, 'minutes': minutes, 'warning': 'overflow risk' if depth > 1.5 else None}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['rect', 8, 13], ['round', 10], 30, False],
{'factor': 1.0, 'minutes': 35, 'warning': None}],
['repair check: round pan radius', [['round', 8], ['round', 6], 20, True],
{'factor': 0.56, 'minutes': 20, 'warning': None}],
['generated control 1', [['rect', 8, 15], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 35, 'warning': None}],
['generated control 2', [['square', 9], ['rect', 8, 13], 30, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 3', [['rect', 9, 15], ['rect', 9, 13], 30, True],
{'factor': 0.87, 'minutes': 30, 'warning': None}]],
[['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['regression: round pan radius', [['square', 8], ['round', 9], 45, False],
{'factor': 1.0, 'minutes': 45, 'warning': None}],
['repair check: round pan radius', [['round', 12], ['round', 6], 35, True],
{'factor': 0.25, 'minutes': 35, 'warning': None}],
['generated control 1', [['rect', 9, 12], ['square', 12], 35, False],
{'factor': 1.0, 'minutes': 30, 'warning': None}],
['generated control 2', [['round', 6], ['square', 12], 25, False],
{'factor': 1.0, 'minutes': 15, 'warning': None}],
['generated control 3', [['rect', 11, 12], ['rect', 8, 13], 30, True],
{'factor': 0.79, 'minutes': 30, 'warning': None}]],
[['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['square', 12], ['round', 10], 35, False],
{'factor': 1.0, 'minutes': 50, 'warning': 'overflow risk'}],
['repair check: round pan radius', [['round', 9], ['round', 6], 20, False],
{'factor': 1.0, 'minutes': 35, 'warning': 'overflow risk'}],
['generated control 1', [['rect', 9, 12], ['rect', 11, 12], 30, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 2', [['rect', 8, 15], ['rect', 11, 15], 30, True],
{'factor': 1.38, 'minutes': 30, 'warning': None}],
['generated control 3', [['rect', 9, 13], ['rect', 11, 15], 25, True],
{'factor': 1.41, 'minutes': 25, 'warning': None}]],
[['bad pan', [['bundt', 10], ['square', 8], 30, True], 'error: pan'],
['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['regression: round pan radius', [['rect', 9, 15], ['round', 6], 45, True],
{'factor': 0.21, 'minutes': 45, 'warning': None}],
['repair check: round pan radius', [['rect', 9, 13], ['round', 12], 30, True],
{'factor': 0.97, 'minutes': 30, 'warning': None}],
['generated control 1', [['rect', 11, 12], ['square', 6], 35, False],
{'factor': 1.0, 'minutes': 80, 'warning': 'overflow risk'}],
['generated control 2', [['rect', 8, 12], ['rect', 9, 12], 35, True],
{'factor': 1.12, 'minutes': 35, 'warning': None}],
['generated control 3', [['rect', 8, 12], ['rect', 11, 15], 25, False],
{'factor': 1.0, 'minutes': 20, 'warning': None}]],
[['same pan', [['square', 8], ['square', 8], 30, False], {'factor': 1.0, 'minutes': 30, 'warning': None}],
['ratio exactly 1.5', [['square', 12], ['rect', 8, 12], 30, False],
{'factor': 1.0, 'minutes': 40, 'warning': None}],
['round to square fill', [['round', 9], ['square', 9], 30, True],
{'factor': 1.27, 'minutes': 30, 'warning': None}],
['regression: round pan radius', [['rect', 9, 12], ['round', 8], 30, True],
{'factor': 0.47, 'minutes': 30, 'warning': None}],
['repair check: round pan radius', [['rect', 8, 13], ['round', 6], 25, False],
{'factor': 1.0, 'minutes': 60, 'warning': 'overflow risk'}],
['generated control 1', [['rect', 11, 13], ['rect', 8, 15], 20, False],
{'factor': 1.0, 'minutes': 20, 'warning': None}],
['generated control 2', [['rect', 9, 15], ['square', 12], 25, False],
{'factor': 1.0, 'minutes': 25, 'warning': None}],
['generated control 3', [['square', 9], ['square', 12], 30, True],
{'factor': 1.78, 'minutes': 30, 'warning': None}]]]
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 |
|---|---|---|---|
| same pan | {'factor': 1.0, 'minutes': 30, 'warning': None} | {'factor': 1.0, 'minutes': 30, 'warning': None} | Passed |
| ratio exactly 1.5 | {'factor': 1.0, 'minutes': 40, 'warning': None} | {'factor': 1.0, 'minutes': 40, 'warning': None} | Passed |
| round to square fill | {'factor': 1.27, 'minutes': 30, 'warning': None} | {'factor': 1.27, 'minutes': 30, 'warning': None} | Passed |
| regression: round pan radius | {'factor': 1.0, 'minutes': 35, 'warning': None} | {'factor': 1.0, 'minutes': 35, 'warning': None} | Passed |
| repair check: round pan radius | {'factor': 0.56, 'minutes': 20, 'warning': None} | {'factor': 0.56, 'minutes': 20, 'warning': None} | Passed |
| generated control 1 | {'factor': 1.0, 'minutes': 35, 'warning': None} | {'factor': 1.0, 'minutes': 35, 'warning': None} | Passed |
| generated control 2 | {'factor': 1.0, 'minutes': 25, 'warning': None} | {'factor': 1.0, 'minutes': 25, 'warning': None} | Passed |
| generated control 3 | {'factor': 0.87, 'minutes': 30, 'warning': None} | {'factor': 0.87, 'minutes': 30, 'warning': None} | Passed |
SHA-256 / 9ffac353162182383c6a8a7301fade087c7db61fabf0c83018f5fd8c772cfd09
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:28.191143+00:00.
Case digest / 1ea587a65b722eda61dee59d7578c727ac529708f49c272ed80e50bdd6303e58