{"abstract":"2.25 g of fat prints as 2 g instead of 2.5 g.","category":"Recipe scaling and nutrition","checks":8,"contract":"Round a panel dict to displayed strings (toy label rules, half-up): calories <5 -> 0, <=50 -> nearest 5, else nearest 10; fat g <0.5 -> 0, <5 -> nearest 0.5, else nearest 1; sodium mg <5 -> 0, <=140 -> nearest 5, else nearest 10; cholesterol mg <2 -> \"0 mg\", <5 -> \"less than 5 mg\", else nearest 5; carbs g <0.5 -> \"0 g\", <1 -> \"less than 1 g\", else nearest 1. Absent keys are omitted. Values print with %g formatting.","evaluation_group":"w2-recipe_scaling_and_nutrition-label-rounding","failed_approach":"Limiting the half-gram step to fat below 1 g rounds 1.25-4.9 g to whole grams.","family":"w2-recipe_scaling_and_nutrition-label-rounding-fat-half-gram-band","id":"FA-96881","implementations":{"attempt":{"sha256":"920f3b68450b9bdd69743480d5cb26a5f19904ff408a3308e7d9790516e2c036","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(panel):\n    def near(x, step):\n        return math.floor(x / step + Fraction(1, 2)) * step\n    def show(v, unit):\n        t = format(float(v), 'g')\n        return t + ' ' + unit if unit else t\n    out = {}\n    if 'calories' in panel:\n        c = Fraction(str(panel['calories']))\n        out['calories'] = show(0 if c < 5 else near(c, 5) if c <= 50 else near(c, 10), '')\n    if 'fat' in panel:\n        x = Fraction(str(panel['fat']))\n        out['fat'] = show(0 if x < Fraction(1, 2) else near(x, Fraction(1, 2)) if x < 1 else near(x, 1), 'g')\n    if 'sodium' in panel:\n        x = Fraction(str(panel['sodium']))\n        out['sodium'] = show(0 if x < 5 else near(x, 5) if x <= 140 else near(x, 10), 'mg')\n    if 'cholesterol' in panel:\n        x = Fraction(str(panel['cholesterol']))\n        out['cholesterol'] = '0 mg' if x < 2 else 'less than 5 mg' if x < 5 else show(near(x, 5), 'mg')\n    if 'carbs' in panel:\n        x = Fraction(str(panel['carbs']))\n        out['carbs'] = '0 g' if x < Fraction(1, 2) else 'less than 1 g' if x < 1 else show(near(x, 1), 'g')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['empty panel', [{}], {}],\n  ['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['regression: fat half-gram band', [{'calories': 10.75, 'carbs': 0.9, 'fat': 0.5}],\n   {'calories': '10', 'carbs': 'less than 1 g', 'fat': '0.5 g'}],\n  ['repair check: fat half-gram band', [{'calories': 56, 'carbs': 0.2, 'fat': 1.25, 'sodium': 198}],\n   {'calories': '60', 'carbs': '0 g', 'fat': '1.5 g', 'sodium': '200 mg'}],\n  ['generated control 1', [{'calories': 43.25, 'carbs': 1.5, 'sodium': 145}],\n   {'calories': '45', 'carbs': '2 g', 'sodium': '150 mg'}],\n  ['generated control 2', [{'calories': 65.5, 'fat': 2.75, 'sodium': 131.5}],\n   {'calories': '70', 'fat': '3 g', 'sodium': '130 mg'}],\n  ['generated control 3', [{'calories': 44.25, 'carbs': 30.4, 'fat': 13}],\n   {'calories': '45', 'carbs': '30 g', 'fat': '13 g'}]],\n [['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['regression: fat half-gram band', [{'calories': 49.25, 'fat': 3.5, 'sodium': 143.5}],\n   {'calories': '50', 'fat': '3.5 g', 'sodium': '140 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 3, 'cholesterol': 5, 'fat': 1.25, 'sodium': 189.5}],\n   {'calories': '0', 'cholesterol': '5 mg', 'fat': '1.5 g', 'sodium': '190 mg'}],\n  ['generated control 1', [{'calories': 5.25, 'fat': 2, 'sodium': 143}],\n   {'calories': '5', 'fat': '2 g', 'sodium': '140 mg'}],\n  ['generated control 2', [{'calories': 0.25, 'carbs': 1, 'cholesterol': 3, 'fat': 17.75, 'sodium': 3}],\n   {'calories': '0', 'carbs': '1 g', 'cholesterol': 'less than 5 mg', 'fat': '18 g', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 45.5, 'cholesterol': 3, 'fat': 4.75, 'sodium': 7.5}],\n   {'calories': '45', 'cholesterol': 'less than 5 mg', 'fat': '5 g', 'sodium': '10 mg'}]],\n [['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['regression: fat half-gram band', [{'calories': 12.5, 'cholesterol': 22.5, 'fat': 0.5, 'sodium': 120.5}],\n   {'calories': '15', 'cholesterol': '25 mg', 'fat': '0.5 g', 'sodium': '120 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 2.5, 'fat': 2.5, 'sodium': 197.5}],\n   {'calories': '0', 'fat': '2.5 g', 'sodium': '200 mg'}],\n  ['generated control 1', [{'calories': 2.25, 'fat': 4, 'sodium': 7.5}],\n   {'calories': '0', 'fat': '4 g', 'sodium': '10 mg'}],\n  ['generated control 2', [{'calories': 270, 'carbs': 1.5, 'fat': 6, 'sodium': 3.25}],\n   {'calories': '270', 'carbs': '2 g', 'fat': '6 g', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 0, 'cholesterol': 2, 'fat': 0.4, 'sodium': 0.25}],\n   {'calories': '0', 'cholesterol': 'less than 5 mg', 'fat': '0 g', 'sodium': '0 mg'}]],\n [['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['empty panel', [{}], {}],\n  ['regression: fat half-gram band', [{'calories': 241, 'cholesterol': 2, 'fat': 0.5, 'sodium': 142.5}],\n   {'calories': '240', 'cholesterol': 'less than 5 mg', 'fat': '0.5 g', 'sodium': '140 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 185.5, 'cholesterol': 7.5, 'fat': 3.5, 'sodium': 122}],\n   {'calories': '190', 'cholesterol': '10 mg', 'fat': '3.5 g', 'sodium': '120 mg'}],\n  ['generated control 1', [{'calories': 4.6, 'fat': 10.5, 'sodium': 12.5}],\n   {'calories': '0', 'fat': '11 g', 'sodium': '15 mg'}],\n  ['generated control 2', [{'calories': 365.5, 'carbs': 12.5, 'cholesterol': 2, 'sodium': 3.5}],\n   {'calories': '370', 'carbs': '13 g', 'cholesterol': 'less than 5 mg', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 2.5, 'carbs': 0.9, 'fat': 18}],\n   {'calories': '0', 'carbs': 'less than 1 g', 'fat': '18 g'}]],\n [['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['empty panel', [{}], {}],\n  ['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['regression: fat half-gram band', [{'calories': 56.25, 'carbs': 1.5, 'fat': 1.25}],\n   {'calories': '60', 'carbs': '2 g', 'fat': '1.5 g'}],\n  ['repair check: fat half-gram band', [{'calories': 156.5, 'carbs': 0.2, 'fat': 4.5, 'sodium': 132}],\n   {'calories': '160', 'carbs': '0 g', 'fat': '4.5 g', 'sodium': '130 mg'}],\n  ['generated control 1', [{'carbs': 1, 'fat': 5.5}], {'carbs': '1 g', 'fat': '6 g'}],\n  ['generated control 2', [{'calories': 9, 'sodium': 12.5}], {'calories': '10', 'sodium': '15 mg'}],\n  ['generated control 3', [{'calories': 85.5, 'carbs': 1.5, 'cholesterol': 3, 'fat': 1, 'sodium': 7}],\n   {'calories': '90', 'carbs': '2 g', 'cholesterol': 'less than 5 mg', 'fat': '1 g', 'sodium': '5 mg'}]]]\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":"ca919c7feb1c1d28890e930be4ef46a365e3418c243b1035db2bcc43a4261c74","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(panel):\n    def near(x, step):\n        return math.floor(x / step + Fraction(1, 2)) * step\n    def show(v, unit):\n        t = format(float(v), 'g')\n        return t + ' ' + unit if unit else t\n    out = {}\n    if 'calories' in panel:\n        c = Fraction(str(panel['calories']))\n        out['calories'] = show(0 if c < 5 else near(c, 5) if c <= 50 else near(c, 10), '')\n    if 'fat' in panel:\n        x = Fraction(str(panel['fat']))\n        out['fat'] = show(0 if x < Fraction(1, 2) else near(x, 1) if x < 5 else near(x, 1), 'g')\n    if 'sodium' in panel:\n        x = Fraction(str(panel['sodium']))\n        out['sodium'] = show(0 if x < 5 else near(x, 5) if x <= 140 else near(x, 10), 'mg')\n    if 'cholesterol' in panel:\n        x = Fraction(str(panel['cholesterol']))\n        out['cholesterol'] = '0 mg' if x < 2 else 'less than 5 mg' if x < 5 else show(near(x, 5), 'mg')\n    if 'carbs' in panel:\n        x = Fraction(str(panel['carbs']))\n        out['carbs'] = '0 g' if x < Fraction(1, 2) else 'less than 1 g' if x < 1 else show(near(x, 1), 'g')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['empty panel', [{}], {}],\n  ['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['regression: fat half-gram band', [{'calories': 10.75, 'carbs': 0.9, 'fat': 0.5}],\n   {'calories': '10', 'carbs': 'less than 1 g', 'fat': '0.5 g'}],\n  ['repair check: fat half-gram band', [{'calories': 56, 'carbs': 0.2, 'fat': 1.25, 'sodium': 198}],\n   {'calories': '60', 'carbs': '0 g', 'fat': '1.5 g', 'sodium': '200 mg'}],\n  ['generated control 1', [{'calories': 43.25, 'carbs': 1.5, 'sodium': 145}],\n   {'calories': '45', 'carbs': '2 g', 'sodium': '150 mg'}],\n  ['generated control 2', [{'calories': 65.5, 'fat': 2.75, 'sodium': 131.5}],\n   {'calories': '70', 'fat': '3 g', 'sodium': '130 mg'}],\n  ['generated control 3', [{'calories': 44.25, 'carbs': 30.4, 'fat': 13}],\n   {'calories': '45', 'carbs': '30 g', 'fat': '13 g'}]],\n [['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['regression: fat half-gram band', [{'calories': 49.25, 'fat': 3.5, 'sodium': 143.5}],\n   {'calories': '50', 'fat': '3.5 g', 'sodium': '140 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 3, 'cholesterol': 5, 'fat': 1.25, 'sodium': 189.5}],\n   {'calories': '0', 'cholesterol': '5 mg', 'fat': '1.5 g', 'sodium': '190 mg'}],\n  ['generated control 1', [{'calories': 5.25, 'fat': 2, 'sodium': 143}],\n   {'calories': '5', 'fat': '2 g', 'sodium': '140 mg'}],\n  ['generated control 2', [{'calories': 0.25, 'carbs': 1, 'cholesterol': 3, 'fat': 17.75, 'sodium': 3}],\n   {'calories': '0', 'carbs': '1 g', 'cholesterol': 'less than 5 mg', 'fat': '18 g', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 45.5, 'cholesterol': 3, 'fat': 4.75, 'sodium': 7.5}],\n   {'calories': '45', 'cholesterol': 'less than 5 mg', 'fat': '5 g', 'sodium': '10 mg'}]],\n [['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['regression: fat half-gram band', [{'calories': 12.5, 'cholesterol': 22.5, 'fat': 0.5, 'sodium': 120.5}],\n   {'calories': '15', 'cholesterol': '25 mg', 'fat': '0.5 g', 'sodium': '120 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 2.5, 'fat': 2.5, 'sodium': 197.5}],\n   {'calories': '0', 'fat': '2.5 g', 'sodium': '200 mg'}],\n  ['generated control 1', [{'calories': 2.25, 'fat': 4, 'sodium': 7.5}],\n   {'calories': '0', 'fat': '4 g', 'sodium': '10 mg'}],\n  ['generated control 2', [{'calories': 270, 'carbs': 1.5, 'fat': 6, 'sodium': 3.25}],\n   {'calories': '270', 'carbs': '2 g', 'fat': '6 g', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 0, 'cholesterol': 2, 'fat': 0.4, 'sodium': 0.25}],\n   {'calories': '0', 'cholesterol': 'less than 5 mg', 'fat': '0 g', 'sodium': '0 mg'}]],\n [['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['empty panel', [{}], {}],\n  ['regression: fat half-gram band', [{'calories': 241, 'cholesterol': 2, 'fat': 0.5, 'sodium': 142.5}],\n   {'calories': '240', 'cholesterol': 'less than 5 mg', 'fat': '0.5 g', 'sodium': '140 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 185.5, 'cholesterol': 7.5, 'fat': 3.5, 'sodium': 122}],\n   {'calories': '190', 'cholesterol': '10 mg', 'fat': '3.5 g', 'sodium': '120 mg'}],\n  ['generated control 1', [{'calories': 4.6, 'fat': 10.5, 'sodium': 12.5}],\n   {'calories': '0', 'fat': '11 g', 'sodium': '15 mg'}],\n  ['generated control 2', [{'calories': 365.5, 'carbs': 12.5, 'cholesterol': 2, 'sodium': 3.5}],\n   {'calories': '370', 'carbs': '13 g', 'cholesterol': 'less than 5 mg', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 2.5, 'carbs': 0.9, 'fat': 18}],\n   {'calories': '0', 'carbs': 'less than 1 g', 'fat': '18 g'}]],\n [['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['empty panel', [{}], {}],\n  ['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['regression: fat half-gram band', [{'calories': 56.25, 'carbs': 1.5, 'fat': 1.25}],\n   {'calories': '60', 'carbs': '2 g', 'fat': '1.5 g'}],\n  ['repair check: fat half-gram band', [{'calories': 156.5, 'carbs': 0.2, 'fat': 4.5, 'sodium': 132}],\n   {'calories': '160', 'carbs': '0 g', 'fat': '4.5 g', 'sodium': '130 mg'}],\n  ['generated control 1', [{'carbs': 1, 'fat': 5.5}], {'carbs': '1 g', 'fat': '6 g'}],\n  ['generated control 2', [{'calories': 9, 'sodium': 12.5}], {'calories': '10', 'sodium': '15 mg'}],\n  ['generated control 3', [{'calories': 85.5, 'carbs': 1.5, 'cholesterol': 3, 'fat': 1, 'sodium': 7}],\n   {'calories': '90', 'carbs': '2 g', 'cholesterol': 'less than 5 mg', 'fat': '1 g', 'sodium': '5 mg'}]]]\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":"2fe68ffdc96c16e8d74bfb20de833edc661d34bdf1085a9bd7c4a5d2a1f2c625","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(panel):\n    def near(x, step):\n        return math.floor(x / step + Fraction(1, 2)) * step\n    def show(v, unit):\n        t = format(float(v), 'g')\n        return t + ' ' + unit if unit else t\n    out = {}\n    if 'calories' in panel:\n        c = Fraction(str(panel['calories']))\n        out['calories'] = show(0 if c < 5 else near(c, 5) if c <= 50 else near(c, 10), '')\n    if 'fat' in panel:\n        x = Fraction(str(panel['fat']))\n        out['fat'] = show(0 if x < Fraction(1, 2) else near(x, Fraction(1, 2)) if x < 5 else near(x, 1), 'g')\n    if 'sodium' in panel:\n        x = Fraction(str(panel['sodium']))\n        out['sodium'] = show(0 if x < 5 else near(x, 5) if x <= 140 else near(x, 10), 'mg')\n    if 'cholesterol' in panel:\n        x = Fraction(str(panel['cholesterol']))\n        out['cholesterol'] = '0 mg' if x < 2 else 'less than 5 mg' if x < 5 else show(near(x, 5), 'mg')\n    if 'carbs' in panel:\n        x = Fraction(str(panel['carbs']))\n        out['carbs'] = '0 g' if x < Fraction(1, 2) else 'less than 1 g' if x < 1 else show(near(x, 1), 'g')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['empty panel', [{}], {}],\n  ['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['regression: fat half-gram band', [{'calories': 10.75, 'carbs': 0.9, 'fat': 0.5}],\n   {'calories': '10', 'carbs': 'less than 1 g', 'fat': '0.5 g'}],\n  ['repair check: fat half-gram band', [{'calories': 56, 'carbs': 0.2, 'fat': 1.25, 'sodium': 198}],\n   {'calories': '60', 'carbs': '0 g', 'fat': '1.5 g', 'sodium': '200 mg'}],\n  ['generated control 1', [{'calories': 43.25, 'carbs': 1.5, 'sodium': 145}],\n   {'calories': '45', 'carbs': '2 g', 'sodium': '150 mg'}],\n  ['generated control 2', [{'calories': 65.5, 'fat': 2.75, 'sodium': 131.5}],\n   {'calories': '70', 'fat': '3 g', 'sodium': '130 mg'}],\n  ['generated control 3', [{'calories': 44.25, 'carbs': 30.4, 'fat': 13}],\n   {'calories': '45', 'carbs': '30 g', 'fat': '13 g'}]],\n [['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['regression: fat half-gram band', [{'calories': 49.25, 'fat': 3.5, 'sodium': 143.5}],\n   {'calories': '50', 'fat': '3.5 g', 'sodium': '140 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 3, 'cholesterol': 5, 'fat': 1.25, 'sodium': 189.5}],\n   {'calories': '0', 'cholesterol': '5 mg', 'fat': '1.5 g', 'sodium': '190 mg'}],\n  ['generated control 1', [{'calories': 5.25, 'fat': 2, 'sodium': 143}],\n   {'calories': '5', 'fat': '2 g', 'sodium': '140 mg'}],\n  ['generated control 2', [{'calories': 0.25, 'carbs': 1, 'cholesterol': 3, 'fat': 17.75, 'sodium': 3}],\n   {'calories': '0', 'carbs': '1 g', 'cholesterol': 'less than 5 mg', 'fat': '18 g', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 45.5, 'cholesterol': 3, 'fat': 4.75, 'sodium': 7.5}],\n   {'calories': '45', 'cholesterol': 'less than 5 mg', 'fat': '5 g', 'sodium': '10 mg'}]],\n [['mid-band sodium', [{'carbs': 0.9, 'sodium': 137.5}], {'carbs': 'less than 1 g', 'sodium': '140 mg'}],\n  ['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['regression: fat half-gram band', [{'calories': 12.5, 'cholesterol': 22.5, 'fat': 0.5, 'sodium': 120.5}],\n   {'calories': '15', 'cholesterol': '25 mg', 'fat': '0.5 g', 'sodium': '120 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 2.5, 'fat': 2.5, 'sodium': 197.5}],\n   {'calories': '0', 'fat': '2.5 g', 'sodium': '200 mg'}],\n  ['generated control 1', [{'calories': 2.25, 'fat': 4, 'sodium': 7.5}],\n   {'calories': '0', 'fat': '4 g', 'sodium': '10 mg'}],\n  ['generated control 2', [{'calories': 270, 'carbs': 1.5, 'fat': 6, 'sodium': 3.25}],\n   {'calories': '270', 'carbs': '2 g', 'fat': '6 g', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 0, 'cholesterol': 2, 'fat': 0.4, 'sodium': 0.25}],\n   {'calories': '0', 'cholesterol': 'less than 5 mg', 'fat': '0 g', 'sodium': '0 mg'}]],\n [['large values', [{'calories': 245, 'cholesterol': 22.5, 'fat': 12.5, 'sodium': 455}],\n   {'calories': '250', 'cholesterol': '25 mg', 'fat': '13 g', 'sodium': '460 mg'}],\n  ['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['empty panel', [{}], {}],\n  ['regression: fat half-gram band', [{'calories': 241, 'cholesterol': 2, 'fat': 0.5, 'sodium': 142.5}],\n   {'calories': '240', 'cholesterol': 'less than 5 mg', 'fat': '0.5 g', 'sodium': '140 mg'}],\n  ['repair check: fat half-gram band', [{'calories': 185.5, 'cholesterol': 7.5, 'fat': 3.5, 'sodium': 122}],\n   {'calories': '190', 'cholesterol': '10 mg', 'fat': '3.5 g', 'sodium': '120 mg'}],\n  ['generated control 1', [{'calories': 4.6, 'fat': 10.5, 'sodium': 12.5}],\n   {'calories': '0', 'fat': '11 g', 'sodium': '15 mg'}],\n  ['generated control 2', [{'calories': 365.5, 'carbs': 12.5, 'cholesterol': 2, 'sodium': 3.5}],\n   {'calories': '370', 'carbs': '13 g', 'cholesterol': 'less than 5 mg', 'sodium': '0 mg'}],\n  ['generated control 3', [{'calories': 2.5, 'carbs': 0.9, 'fat': 18}],\n   {'calories': '0', 'carbs': 'less than 1 g', 'fat': '18 g'}]],\n [['small cholesterol', [{'carbs': 12.5, 'cholesterol': 3}],\n   {'carbs': '13 g', 'cholesterol': 'less than 5 mg'}],\n  ['empty panel', [{}], {}],\n  ['insignificant calories', [{'calories': 4.9, 'fat': 0.4}], {'calories': '0', 'fat': '0 g'}],\n  ['regression: fat half-gram band', [{'calories': 56.25, 'carbs': 1.5, 'fat': 1.25}],\n   {'calories': '60', 'carbs': '2 g', 'fat': '1.5 g'}],\n  ['repair check: fat half-gram band', [{'calories': 156.5, 'carbs': 0.2, 'fat': 4.5, 'sodium': 132}],\n   {'calories': '160', 'carbs': '0 g', 'fat': '4.5 g', 'sodium': '130 mg'}],\n  ['generated control 1', [{'carbs': 1, 'fat': 5.5}], {'carbs': '1 g', 'fat': '6 g'}],\n  ['generated control 2', [{'calories': 9, 'sodium': 12.5}], {'calories': '10', 'sodium': '15 mg'}],\n  ['generated control 3', [{'calories': 85.5, 'carbs': 1.5, 'cholesterol': 3, 'fat': 1, 'sodium': 7}],\n   {'calories': '90', 'carbs': '2 g', 'cholesterol': 'less than 5 mg', 'fat': '1 g', 'sodium': '5 mg'}]]]\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-label-rounding-fat-half-gram-band","generated_at":"2026-09-29T14:52:26.833854+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Packaged food and meal-kit labels are generated from recipe nutrition totals with banded rounding rules that differ per nutrient.","repair":"Use the 0.5 g step for fat below 5 g.","root_cause":"Fat between 0.5 and 5 g is rounded to whole grams instead of half grams.","sha256":"50cc023e041ea97648d1e877e36ec61b896377335d1c279eaefb956fad3cbe68","title":"Nutrition label rounding: fat half-gram band · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.194,"exit_code":1,"observations":[{"actual":{},"check":"empty panel","expected":{},"passed":true},{"actual":{"calories":"0","fat":"0 g"},"check":"insignificant calories","expected":{"calories":"0","fat":"0 g"},"passed":true},{"actual":{"carbs":"less than 1 g","sodium":"140 mg"},"check":"mid-band sodium","expected":{"carbs":"less than 1 g","sodium":"140 mg"},"passed":true},{"actual":{"calories":"10","carbs":"less than 1 g","fat":"0.5 g"},"check":"regression: fat half-gram band","expected":{"calories":"10","carbs":"less than 1 g","fat":"0.5 g"},"passed":true},{"actual":{"calories":"60","carbs":"0 g","fat":"1 g","sodium":"200 mg"},"check":"repair check: fat half-gram band","expected":{"calories":"60","carbs":"0 g","fat":"1.5 g","sodium":"200 mg"},"passed":false},{"actual":{"calories":"45","carbs":"2 g","sodium":"150 mg"},"check":"generated control 1","expected":{"calories":"45","carbs":"2 g","sodium":"150 mg"},"passed":true},{"actual":{"calories":"70","fat":"3 g","sodium":"130 mg"},"check":"generated control 2","expected":{"calories":"70","fat":"3 g","sodium":"130 mg"},"passed":true},{"actual":{"calories":"45","carbs":"30 g","fat":"13 g"},"check":"generated control 3","expected":{"calories":"45","carbs":"30 g","fat":"13 g"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"empty panel\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"insignificant calories\", \"actual\": {\"calories\": \"0\", \"fat\": \"0 g\"}, \"expected\": {\"calories\": \"0\", \"fat\": \"0 g\"}, \"passed\": true}, {\"check\": \"mid-band sodium\", \"actual\": {\"sodium\": \"140 mg\", \"carbs\": \"less than 1 g\"}, \"expected\": {\"carbs\": \"less than 1 g\", \"sodium\": \"140 mg\"}, \"passed\": true}, {\"check\": \"regression: fat half-gram band\", \"actual\": {\"calories\": \"10\", \"fat\": \"0.5 g\", \"carbs\": \"less than 1 g\"}, \"expected\": {\"calories\": \"10\", \"carbs\": \"less than 1 g\", \"fat\": \"0.5 g\"}, \"passed\": true}, {\"check\": \"repair check: fat half-gram band\", \"actual\": {\"calories\": \"60\", \"fat\": \"1 g\", \"sodium\": \"200 mg\", \"carbs\": \"0 g\"}, \"expected\": {\"calories\": \"60\", \"carbs\": \"0 g\", \"fat\": \"1.5 g\", \"sodium\": \"200 mg\"}, \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": {\"calories\": \"45\", \"sodium\": \"150 mg\", \"carbs\": \"2 g\"}, \"expected\": {\"calories\": \"45\", \"carbs\": \"2 g\", \"sodium\": \"150 mg\"}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"calories\": \"70\", \"fat\": \"3 g\", \"sodium\": \"130 mg\"}, \"expected\": {\"calories\": \"70\", \"fat\": \"3 g\", \"sodium\": \"130 mg\"}, \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": {\"calories\": \"45\", \"fat\": \"13 g\", \"carbs\": \"30 g\"}, \"expected\": {\"calories\": \"45\", \"carbs\": \"30 g\", \"fat\": \"13 g\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.69,"exit_code":1,"observations":[{"actual":{},"check":"empty panel","expected":{},"passed":true},{"actual":{"calories":"0","fat":"0 g"},"check":"insignificant calories","expected":{"calories":"0","fat":"0 g"},"passed":true},{"actual":{"carbs":"less than 1 g","sodium":"140 mg"},"check":"mid-band sodium","expected":{"carbs":"less than 1 g","sodium":"140 mg"},"passed":true},{"actual":{"calories":"10","carbs":"less than 1 g","fat":"1 g"},"check":"regression: fat half-gram band","expected":{"calories":"10","carbs":"less than 1 g","fat":"0.5 g"},"passed":false},{"actual":{"calories":"60","carbs":"0 g","fat":"1 g","sodium":"200 mg"},"check":"repair check: fat half-gram band","expected":{"calories":"60","carbs":"0 g","fat":"1.5 g","sodium":"200 mg"},"passed":false},{"actual":{"calories":"45","carbs":"2 g","sodium":"150 mg"},"check":"generated control 1","expected":{"calories":"45","carbs":"2 g","sodium":"150 mg"},"passed":true},{"actual":{"calories":"70","fat":"3 g","sodium":"130 mg"},"check":"generated control 2","expected":{"calories":"70","fat":"3 g","sodium":"130 mg"},"passed":true},{"actual":{"calories":"45","carbs":"30 g","fat":"13 g"},"check":"generated control 3","expected":{"calories":"45","carbs":"30 g","fat":"13 g"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"empty panel\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"insignificant calories\", \"actual\": {\"calories\": \"0\", \"fat\": \"0 g\"}, \"expected\": {\"calories\": \"0\", \"fat\": \"0 g\"}, \"passed\": true}, {\"check\": \"mid-band sodium\", \"actual\": {\"sodium\": \"140 mg\", \"carbs\": \"less than 1 g\"}, \"expected\": {\"carbs\": \"less than 1 g\", \"sodium\": \"140 mg\"}, \"passed\": true}, {\"check\": \"regression: fat half-gram band\", \"actual\": {\"calories\": \"10\", \"fat\": \"1 g\", \"carbs\": \"less than 1 g\"}, \"expected\": {\"calories\": \"10\", \"carbs\": \"less than 1 g\", \"fat\": \"0.5 g\"}, \"passed\": false}, {\"check\": \"repair check: fat half-gram band\", \"actual\": {\"calories\": \"60\", \"fat\": \"1 g\", \"sodium\": \"200 mg\", \"carbs\": \"0 g\"}, \"expected\": {\"calories\": \"60\", \"carbs\": \"0 g\", \"fat\": \"1.5 g\", \"sodium\": \"200 mg\"}, \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": {\"calories\": \"45\", \"sodium\": \"150 mg\", \"carbs\": \"2 g\"}, \"expected\": {\"calories\": \"45\", \"carbs\": \"2 g\", \"sodium\": \"150 mg\"}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"calories\": \"70\", \"fat\": \"3 g\", \"sodium\": \"130 mg\"}, \"expected\": {\"calories\": \"70\", \"fat\": \"3 g\", \"sodium\": \"130 mg\"}, \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": {\"calories\": \"45\", \"fat\": \"13 g\", \"carbs\": \"30 g\"}, \"expected\": {\"calories\": \"45\", \"carbs\": \"30 g\", \"fat\": \"13 g\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.12,"exit_code":0,"observations":[{"actual":{},"check":"empty panel","expected":{},"passed":true},{"actual":{"calories":"0","fat":"0 g"},"check":"insignificant calories","expected":{"calories":"0","fat":"0 g"},"passed":true},{"actual":{"carbs":"less than 1 g","sodium":"140 mg"},"check":"mid-band sodium","expected":{"carbs":"less than 1 g","sodium":"140 mg"},"passed":true},{"actual":{"calories":"10","carbs":"less than 1 g","fat":"0.5 g"},"check":"regression: fat half-gram band","expected":{"calories":"10","carbs":"less than 1 g","fat":"0.5 g"},"passed":true},{"actual":{"calories":"60","carbs":"0 g","fat":"1.5 g","sodium":"200 mg"},"check":"repair check: fat half-gram band","expected":{"calories":"60","carbs":"0 g","fat":"1.5 g","sodium":"200 mg"},"passed":true},{"actual":{"calories":"45","carbs":"2 g","sodium":"150 mg"},"check":"generated control 1","expected":{"calories":"45","carbs":"2 g","sodium":"150 mg"},"passed":true},{"actual":{"calories":"70","fat":"3 g","sodium":"130 mg"},"check":"generated control 2","expected":{"calories":"70","fat":"3 g","sodium":"130 mg"},"passed":true},{"actual":{"calories":"45","carbs":"30 g","fat":"13 g"},"check":"generated control 3","expected":{"calories":"45","carbs":"30 g","fat":"13 g"},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"empty panel\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"insignificant calories\", \"actual\": {\"calories\": \"0\", \"fat\": \"0 g\"}, \"expected\": {\"calories\": \"0\", \"fat\": \"0 g\"}, \"passed\": true}, {\"check\": \"mid-band sodium\", \"actual\": {\"sodium\": \"140 mg\", \"carbs\": \"less than 1 g\"}, \"expected\": {\"carbs\": \"less than 1 g\", \"sodium\": \"140 mg\"}, \"passed\": true}, {\"check\": \"regression: fat half-gram band\", \"actual\": {\"calories\": \"10\", \"fat\": \"0.5 g\", \"carbs\": \"less than 1 g\"}, \"expected\": {\"calories\": \"10\", \"carbs\": \"less than 1 g\", \"fat\": \"0.5 g\"}, \"passed\": true}, {\"check\": \"repair check: fat half-gram band\", \"actual\": {\"calories\": \"60\", \"fat\": \"1.5 g\", \"sodium\": \"200 mg\", \"carbs\": \"0 g\"}, \"expected\": {\"calories\": \"60\", \"carbs\": \"0 g\", \"fat\": \"1.5 g\", \"sodium\": \"200 mg\"}, \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": {\"calories\": \"45\", \"sodium\": \"150 mg\", \"carbs\": \"2 g\"}, \"expected\": {\"calories\": \"45\", \"carbs\": \"2 g\", \"sodium\": \"150 mg\"}, \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": {\"calories\": \"70\", \"fat\": \"3 g\", \"sodium\": \"130 mg\"}, \"expected\": {\"calories\": \"70\", \"fat\": \"3 g\", \"sodium\": \"130 mg\"}, \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": {\"calories\": \"45\", \"fat\": \"13 g\", \"carbs\": \"30 g\"}, \"expected\": {\"calories\": \"45\", \"carbs\": \"30 g\", \"fat\": \"13 g\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}