{"abstract":"Levain doughs report hydration several points low.","category":"Recipe scaling and nutrition","checks":8,"contract":"Rows [name, grams, role], role in flour/water/milk/egg/starter/other. Total flour = all flour rows plus half of starter weight (100% hydration levain). Each row gets grams/total_flour*100 as \"d.d\" rounded half-up. Hydration counts water fully, milk at 87%, egg at 75% and half the starter. No flour returns an error string.","evaluation_group":"w2-recipe_scaling_and_nutrition-bakers-percentage","failed_approach":"Counting the full starter as water overstates hydration.","family":"w2-recipe_scaling_and_nutrition-bakers-percentage-starter-water-share","id":"FA-96941","implementations":{"attempt":{"sha256":"d5f14e79950bfc7f7bbfbbd6f8486c2054f8f41e4f1343934d7cfc995dd452d4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(ingredients):\n    starter = sum((Fraction(str(g)) for n, g, r in ingredients if r == 'starter'), Fraction(0))\n    flour = sum(Fraction(str(g)) for n, g, r in ingredients if r == 'flour') + starter / 2\n    if flour == 0:\n        return 'error: no flour'\n    def pct(x):\n        v = math.floor(x * 1000 / flour + Fraction(1, 2))\n        return '%d.%d' % divmod(v, 10)\n    rows = [[n, pct(Fraction(str(g)))] for n, g, r in ingredients]\n    water = Fraction(0)\n    for n, g, r in ingredients:\n        if r == 'water':\n            water += Fraction(str(g))\n        elif r == 'milk':\n            water += Fraction(str(g)) * Fraction(87, 100)\n        elif r == 'egg':\n            water += Fraction(str(g)) * Fraction(3, 4)\n        elif r == 'starter':\n            water += Fraction(str(g))\n    return {'flour_total': str(flour), 'percentages': rows, 'hydration': pct(water)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['regression: starter water share',\n   [[['whole wheat2', 250, 'flour'], ['salt', 9, 'other'], ['levain', 150, 'starter'],\n     ['spelt1', 200, 'flour'], ['water', 377, 'water'], ['spelt0', 100, 'flour'], ['milk', 50, 'milk']]],\n   {'flour_total': '625',\n    'hydration': '79.3',\n    'percentages': [['whole wheat2', '40.0'], ['salt', '1.4'], ['levain', '24.0'], ['spelt1', '32.0'],\n                    ['water', '60.3'], ['spelt0', '16.0'], ['milk', '8.0']]}],\n  ['repair check: starter water share',\n   [[['salt', 9, 'other'], ['levain', 60, 'starter'], ['bread flour1', 200, 'flour'], ['water', 350, 'water'],\n     ['rye0', 450, 'flour'], ['milk', 120, 'milk'], ['egg', 50, 'egg']]],\n   {'flour_total': '680',\n    'hydration': '76.8',\n    'percentages': [['salt', '1.3'], ['levain', '8.8'], ['bread flour1', '29.4'], ['water', '51.5'],\n                    ['rye0', '66.2'], ['milk', '17.6'], ['egg', '7.4']]}],\n  ['generated control 1',\n   [[['egg', 50, 'egg'], ['bread flour1', 250, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other'],\n     ['whole wheat0', 100, 'flour'], ['whole wheat2', 300, 'flour']]],\n   {'flour_total': '650',\n    'hydration': '59.6',\n    'percentages': [['egg', '7.7'], ['bread flour1', '38.5'], ['water', '53.8'], ['salt', '1.5'],\n                    ['whole wheat0', '15.4'], ['whole wheat2', '46.2']]}],\n  ['generated control 2',\n   [[['levain', 60, 'starter'], ['salt', 10, 'other'], ['rye0', 200, 'flour'], ['milk', 100, 'milk'],\n     ['spelt1', 450, 'flour']]],\n   {'flour_total': '680',\n    'hydration': '17.2',\n    'percentages': [['levain', '8.8'], ['salt', '1.5'], ['rye0', '29.4'], ['milk', '14.7'],\n                    ['spelt1', '66.2']]}],\n  ['generated control 3',\n   [[['levain', 150, 'starter'], ['salt', 9, 'other'], ['water', 325, 'water'],\n     ['whole wheat0', 500, 'flour'], ['egg', 50, 'egg']]],\n   {'flour_total': '575',\n    'hydration': '76.1',\n    'percentages': [['levain', '26.1'], ['salt', '1.6'], ['water', '56.5'], ['whole wheat0', '87.0'],\n                    ['egg', '8.7']]}]],\n [['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['regression: starter water share',\n   [[['rye2', 450, 'flour'], ['rye0', 100, 'flour'], ['levain', 100, 'starter'], ['water', 325, 'water'],\n     ['spelt1', 450, 'flour'], ['salt', 10, 'other'], ['egg', 50, 'egg']]],\n   {'flour_total': '1050',\n    'hydration': '39.3',\n    'percentages': [['rye2', '42.9'], ['rye0', '9.5'], ['levain', '9.5'], ['water', '31.0'],\n                    ['spelt1', '42.9'], ['salt', '1.0'], ['egg', '4.8']]}],\n  ['repair check: starter water share',\n   [[['levain', 150, 'starter'], ['rye0', 450, 'flour'], ['salt', 9, 'other'], ['rye1', 500, 'flour'],\n     ['water', 325, 'water']]],\n   {'flour_total': '1025',\n    'hydration': '39.0',\n    'percentages': [['levain', '14.6'], ['rye0', '43.9'], ['salt', '0.9'], ['rye1', '48.8'],\n                    ['water', '31.7']]}],\n  ['generated control 1',\n   [[['rye0', 333, 'flour'], ['milk', 100, 'milk'], ['water', 150, 'water'], ['salt', 10, 'other'],\n     ['levain', 60, 'starter']]],\n   {'flour_total': '363',\n    'hydration': '73.6',\n    'percentages': [['rye0', '91.7'], ['milk', '27.5'], ['water', '41.3'], ['salt', '2.8'],\n                    ['levain', '16.5']]}],\n  ['generated control 2',\n   [[['rye0', 300, 'flour'], ['salt', 9, 'other'], ['bread flour1', 333, 'flour'], ['milk', 100, 'milk'],\n     ['egg', 100, 'egg']]],\n   {'flour_total': '633',\n    'hydration': '25.6',\n    'percentages': [['rye0', '47.4'], ['salt', '1.4'], ['bread flour1', '52.6'], ['milk', '15.8'],\n                    ['egg', '15.8']]}],\n  ['generated control 3',\n   [[['salt', 10, 'other'], ['spelt0', 300, 'flour'], ['egg', 100, 'egg'], ['water', 350, 'water']]],\n   {'flour_total': '300',\n    'hydration': '141.7',\n    'percentages': [['salt', '3.3'], ['spelt0', '100.0'], ['egg', '33.3'], ['water', '116.7']]}]],\n [['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['regression: starter water share',\n   [[['bread flour2', 300, 'flour'], ['milk', 120, 'milk'], ['levain', 150, 'starter'],\n     ['rye1', 200, 'flour'], ['salt', 11, 'other'], ['bread flour0', 100, 'flour'],\n     ['water', 325, 'water']]],\n   {'flour_total': '675',\n    'hydration': '74.7',\n    'percentages': [['bread flour2', '44.4'], ['milk', '17.8'], ['levain', '22.2'], ['rye1', '29.6'],\n                    ['salt', '1.6'], ['bread flour0', '14.8'], ['water', '48.1']]}],\n  ['repair check: starter water share',\n   [[['whole wheat2', 300, 'flour'], ['rye1', 450, 'flour'], ['whole wheat0', 200, 'flour'],\n     ['levain', 150, 'starter'], ['salt', 9, 'other']]],\n   {'flour_total': '1025',\n    'hydration': '7.3',\n    'percentages': [['whole wheat2', '29.3'], ['rye1', '43.9'], ['whole wheat0', '19.5'], ['levain', '14.6'],\n                    ['salt', '0.9']]}],\n  ['generated control 1',\n   [[['spelt1', 100, 'flour'], ['water', 200, 'water'], ['spelt0', 100, 'flour'], ['salt', 10, 'other'],\n     ['egg', 50, 'egg']]],\n   {'flour_total': '200',\n    'hydration': '118.8',\n    'percentages': [['spelt1', '50.0'], ['water', '100.0'], ['spelt0', '50.0'], ['salt', '5.0'],\n                    ['egg', '25.0']]}],\n  ['generated control 2',\n   [[['levain', 60, 'starter'], ['water', 325, 'water'], ['salt', 11, 'other'],\n     ['bread flour1', 200, 'flour'], ['bread flour0', 500, 'flour'], ['milk', 100, 'milk'],\n     ['egg', 100, 'egg']]],\n   {'flour_total': '730',\n    'hydration': '70.8',\n    'percentages': [['levain', '8.2'], ['water', '44.5'], ['salt', '1.5'], ['bread flour1', '27.4'],\n                    ['bread flour0', '68.5'], ['milk', '13.7'], ['egg', '13.7']]}],\n  ['generated control 3',\n   [[['egg', 100, 'egg'], ['whole wheat0', 100, 'flour'], ['salt', 11, 'other'], ['water', 325, 'water'],\n     ['levain', 60, 'starter'], ['spelt1', 333, 'flour']]],\n   {'flour_total': '463',\n    'hydration': '92.9',\n    'percentages': [['egg', '21.6'], ['whole wheat0', '21.6'], ['salt', '2.4'], ['water', '70.2'],\n                    ['levain', '13.0'], ['spelt1', '71.9']]}]],\n [['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['regression: starter water share',\n   [[['spelt0', 250, 'flour'], ['levain', 100, 'starter'], ['bread flour1', 333, 'flour'],\n     ['water', 350, 'water'], ['spelt2', 333, 'flour'], ['egg', 50, 'egg'], ['milk', 120, 'milk'],\n     ['salt', 10, 'other']]],\n   {'flour_total': '966',\n    'hydration': '56.1',\n    'percentages': [['spelt0', '25.9'], ['levain', '10.4'], ['bread flour1', '34.5'], ['water', '36.2'],\n                    ['spelt2', '34.5'], ['egg', '5.2'], ['milk', '12.4'], ['salt', '1.0']]}],\n  ['repair check: starter water share',\n   [[['levain', 100, 'starter'], ['bread flour0', 100, 'flour'], ['salt', 11, 'other'],\n     ['water', 325, 'water']]],\n   {'flour_total': '150',\n    'hydration': '250.0',\n    'percentages': [['levain', '66.7'], ['bread flour0', '66.7'], ['salt', '7.3'], ['water', '216.7']]}],\n  ['generated control 1',\n   [[['salt', 11, 'other'], ['milk', 50, 'milk'], ['rye0', 200, 'flour'], ['water', 150, 'water']]],\n   {'flour_total': '200',\n    'hydration': '96.8',\n    'percentages': [['salt', '5.5'], ['milk', '25.0'], ['rye0', '100.0'], ['water', '75.0']]}],\n  ['generated control 2',\n   [[['whole wheat1', 500, 'flour'], ['whole wheat0', 250, 'flour'], ['egg', 50, 'egg'],\n     ['milk', 120, 'milk'], ['salt', 11, 'other'], ['water', 200, 'water']]],\n   {'flour_total': '750',\n    'hydration': '45.6',\n    'percentages': [['whole wheat1', '66.7'], ['whole wheat0', '33.3'], ['egg', '6.7'], ['milk', '16.0'],\n                    ['salt', '1.5'], ['water', '26.7']]}],\n  ['generated control 3',\n   [[['egg', 100, 'egg'], ['milk', 50, 'milk'], ['whole wheat0', 450, 'flour'], ['salt', 9, 'other'],\n     ['water', 325, 'water']]],\n   {'flour_total': '450',\n    'hydration': '98.6',\n    'percentages': [['egg', '22.2'], ['milk', '11.1'], ['whole wheat0', '100.0'], ['salt', '2.0'],\n                    ['water', '72.2']]}]],\n [['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['regression: starter water share',\n   [[['water', 377, 'water'], ['rye0', 100, 'flour'], ['salt', 9, 'other'], ['milk', 100, 'milk'],\n     ['bread flour1', 250, 'flour'], ['levain', 60, 'starter']]],\n   {'flour_total': '380',\n    'hydration': '130.0',\n    'percentages': [['water', '99.2'], ['rye0', '26.3'], ['salt', '2.4'], ['milk', '26.3'],\n                    ['bread flour1', '65.8'], ['levain', '15.8']]}],\n  ['repair check: starter water share',\n   [[['rye1', 450, 'flour'], ['whole wheat2', 333, 'flour'], ['egg', 50, 'egg'], ['salt', 11, 'other'],\n     ['water', 325, 'water'], ['levain', 60, 'starter'], ['rye0', 333, 'flour']]],\n   {'flour_total': '1146',\n    'hydration': '34.2',\n    'percentages': [['rye1', '39.3'], ['whole wheat2', '29.1'], ['egg', '4.4'], ['salt', '1.0'],\n                    ['water', '28.4'], ['levain', '5.2'], ['rye0', '29.1']]}],\n  ['generated control 1',\n   [[['rye2', 200, 'flour'], ['whole wheat1', 450, 'flour'], ['water', 150, 'water'], ['salt', 9, 'other'],\n     ['milk', 50, 'milk'], ['egg', 50, 'egg'], ['levain', 100, 'starter'], ['rye0', 100, 'flour']]],\n   {'flour_total': '800',\n    'hydration': '35.1',\n    'percentages': [['rye2', '25.0'], ['whole wheat1', '56.3'], ['water', '18.8'], ['salt', '1.1'],\n                    ['milk', '6.3'], ['egg', '6.3'], ['levain', '12.5'], ['rye0', '12.5']]}],\n  ['generated control 2',\n   [[['spelt1', 200, 'flour'], ['whole wheat2', 250, 'flour'], ['rye0', 300, 'flour'],\n     ['salt', 11, 'other']]],\n   {'flour_total': '750',\n    'hydration': '0.0',\n    'percentages': [['spelt1', '26.7'], ['whole wheat2', '33.3'], ['rye0', '40.0'], ['salt', '1.5']]}],\n  ['generated control 3',\n   [[['water', 325, 'water'], ['levain', 150, 'starter'], ['salt', 9, 'other'], ['rye0', 250, 'flour']]],\n   {'flour_total': '325',\n    'hydration': '123.1',\n    'percentages': [['water', '100.0'], ['levain', '46.2'], ['salt', '2.8'], ['rye0', '76.9']]}]]]\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":"480663262394857b4c387ef68bd65a6ceb723d9afd5fe969fc0ee52c0783179f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(ingredients):\n    starter = sum((Fraction(str(g)) for n, g, r in ingredients if r == 'starter'), Fraction(0))\n    flour = sum(Fraction(str(g)) for n, g, r in ingredients if r == 'flour') + starter / 2\n    if flour == 0:\n        return 'error: no flour'\n    def pct(x):\n        v = math.floor(x * 1000 / flour + Fraction(1, 2))\n        return '%d.%d' % divmod(v, 10)\n    rows = [[n, pct(Fraction(str(g)))] for n, g, r in ingredients]\n    water = Fraction(0)\n    for n, g, r in ingredients:\n        if r == 'water':\n            water += Fraction(str(g))\n        elif r == 'milk':\n            water += Fraction(str(g)) * Fraction(87, 100)\n        elif r == 'egg':\n            water += Fraction(str(g)) * Fraction(3, 4)\n        elif r == 'starter':\n            water += Fraction(0)\n    return {'flour_total': str(flour), 'percentages': rows, 'hydration': pct(water)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['regression: starter water share',\n   [[['whole wheat2', 250, 'flour'], ['salt', 9, 'other'], ['levain', 150, 'starter'],\n     ['spelt1', 200, 'flour'], ['water', 377, 'water'], ['spelt0', 100, 'flour'], ['milk', 50, 'milk']]],\n   {'flour_total': '625',\n    'hydration': '79.3',\n    'percentages': [['whole wheat2', '40.0'], ['salt', '1.4'], ['levain', '24.0'], ['spelt1', '32.0'],\n                    ['water', '60.3'], ['spelt0', '16.0'], ['milk', '8.0']]}],\n  ['repair check: starter water share',\n   [[['salt', 9, 'other'], ['levain', 60, 'starter'], ['bread flour1', 200, 'flour'], ['water', 350, 'water'],\n     ['rye0', 450, 'flour'], ['milk', 120, 'milk'], ['egg', 50, 'egg']]],\n   {'flour_total': '680',\n    'hydration': '76.8',\n    'percentages': [['salt', '1.3'], ['levain', '8.8'], ['bread flour1', '29.4'], ['water', '51.5'],\n                    ['rye0', '66.2'], ['milk', '17.6'], ['egg', '7.4']]}],\n  ['generated control 1',\n   [[['egg', 50, 'egg'], ['bread flour1', 250, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other'],\n     ['whole wheat0', 100, 'flour'], ['whole wheat2', 300, 'flour']]],\n   {'flour_total': '650',\n    'hydration': '59.6',\n    'percentages': [['egg', '7.7'], ['bread flour1', '38.5'], ['water', '53.8'], ['salt', '1.5'],\n                    ['whole wheat0', '15.4'], ['whole wheat2', '46.2']]}],\n  ['generated control 2',\n   [[['levain', 60, 'starter'], ['salt', 10, 'other'], ['rye0', 200, 'flour'], ['milk', 100, 'milk'],\n     ['spelt1', 450, 'flour']]],\n   {'flour_total': '680',\n    'hydration': '17.2',\n    'percentages': [['levain', '8.8'], ['salt', '1.5'], ['rye0', '29.4'], ['milk', '14.7'],\n                    ['spelt1', '66.2']]}],\n  ['generated control 3',\n   [[['levain', 150, 'starter'], ['salt', 9, 'other'], ['water', 325, 'water'],\n     ['whole wheat0', 500, 'flour'], ['egg', 50, 'egg']]],\n   {'flour_total': '575',\n    'hydration': '76.1',\n    'percentages': [['levain', '26.1'], ['salt', '1.6'], ['water', '56.5'], ['whole wheat0', '87.0'],\n                    ['egg', '8.7']]}]],\n [['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['regression: starter water share',\n   [[['rye2', 450, 'flour'], ['rye0', 100, 'flour'], ['levain', 100, 'starter'], ['water', 325, 'water'],\n     ['spelt1', 450, 'flour'], ['salt', 10, 'other'], ['egg', 50, 'egg']]],\n   {'flour_total': '1050',\n    'hydration': '39.3',\n    'percentages': [['rye2', '42.9'], ['rye0', '9.5'], ['levain', '9.5'], ['water', '31.0'],\n                    ['spelt1', '42.9'], ['salt', '1.0'], ['egg', '4.8']]}],\n  ['repair check: starter water share',\n   [[['levain', 150, 'starter'], ['rye0', 450, 'flour'], ['salt', 9, 'other'], ['rye1', 500, 'flour'],\n     ['water', 325, 'water']]],\n   {'flour_total': '1025',\n    'hydration': '39.0',\n    'percentages': [['levain', '14.6'], ['rye0', '43.9'], ['salt', '0.9'], ['rye1', '48.8'],\n                    ['water', '31.7']]}],\n  ['generated control 1',\n   [[['rye0', 333, 'flour'], ['milk', 100, 'milk'], ['water', 150, 'water'], ['salt', 10, 'other'],\n     ['levain', 60, 'starter']]],\n   {'flour_total': '363',\n    'hydration': '73.6',\n    'percentages': [['rye0', '91.7'], ['milk', '27.5'], ['water', '41.3'], ['salt', '2.8'],\n                    ['levain', '16.5']]}],\n  ['generated control 2',\n   [[['rye0', 300, 'flour'], ['salt', 9, 'other'], ['bread flour1', 333, 'flour'], ['milk', 100, 'milk'],\n     ['egg', 100, 'egg']]],\n   {'flour_total': '633',\n    'hydration': '25.6',\n    'percentages': [['rye0', '47.4'], ['salt', '1.4'], ['bread flour1', '52.6'], ['milk', '15.8'],\n                    ['egg', '15.8']]}],\n  ['generated control 3',\n   [[['salt', 10, 'other'], ['spelt0', 300, 'flour'], ['egg', 100, 'egg'], ['water', 350, 'water']]],\n   {'flour_total': '300',\n    'hydration': '141.7',\n    'percentages': [['salt', '3.3'], ['spelt0', '100.0'], ['egg', '33.3'], ['water', '116.7']]}]],\n [['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['regression: starter water share',\n   [[['bread flour2', 300, 'flour'], ['milk', 120, 'milk'], ['levain', 150, 'starter'],\n     ['rye1', 200, 'flour'], ['salt', 11, 'other'], ['bread flour0', 100, 'flour'],\n     ['water', 325, 'water']]],\n   {'flour_total': '675',\n    'hydration': '74.7',\n    'percentages': [['bread flour2', '44.4'], ['milk', '17.8'], ['levain', '22.2'], ['rye1', '29.6'],\n                    ['salt', '1.6'], ['bread flour0', '14.8'], ['water', '48.1']]}],\n  ['repair check: starter water share',\n   [[['whole wheat2', 300, 'flour'], ['rye1', 450, 'flour'], ['whole wheat0', 200, 'flour'],\n     ['levain', 150, 'starter'], ['salt', 9, 'other']]],\n   {'flour_total': '1025',\n    'hydration': '7.3',\n    'percentages': [['whole wheat2', '29.3'], ['rye1', '43.9'], ['whole wheat0', '19.5'], ['levain', '14.6'],\n                    ['salt', '0.9']]}],\n  ['generated control 1',\n   [[['spelt1', 100, 'flour'], ['water', 200, 'water'], ['spelt0', 100, 'flour'], ['salt', 10, 'other'],\n     ['egg', 50, 'egg']]],\n   {'flour_total': '200',\n    'hydration': '118.8',\n    'percentages': [['spelt1', '50.0'], ['water', '100.0'], ['spelt0', '50.0'], ['salt', '5.0'],\n                    ['egg', '25.0']]}],\n  ['generated control 2',\n   [[['levain', 60, 'starter'], ['water', 325, 'water'], ['salt', 11, 'other'],\n     ['bread flour1', 200, 'flour'], ['bread flour0', 500, 'flour'], ['milk', 100, 'milk'],\n     ['egg', 100, 'egg']]],\n   {'flour_total': '730',\n    'hydration': '70.8',\n    'percentages': [['levain', '8.2'], ['water', '44.5'], ['salt', '1.5'], ['bread flour1', '27.4'],\n                    ['bread flour0', '68.5'], ['milk', '13.7'], ['egg', '13.7']]}],\n  ['generated control 3',\n   [[['egg', 100, 'egg'], ['whole wheat0', 100, 'flour'], ['salt', 11, 'other'], ['water', 325, 'water'],\n     ['levain', 60, 'starter'], ['spelt1', 333, 'flour']]],\n   {'flour_total': '463',\n    'hydration': '92.9',\n    'percentages': [['egg', '21.6'], ['whole wheat0', '21.6'], ['salt', '2.4'], ['water', '70.2'],\n                    ['levain', '13.0'], ['spelt1', '71.9']]}]],\n [['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['regression: starter water share',\n   [[['spelt0', 250, 'flour'], ['levain', 100, 'starter'], ['bread flour1', 333, 'flour'],\n     ['water', 350, 'water'], ['spelt2', 333, 'flour'], ['egg', 50, 'egg'], ['milk', 120, 'milk'],\n     ['salt', 10, 'other']]],\n   {'flour_total': '966',\n    'hydration': '56.1',\n    'percentages': [['spelt0', '25.9'], ['levain', '10.4'], ['bread flour1', '34.5'], ['water', '36.2'],\n                    ['spelt2', '34.5'], ['egg', '5.2'], ['milk', '12.4'], ['salt', '1.0']]}],\n  ['repair check: starter water share',\n   [[['levain', 100, 'starter'], ['bread flour0', 100, 'flour'], ['salt', 11, 'other'],\n     ['water', 325, 'water']]],\n   {'flour_total': '150',\n    'hydration': '250.0',\n    'percentages': [['levain', '66.7'], ['bread flour0', '66.7'], ['salt', '7.3'], ['water', '216.7']]}],\n  ['generated control 1',\n   [[['salt', 11, 'other'], ['milk', 50, 'milk'], ['rye0', 200, 'flour'], ['water', 150, 'water']]],\n   {'flour_total': '200',\n    'hydration': '96.8',\n    'percentages': [['salt', '5.5'], ['milk', '25.0'], ['rye0', '100.0'], ['water', '75.0']]}],\n  ['generated control 2',\n   [[['whole wheat1', 500, 'flour'], ['whole wheat0', 250, 'flour'], ['egg', 50, 'egg'],\n     ['milk', 120, 'milk'], ['salt', 11, 'other'], ['water', 200, 'water']]],\n   {'flour_total': '750',\n    'hydration': '45.6',\n    'percentages': [['whole wheat1', '66.7'], ['whole wheat0', '33.3'], ['egg', '6.7'], ['milk', '16.0'],\n                    ['salt', '1.5'], ['water', '26.7']]}],\n  ['generated control 3',\n   [[['egg', 100, 'egg'], ['milk', 50, 'milk'], ['whole wheat0', 450, 'flour'], ['salt', 9, 'other'],\n     ['water', 325, 'water']]],\n   {'flour_total': '450',\n    'hydration': '98.6',\n    'percentages': [['egg', '22.2'], ['milk', '11.1'], ['whole wheat0', '100.0'], ['salt', '2.0'],\n                    ['water', '72.2']]}]],\n [['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['regression: starter water share',\n   [[['water', 377, 'water'], ['rye0', 100, 'flour'], ['salt', 9, 'other'], ['milk', 100, 'milk'],\n     ['bread flour1', 250, 'flour'], ['levain', 60, 'starter']]],\n   {'flour_total': '380',\n    'hydration': '130.0',\n    'percentages': [['water', '99.2'], ['rye0', '26.3'], ['salt', '2.4'], ['milk', '26.3'],\n                    ['bread flour1', '65.8'], ['levain', '15.8']]}],\n  ['repair check: starter water share',\n   [[['rye1', 450, 'flour'], ['whole wheat2', 333, 'flour'], ['egg', 50, 'egg'], ['salt', 11, 'other'],\n     ['water', 325, 'water'], ['levain', 60, 'starter'], ['rye0', 333, 'flour']]],\n   {'flour_total': '1146',\n    'hydration': '34.2',\n    'percentages': [['rye1', '39.3'], ['whole wheat2', '29.1'], ['egg', '4.4'], ['salt', '1.0'],\n                    ['water', '28.4'], ['levain', '5.2'], ['rye0', '29.1']]}],\n  ['generated control 1',\n   [[['rye2', 200, 'flour'], ['whole wheat1', 450, 'flour'], ['water', 150, 'water'], ['salt', 9, 'other'],\n     ['milk', 50, 'milk'], ['egg', 50, 'egg'], ['levain', 100, 'starter'], ['rye0', 100, 'flour']]],\n   {'flour_total': '800',\n    'hydration': '35.1',\n    'percentages': [['rye2', '25.0'], ['whole wheat1', '56.3'], ['water', '18.8'], ['salt', '1.1'],\n                    ['milk', '6.3'], ['egg', '6.3'], ['levain', '12.5'], ['rye0', '12.5']]}],\n  ['generated control 2',\n   [[['spelt1', 200, 'flour'], ['whole wheat2', 250, 'flour'], ['rye0', 300, 'flour'],\n     ['salt', 11, 'other']]],\n   {'flour_total': '750',\n    'hydration': '0.0',\n    'percentages': [['spelt1', '26.7'], ['whole wheat2', '33.3'], ['rye0', '40.0'], ['salt', '1.5']]}],\n  ['generated control 3',\n   [[['water', 325, 'water'], ['levain', 150, 'starter'], ['salt', 9, 'other'], ['rye0', 250, 'flour']]],\n   {'flour_total': '325',\n    'hydration': '123.1',\n    'percentages': [['water', '100.0'], ['levain', '46.2'], ['salt', '2.8'], ['rye0', '76.9']]}]]]\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":"4c75cd5f2bb6ffacd39f7e7527c90e763845055ebdf4fa3e3319cb01e7dd7224","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(ingredients):\n    starter = sum((Fraction(str(g)) for n, g, r in ingredients if r == 'starter'), Fraction(0))\n    flour = sum(Fraction(str(g)) for n, g, r in ingredients if r == 'flour') + starter / 2\n    if flour == 0:\n        return 'error: no flour'\n    def pct(x):\n        v = math.floor(x * 1000 / flour + Fraction(1, 2))\n        return '%d.%d' % divmod(v, 10)\n    rows = [[n, pct(Fraction(str(g)))] for n, g, r in ingredients]\n    water = Fraction(0)\n    for n, g, r in ingredients:\n        if r == 'water':\n            water += Fraction(str(g))\n        elif r == 'milk':\n            water += Fraction(str(g)) * Fraction(87, 100)\n        elif r == 'egg':\n            water += Fraction(str(g)) * Fraction(3, 4)\n        elif r == 'starter':\n            water += Fraction(str(g)) / 2\n    return {'flour_total': str(flour), 'percentages': rows, 'hydration': pct(water)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['regression: starter water share',\n   [[['whole wheat2', 250, 'flour'], ['salt', 9, 'other'], ['levain', 150, 'starter'],\n     ['spelt1', 200, 'flour'], ['water', 377, 'water'], ['spelt0', 100, 'flour'], ['milk', 50, 'milk']]],\n   {'flour_total': '625',\n    'hydration': '79.3',\n    'percentages': [['whole wheat2', '40.0'], ['salt', '1.4'], ['levain', '24.0'], ['spelt1', '32.0'],\n                    ['water', '60.3'], ['spelt0', '16.0'], ['milk', '8.0']]}],\n  ['repair check: starter water share',\n   [[['salt', 9, 'other'], ['levain', 60, 'starter'], ['bread flour1', 200, 'flour'], ['water', 350, 'water'],\n     ['rye0', 450, 'flour'], ['milk', 120, 'milk'], ['egg', 50, 'egg']]],\n   {'flour_total': '680',\n    'hydration': '76.8',\n    'percentages': [['salt', '1.3'], ['levain', '8.8'], ['bread flour1', '29.4'], ['water', '51.5'],\n                    ['rye0', '66.2'], ['milk', '17.6'], ['egg', '7.4']]}],\n  ['generated control 1',\n   [[['egg', 50, 'egg'], ['bread flour1', 250, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other'],\n     ['whole wheat0', 100, 'flour'], ['whole wheat2', 300, 'flour']]],\n   {'flour_total': '650',\n    'hydration': '59.6',\n    'percentages': [['egg', '7.7'], ['bread flour1', '38.5'], ['water', '53.8'], ['salt', '1.5'],\n                    ['whole wheat0', '15.4'], ['whole wheat2', '46.2']]}],\n  ['generated control 2',\n   [[['levain', 60, 'starter'], ['salt', 10, 'other'], ['rye0', 200, 'flour'], ['milk', 100, 'milk'],\n     ['spelt1', 450, 'flour']]],\n   {'flour_total': '680',\n    'hydration': '17.2',\n    'percentages': [['levain', '8.8'], ['salt', '1.5'], ['rye0', '29.4'], ['milk', '14.7'],\n                    ['spelt1', '66.2']]}],\n  ['generated control 3',\n   [[['levain', 150, 'starter'], ['salt', 9, 'other'], ['water', 325, 'water'],\n     ['whole wheat0', 500, 'flour'], ['egg', 50, 'egg']]],\n   {'flour_total': '575',\n    'hydration': '76.1',\n    'percentages': [['levain', '26.1'], ['salt', '1.6'], ['water', '56.5'], ['whole wheat0', '87.0'],\n                    ['egg', '8.7']]}]],\n [['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['regression: starter water share',\n   [[['rye2', 450, 'flour'], ['rye0', 100, 'flour'], ['levain', 100, 'starter'], ['water', 325, 'water'],\n     ['spelt1', 450, 'flour'], ['salt', 10, 'other'], ['egg', 50, 'egg']]],\n   {'flour_total': '1050',\n    'hydration': '39.3',\n    'percentages': [['rye2', '42.9'], ['rye0', '9.5'], ['levain', '9.5'], ['water', '31.0'],\n                    ['spelt1', '42.9'], ['salt', '1.0'], ['egg', '4.8']]}],\n  ['repair check: starter water share',\n   [[['levain', 150, 'starter'], ['rye0', 450, 'flour'], ['salt', 9, 'other'], ['rye1', 500, 'flour'],\n     ['water', 325, 'water']]],\n   {'flour_total': '1025',\n    'hydration': '39.0',\n    'percentages': [['levain', '14.6'], ['rye0', '43.9'], ['salt', '0.9'], ['rye1', '48.8'],\n                    ['water', '31.7']]}],\n  ['generated control 1',\n   [[['rye0', 333, 'flour'], ['milk', 100, 'milk'], ['water', 150, 'water'], ['salt', 10, 'other'],\n     ['levain', 60, 'starter']]],\n   {'flour_total': '363',\n    'hydration': '73.6',\n    'percentages': [['rye0', '91.7'], ['milk', '27.5'], ['water', '41.3'], ['salt', '2.8'],\n                    ['levain', '16.5']]}],\n  ['generated control 2',\n   [[['rye0', 300, 'flour'], ['salt', 9, 'other'], ['bread flour1', 333, 'flour'], ['milk', 100, 'milk'],\n     ['egg', 100, 'egg']]],\n   {'flour_total': '633',\n    'hydration': '25.6',\n    'percentages': [['rye0', '47.4'], ['salt', '1.4'], ['bread flour1', '52.6'], ['milk', '15.8'],\n                    ['egg', '15.8']]}],\n  ['generated control 3',\n   [[['salt', 10, 'other'], ['spelt0', 300, 'flour'], ['egg', 100, 'egg'], ['water', 350, 'water']]],\n   {'flour_total': '300',\n    'hydration': '141.7',\n    'percentages': [['salt', '3.3'], ['spelt0', '100.0'], ['egg', '33.3'], ['water', '116.7']]}]],\n [['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['regression: starter water share',\n   [[['bread flour2', 300, 'flour'], ['milk', 120, 'milk'], ['levain', 150, 'starter'],\n     ['rye1', 200, 'flour'], ['salt', 11, 'other'], ['bread flour0', 100, 'flour'],\n     ['water', 325, 'water']]],\n   {'flour_total': '675',\n    'hydration': '74.7',\n    'percentages': [['bread flour2', '44.4'], ['milk', '17.8'], ['levain', '22.2'], ['rye1', '29.6'],\n                    ['salt', '1.6'], ['bread flour0', '14.8'], ['water', '48.1']]}],\n  ['repair check: starter water share',\n   [[['whole wheat2', 300, 'flour'], ['rye1', 450, 'flour'], ['whole wheat0', 200, 'flour'],\n     ['levain', 150, 'starter'], ['salt', 9, 'other']]],\n   {'flour_total': '1025',\n    'hydration': '7.3',\n    'percentages': [['whole wheat2', '29.3'], ['rye1', '43.9'], ['whole wheat0', '19.5'], ['levain', '14.6'],\n                    ['salt', '0.9']]}],\n  ['generated control 1',\n   [[['spelt1', 100, 'flour'], ['water', 200, 'water'], ['spelt0', 100, 'flour'], ['salt', 10, 'other'],\n     ['egg', 50, 'egg']]],\n   {'flour_total': '200',\n    'hydration': '118.8',\n    'percentages': [['spelt1', '50.0'], ['water', '100.0'], ['spelt0', '50.0'], ['salt', '5.0'],\n                    ['egg', '25.0']]}],\n  ['generated control 2',\n   [[['levain', 60, 'starter'], ['water', 325, 'water'], ['salt', 11, 'other'],\n     ['bread flour1', 200, 'flour'], ['bread flour0', 500, 'flour'], ['milk', 100, 'milk'],\n     ['egg', 100, 'egg']]],\n   {'flour_total': '730',\n    'hydration': '70.8',\n    'percentages': [['levain', '8.2'], ['water', '44.5'], ['salt', '1.5'], ['bread flour1', '27.4'],\n                    ['bread flour0', '68.5'], ['milk', '13.7'], ['egg', '13.7']]}],\n  ['generated control 3',\n   [[['egg', 100, 'egg'], ['whole wheat0', 100, 'flour'], ['salt', 11, 'other'], ['water', 325, 'water'],\n     ['levain', 60, 'starter'], ['spelt1', 333, 'flour']]],\n   {'flour_total': '463',\n    'hydration': '92.9',\n    'percentages': [['egg', '21.6'], ['whole wheat0', '21.6'], ['salt', '2.4'], ['water', '70.2'],\n                    ['levain', '13.0'], ['spelt1', '71.9']]}]],\n [['two flours with levain',\n   [[['bread', 400, 'flour'], ['rye', 100, 'flour'], ['levain', 100, 'starter'], ['water', 330, 'water']]],\n   {'flour_total': '550',\n    'hydration': '69.1',\n    'percentages': [['bread', '72.7'], ['rye', '18.2'], ['levain', '18.2'], ['water', '60.0']]}],\n  ['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['regression: starter water share',\n   [[['spelt0', 250, 'flour'], ['levain', 100, 'starter'], ['bread flour1', 333, 'flour'],\n     ['water', 350, 'water'], ['spelt2', 333, 'flour'], ['egg', 50, 'egg'], ['milk', 120, 'milk'],\n     ['salt', 10, 'other']]],\n   {'flour_total': '966',\n    'hydration': '56.1',\n    'percentages': [['spelt0', '25.9'], ['levain', '10.4'], ['bread flour1', '34.5'], ['water', '36.2'],\n                    ['spelt2', '34.5'], ['egg', '5.2'], ['milk', '12.4'], ['salt', '1.0']]}],\n  ['repair check: starter water share',\n   [[['levain', 100, 'starter'], ['bread flour0', 100, 'flour'], ['salt', 11, 'other'],\n     ['water', 325, 'water']]],\n   {'flour_total': '150',\n    'hydration': '250.0',\n    'percentages': [['levain', '66.7'], ['bread flour0', '66.7'], ['salt', '7.3'], ['water', '216.7']]}],\n  ['generated control 1',\n   [[['salt', 11, 'other'], ['milk', 50, 'milk'], ['rye0', 200, 'flour'], ['water', 150, 'water']]],\n   {'flour_total': '200',\n    'hydration': '96.8',\n    'percentages': [['salt', '5.5'], ['milk', '25.0'], ['rye0', '100.0'], ['water', '75.0']]}],\n  ['generated control 2',\n   [[['whole wheat1', 500, 'flour'], ['whole wheat0', 250, 'flour'], ['egg', 50, 'egg'],\n     ['milk', 120, 'milk'], ['salt', 11, 'other'], ['water', 200, 'water']]],\n   {'flour_total': '750',\n    'hydration': '45.6',\n    'percentages': [['whole wheat1', '66.7'], ['whole wheat0', '33.3'], ['egg', '6.7'], ['milk', '16.0'],\n                    ['salt', '1.5'], ['water', '26.7']]}],\n  ['generated control 3',\n   [[['egg', 100, 'egg'], ['milk', 50, 'milk'], ['whole wheat0', 450, 'flour'], ['salt', 9, 'other'],\n     ['water', 325, 'water']]],\n   {'flour_total': '450',\n    'hydration': '98.6',\n    'percentages': [['egg', '22.2'], ['milk', '11.1'], ['whole wheat0', '100.0'], ['salt', '2.0'],\n                    ['water', '72.2']]}]],\n [['lean dough control', [[['flour', 500, 'flour'], ['water', 350, 'water'], ['salt', 10, 'other']]],\n   {'flour_total': '500',\n    'hydration': '70.0',\n    'percentages': [['flour', '100.0'], ['water', '70.0'], ['salt', '2.0']]}],\n  ['no flour', [[['water', 100, 'water']]], 'error: no flour'],\n  ['enriched dough', [[['flour', 400, 'flour'], ['milk', 200, 'milk'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '62.3',\n    'percentages': [['flour', '100.0'], ['milk', '50.0'], ['egg', '25.0']]}],\n  ['regression: starter water share',\n   [[['water', 377, 'water'], ['rye0', 100, 'flour'], ['salt', 9, 'other'], ['milk', 100, 'milk'],\n     ['bread flour1', 250, 'flour'], ['levain', 60, 'starter']]],\n   {'flour_total': '380',\n    'hydration': '130.0',\n    'percentages': [['water', '99.2'], ['rye0', '26.3'], ['salt', '2.4'], ['milk', '26.3'],\n                    ['bread flour1', '65.8'], ['levain', '15.8']]}],\n  ['repair check: starter water share',\n   [[['rye1', 450, 'flour'], ['whole wheat2', 333, 'flour'], ['egg', 50, 'egg'], ['salt', 11, 'other'],\n     ['water', 325, 'water'], ['levain', 60, 'starter'], ['rye0', 333, 'flour']]],\n   {'flour_total': '1146',\n    'hydration': '34.2',\n    'percentages': [['rye1', '39.3'], ['whole wheat2', '29.1'], ['egg', '4.4'], ['salt', '1.0'],\n                    ['water', '28.4'], ['levain', '5.2'], ['rye0', '29.1']]}],\n  ['generated control 1',\n   [[['rye2', 200, 'flour'], ['whole wheat1', 450, 'flour'], ['water', 150, 'water'], ['salt', 9, 'other'],\n     ['milk', 50, 'milk'], ['egg', 50, 'egg'], ['levain', 100, 'starter'], ['rye0', 100, 'flour']]],\n   {'flour_total': '800',\n    'hydration': '35.1',\n    'percentages': [['rye2', '25.0'], ['whole wheat1', '56.3'], ['water', '18.8'], ['salt', '1.1'],\n                    ['milk', '6.3'], ['egg', '6.3'], ['levain', '12.5'], ['rye0', '12.5']]}],\n  ['generated control 2',\n   [[['spelt1', 200, 'flour'], ['whole wheat2', 250, 'flour'], ['rye0', 300, 'flour'],\n     ['salt', 11, 'other']]],\n   {'flour_total': '750',\n    'hydration': '0.0',\n    'percentages': [['spelt1', '26.7'], ['whole wheat2', '33.3'], ['rye0', '40.0'], ['salt', '1.5']]}],\n  ['generated control 3',\n   [[['water', 325, 'water'], ['levain', 150, 'starter'], ['salt', 9, 'other'], ['rye0', 250, 'flour']]],\n   {'flour_total': '325',\n    'hydration': '123.1',\n    'percentages': [['water', '100.0'], ['levain', '46.2'], ['salt', '2.8'], ['rye0', '76.9']]}]]]\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-recipe_scaling_and_nutrition-bakers-percentage-starter-water-share","generated_at":"2026-09-29T14:52:27.335521+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Bread formulas are written and scaled in baker's percentages, and hydration drives dough handling.","repair":"Add half of the starter weight to hydration water.","root_cause":"The water half of the starter is left out of hydration.","sha256":"f0282157c5cc6dff16a006a987f097a2bf98b534db6eb289c318d1b92a8605e0","title":"Baker's percentage calculator: starter water share · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.406,"exit_code":1,"observations":[{"actual":{"flour_total":"500","hydration":"70.0","percentages":[["flour","100.0"],["water","70.0"],["salt","2.0"]]},"check":"lean dough control","expected":{"flour_total":"500","hydration":"70.0","percentages":[["flour","100.0"],["water","70.0"],["salt","2.0"]]},"passed":true},{"actual":"error: no flour","check":"no flour","expected":"error: no flour","passed":true},{"actual":{"flour_total":"400","hydration":"62.3","percentages":[["flour","100.0"],["milk","50.0"],["egg","25.0"]]},"check":"enriched dough","expected":{"flour_total":"400","hydration":"62.3","percentages":[["flour","100.0"],["milk","50.0"],["egg","25.0"]]},"passed":true},{"actual":{"flour_total":"625","hydration":"91.3","percentages":[["whole wheat2","40.0"],["salt","1.4"],["levain","24.0"],["spelt1","32.0"],["water","60.3"],["spelt0","16.0"],["milk","8.0"]]},"check":"regression: starter water share","expected":{"flour_total":"625","hydration":"79.3","percentages":[["whole wheat2","40.0"],["salt","1.4"],["levain","24.0"],["spelt1","32.0"],["water","60.3"],["spelt0","16.0"],["milk","8.0"]]},"passed":false},{"actual":{"flour_total":"680","hydration":"81.2","percentages":[["salt","1.3"],["levain","8.8"],["bread flour1","29.4"],["water","51.5"],["rye0","66.2"],["milk","17.6"],["egg","7.4"]]},"check":"repair check: starter water share","expected":{"flour_total":"680","hydration":"76.8","percentages":[["salt","1.3"],["levain","8.8"],["bread flour1","29.4"],["water","51.5"],["rye0","66.2"],["milk","17.6"],["egg","7.4"]]},"passed":false},{"actual":{"flour_total":"650","hydration":"59.6","percentages":[["egg","7.7"],["bread flour1","38.5"],["water","53.8"],["salt","1.5"],["whole wheat0","15.4"],["whole wheat2","46.2"]]},"check":"generated control 1","expected":{"flour_total":"650","hydration":"59.6","percentages":[["egg","7.7"],["bread flour1","38.5"],["water","53.8"],["salt","1.5"],["whole wheat0","15.4"],["whole wheat2","46.2"]]},"passed":true},{"actual":{"flour_total":"680","hydration":"21.6","percentages":[["levain","8.8"],["salt","1.5"],["rye0","29.4"],["milk","14.7"],["spelt1","66.2"]]},"check":"generated control 2","expected":{"flour_total":"680","hydration":"17.2","percentages":[["levain","8.8"],["salt","1.5"],["rye0","29.4"],["milk","14.7"],["spelt1","66.2"]]},"passed":false},{"actual":{"flour_total":"575","hydration":"89.1","percentages":[["levain","26.1"],["salt","1.6"],["water","56.5"],["whole wheat0","87.0"],["egg","8.7"]]},"check":"generated control 3","expected":{"flour_total":"575","hydration":"76.1","percentages":[["levain","26.1"],["salt","1.6"],["water","56.5"],["whole wheat0","87.0"],["egg","8.7"]]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"lean dough control\", \"actual\": {\"flour_total\": \"500\", \"percentages\": [[\"flour\", \"100.0\"], [\"water\", \"70.0\"], [\"salt\", \"2.0\"]], \"hydration\": \"70.0\"}, \"expected\": {\"flour_total\": \"500\", \"hydration\": \"70.0\", \"percentages\": [[\"flour\", \"100.0\"], [\"water\", \"70.0\"], [\"salt\", \"2.0\"]]}, \"passed\": true}, {\"check\": \"no flour\", \"actual\": \"error: no flour\", \"expected\": \"error: no flour\", \"passed\": true}, {\"check\": \"enriched dough\", \"actual\": {\"flour_total\": \"400\", \"percentages\": [[\"flour\", \"100.0\"], [\"milk\", \"50.0\"], [\"egg\", \"25.0\"]], \"hydration\": \"62.3\"}, \"expected\": {\"flour_total\": \"400\", \"hydration\": \"62.3\", \"percentages\": [[\"flour\", \"100.0\"], [\"milk\", \"50.0\"], [\"egg\", \"25.0\"]]}, \"passed\": true}, {\"check\": \"regression: starter water share\", \"actual\": {\"flour_total\": \"625\", \"percentages\": [[\"whole wheat2\", \"40.0\"], [\"salt\", \"1.4\"], [\"levain\", \"24.0\"], [\"spelt1\", \"32.0\"], [\"water\", \"60.3\"], [\"spelt0\", \"16.0\"], [\"milk\", \"8.0\"]], \"hydration\": \"91.3\"}, \"expected\": {\"flour_total\": \"625\", \"hydration\": \"79.3\", \"percentages\": [[\"whole wheat2\", \"40.0\"], [\"salt\", \"1.4\"], [\"levain\", \"24.0\"], [\"spelt1\", \"32.0\"], [\"water\", \"60.3\"], [\"spelt0\", \"16.0\"], [\"milk\", \"8.0\"]]}, \"passed\": false}, {\"check\": \"repair check: starter water share\", \"actual\": {\"flour_total\": \"680\", \"percentages\": [[\"salt\", \"1.3\"], [\"levain\", \"8.8\"], [\"bread flour1\", \"29.4\"], [\"water\", \"51.5\"], [\"rye0\", \"66.2\"], [\"milk\", \"17.6\"], [\"egg\", \"7.4\"]], \"hydration\": \"81.2\"}, \"expected\": {\"flour_total\": \"680\", \"hydration\": \"76.8\", \"percentages\": [[\"salt\", \"1.3\"], [\"levain\", \"8.8\"], [\"bread flour1\", \"29.4\"], [\"water\", \"51.5\"], [\"rye0\", \"66.2\"], [\"milk\", \"17.6\"], [\"egg\", \"7.4\"]]}, \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": {\"flour_total\": \"650\", \"percentages\": [[\"egg\", \"7.7\"], [\"bread flour1\", \"38.5\"], [\"water\", \"53.8\"], [\"salt\", \"1.5\"], [\"whole wheat0\", \"15.4\"], [\"whole wheat2\", \"46.2\"]], \"hydration\": \"59.6\"}, \"expected\": {\"flour_total\": \"650\", \"hydration\": \"59.6\", \"percentages\": [[\"egg\", \"7.7\"], [\"bread flour1\", \"38.5\"], [\"water\", \"53.8\"], [\"salt\", \"1.5\"], [\"whole wheat0\", \"15.4\"], [\"whole wheat2\", \"46.2\"]]}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"flour_total\": \"680\", \"percentages\": [[\"levain\", \"8.8\"], [\"salt\", \"1.5\"], [\"rye0\", \"29.4\"], [\"milk\", \"14.7\"], [\"spelt1\", \"66.2\"]], \"hydration\": \"21.6\"}, \"expected\": {\"flour_total\": \"680\", \"hydration\": \"17.2\", \"percentages\": [[\"levain\", \"8.8\"], [\"salt\", \"1.5\"], [\"rye0\", \"29.4\"], [\"milk\", \"14.7\"], [\"spelt1\", \"66.2\"]]}, \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": {\"flour_total\": \"575\", \"percentages\": [[\"levain\", \"26.1\"], [\"salt\", \"1.6\"], [\"water\", \"56.5\"], [\"whole wheat0\", \"87.0\"], [\"egg\", \"8.7\"]], \"hydration\": \"89.1\"}, \"expected\": {\"flour_total\": \"575\", \"hydration\": \"76.1\", \"percentages\": [[\"levain\", \"26.1\"], [\"salt\", \"1.6\"], [\"water\", \"56.5\"], [\"whole wheat0\", \"87.0\"], [\"egg\", \"8.7\"]]}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.987,"exit_code":1,"observations":[{"actual":{"flour_total":"500","hydration":"70.0","percentages":[["flour","100.0"],["water","70.0"],["salt","2.0"]]},"check":"lean dough control","expected":{"flour_total":"500","hydration":"70.0","percentages":[["flour","100.0"],["water","70.0"],["salt","2.0"]]},"passed":true},{"actual":"error: no flour","check":"no flour","expected":"error: no flour","passed":true},{"actual":{"flour_total":"400","hydration":"62.3","percentages":[["flour","100.0"],["milk","50.0"],["egg","25.0"]]},"check":"enriched dough","expected":{"flour_total":"400","hydration":"62.3","percentages":[["flour","100.0"],["milk","50.0"],["egg","25.0"]]},"passed":true},{"actual":{"flour_total":"625","hydration":"67.3","percentages":[["whole wheat2","40.0"],["salt","1.4"],["levain","24.0"],["spelt1","32.0"],["water","60.3"],["spelt0","16.0"],["milk","8.0"]]},"check":"regression: starter water share","expected":{"flour_total":"625","hydration":"79.3","percentages":[["whole wheat2","40.0"],["salt","1.4"],["levain","24.0"],["spelt1","32.0"],["water","60.3"],["spelt0","16.0"],["milk","8.0"]]},"passed":false},{"actual":{"flour_total":"680","hydration":"72.3","percentages":[["salt","1.3"],["levain","8.8"],["bread flour1","29.4"],["water","51.5"],["rye0","66.2"],["milk","17.6"],["egg","7.4"]]},"check":"repair check: starter water share","expected":{"flour_total":"680","hydration":"76.8","percentages":[["salt","1.3"],["levain","8.8"],["bread flour1","29.4"],["water","51.5"],["rye0","66.2"],["milk","17.6"],["egg","7.4"]]},"passed":false},{"actual":{"flour_total":"650","hydration":"59.6","percentages":[["egg","7.7"],["bread flour1","38.5"],["water","53.8"],["salt","1.5"],["whole wheat0","15.4"],["whole wheat2","46.2"]]},"check":"generated control 1","expected":{"flour_total":"650","hydration":"59.6","percentages":[["egg","7.7"],["bread flour1","38.5"],["water","53.8"],["salt","1.5"],["whole wheat0","15.4"],["whole wheat2","46.2"]]},"passed":true},{"actual":{"flour_total":"680","hydration":"12.8","percentages":[["levain","8.8"],["salt","1.5"],["rye0","29.4"],["milk","14.7"],["spelt1","66.2"]]},"check":"generated control 2","expected":{"flour_total":"680","hydration":"17.2","percentages":[["levain","8.8"],["salt","1.5"],["rye0","29.4"],["milk","14.7"],["spelt1","66.2"]]},"passed":false},{"actual":{"flour_total":"575","hydration":"63.0","percentages":[["levain","26.1"],["salt","1.6"],["water","56.5"],["whole wheat0","87.0"],["egg","8.7"]]},"check":"generated control 3","expected":{"flour_total":"575","hydration":"76.1","percentages":[["levain","26.1"],["salt","1.6"],["water","56.5"],["whole wheat0","87.0"],["egg","8.7"]]},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"lean dough control\", \"actual\": {\"flour_total\": \"500\", \"percentages\": [[\"flour\", \"100.0\"], [\"water\", \"70.0\"], [\"salt\", \"2.0\"]], \"hydration\": \"70.0\"}, \"expected\": {\"flour_total\": \"500\", \"hydration\": \"70.0\", \"percentages\": [[\"flour\", \"100.0\"], [\"water\", \"70.0\"], [\"salt\", \"2.0\"]]}, \"passed\": true}, {\"check\": \"no flour\", \"actual\": \"error: no flour\", \"expected\": \"error: no flour\", \"passed\": true}, {\"check\": \"enriched dough\", \"actual\": {\"flour_total\": \"400\", \"percentages\": [[\"flour\", \"100.0\"], [\"milk\", \"50.0\"], [\"egg\", \"25.0\"]], \"hydration\": \"62.3\"}, \"expected\": {\"flour_total\": \"400\", \"hydration\": \"62.3\", \"percentages\": [[\"flour\", \"100.0\"], [\"milk\", \"50.0\"], [\"egg\", \"25.0\"]]}, \"passed\": true}, {\"check\": \"regression: starter water share\", \"actual\": {\"flour_total\": \"625\", \"percentages\": [[\"whole wheat2\", \"40.0\"], [\"salt\", \"1.4\"], [\"levain\", \"24.0\"], [\"spelt1\", \"32.0\"], [\"water\", \"60.3\"], [\"spelt0\", \"16.0\"], [\"milk\", \"8.0\"]], \"hydration\": \"67.3\"}, \"expected\": {\"flour_total\": \"625\", \"hydration\": \"79.3\", \"percentages\": [[\"whole wheat2\", \"40.0\"], [\"salt\", \"1.4\"], [\"levain\", \"24.0\"], [\"spelt1\", \"32.0\"], [\"water\", \"60.3\"], [\"spelt0\", \"16.0\"], [\"milk\", \"8.0\"]]}, \"passed\": false}, {\"check\": \"repair check: starter water share\", \"actual\": {\"flour_total\": \"680\", \"percentages\": [[\"salt\", \"1.3\"], [\"levain\", \"8.8\"], [\"bread flour1\", \"29.4\"], [\"water\", \"51.5\"], [\"rye0\", \"66.2\"], [\"milk\", \"17.6\"], [\"egg\", \"7.4\"]], \"hydration\": \"72.3\"}, \"expected\": {\"flour_total\": \"680\", \"hydration\": \"76.8\", \"percentages\": [[\"salt\", \"1.3\"], [\"levain\", \"8.8\"], [\"bread flour1\", \"29.4\"], [\"water\", \"51.5\"], [\"rye0\", \"66.2\"], [\"milk\", \"17.6\"], [\"egg\", \"7.4\"]]}, \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": {\"flour_total\": \"650\", \"percentages\": [[\"egg\", \"7.7\"], [\"bread flour1\", \"38.5\"], [\"water\", \"53.8\"], [\"salt\", \"1.5\"], [\"whole wheat0\", \"15.4\"], [\"whole wheat2\", \"46.2\"]], \"hydration\": \"59.6\"}, \"expected\": {\"flour_total\": \"650\", \"hydration\": \"59.6\", \"percentages\": [[\"egg\", \"7.7\"], [\"bread flour1\", \"38.5\"], [\"water\", \"53.8\"], [\"salt\", \"1.5\"], [\"whole wheat0\", \"15.4\"], [\"whole wheat2\", \"46.2\"]]}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"flour_total\": \"680\", \"percentages\": [[\"levain\", \"8.8\"], [\"salt\", \"1.5\"], [\"rye0\", \"29.4\"], [\"milk\", \"14.7\"], [\"spelt1\", \"66.2\"]], \"hydration\": \"12.8\"}, \"expected\": {\"flour_total\": \"680\", \"hydration\": \"17.2\", \"percentages\": [[\"levain\", \"8.8\"], [\"salt\", \"1.5\"], [\"rye0\", \"29.4\"], [\"milk\", \"14.7\"], [\"spelt1\", \"66.2\"]]}, \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": {\"flour_total\": \"575\", \"percentages\": [[\"levain\", \"26.1\"], [\"salt\", \"1.6\"], [\"water\", \"56.5\"], [\"whole wheat0\", \"87.0\"], [\"egg\", \"8.7\"]], \"hydration\": \"63.0\"}, \"expected\": {\"flour_total\": \"575\", \"hydration\": \"76.1\", \"percentages\": [[\"levain\", \"26.1\"], [\"salt\", \"1.6\"], [\"water\", \"56.5\"], [\"whole wheat0\", \"87.0\"], [\"egg\", \"8.7\"]]}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.293,"exit_code":0,"observations":[{"actual":{"flour_total":"500","hydration":"70.0","percentages":[["flour","100.0"],["water","70.0"],["salt","2.0"]]},"check":"lean dough control","expected":{"flour_total":"500","hydration":"70.0","percentages":[["flour","100.0"],["water","70.0"],["salt","2.0"]]},"passed":true},{"actual":"error: no flour","check":"no flour","expected":"error: no flour","passed":true},{"actual":{"flour_total":"400","hydration":"62.3","percentages":[["flour","100.0"],["milk","50.0"],["egg","25.0"]]},"check":"enriched dough","expected":{"flour_total":"400","hydration":"62.3","percentages":[["flour","100.0"],["milk","50.0"],["egg","25.0"]]},"passed":true},{"actual":{"flour_total":"625","hydration":"79.3","percentages":[["whole wheat2","40.0"],["salt","1.4"],["levain","24.0"],["spelt1","32.0"],["water","60.3"],["spelt0","16.0"],["milk","8.0"]]},"check":"regression: starter water share","expected":{"flour_total":"625","hydration":"79.3","percentages":[["whole wheat2","40.0"],["salt","1.4"],["levain","24.0"],["spelt1","32.0"],["water","60.3"],["spelt0","16.0"],["milk","8.0"]]},"passed":true},{"actual":{"flour_total":"680","hydration":"76.8","percentages":[["salt","1.3"],["levain","8.8"],["bread flour1","29.4"],["water","51.5"],["rye0","66.2"],["milk","17.6"],["egg","7.4"]]},"check":"repair check: starter water share","expected":{"flour_total":"680","hydration":"76.8","percentages":[["salt","1.3"],["levain","8.8"],["bread flour1","29.4"],["water","51.5"],["rye0","66.2"],["milk","17.6"],["egg","7.4"]]},"passed":true},{"actual":{"flour_total":"650","hydration":"59.6","percentages":[["egg","7.7"],["bread flour1","38.5"],["water","53.8"],["salt","1.5"],["whole wheat0","15.4"],["whole wheat2","46.2"]]},"check":"generated control 1","expected":{"flour_total":"650","hydration":"59.6","percentages":[["egg","7.7"],["bread flour1","38.5"],["water","53.8"],["salt","1.5"],["whole wheat0","15.4"],["whole wheat2","46.2"]]},"passed":true},{"actual":{"flour_total":"680","hydration":"17.2","percentages":[["levain","8.8"],["salt","1.5"],["rye0","29.4"],["milk","14.7"],["spelt1","66.2"]]},"check":"generated control 2","expected":{"flour_total":"680","hydration":"17.2","percentages":[["levain","8.8"],["salt","1.5"],["rye0","29.4"],["milk","14.7"],["spelt1","66.2"]]},"passed":true},{"actual":{"flour_total":"575","hydration":"76.1","percentages":[["levain","26.1"],["salt","1.6"],["water","56.5"],["whole wheat0","87.0"],["egg","8.7"]]},"check":"generated control 3","expected":{"flour_total":"575","hydration":"76.1","percentages":[["levain","26.1"],["salt","1.6"],["water","56.5"],["whole wheat0","87.0"],["egg","8.7"]]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"lean dough control\", \"actual\": {\"flour_total\": \"500\", \"percentages\": [[\"flour\", \"100.0\"], [\"water\", \"70.0\"], [\"salt\", \"2.0\"]], \"hydration\": \"70.0\"}, \"expected\": {\"flour_total\": \"500\", \"hydration\": \"70.0\", \"percentages\": [[\"flour\", \"100.0\"], [\"water\", \"70.0\"], [\"salt\", \"2.0\"]]}, \"passed\": true}, {\"check\": \"no flour\", \"actual\": \"error: no flour\", \"expected\": \"error: no flour\", \"passed\": true}, {\"check\": \"enriched dough\", \"actual\": {\"flour_total\": \"400\", \"percentages\": [[\"flour\", \"100.0\"], [\"milk\", \"50.0\"], [\"egg\", \"25.0\"]], \"hydration\": \"62.3\"}, \"expected\": {\"flour_total\": \"400\", \"hydration\": \"62.3\", \"percentages\": [[\"flour\", \"100.0\"], [\"milk\", \"50.0\"], [\"egg\", \"25.0\"]]}, \"passed\": true}, {\"check\": \"regression: starter water share\", \"actual\": {\"flour_total\": \"625\", \"percentages\": [[\"whole wheat2\", \"40.0\"], [\"salt\", \"1.4\"], [\"levain\", \"24.0\"], [\"spelt1\", \"32.0\"], [\"water\", \"60.3\"], [\"spelt0\", \"16.0\"], [\"milk\", \"8.0\"]], \"hydration\": \"79.3\"}, \"expected\": {\"flour_total\": \"625\", \"hydration\": \"79.3\", \"percentages\": [[\"whole wheat2\", \"40.0\"], [\"salt\", \"1.4\"], [\"levain\", \"24.0\"], [\"spelt1\", \"32.0\"], [\"water\", \"60.3\"], [\"spelt0\", \"16.0\"], [\"milk\", \"8.0\"]]}, \"passed\": true}, {\"check\": \"repair check: starter water share\", \"actual\": {\"flour_total\": \"680\", \"percentages\": [[\"salt\", \"1.3\"], [\"levain\", \"8.8\"], [\"bread flour1\", \"29.4\"], [\"water\", \"51.5\"], [\"rye0\", \"66.2\"], [\"milk\", \"17.6\"], [\"egg\", \"7.4\"]], \"hydration\": \"76.8\"}, \"expected\": {\"flour_total\": \"680\", \"hydration\": \"76.8\", \"percentages\": [[\"salt\", \"1.3\"], [\"levain\", \"8.8\"], [\"bread flour1\", \"29.4\"], [\"water\", \"51.5\"], [\"rye0\", \"66.2\"], [\"milk\", \"17.6\"], [\"egg\", \"7.4\"]]}, \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": {\"flour_total\": \"650\", \"percentages\": [[\"egg\", \"7.7\"], [\"bread flour1\", \"38.5\"], [\"water\", \"53.8\"], [\"salt\", \"1.5\"], [\"whole wheat0\", \"15.4\"], [\"whole wheat2\", \"46.2\"]], \"hydration\": \"59.6\"}, \"expected\": {\"flour_total\": \"650\", \"hydration\": \"59.6\", \"percentages\": [[\"egg\", \"7.7\"], [\"bread flour1\", \"38.5\"], [\"water\", \"53.8\"], [\"salt\", \"1.5\"], [\"whole wheat0\", \"15.4\"], [\"whole wheat2\", \"46.2\"]]}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"flour_total\": \"680\", \"percentages\": [[\"levain\", \"8.8\"], [\"salt\", \"1.5\"], [\"rye0\", \"29.4\"], [\"milk\", \"14.7\"], [\"spelt1\", \"66.2\"]], \"hydration\": \"17.2\"}, \"expected\": {\"flour_total\": \"680\", \"hydration\": \"17.2\", \"percentages\": [[\"levain\", \"8.8\"], [\"salt\", \"1.5\"], [\"rye0\", \"29.4\"], [\"milk\", \"14.7\"], [\"spelt1\", \"66.2\"]]}, \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": {\"flour_total\": \"575\", \"percentages\": [[\"levain\", \"26.1\"], [\"salt\", \"1.6\"], [\"water\", \"56.5\"], [\"whole wheat0\", \"87.0\"], [\"egg\", \"8.7\"]], \"hydration\": \"76.1\"}, \"expected\": {\"flour_total\": \"575\", \"hydration\": \"76.1\", \"percentages\": [[\"levain\", \"26.1\"], [\"salt\", \"1.6\"], [\"water\", \"56.5\"], [\"whole wheat0\", \"87.0\"], [\"egg\", \"8.7\"]]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}