FA-97066 / Recipe scaling and nutrition / Open access
Yeast type converter: fresh yeast spoon measure · case 01
Converting instant to fresh prints a teaspoon count for crumbly cake yeast.
ROOT CAUSE
The no-spoon rule tests the source type instead of the target type.
VERIFIED REPAIR
Suppress teaspoons when the target is fresh yeast.
Unsuccessful approach: Excluding fresh-to-fresh still prints spoons for that conversion.
Case contract
Types (trimmed, case-insensitive) instant, active dry, fresh with grams per 1 g instant: 1, 5/4, 3. Unknown -> "error: yeast type". grams = amount/ratio[from]*ratio[to], printed half-up to 0.1 (float). tsp: None for fresh; else grams/3.1 in quarter teaspoons half-up: 0 -> "less than 1/4", <4 quarters -> "q/4", whole -> "n", else "n q/4" (quarters not reduced). bloom is True only when converting to active dry.
Why this case matters
Bakers substitute yeast forms and need both weight and spoon measures.
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(amount_g, from_type, to_type):
R = {'instant': Fraction(1), 'active dry': Fraction(5, 4), 'fresh': Fraction(3)}
f, t = from_type.strip().lower(), to_type.strip().lower()
if f not in R or t not in R:
return 'error: yeast type'
g = Fraction(str(amount_g)) / R[f] * R[t]
grams = math.floor(g * 10 + Fraction(1, 2)) / 10
out = {'grams': grams}
if f == 'fresh':
out['tsp'] = None
else:
q = math.floor(g / Fraction(31, 10) * 4 + Fraction(1, 2))
if q == 0:
out['tsp'] = 'less than 1/4'
elif q < 4:
out['tsp'] = '%d/4' % q
elif q % 4 == 0:
out['tsp'] = '%d' % (q // 4)
else:
out['tsp'] = '%d %d/4' % divmod(q, 4)
out['bloom'] = t == 'active dry'
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['regression: fresh yeast spoon measure', [5, 'instant', 'FRESH'],
{'bloom': False, 'grams': 15.0, 'tsp': None}],
['repair check: fresh yeast spoon measure', [3, 'fresh', 'FRESH'],
{'bloom': False, 'grams': 3.0, 'tsp': None}],
['generated control 1', [4, 'rapid', 'fresh'], 'error: yeast type'],
['generated control 2', [4, 'active dry', 'rapid'], 'error: yeast type'],
['generated control 3', [2, 'active dry', ' Instant'], {'bloom': False, 'grams': 1.6, 'tsp': '2/4'}]],
[['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['regression: fresh yeast spoon measure', [6.2, 'fresh', 'active dry'],
{'bloom': True, 'grams': 2.6, 'tsp': '3/4'}],
['repair check: fresh yeast spoon measure', [2, 'FRESH', 'fresh'],
{'bloom': False, 'grams': 2.0, 'tsp': None}],
['generated control 1', [21, 'instant', ' Instant'], {'bloom': False, 'grams': 21.0, 'tsp': '6 3/4'}],
['generated control 2', [21, 'instant', 'fresh'], {'bloom': False, 'grams': 63.0, 'tsp': None}],
['generated control 3', [1, 'active dry', 'FRESH'], {'bloom': False, 'grams': 2.4, 'tsp': None}]],
[['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['regression: fresh yeast spoon measure', [1, 'FRESH', 'active dry'],
{'bloom': True, 'grams': 0.4, 'tsp': '1/4'}],
['repair check: fresh yeast spoon measure', [2.5, 'fresh', 'FRESH'],
{'bloom': False, 'grams': 2.5, 'tsp': None}],
['generated control 1', [0.5, ' Instant', ' Instant'], {'bloom': False, 'grams': 0.5, 'tsp': '1/4'}],
['generated control 2', [7, 'active dry', 'fresh'], {'bloom': False, 'grams': 16.8, 'tsp': None}],
['generated control 3', [2, ' Instant', 'instant'], {'bloom': False, 'grams': 2.0, 'tsp': '3/4'}]],
[['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['regression: fresh yeast spoon measure', [7, 'FRESH', 'active dry'],
{'bloom': True, 'grams': 2.9, 'tsp': '1'}],
['repair check: fresh yeast spoon measure', [14, 'FRESH', 'FRESH'],
{'bloom': False, 'grams': 14.0, 'tsp': None}],
['generated control 1', [6.2, 'instant', 'rapid'], 'error: yeast type'],
['generated control 2', [4, 'rapid', 'rapid'], 'error: yeast type'],
['generated control 3', [0.3, 'active dry', 'active dry'],
{'bloom': True, 'grams': 0.3, 'tsp': 'less than 1/4'}]],
[['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['regression: fresh yeast spoon measure', [14, 'fresh', 'instant'],
{'bloom': False, 'grams': 4.7, 'tsp': '1 2/4'}],
['repair check: fresh yeast spoon measure', [14, 'FRESH', 'fresh'],
{'bloom': False, 'grams': 14.0, 'tsp': None}],
['generated control 1', [0.5, ' Instant', 'rapid'], 'error: yeast type'],
['generated control 2', [10, ' Instant', 'FRESH'], {'bloom': False, 'grams': 30.0, 'tsp': None}],
['generated control 3', [2.5, 'active dry', 'instant'], {'bloom': False, 'grams': 2.0, 'tsp': '3/4'}]]]
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 |
|---|---|---|---|
| instant to active dry | {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'} | {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'} | Passed |
| fresh to instant | {'bloom': False, 'grams': 7.0, 'tsp': None} | {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'} | Failed |
| unknown type | error: yeast type | error: yeast type | Passed |
| regression: fresh yeast spoon measure | {'bloom': False, 'grams': 15.0, 'tsp': '4 3/4'} | {'bloom': False, 'grams': 15.0, 'tsp': None} | Failed |
| repair check: fresh yeast spoon measure | {'bloom': False, 'grams': 3.0, 'tsp': None} | {'bloom': False, 'grams': 3.0, 'tsp': None} | Passed |
| generated control 1 | error: yeast type | error: yeast type | Passed |
| generated control 2 | error: yeast type | error: yeast type | Passed |
| generated control 3 | {'bloom': False, 'grams': 1.6, 'tsp': '2/4'} | {'bloom': False, 'grams': 1.6, 'tsp': '2/4'} | Passed |
SHA-256 / eb74eaadfbaa71a06aeed6c3c68773dc42a45ae6ed09f20b6dba342a53288e91
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(amount_g, from_type, to_type):
R = {'instant': Fraction(1), 'active dry': Fraction(5, 4), 'fresh': Fraction(3)}
f, t = from_type.strip().lower(), to_type.strip().lower()
if f not in R or t not in R:
return 'error: yeast type'
g = Fraction(str(amount_g)) / R[f] * R[t]
grams = math.floor(g * 10 + Fraction(1, 2)) / 10
out = {'grams': grams}
if t == 'fresh' and f != 'fresh':
out['tsp'] = None
else:
q = math.floor(g / Fraction(31, 10) * 4 + Fraction(1, 2))
if q == 0:
out['tsp'] = 'less than 1/4'
elif q < 4:
out['tsp'] = '%d/4' % q
elif q % 4 == 0:
out['tsp'] = '%d' % (q // 4)
else:
out['tsp'] = '%d %d/4' % divmod(q, 4)
out['bloom'] = t == 'active dry'
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['regression: fresh yeast spoon measure', [5, 'instant', 'FRESH'],
{'bloom': False, 'grams': 15.0, 'tsp': None}],
['repair check: fresh yeast spoon measure', [3, 'fresh', 'FRESH'],
{'bloom': False, 'grams': 3.0, 'tsp': None}],
['generated control 1', [4, 'rapid', 'fresh'], 'error: yeast type'],
['generated control 2', [4, 'active dry', 'rapid'], 'error: yeast type'],
['generated control 3', [2, 'active dry', ' Instant'], {'bloom': False, 'grams': 1.6, 'tsp': '2/4'}]],
[['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['regression: fresh yeast spoon measure', [6.2, 'fresh', 'active dry'],
{'bloom': True, 'grams': 2.6, 'tsp': '3/4'}],
['repair check: fresh yeast spoon measure', [2, 'FRESH', 'fresh'],
{'bloom': False, 'grams': 2.0, 'tsp': None}],
['generated control 1', [21, 'instant', ' Instant'], {'bloom': False, 'grams': 21.0, 'tsp': '6 3/4'}],
['generated control 2', [21, 'instant', 'fresh'], {'bloom': False, 'grams': 63.0, 'tsp': None}],
['generated control 3', [1, 'active dry', 'FRESH'], {'bloom': False, 'grams': 2.4, 'tsp': None}]],
[['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['regression: fresh yeast spoon measure', [1, 'FRESH', 'active dry'],
{'bloom': True, 'grams': 0.4, 'tsp': '1/4'}],
['repair check: fresh yeast spoon measure', [2.5, 'fresh', 'FRESH'],
{'bloom': False, 'grams': 2.5, 'tsp': None}],
['generated control 1', [0.5, ' Instant', ' Instant'], {'bloom': False, 'grams': 0.5, 'tsp': '1/4'}],
['generated control 2', [7, 'active dry', 'fresh'], {'bloom': False, 'grams': 16.8, 'tsp': None}],
['generated control 3', [2, ' Instant', 'instant'], {'bloom': False, 'grams': 2.0, 'tsp': '3/4'}]],
[['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['regression: fresh yeast spoon measure', [7, 'FRESH', 'active dry'],
{'bloom': True, 'grams': 2.9, 'tsp': '1'}],
['repair check: fresh yeast spoon measure', [14, 'FRESH', 'FRESH'],
{'bloom': False, 'grams': 14.0, 'tsp': None}],
['generated control 1', [6.2, 'instant', 'rapid'], 'error: yeast type'],
['generated control 2', [4, 'rapid', 'rapid'], 'error: yeast type'],
['generated control 3', [0.3, 'active dry', 'active dry'],
{'bloom': True, 'grams': 0.3, 'tsp': 'less than 1/4'}]],
[['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['regression: fresh yeast spoon measure', [14, 'fresh', 'instant'],
{'bloom': False, 'grams': 4.7, 'tsp': '1 2/4'}],
['repair check: fresh yeast spoon measure', [14, 'FRESH', 'fresh'],
{'bloom': False, 'grams': 14.0, 'tsp': None}],
['generated control 1', [0.5, ' Instant', 'rapid'], 'error: yeast type'],
['generated control 2', [10, ' Instant', 'FRESH'], {'bloom': False, 'grams': 30.0, 'tsp': None}],
['generated control 3', [2.5, 'active dry', 'instant'], {'bloom': False, 'grams': 2.0, 'tsp': '3/4'}]]]
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 |
|---|---|---|---|
| instant to active dry | {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'} | {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'} | Passed |
| fresh to instant | {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'} | {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'} | Passed |
| unknown type | error: yeast type | error: yeast type | Passed |
| regression: fresh yeast spoon measure | {'bloom': False, 'grams': 15.0, 'tsp': None} | {'bloom': False, 'grams': 15.0, 'tsp': None} | Passed |
| repair check: fresh yeast spoon measure | {'bloom': False, 'grams': 3.0, 'tsp': '1'} | {'bloom': False, 'grams': 3.0, 'tsp': None} | Failed |
| generated control 1 | error: yeast type | error: yeast type | Passed |
| generated control 2 | error: yeast type | error: yeast type | Passed |
| generated control 3 | {'bloom': False, 'grams': 1.6, 'tsp': '2/4'} | {'bloom': False, 'grams': 1.6, 'tsp': '2/4'} | Passed |
SHA-256 / f870d4e69ec2673802c10c46122687e3f4c250d7f94fe8e22c240c7e9c9aebd1
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(amount_g, from_type, to_type):
R = {'instant': Fraction(1), 'active dry': Fraction(5, 4), 'fresh': Fraction(3)}
f, t = from_type.strip().lower(), to_type.strip().lower()
if f not in R or t not in R:
return 'error: yeast type'
g = Fraction(str(amount_g)) / R[f] * R[t]
grams = math.floor(g * 10 + Fraction(1, 2)) / 10
out = {'grams': grams}
if t == 'fresh':
out['tsp'] = None
else:
q = math.floor(g / Fraction(31, 10) * 4 + Fraction(1, 2))
if q == 0:
out['tsp'] = 'less than 1/4'
elif q < 4:
out['tsp'] = '%d/4' % q
elif q % 4 == 0:
out['tsp'] = '%d' % (q // 4)
else:
out['tsp'] = '%d %d/4' % divmod(q, 4)
out['bloom'] = t == 'active dry'
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['regression: fresh yeast spoon measure', [5, 'instant', 'FRESH'],
{'bloom': False, 'grams': 15.0, 'tsp': None}],
['repair check: fresh yeast spoon measure', [3, 'fresh', 'FRESH'],
{'bloom': False, 'grams': 3.0, 'tsp': None}],
['generated control 1', [4, 'rapid', 'fresh'], 'error: yeast type'],
['generated control 2', [4, 'active dry', 'rapid'], 'error: yeast type'],
['generated control 3', [2, 'active dry', ' Instant'], {'bloom': False, 'grams': 1.6, 'tsp': '2/4'}]],
[['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['regression: fresh yeast spoon measure', [6.2, 'fresh', 'active dry'],
{'bloom': True, 'grams': 2.6, 'tsp': '3/4'}],
['repair check: fresh yeast spoon measure', [2, 'FRESH', 'fresh'],
{'bloom': False, 'grams': 2.0, 'tsp': None}],
['generated control 1', [21, 'instant', ' Instant'], {'bloom': False, 'grams': 21.0, 'tsp': '6 3/4'}],
['generated control 2', [21, 'instant', 'fresh'], {'bloom': False, 'grams': 63.0, 'tsp': None}],
['generated control 3', [1, 'active dry', 'FRESH'], {'bloom': False, 'grams': 2.4, 'tsp': None}]],
[['unknown type', [7, 'rapid', 'instant'], 'error: yeast type'],
['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['regression: fresh yeast spoon measure', [1, 'FRESH', 'active dry'],
{'bloom': True, 'grams': 0.4, 'tsp': '1/4'}],
['repair check: fresh yeast spoon measure', [2.5, 'fresh', 'FRESH'],
{'bloom': False, 'grams': 2.5, 'tsp': None}],
['generated control 1', [0.5, ' Instant', ' Instant'], {'bloom': False, 'grams': 0.5, 'tsp': '1/4'}],
['generated control 2', [7, 'active dry', 'fresh'], {'bloom': False, 'grams': 16.8, 'tsp': None}],
['generated control 3', [2, ' Instant', 'instant'], {'bloom': False, 'grams': 2.0, 'tsp': '3/4'}]],
[['same type', [3.1, 'instant', 'instant'], {'bloom': False, 'grams': 3.1, 'tsp': '1'}],
['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['regression: fresh yeast spoon measure', [7, 'FRESH', 'active dry'],
{'bloom': True, 'grams': 2.9, 'tsp': '1'}],
['repair check: fresh yeast spoon measure', [14, 'FRESH', 'FRESH'],
{'bloom': False, 'grams': 14.0, 'tsp': None}],
['generated control 1', [6.2, 'instant', 'rapid'], 'error: yeast type'],
['generated control 2', [4, 'rapid', 'rapid'], 'error: yeast type'],
['generated control 3', [0.3, 'active dry', 'active dry'],
{'bloom': True, 'grams': 0.3, 'tsp': 'less than 1/4'}]],
[['tiny amount', [0.3, 'instant', 'instant'], {'bloom': False, 'grams': 0.3, 'tsp': 'less than 1/4'}],
['instant to active dry', [7, 'instant', 'active dry'], {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'}],
['fresh to instant', [21, 'fresh', 'instant'], {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'}],
['regression: fresh yeast spoon measure', [14, 'fresh', 'instant'],
{'bloom': False, 'grams': 4.7, 'tsp': '1 2/4'}],
['repair check: fresh yeast spoon measure', [14, 'FRESH', 'fresh'],
{'bloom': False, 'grams': 14.0, 'tsp': None}],
['generated control 1', [0.5, ' Instant', 'rapid'], 'error: yeast type'],
['generated control 2', [10, ' Instant', 'FRESH'], {'bloom': False, 'grams': 30.0, 'tsp': None}],
['generated control 3', [2.5, 'active dry', 'instant'], {'bloom': False, 'grams': 2.0, 'tsp': '3/4'}]]]
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 |
|---|---|---|---|
| instant to active dry | {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'} | {'bloom': True, 'grams': 8.8, 'tsp': '2 3/4'} | Passed |
| fresh to instant | {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'} | {'bloom': False, 'grams': 7.0, 'tsp': '2 1/4'} | Passed |
| unknown type | error: yeast type | error: yeast type | Passed |
| regression: fresh yeast spoon measure | {'bloom': False, 'grams': 15.0, 'tsp': None} | {'bloom': False, 'grams': 15.0, 'tsp': None} | Passed |
| repair check: fresh yeast spoon measure | {'bloom': False, 'grams': 3.0, 'tsp': None} | {'bloom': False, 'grams': 3.0, 'tsp': None} | Passed |
| generated control 1 | error: yeast type | error: yeast type | Passed |
| generated control 2 | error: yeast type | error: yeast type | Passed |
| generated control 3 | {'bloom': False, 'grams': 1.6, 'tsp': '2/4'} | {'bloom': False, 'grams': 1.6, 'tsp': '2/4'} | Passed |
SHA-256 / 43e98350552d9c0fd3e934e4029e17305c799b0732d6cefc95c2d3456ddbd486
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.500552+00:00.
Case digest / 3bf064c6e875dcbc42199d54edda4d2670123668e5c72a31684c847974838ced