{"abstract":"Adding 100 g of levain raises every percentage because its flour is ignored.","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":"Adding the whole starter weight counts its water as flour too.","family":"w2-recipe_scaling_and_nutrition-bakers-percentage-starter-flour-share","id":"FA-96936","implementations":{"attempt":{"sha256":"2a0befe05ec91d6db82265abfad32c3dba97af14ba396438ac2178b543fa0f35","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\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 flour share',\n   [[['egg', 50, 'egg'], ['water', 377, 'water'], ['bread flour1', 450, 'flour'], ['milk', 100, 'milk'],\n     ['bread flour2', 450, 'flour'], ['salt', 10, 'other'], ['whole wheat0', 333, 'flour'],\n     ['levain', 150, 'starter']]],\n   {'flour_total': '1308',\n    'hydration': '44.1',\n    'percentages': [['egg', '3.8'], ['water', '28.8'], ['bread flour1', '34.4'], ['milk', '7.6'],\n                    ['bread flour2', '34.4'], ['salt', '0.8'], ['whole wheat0', '25.5'],\n                    ['levain', '11.5']]}],\n  ['repair check: starter flour share',\n   [[['salt', 10, 'other'], ['milk', 100, 'milk'], ['water', 325, 'water'], ['levain', 100, 'starter'],\n     ['spelt0', 300, 'flour']]],\n   {'flour_total': '350',\n    'hydration': '132.0',\n    'percentages': [['salt', '2.9'], ['milk', '28.6'], ['water', '92.9'], ['levain', '28.6'],\n                    ['spelt0', '85.7']]}],\n  ['generated control 1',\n   [[['levain', 100, 'starter'], ['rye0', 450, 'flour'], ['milk', 120, 'milk'], ['salt', 11, 'other']]],\n   {'flour_total': '500',\n    'hydration': '30.9',\n    'percentages': [['levain', '20.0'], ['rye0', '90.0'], ['milk', '24.0'], ['salt', '2.2']]}],\n  ['generated control 2',\n   [[['egg', 50, 'egg'], ['water', 150, 'water'], ['milk', 120, 'milk'], ['salt', 9, 'other'],\n     ['bread flour0', 250, 'flour'], ['levain', 60, 'starter']]],\n   {'flour_total': '280',\n    'hydration': '115.0',\n    'percentages': [['egg', '17.9'], ['water', '53.6'], ['milk', '42.9'], ['salt', '3.2'],\n                    ['bread flour0', '89.3'], ['levain', '21.4']]}],\n  ['generated control 3',\n   [[['levain', 100, 'starter'], ['water', 150, 'water'], ['milk', 50, 'milk'],\n     ['whole wheat1', 250, 'flour'], ['salt', 10, 'other'], ['spelt0', 300, 'flour']]],\n   {'flour_total': '600',\n    'hydration': '40.6',\n    'percentages': [['levain', '16.7'], ['water', '25.0'], ['milk', '8.3'], ['whole wheat1', '41.7'],\n                    ['salt', '1.7'], ['spelt0', '50.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  ['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 flour share',\n   [[['water', 150, 'water'], ['bread flour0', 333, 'flour'], ['salt', 10, 'other'], ['milk', 120, 'milk'],\n     ['levain', 100, 'starter']]],\n   {'flour_total': '383',\n    'hydration': '79.5',\n    'percentages': [['water', '39.2'], ['bread flour0', '86.9'], ['salt', '2.6'], ['milk', '31.3'],\n                    ['levain', '26.1']]}],\n  ['repair check: starter flour share',\n   [[['rye1', 450, 'flour'], ['levain', 100, 'starter'], ['salt', 10, 'other'], ['water', 200, 'water'],\n     ['milk', 100, 'milk'], ['spelt0', 100, 'flour']]],\n   {'flour_total': '600',\n    'hydration': '56.2',\n    'percentages': [['rye1', '75.0'], ['levain', '16.7'], ['salt', '1.7'], ['water', '33.3'],\n                    ['milk', '16.7'], ['spelt0', '16.7']]}],\n  ['generated control 1',\n   [[['milk', 100, 'milk'], ['water', 377, 'water'], ['egg', 50, 'egg'], ['whole wheat0', 300, 'flour'],\n     ['salt', 11, 'other']]],\n   {'flour_total': '300',\n    'hydration': '167.2',\n    'percentages': [['milk', '33.3'], ['water', '125.7'], ['egg', '16.7'], ['whole wheat0', '100.0'],\n                    ['salt', '3.7']]}],\n  ['generated control 2',\n   [[['rye1', 333, 'flour'], ['rye0', 250, 'flour'], ['salt', 9, 'other'], ['milk', 50, 'milk'],\n     ['spelt2', 333, 'flour']]],\n   {'flour_total': '916',\n    'hydration': '4.7',\n    'percentages': [['rye1', '36.4'], ['rye0', '27.3'], ['salt', '1.0'], ['milk', '5.5'],\n                    ['spelt2', '36.4']]}],\n  ['generated control 3',\n   [[['water', 150, 'water'], ['milk', 100, 'milk'], ['rye1', 300, 'flour'], ['whole wheat0', 250, 'flour'],\n     ['rye2', 450, 'flour'], ['salt', 9, 'other']]],\n   {'flour_total': '1000',\n    'hydration': '23.7',\n    'percentages': [['water', '15.0'], ['milk', '10.0'], ['rye1', '30.0'], ['whole wheat0', '25.0'],\n                    ['rye2', '45.0'], ['salt', '0.9']]}]],\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 flour share',\n   [[['salt', 9, 'other'], ['water', 350, 'water'], ['milk', 100, 'milk'], ['whole wheat2', 450, 'flour'],\n     ['whole wheat0', 200, 'flour'], ['egg', 100, 'egg'], ['whole wheat1', 300, 'flour'],\n     ['levain', 60, 'starter']]],\n   {'flour_total': '980',\n    'hydration': '55.3',\n    'percentages': [['salt', '0.9'], ['water', '35.7'], ['milk', '10.2'], ['whole wheat2', '45.9'],\n                    ['whole wheat0', '20.4'], ['egg', '10.2'], ['whole wheat1', '30.6'],\n                    ['levain', '6.1']]}],\n  ['repair check: starter flour share',\n   [[['bread flour1', 500, 'flour'], ['levain', 100, 'starter'], ['salt', 10, 'other'],\n     ['bread flour0', 500, 'flour']]],\n   {'flour_total': '1050',\n    'hydration': '4.8',\n    'percentages': [['bread flour1', '47.6'], ['levain', '9.5'], ['salt', '1.0'], ['bread flour0', '47.6']]}],\n  ['generated control 1',\n   [[['whole wheat1', 100, 'flour'], ['whole wheat0', 300, 'flour'], ['water', 325, 'water'],\n     ['salt', 9, 'other'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '100.0',\n    'percentages': [['whole wheat1', '25.0'], ['whole wheat0', '75.0'], ['water', '81.3'], ['salt', '2.3'],\n                    ['egg', '25.0']]}],\n  ['generated control 2',\n   [[['bread flour0', 250, 'flour'], ['salt', 9, 'other'], ['rye1', 200, 'flour'], ['water', 150, 'water']]],\n   {'flour_total': '450',\n    'hydration': '33.3',\n    'percentages': [['bread flour0', '55.6'], ['salt', '2.0'], ['rye1', '44.4'], ['water', '33.3']]}],\n  ['generated control 3',\n   [[['rye2', 333, 'flour'], ['milk', 120, 'milk'], ['whole wheat0', 200, 'flour'], ['salt', 11, 'other'],\n     ['spelt1', 250, 'flour']]],\n   {'flour_total': '783',\n    'hydration': '13.3',\n    'percentages': [['rye2', '42.5'], ['milk', '15.3'], ['whole wheat0', '25.5'], ['salt', '1.4'],\n                    ['spelt1', '31.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 flour share',\n   [[['whole wheat0', 200, 'flour'], ['levain', 60, 'starter'], ['salt', 11, 'other'],\n     ['milk', 100, 'milk']]],\n   {'flour_total': '230',\n    'hydration': '50.9',\n    'percentages': [['whole wheat0', '87.0'], ['levain', '26.1'], ['salt', '4.8'], ['milk', '43.5']]}],\n  ['repair check: starter flour share',\n   [[['salt', 10, 'other'], ['milk', 120, 'milk'], ['water', 150, 'water'], ['levain', 150, 'starter'],\n     ['egg', 50, 'egg'], ['spelt0', 200, 'flour']]],\n   {'flour_total': '275',\n    'hydration': '133.4',\n    'percentages': [['salt', '3.6'], ['milk', '43.6'], ['water', '54.5'], ['levain', '54.5'], ['egg', '18.2'],\n                    ['spelt0', '72.7']]}],\n  ['generated control 1',\n   [[['water', 150, 'water'], ['egg', 100, 'egg'], ['salt', 11, 'other'], ['rye0', 450, 'flour']]],\n   {'flour_total': '450',\n    'hydration': '50.0',\n    'percentages': [['water', '33.3'], ['egg', '22.2'], ['salt', '2.4'], ['rye0', '100.0']]}],\n  ['generated control 2',\n   [[['whole wheat2', 200, 'flour'], ['milk', 120, 'milk'], ['egg', 100, 'egg'], ['rye0', 333, 'flour'],\n     ['salt', 11, 'other'], ['rye1', 200, 'flour']]],\n   {'flour_total': '733',\n    'hydration': '24.5',\n    'percentages': [['whole wheat2', '27.3'], ['milk', '16.4'], ['egg', '13.6'], ['rye0', '45.4'],\n                    ['salt', '1.5'], ['rye1', '27.3']]}],\n  ['generated control 3', [[['salt', 9, 'other'], ['water', 200, 'water'], ['rye0', 100, 'flour']]],\n   {'flour_total': '100',\n    'hydration': '200.0',\n    'percentages': [['salt', '9.0'], ['water', '200.0'], ['rye0', '100.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  ['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 flour share',\n   [[['egg', 50, 'egg'], ['levain', 60, 'starter'], ['salt', 11, 'other'], ['whole wheat0', 450, 'flour'],\n     ['milk', 100, 'milk']]],\n   {'flour_total': '480',\n    'hydration': '32.2',\n    'percentages': [['egg', '10.4'], ['levain', '12.5'], ['salt', '2.3'], ['whole wheat0', '93.8'],\n                    ['milk', '20.8']]}],\n  ['repair check: starter flour share',\n   [[['whole wheat1', 450, 'flour'], ['levain', 60, 'starter'], ['salt', 11, 'other'], ['milk', 100, 'milk'],\n     ['spelt0', 450, 'flour'], ['water', 350, 'water']]],\n   {'flour_total': '930',\n    'hydration': '50.2',\n    'percentages': [['whole wheat1', '48.4'], ['levain', '6.5'], ['salt', '1.2'], ['milk', '10.8'],\n                    ['spelt0', '48.4'], ['water', '37.6']]}],\n  ['generated control 1',\n   [[['salt', 11, 'other'], ['water', 325, 'water'], ['spelt1', 333, 'flour'], ['spelt0', 500, 'flour']]],\n   {'flour_total': '833',\n    'hydration': '39.0',\n    'percentages': [['salt', '1.3'], ['water', '39.0'], ['spelt1', '40.0'], ['spelt0', '60.0']]}],\n  ['generated control 2',\n   [[['whole wheat1', 200, 'flour'], ['salt', 10, 'other'], ['whole wheat0', 333, 'flour']]],\n   {'flour_total': '533',\n    'hydration': '0.0',\n    'percentages': [['whole wheat1', '37.5'], ['salt', '1.9'], ['whole wheat0', '62.5']]}],\n  ['generated control 3',\n   [[['salt', 10, 'other'], ['bread flour1', 300, 'flour'], ['bread flour0', 333, 'flour']]],\n   {'flour_total': '633',\n    'hydration': '0.0',\n    'percentages': [['salt', '1.6'], ['bread flour1', '47.4'], ['bread flour0', '52.6']]}]]]\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":"9b4e18570281532660f866863bb0b97780650ddb0005e3bbf89df3b9c95c4b68","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')\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 flour share',\n   [[['egg', 50, 'egg'], ['water', 377, 'water'], ['bread flour1', 450, 'flour'], ['milk', 100, 'milk'],\n     ['bread flour2', 450, 'flour'], ['salt', 10, 'other'], ['whole wheat0', 333, 'flour'],\n     ['levain', 150, 'starter']]],\n   {'flour_total': '1308',\n    'hydration': '44.1',\n    'percentages': [['egg', '3.8'], ['water', '28.8'], ['bread flour1', '34.4'], ['milk', '7.6'],\n                    ['bread flour2', '34.4'], ['salt', '0.8'], ['whole wheat0', '25.5'],\n                    ['levain', '11.5']]}],\n  ['repair check: starter flour share',\n   [[['salt', 10, 'other'], ['milk', 100, 'milk'], ['water', 325, 'water'], ['levain', 100, 'starter'],\n     ['spelt0', 300, 'flour']]],\n   {'flour_total': '350',\n    'hydration': '132.0',\n    'percentages': [['salt', '2.9'], ['milk', '28.6'], ['water', '92.9'], ['levain', '28.6'],\n                    ['spelt0', '85.7']]}],\n  ['generated control 1',\n   [[['levain', 100, 'starter'], ['rye0', 450, 'flour'], ['milk', 120, 'milk'], ['salt', 11, 'other']]],\n   {'flour_total': '500',\n    'hydration': '30.9',\n    'percentages': [['levain', '20.0'], ['rye0', '90.0'], ['milk', '24.0'], ['salt', '2.2']]}],\n  ['generated control 2',\n   [[['egg', 50, 'egg'], ['water', 150, 'water'], ['milk', 120, 'milk'], ['salt', 9, 'other'],\n     ['bread flour0', 250, 'flour'], ['levain', 60, 'starter']]],\n   {'flour_total': '280',\n    'hydration': '115.0',\n    'percentages': [['egg', '17.9'], ['water', '53.6'], ['milk', '42.9'], ['salt', '3.2'],\n                    ['bread flour0', '89.3'], ['levain', '21.4']]}],\n  ['generated control 3',\n   [[['levain', 100, 'starter'], ['water', 150, 'water'], ['milk', 50, 'milk'],\n     ['whole wheat1', 250, 'flour'], ['salt', 10, 'other'], ['spelt0', 300, 'flour']]],\n   {'flour_total': '600',\n    'hydration': '40.6',\n    'percentages': [['levain', '16.7'], ['water', '25.0'], ['milk', '8.3'], ['whole wheat1', '41.7'],\n                    ['salt', '1.7'], ['spelt0', '50.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  ['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 flour share',\n   [[['water', 150, 'water'], ['bread flour0', 333, 'flour'], ['salt', 10, 'other'], ['milk', 120, 'milk'],\n     ['levain', 100, 'starter']]],\n   {'flour_total': '383',\n    'hydration': '79.5',\n    'percentages': [['water', '39.2'], ['bread flour0', '86.9'], ['salt', '2.6'], ['milk', '31.3'],\n                    ['levain', '26.1']]}],\n  ['repair check: starter flour share',\n   [[['rye1', 450, 'flour'], ['levain', 100, 'starter'], ['salt', 10, 'other'], ['water', 200, 'water'],\n     ['milk', 100, 'milk'], ['spelt0', 100, 'flour']]],\n   {'flour_total': '600',\n    'hydration': '56.2',\n    'percentages': [['rye1', '75.0'], ['levain', '16.7'], ['salt', '1.7'], ['water', '33.3'],\n                    ['milk', '16.7'], ['spelt0', '16.7']]}],\n  ['generated control 1',\n   [[['milk', 100, 'milk'], ['water', 377, 'water'], ['egg', 50, 'egg'], ['whole wheat0', 300, 'flour'],\n     ['salt', 11, 'other']]],\n   {'flour_total': '300',\n    'hydration': '167.2',\n    'percentages': [['milk', '33.3'], ['water', '125.7'], ['egg', '16.7'], ['whole wheat0', '100.0'],\n                    ['salt', '3.7']]}],\n  ['generated control 2',\n   [[['rye1', 333, 'flour'], ['rye0', 250, 'flour'], ['salt', 9, 'other'], ['milk', 50, 'milk'],\n     ['spelt2', 333, 'flour']]],\n   {'flour_total': '916',\n    'hydration': '4.7',\n    'percentages': [['rye1', '36.4'], ['rye0', '27.3'], ['salt', '1.0'], ['milk', '5.5'],\n                    ['spelt2', '36.4']]}],\n  ['generated control 3',\n   [[['water', 150, 'water'], ['milk', 100, 'milk'], ['rye1', 300, 'flour'], ['whole wheat0', 250, 'flour'],\n     ['rye2', 450, 'flour'], ['salt', 9, 'other']]],\n   {'flour_total': '1000',\n    'hydration': '23.7',\n    'percentages': [['water', '15.0'], ['milk', '10.0'], ['rye1', '30.0'], ['whole wheat0', '25.0'],\n                    ['rye2', '45.0'], ['salt', '0.9']]}]],\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 flour share',\n   [[['salt', 9, 'other'], ['water', 350, 'water'], ['milk', 100, 'milk'], ['whole wheat2', 450, 'flour'],\n     ['whole wheat0', 200, 'flour'], ['egg', 100, 'egg'], ['whole wheat1', 300, 'flour'],\n     ['levain', 60, 'starter']]],\n   {'flour_total': '980',\n    'hydration': '55.3',\n    'percentages': [['salt', '0.9'], ['water', '35.7'], ['milk', '10.2'], ['whole wheat2', '45.9'],\n                    ['whole wheat0', '20.4'], ['egg', '10.2'], ['whole wheat1', '30.6'],\n                    ['levain', '6.1']]}],\n  ['repair check: starter flour share',\n   [[['bread flour1', 500, 'flour'], ['levain', 100, 'starter'], ['salt', 10, 'other'],\n     ['bread flour0', 500, 'flour']]],\n   {'flour_total': '1050',\n    'hydration': '4.8',\n    'percentages': [['bread flour1', '47.6'], ['levain', '9.5'], ['salt', '1.0'], ['bread flour0', '47.6']]}],\n  ['generated control 1',\n   [[['whole wheat1', 100, 'flour'], ['whole wheat0', 300, 'flour'], ['water', 325, 'water'],\n     ['salt', 9, 'other'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '100.0',\n    'percentages': [['whole wheat1', '25.0'], ['whole wheat0', '75.0'], ['water', '81.3'], ['salt', '2.3'],\n                    ['egg', '25.0']]}],\n  ['generated control 2',\n   [[['bread flour0', 250, 'flour'], ['salt', 9, 'other'], ['rye1', 200, 'flour'], ['water', 150, 'water']]],\n   {'flour_total': '450',\n    'hydration': '33.3',\n    'percentages': [['bread flour0', '55.6'], ['salt', '2.0'], ['rye1', '44.4'], ['water', '33.3']]}],\n  ['generated control 3',\n   [[['rye2', 333, 'flour'], ['milk', 120, 'milk'], ['whole wheat0', 200, 'flour'], ['salt', 11, 'other'],\n     ['spelt1', 250, 'flour']]],\n   {'flour_total': '783',\n    'hydration': '13.3',\n    'percentages': [['rye2', '42.5'], ['milk', '15.3'], ['whole wheat0', '25.5'], ['salt', '1.4'],\n                    ['spelt1', '31.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 flour share',\n   [[['whole wheat0', 200, 'flour'], ['levain', 60, 'starter'], ['salt', 11, 'other'],\n     ['milk', 100, 'milk']]],\n   {'flour_total': '230',\n    'hydration': '50.9',\n    'percentages': [['whole wheat0', '87.0'], ['levain', '26.1'], ['salt', '4.8'], ['milk', '43.5']]}],\n  ['repair check: starter flour share',\n   [[['salt', 10, 'other'], ['milk', 120, 'milk'], ['water', 150, 'water'], ['levain', 150, 'starter'],\n     ['egg', 50, 'egg'], ['spelt0', 200, 'flour']]],\n   {'flour_total': '275',\n    'hydration': '133.4',\n    'percentages': [['salt', '3.6'], ['milk', '43.6'], ['water', '54.5'], ['levain', '54.5'], ['egg', '18.2'],\n                    ['spelt0', '72.7']]}],\n  ['generated control 1',\n   [[['water', 150, 'water'], ['egg', 100, 'egg'], ['salt', 11, 'other'], ['rye0', 450, 'flour']]],\n   {'flour_total': '450',\n    'hydration': '50.0',\n    'percentages': [['water', '33.3'], ['egg', '22.2'], ['salt', '2.4'], ['rye0', '100.0']]}],\n  ['generated control 2',\n   [[['whole wheat2', 200, 'flour'], ['milk', 120, 'milk'], ['egg', 100, 'egg'], ['rye0', 333, 'flour'],\n     ['salt', 11, 'other'], ['rye1', 200, 'flour']]],\n   {'flour_total': '733',\n    'hydration': '24.5',\n    'percentages': [['whole wheat2', '27.3'], ['milk', '16.4'], ['egg', '13.6'], ['rye0', '45.4'],\n                    ['salt', '1.5'], ['rye1', '27.3']]}],\n  ['generated control 3', [[['salt', 9, 'other'], ['water', 200, 'water'], ['rye0', 100, 'flour']]],\n   {'flour_total': '100',\n    'hydration': '200.0',\n    'percentages': [['salt', '9.0'], ['water', '200.0'], ['rye0', '100.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  ['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 flour share',\n   [[['egg', 50, 'egg'], ['levain', 60, 'starter'], ['salt', 11, 'other'], ['whole wheat0', 450, 'flour'],\n     ['milk', 100, 'milk']]],\n   {'flour_total': '480',\n    'hydration': '32.2',\n    'percentages': [['egg', '10.4'], ['levain', '12.5'], ['salt', '2.3'], ['whole wheat0', '93.8'],\n                    ['milk', '20.8']]}],\n  ['repair check: starter flour share',\n   [[['whole wheat1', 450, 'flour'], ['levain', 60, 'starter'], ['salt', 11, 'other'], ['milk', 100, 'milk'],\n     ['spelt0', 450, 'flour'], ['water', 350, 'water']]],\n   {'flour_total': '930',\n    'hydration': '50.2',\n    'percentages': [['whole wheat1', '48.4'], ['levain', '6.5'], ['salt', '1.2'], ['milk', '10.8'],\n                    ['spelt0', '48.4'], ['water', '37.6']]}],\n  ['generated control 1',\n   [[['salt', 11, 'other'], ['water', 325, 'water'], ['spelt1', 333, 'flour'], ['spelt0', 500, 'flour']]],\n   {'flour_total': '833',\n    'hydration': '39.0',\n    'percentages': [['salt', '1.3'], ['water', '39.0'], ['spelt1', '40.0'], ['spelt0', '60.0']]}],\n  ['generated control 2',\n   [[['whole wheat1', 200, 'flour'], ['salt', 10, 'other'], ['whole wheat0', 333, 'flour']]],\n   {'flour_total': '533',\n    'hydration': '0.0',\n    'percentages': [['whole wheat1', '37.5'], ['salt', '1.9'], ['whole wheat0', '62.5']]}],\n  ['generated control 3',\n   [[['salt', 10, 'other'], ['bread flour1', 300, 'flour'], ['bread flour0', 333, 'flour']]],\n   {'flour_total': '633',\n    'hydration': '0.0',\n    'percentages': [['salt', '1.6'], ['bread flour1', '47.4'], ['bread flour0', '52.6']]}]]]\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":"81e3f40626eda1f0c77183accbcc658946459aa2b9121a45bf96686caa428f79","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 flour share',\n   [[['egg', 50, 'egg'], ['water', 377, 'water'], ['bread flour1', 450, 'flour'], ['milk', 100, 'milk'],\n     ['bread flour2', 450, 'flour'], ['salt', 10, 'other'], ['whole wheat0', 333, 'flour'],\n     ['levain', 150, 'starter']]],\n   {'flour_total': '1308',\n    'hydration': '44.1',\n    'percentages': [['egg', '3.8'], ['water', '28.8'], ['bread flour1', '34.4'], ['milk', '7.6'],\n                    ['bread flour2', '34.4'], ['salt', '0.8'], ['whole wheat0', '25.5'],\n                    ['levain', '11.5']]}],\n  ['repair check: starter flour share',\n   [[['salt', 10, 'other'], ['milk', 100, 'milk'], ['water', 325, 'water'], ['levain', 100, 'starter'],\n     ['spelt0', 300, 'flour']]],\n   {'flour_total': '350',\n    'hydration': '132.0',\n    'percentages': [['salt', '2.9'], ['milk', '28.6'], ['water', '92.9'], ['levain', '28.6'],\n                    ['spelt0', '85.7']]}],\n  ['generated control 1',\n   [[['levain', 100, 'starter'], ['rye0', 450, 'flour'], ['milk', 120, 'milk'], ['salt', 11, 'other']]],\n   {'flour_total': '500',\n    'hydration': '30.9',\n    'percentages': [['levain', '20.0'], ['rye0', '90.0'], ['milk', '24.0'], ['salt', '2.2']]}],\n  ['generated control 2',\n   [[['egg', 50, 'egg'], ['water', 150, 'water'], ['milk', 120, 'milk'], ['salt', 9, 'other'],\n     ['bread flour0', 250, 'flour'], ['levain', 60, 'starter']]],\n   {'flour_total': '280',\n    'hydration': '115.0',\n    'percentages': [['egg', '17.9'], ['water', '53.6'], ['milk', '42.9'], ['salt', '3.2'],\n                    ['bread flour0', '89.3'], ['levain', '21.4']]}],\n  ['generated control 3',\n   [[['levain', 100, 'starter'], ['water', 150, 'water'], ['milk', 50, 'milk'],\n     ['whole wheat1', 250, 'flour'], ['salt', 10, 'other'], ['spelt0', 300, 'flour']]],\n   {'flour_total': '600',\n    'hydration': '40.6',\n    'percentages': [['levain', '16.7'], ['water', '25.0'], ['milk', '8.3'], ['whole wheat1', '41.7'],\n                    ['salt', '1.7'], ['spelt0', '50.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  ['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 flour share',\n   [[['water', 150, 'water'], ['bread flour0', 333, 'flour'], ['salt', 10, 'other'], ['milk', 120, 'milk'],\n     ['levain', 100, 'starter']]],\n   {'flour_total': '383',\n    'hydration': '79.5',\n    'percentages': [['water', '39.2'], ['bread flour0', '86.9'], ['salt', '2.6'], ['milk', '31.3'],\n                    ['levain', '26.1']]}],\n  ['repair check: starter flour share',\n   [[['rye1', 450, 'flour'], ['levain', 100, 'starter'], ['salt', 10, 'other'], ['water', 200, 'water'],\n     ['milk', 100, 'milk'], ['spelt0', 100, 'flour']]],\n   {'flour_total': '600',\n    'hydration': '56.2',\n    'percentages': [['rye1', '75.0'], ['levain', '16.7'], ['salt', '1.7'], ['water', '33.3'],\n                    ['milk', '16.7'], ['spelt0', '16.7']]}],\n  ['generated control 1',\n   [[['milk', 100, 'milk'], ['water', 377, 'water'], ['egg', 50, 'egg'], ['whole wheat0', 300, 'flour'],\n     ['salt', 11, 'other']]],\n   {'flour_total': '300',\n    'hydration': '167.2',\n    'percentages': [['milk', '33.3'], ['water', '125.7'], ['egg', '16.7'], ['whole wheat0', '100.0'],\n                    ['salt', '3.7']]}],\n  ['generated control 2',\n   [[['rye1', 333, 'flour'], ['rye0', 250, 'flour'], ['salt', 9, 'other'], ['milk', 50, 'milk'],\n     ['spelt2', 333, 'flour']]],\n   {'flour_total': '916',\n    'hydration': '4.7',\n    'percentages': [['rye1', '36.4'], ['rye0', '27.3'], ['salt', '1.0'], ['milk', '5.5'],\n                    ['spelt2', '36.4']]}],\n  ['generated control 3',\n   [[['water', 150, 'water'], ['milk', 100, 'milk'], ['rye1', 300, 'flour'], ['whole wheat0', 250, 'flour'],\n     ['rye2', 450, 'flour'], ['salt', 9, 'other']]],\n   {'flour_total': '1000',\n    'hydration': '23.7',\n    'percentages': [['water', '15.0'], ['milk', '10.0'], ['rye1', '30.0'], ['whole wheat0', '25.0'],\n                    ['rye2', '45.0'], ['salt', '0.9']]}]],\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 flour share',\n   [[['salt', 9, 'other'], ['water', 350, 'water'], ['milk', 100, 'milk'], ['whole wheat2', 450, 'flour'],\n     ['whole wheat0', 200, 'flour'], ['egg', 100, 'egg'], ['whole wheat1', 300, 'flour'],\n     ['levain', 60, 'starter']]],\n   {'flour_total': '980',\n    'hydration': '55.3',\n    'percentages': [['salt', '0.9'], ['water', '35.7'], ['milk', '10.2'], ['whole wheat2', '45.9'],\n                    ['whole wheat0', '20.4'], ['egg', '10.2'], ['whole wheat1', '30.6'],\n                    ['levain', '6.1']]}],\n  ['repair check: starter flour share',\n   [[['bread flour1', 500, 'flour'], ['levain', 100, 'starter'], ['salt', 10, 'other'],\n     ['bread flour0', 500, 'flour']]],\n   {'flour_total': '1050',\n    'hydration': '4.8',\n    'percentages': [['bread flour1', '47.6'], ['levain', '9.5'], ['salt', '1.0'], ['bread flour0', '47.6']]}],\n  ['generated control 1',\n   [[['whole wheat1', 100, 'flour'], ['whole wheat0', 300, 'flour'], ['water', 325, 'water'],\n     ['salt', 9, 'other'], ['egg', 100, 'egg']]],\n   {'flour_total': '400',\n    'hydration': '100.0',\n    'percentages': [['whole wheat1', '25.0'], ['whole wheat0', '75.0'], ['water', '81.3'], ['salt', '2.3'],\n                    ['egg', '25.0']]}],\n  ['generated control 2',\n   [[['bread flour0', 250, 'flour'], ['salt', 9, 'other'], ['rye1', 200, 'flour'], ['water', 150, 'water']]],\n   {'flour_total': '450',\n    'hydration': '33.3',\n    'percentages': [['bread flour0', '55.6'], ['salt', '2.0'], ['rye1', '44.4'], ['water', '33.3']]}],\n  ['generated control 3',\n   [[['rye2', 333, 'flour'], ['milk', 120, 'milk'], ['whole wheat0', 200, 'flour'], ['salt', 11, 'other'],\n     ['spelt1', 250, 'flour']]],\n   {'flour_total': '783',\n    'hydration': '13.3',\n    'percentages': [['rye2', '42.5'], ['milk', '15.3'], ['whole wheat0', '25.5'], ['salt', '1.4'],\n                    ['spelt1', '31.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 flour share',\n   [[['whole wheat0', 200, 'flour'], ['levain', 60, 'starter'], ['salt', 11, 'other'],\n     ['milk', 100, 'milk']]],\n   {'flour_total': '230',\n    'hydration': '50.9',\n    'percentages': [['whole wheat0', '87.0'], ['levain', '26.1'], ['salt', '4.8'], ['milk', '43.5']]}],\n  ['repair check: starter flour share',\n   [[['salt', 10, 'other'], ['milk', 120, 'milk'], ['water', 150, 'water'], ['levain', 150, 'starter'],\n     ['egg', 50, 'egg'], ['spelt0', 200, 'flour']]],\n   {'flour_total': '275',\n    'hydration': '133.4',\n    'percentages': [['salt', '3.6'], ['milk', '43.6'], ['water', '54.5'], ['levain', '54.5'], ['egg', '18.2'],\n                    ['spelt0', '72.7']]}],\n  ['generated control 1',\n   [[['water', 150, 'water'], ['egg', 100, 'egg'], ['salt', 11, 'other'], ['rye0', 450, 'flour']]],\n   {'flour_total': '450',\n    'hydration': '50.0',\n    'percentages': [['water', '33.3'], ['egg', '22.2'], ['salt', '2.4'], ['rye0', '100.0']]}],\n  ['generated control 2',\n   [[['whole wheat2', 200, 'flour'], ['milk', 120, 'milk'], ['egg', 100, 'egg'], ['rye0', 333, 'flour'],\n     ['salt', 11, 'other'], ['rye1', 200, 'flour']]],\n   {'flour_total': '733',\n    'hydration': '24.5',\n    'percentages': [['whole wheat2', '27.3'], ['milk', '16.4'], ['egg', '13.6'], ['rye0', '45.4'],\n                    ['salt', '1.5'], ['rye1', '27.3']]}],\n  ['generated control 3', [[['salt', 9, 'other'], ['water', 200, 'water'], ['rye0', 100, 'flour']]],\n   {'flour_total': '100',\n    'hydration': '200.0',\n    'percentages': [['salt', '9.0'], ['water', '200.0'], ['rye0', '100.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  ['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 flour share',\n   [[['egg', 50, 'egg'], ['levain', 60, 'starter'], ['salt', 11, 'other'], ['whole wheat0', 450, 'flour'],\n     ['milk', 100, 'milk']]],\n   {'flour_total': '480',\n    'hydration': '32.2',\n    'percentages': [['egg', '10.4'], ['levain', '12.5'], ['salt', '2.3'], ['whole wheat0', '93.8'],\n                    ['milk', '20.8']]}],\n  ['repair check: starter flour share',\n   [[['whole wheat1', 450, 'flour'], ['levain', 60, 'starter'], ['salt', 11, 'other'], ['milk', 100, 'milk'],\n     ['spelt0', 450, 'flour'], ['water', 350, 'water']]],\n   {'flour_total': '930',\n    'hydration': '50.2',\n    'percentages': [['whole wheat1', '48.4'], ['levain', '6.5'], ['salt', '1.2'], ['milk', '10.8'],\n                    ['spelt0', '48.4'], ['water', '37.6']]}],\n  ['generated control 1',\n   [[['salt', 11, 'other'], ['water', 325, 'water'], ['spelt1', 333, 'flour'], ['spelt0', 500, 'flour']]],\n   {'flour_total': '833',\n    'hydration': '39.0',\n    'percentages': [['salt', '1.3'], ['water', '39.0'], ['spelt1', '40.0'], ['spelt0', '60.0']]}],\n  ['generated control 2',\n   [[['whole wheat1', 200, 'flour'], ['salt', 10, 'other'], ['whole wheat0', 333, 'flour']]],\n   {'flour_total': '533',\n    'hydration': '0.0',\n    'percentages': [['whole wheat1', '37.5'], ['salt', '1.9'], ['whole wheat0', '62.5']]}],\n  ['generated control 3',\n   [[['salt', 10, 'other'], ['bread flour1', 300, 'flour'], ['bread flour0', 333, 'flour']]],\n   {'flour_total': '633',\n    'hydration': '0.0',\n    'percentages': [['salt', '1.6'], ['bread flour1', '47.4'], ['bread flour0', '52.6']]}]]]\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-flour-share","generated_at":"2026-09-29T14:52:27.289252+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 total flour.","root_cause":"The flour contributed by the 100% hydration starter is not added to the basis.","sha256":"bbaf6d66efbf566227f3cd4ad1799f06f15283b6ccf64a4ae0f8b2276c7da3bf","title":"Baker's percentage calculator: starter flour share · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.689,"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":"1383","hydration":"41.7","percentages":[["egg","3.6"],["water","27.3"],["bread flour1","32.5"],["milk","7.2"],["bread flour2","32.5"],["salt","0.7"],["whole wheat0","24.1"],["levain","10.8"]]},"check":"regression: starter flour share","expected":{"flour_total":"1308","hydration":"44.1","percentages":[["egg","3.8"],["water","28.8"],["bread flour1","34.4"],["milk","7.6"],["bread flour2","34.4"],["salt","0.8"],["whole wheat0","25.5"],["levain","11.5"]]},"passed":false},{"actual":{"flour_total":"400","hydration":"115.5","percentages":[["salt","2.5"],["milk","25.0"],["water","81.3"],["levain","25.0"],["spelt0","75.0"]]},"check":"repair check: starter flour share","expected":{"flour_total":"350","hydration":"132.0","percentages":[["salt","2.9"],["milk","28.6"],["water","92.9"],["levain","28.6"],["spelt0","85.7"]]},"passed":false},{"actual":{"flour_total":"550","hydration":"28.1","percentages":[["levain","18.2"],["rye0","81.8"],["milk","21.8"],["salt","2.0"]]},"check":"generated control 1","expected":{"flour_total":"500","hydration":"30.9","percentages":[["levain","20.0"],["rye0","90.0"],["milk","24.0"],["salt","2.2"]]},"passed":false},{"actual":{"flour_total":"310","hydration":"103.8","percentages":[["egg","16.1"],["water","48.4"],["milk","38.7"],["salt","2.9"],["bread flour0","80.6"],["levain","19.4"]]},"check":"generated control 2","expected":{"flour_total":"280","hydration":"115.0","percentages":[["egg","17.9"],["water","53.6"],["milk","42.9"],["salt","3.2"],["bread flour0","89.3"],["levain","21.4"]]},"passed":false},{"actual":{"flour_total":"650","hydration":"37.5","percentages":[["levain","15.4"],["water","23.1"],["milk","7.7"],["whole wheat1","38.5"],["salt","1.5"],["spelt0","46.2"]]},"check":"generated control 3","expected":{"flour_total":"600","hydration":"40.6","percentages":[["levain","16.7"],["water","25.0"],["milk","8.3"],["whole wheat1","41.7"],["salt","1.7"],["spelt0","50.0"]]},"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 flour share\", \"actual\": {\"flour_total\": \"1383\", \"percentages\": [[\"egg\", \"3.6\"], [\"water\", \"27.3\"], [\"bread flour1\", \"32.5\"], [\"milk\", \"7.2\"], [\"bread flour2\", \"32.5\"], [\"salt\", \"0.7\"], [\"whole wheat0\", \"24.1\"], [\"levain\", \"10.8\"]], \"hydration\": \"41.7\"}, \"expected\": {\"flour_total\": \"1308\", \"hydration\": \"44.1\", \"percentages\": [[\"egg\", \"3.8\"], [\"water\", \"28.8\"], [\"bread flour1\", \"34.4\"], [\"milk\", \"7.6\"], [\"bread flour2\", \"34.4\"], [\"salt\", \"0.8\"], [\"whole wheat0\", \"25.5\"], [\"levain\", \"11.5\"]]}, \"passed\": false}, {\"check\": \"repair check: starter flour share\", \"actual\": {\"flour_total\": \"400\", \"percentages\": [[\"salt\", \"2.5\"], [\"milk\", \"25.0\"], [\"water\", \"81.3\"], [\"levain\", \"25.0\"], [\"spelt0\", \"75.0\"]], \"hydration\": \"115.5\"}, \"expected\": {\"flour_total\": \"350\", \"hydration\": \"132.0\", \"percentages\": [[\"salt\", \"2.9\"], [\"milk\", \"28.6\"], [\"water\", \"92.9\"], [\"levain\", \"28.6\"], [\"spelt0\", \"85.7\"]]}, \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": {\"flour_total\": \"550\", \"percentages\": [[\"levain\", \"18.2\"], [\"rye0\", \"81.8\"], [\"milk\", \"21.8\"], [\"salt\", \"2.0\"]], \"hydration\": \"28.1\"}, \"expected\": {\"flour_total\": \"500\", \"hydration\": \"30.9\", \"percentages\": [[\"levain\", \"20.0\"], [\"rye0\", \"90.0\"], [\"milk\", \"24.0\"], [\"salt\", \"2.2\"]]}, \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": {\"flour_total\": \"310\", \"percentages\": [[\"egg\", \"16.1\"], [\"water\", \"48.4\"], [\"milk\", \"38.7\"], [\"salt\", \"2.9\"], [\"bread flour0\", \"80.6\"], [\"levain\", \"19.4\"]], \"hydration\": \"103.8\"}, \"expected\": {\"flour_total\": \"280\", \"hydration\": \"115.0\", \"percentages\": [[\"egg\", \"17.9\"], [\"water\", \"53.6\"], [\"milk\", \"42.9\"], [\"salt\", \"3.2\"], [\"bread flour0\", \"89.3\"], [\"levain\", \"21.4\"]]}, \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": {\"flour_total\": \"650\", \"percentages\": [[\"levain\", \"15.4\"], [\"water\", \"23.1\"], [\"milk\", \"7.7\"], [\"whole wheat1\", \"38.5\"], [\"salt\", \"1.5\"], [\"spelt0\", \"46.2\"]], \"hydration\": \"37.5\"}, \"expected\": {\"flour_total\": \"600\", \"hydration\": \"40.6\", \"percentages\": [[\"levain\", \"16.7\"], [\"water\", \"25.0\"], [\"milk\", \"8.3\"], [\"whole wheat1\", \"41.7\"], [\"salt\", \"1.7\"], [\"spelt0\", \"50.0\"]]}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.272,"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":"1233","hydration":"46.8","percentages":[["egg","4.1"],["water","30.6"],["bread flour1","36.5"],["milk","8.1"],["bread flour2","36.5"],["salt","0.8"],["whole wheat0","27.0"],["levain","12.2"]]},"check":"regression: starter flour share","expected":{"flour_total":"1308","hydration":"44.1","percentages":[["egg","3.8"],["water","28.8"],["bread flour1","34.4"],["milk","7.6"],["bread flour2","34.4"],["salt","0.8"],["whole wheat0","25.5"],["levain","11.5"]]},"passed":false},{"actual":{"flour_total":"300","hydration":"154.0","percentages":[["salt","3.3"],["milk","33.3"],["water","108.3"],["levain","33.3"],["spelt0","100.0"]]},"check":"repair check: starter flour share","expected":{"flour_total":"350","hydration":"132.0","percentages":[["salt","2.9"],["milk","28.6"],["water","92.9"],["levain","28.6"],["spelt0","85.7"]]},"passed":false},{"actual":{"flour_total":"450","hydration":"34.3","percentages":[["levain","22.2"],["rye0","100.0"],["milk","26.7"],["salt","2.4"]]},"check":"generated control 1","expected":{"flour_total":"500","hydration":"30.9","percentages":[["levain","20.0"],["rye0","90.0"],["milk","24.0"],["salt","2.2"]]},"passed":false},{"actual":{"flour_total":"250","hydration":"128.8","percentages":[["egg","20.0"],["water","60.0"],["milk","48.0"],["salt","3.6"],["bread flour0","100.0"],["levain","24.0"]]},"check":"generated control 2","expected":{"flour_total":"280","hydration":"115.0","percentages":[["egg","17.9"],["water","53.6"],["milk","42.9"],["salt","3.2"],["bread flour0","89.3"],["levain","21.4"]]},"passed":false},{"actual":{"flour_total":"550","hydration":"44.3","percentages":[["levain","18.2"],["water","27.3"],["milk","9.1"],["whole wheat1","45.5"],["salt","1.8"],["spelt0","54.5"]]},"check":"generated control 3","expected":{"flour_total":"600","hydration":"40.6","percentages":[["levain","16.7"],["water","25.0"],["milk","8.3"],["whole wheat1","41.7"],["salt","1.7"],["spelt0","50.0"]]},"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 flour share\", \"actual\": {\"flour_total\": \"1233\", \"percentages\": [[\"egg\", \"4.1\"], [\"water\", \"30.6\"], [\"bread flour1\", \"36.5\"], [\"milk\", \"8.1\"], [\"bread flour2\", \"36.5\"], [\"salt\", \"0.8\"], [\"whole wheat0\", \"27.0\"], [\"levain\", \"12.2\"]], \"hydration\": \"46.8\"}, \"expected\": {\"flour_total\": \"1308\", \"hydration\": \"44.1\", \"percentages\": [[\"egg\", \"3.8\"], [\"water\", \"28.8\"], [\"bread flour1\", \"34.4\"], [\"milk\", \"7.6\"], [\"bread flour2\", \"34.4\"], [\"salt\", \"0.8\"], [\"whole wheat0\", \"25.5\"], [\"levain\", \"11.5\"]]}, \"passed\": false}, {\"check\": \"repair check: starter flour share\", \"actual\": {\"flour_total\": \"300\", \"percentages\": [[\"salt\", \"3.3\"], [\"milk\", \"33.3\"], [\"water\", \"108.3\"], [\"levain\", \"33.3\"], [\"spelt0\", \"100.0\"]], \"hydration\": \"154.0\"}, \"expected\": {\"flour_total\": \"350\", \"hydration\": \"132.0\", \"percentages\": [[\"salt\", \"2.9\"], [\"milk\", \"28.6\"], [\"water\", \"92.9\"], [\"levain\", \"28.6\"], [\"spelt0\", \"85.7\"]]}, \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": {\"flour_total\": \"450\", \"percentages\": [[\"levain\", \"22.2\"], [\"rye0\", \"100.0\"], [\"milk\", \"26.7\"], [\"salt\", \"2.4\"]], \"hydration\": \"34.3\"}, \"expected\": {\"flour_total\": \"500\", \"hydration\": \"30.9\", \"percentages\": [[\"levain\", \"20.0\"], [\"rye0\", \"90.0\"], [\"milk\", \"24.0\"], [\"salt\", \"2.2\"]]}, \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": {\"flour_total\": \"250\", \"percentages\": [[\"egg\", \"20.0\"], [\"water\", \"60.0\"], [\"milk\", \"48.0\"], [\"salt\", \"3.6\"], [\"bread flour0\", \"100.0\"], [\"levain\", \"24.0\"]], \"hydration\": \"128.8\"}, \"expected\": {\"flour_total\": \"280\", \"hydration\": \"115.0\", \"percentages\": [[\"egg\", \"17.9\"], [\"water\", \"53.6\"], [\"milk\", \"42.9\"], [\"salt\", \"3.2\"], [\"bread flour0\", \"89.3\"], [\"levain\", \"21.4\"]]}, \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": {\"flour_total\": \"550\", \"percentages\": [[\"levain\", \"18.2\"], [\"water\", \"27.3\"], [\"milk\", \"9.1\"], [\"whole wheat1\", \"45.5\"], [\"salt\", \"1.8\"], [\"spelt0\", \"54.5\"]], \"hydration\": \"44.3\"}, \"expected\": {\"flour_total\": \"600\", \"hydration\": \"40.6\", \"percentages\": [[\"levain\", \"16.7\"], [\"water\", \"25.0\"], [\"milk\", \"8.3\"], [\"whole wheat1\", \"41.7\"], [\"salt\", \"1.7\"], [\"spelt0\", \"50.0\"]]}, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":45.452,"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":"1308","hydration":"44.1","percentages":[["egg","3.8"],["water","28.8"],["bread flour1","34.4"],["milk","7.6"],["bread flour2","34.4"],["salt","0.8"],["whole wheat0","25.5"],["levain","11.5"]]},"check":"regression: starter flour share","expected":{"flour_total":"1308","hydration":"44.1","percentages":[["egg","3.8"],["water","28.8"],["bread flour1","34.4"],["milk","7.6"],["bread flour2","34.4"],["salt","0.8"],["whole wheat0","25.5"],["levain","11.5"]]},"passed":true},{"actual":{"flour_total":"350","hydration":"132.0","percentages":[["salt","2.9"],["milk","28.6"],["water","92.9"],["levain","28.6"],["spelt0","85.7"]]},"check":"repair check: starter flour share","expected":{"flour_total":"350","hydration":"132.0","percentages":[["salt","2.9"],["milk","28.6"],["water","92.9"],["levain","28.6"],["spelt0","85.7"]]},"passed":true},{"actual":{"flour_total":"500","hydration":"30.9","percentages":[["levain","20.0"],["rye0","90.0"],["milk","24.0"],["salt","2.2"]]},"check":"generated control 1","expected":{"flour_total":"500","hydration":"30.9","percentages":[["levain","20.0"],["rye0","90.0"],["milk","24.0"],["salt","2.2"]]},"passed":true},{"actual":{"flour_total":"280","hydration":"115.0","percentages":[["egg","17.9"],["water","53.6"],["milk","42.9"],["salt","3.2"],["bread flour0","89.3"],["levain","21.4"]]},"check":"generated control 2","expected":{"flour_total":"280","hydration":"115.0","percentages":[["egg","17.9"],["water","53.6"],["milk","42.9"],["salt","3.2"],["bread flour0","89.3"],["levain","21.4"]]},"passed":true},{"actual":{"flour_total":"600","hydration":"40.6","percentages":[["levain","16.7"],["water","25.0"],["milk","8.3"],["whole wheat1","41.7"],["salt","1.7"],["spelt0","50.0"]]},"check":"generated control 3","expected":{"flour_total":"600","hydration":"40.6","percentages":[["levain","16.7"],["water","25.0"],["milk","8.3"],["whole wheat1","41.7"],["salt","1.7"],["spelt0","50.0"]]},"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 flour share\", \"actual\": {\"flour_total\": \"1308\", \"percentages\": [[\"egg\", \"3.8\"], [\"water\", \"28.8\"], [\"bread flour1\", \"34.4\"], [\"milk\", \"7.6\"], [\"bread flour2\", \"34.4\"], [\"salt\", \"0.8\"], [\"whole wheat0\", \"25.5\"], [\"levain\", \"11.5\"]], \"hydration\": \"44.1\"}, \"expected\": {\"flour_total\": \"1308\", \"hydration\": \"44.1\", \"percentages\": [[\"egg\", \"3.8\"], [\"water\", \"28.8\"], [\"bread flour1\", \"34.4\"], [\"milk\", \"7.6\"], [\"bread flour2\", \"34.4\"], [\"salt\", \"0.8\"], [\"whole wheat0\", \"25.5\"], [\"levain\", \"11.5\"]]}, \"passed\": true}, {\"check\": \"repair check: starter flour share\", \"actual\": {\"flour_total\": \"350\", \"percentages\": [[\"salt\", \"2.9\"], [\"milk\", \"28.6\"], [\"water\", \"92.9\"], [\"levain\", \"28.6\"], [\"spelt0\", \"85.7\"]], \"hydration\": \"132.0\"}, \"expected\": {\"flour_total\": \"350\", \"hydration\": \"132.0\", \"percentages\": [[\"salt\", \"2.9\"], [\"milk\", \"28.6\"], [\"water\", \"92.9\"], [\"levain\", \"28.6\"], [\"spelt0\", \"85.7\"]]}, \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": {\"flour_total\": \"500\", \"percentages\": [[\"levain\", \"20.0\"], [\"rye0\", \"90.0\"], [\"milk\", \"24.0\"], [\"salt\", \"2.2\"]], \"hydration\": \"30.9\"}, \"expected\": {\"flour_total\": \"500\", \"hydration\": \"30.9\", \"percentages\": [[\"levain\", \"20.0\"], [\"rye0\", \"90.0\"], [\"milk\", \"24.0\"], [\"salt\", \"2.2\"]]}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"flour_total\": \"280\", \"percentages\": [[\"egg\", \"17.9\"], [\"water\", \"53.6\"], [\"milk\", \"42.9\"], [\"salt\", \"3.2\"], [\"bread flour0\", \"89.3\"], [\"levain\", \"21.4\"]], \"hydration\": \"115.0\"}, \"expected\": {\"flour_total\": \"280\", \"hydration\": \"115.0\", \"percentages\": [[\"egg\", \"17.9\"], [\"water\", \"53.6\"], [\"milk\", \"42.9\"], [\"salt\", \"3.2\"], [\"bread flour0\", \"89.3\"], [\"levain\", \"21.4\"]]}, \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": {\"flour_total\": \"600\", \"percentages\": [[\"levain\", \"16.7\"], [\"water\", \"25.0\"], [\"milk\", \"8.3\"], [\"whole wheat1\", \"41.7\"], [\"salt\", \"1.7\"], [\"spelt0\", \"50.0\"]], \"hydration\": \"40.6\"}, \"expected\": {\"flour_total\": \"600\", \"hydration\": \"40.6\", \"percentages\": [[\"levain\", \"16.7\"], [\"water\", \"25.0\"], [\"milk\", \"8.3\"], [\"whole wheat1\", \"41.7\"], [\"salt\", \"1.7\"], [\"spelt0\", \"50.0\"]]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}