{"abstract":"A step depending on a missing \"shop\" step is scheduled as if the dependency were satisfied.","category":"Recipe scaling and nutrition","checks":8,"contract":"Steps [name, minutes, depends_on]; a step must finish before any step depending on it starts. Latest start = min(latest start of dependents, serve time) - minutes. Unknown dependency -> \"error: unknown step X\"; a cycle -> \"error: cycle\". Serve \"HH:MM\"; starts print as \"HH:MM\" modulo 24h (previous day wraps). Output [[name, time]] sorted by absolute start then name.","evaluation_group":"w2-recipe_scaling_and_nutrition-backward-schedule","failed_approach":"Checking only the first step misses unknown dependencies elsewhere.","family":"w2-recipe_scaling_and_nutrition-backward-schedule-unknown-dependency-check","id":"FA-97311","implementations":{"attempt":{"sha256":"0aa4f4c26cdfd9aa6ce7667d02c9ab0f1fb2832d76a01d8ee907b3eb93b33ec1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(steps, serve):\n    by = {s[0]: s for s in steps}\n    for s in steps:\n        for d in s[2]:\n            if d not in by and s is steps[0]:\n                return 'error: unknown step ' + d\n    h, m = serve.split(':')\n    T = int(h) * 60 + int(m)\n    latest = {}\n    visiting = set()\n    def ls(n):\n        if n in latest:\n            return latest[n]\n        if n in visiting:\n            return None\n        visiting.add(n)\n        finish = T\n        for s in steps:\n            if n in s[2]:\n                v = ls(s[0])\n                if v is None:\n                    return None\n                finish = min(finish, v)\n        visiting.discard(n)\n        latest[n] = finish - by[n][1]\n        return latest[n]\n    rows = []\n    for s in steps:\n        v = ls(s[0])\n        if v is None:\n            return 'error: cycle'\n        rows.append((v, s[0]))\n    rows.sort()\n    return [[n, '%02d:%02d' % divmod(v % 1440, 60)] for v, n in rows]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: unknown dependency check',\n   [[['marinate', 45, []], ['roast', 5, ['prep']], ['prep', 5, ['shop']]], '02:00'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['plate', 45, []], ['sauce', 5, ['prep', 'marinate']], ['roast', 240, []], ['marinate', 10, []],\n     ['rest', 45, ['sauce']], ['prep', 240, ['shop']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['roast', 5, []], ['marinate', 10, []], ['prep', 90, []]], '18:30'],\n   [['prep', '17:00'], ['marinate', '18:20'], ['roast', '18:25']]],\n  ['generated control 2', [[['marinate', 240, ['prep']], ['roast', 30, ['prep']], ['prep', 45, []]], '01:15'],\n   [['prep', '20:30'], ['marinate', '21:15'], ['roast', '00:45']]],\n  ['generated control 3',\n   [[['rest', 45, ['prep', 'sauce']], ['sauce', 90, ['marinate', 'roast']], ['prep', 240, []],\n     ['marinate', 45, []], ['roast', 45, ['marinate']]],\n    '12:00'],\n   [['prep', '07:15'], ['marinate', '08:15'], ['roast', '09:00'], ['sauce', '09:45'], ['rest', '11:15']]]],\n [['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['regression: unknown dependency check',\n   [[['prep', 15, ['shop']], ['sauce', 5, ['roast']], ['roast', 5, ['prep', 'marinate']],\n     ['marinate', 45, []]],\n    '19:45'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['marinate', 10, []], ['roast', 10, ['prep']], ['rest', 5, ['roast', 'sauce']], ['prep', 90, []],\n     ['sauce', 30, ['prep', 'roast', 'shop']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['roast', 240, ['prep']], ['prep', 10, []], ['marinate', 10, []]], '02:00'],\n   [['prep', '21:50'], ['roast', '22:00'], ['marinate', '01:50']]],\n  ['generated control 2',\n   [[['sauce', 15, ['roast']], ['roast', 45, ['prep']], ['rest', 10, []], ['marinate', 90, ['prep']],\n     ['prep', 45, []]],\n    '00:30'],\n   [['prep', '22:15'], ['marinate', '23:00'], ['roast', '23:30'], ['sauce', '00:15'], ['rest', '00:20']]],\n  ['generated control 3', [[['roast', 90, []], ['marinate', 10, ['prep']], ['prep', 45, []]], '12:00'],\n   [['roast', '10:30'], ['prep', '11:05'], ['marinate', '11:50']]]],\n [['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['regression: unknown dependency check',\n   [[['sauce', 90, ['prep']], ['prep', 45, []], ['rest', 15, ['prep', 'sauce']],\n     ['roast', 10, ['prep', 'marinate', 'shop']], ['marinate', 30, ['prep']]],\n    '01:15'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['plate', 15, ['marinate', 'sauce']], ['rest', 30, ['prep', 'marinate', 'sauce']],\n     ['sauce', 10, ['marinate']], ['roast', 15, ['marinate']], ['marinate', 10, ['prep', 'shop']],\n     ['prep', 45, ['plate']]],\n    '02:00'],\n   'error: unknown step shop'],\n  ['generated control 1',\n   [[['rest', 240, ['prep', 'sauce']], ['roast', 10, ['prep', 'marinate']], ['sauce', 90, ['prep']],\n     ['prep', 30, ['rest']], ['marinate', 15, []]],\n    '02:00'],\n   'error: cycle'],\n  ['generated control 2',\n   [[['prep', 45, []], ['marinate', 10, []], ['roast', 10, []], ['sauce', 5, []]], '00:30'],\n   [['prep', '23:45'], ['marinate', '00:20'], ['roast', '00:20'], ['sauce', '00:25']]],\n  ['generated control 3',\n   [[['prep', 5, []], ['marinate', 240, ['prep']], ['roast', 5, []], ['sauce', 30, ['prep', 'roast']],\n     ['rest', 45, ['sauce']]],\n    '01:15'],\n   [['prep', '21:10'], ['marinate', '21:15'], ['roast', '23:55'], ['sauce', '00:00'], ['rest', '00:30']]]],\n [['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['regression: unknown dependency check',\n   [[['roast', 30, ['prep', 'marinate']], ['sauce', 10, ['prep', 'roast']], ['marinate', 30, []],\n     ['rest', 45, ['prep', 'marinate']], ['plate', 45, ['marinate', 'sauce', 'shop']], ['prep', 45, []]],\n    '00:30'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['sauce', 45, ['prep', 'roast']], ['plate', 90, ['prep', 'rest', 'shop']], ['roast', 30, []],\n     ['rest', 240, []], ['prep', 45, []], ['marinate', 90, ['prep']]],\n    '02:00'],\n   'error: unknown step shop'],\n  ['generated control 1',\n   [[['sauce', 90, ['prep', 'marinate', 'roast']], ['roast', 10, ['marinate']], ['prep', 10, []],\n     ['rest', 30, []], ['marinate', 5, []]],\n    '19:45'],\n   [['marinate', '18:00'], ['prep', '18:05'], ['roast', '18:05'], ['sauce', '18:15'], ['rest', '19:15']]],\n  ['generated control 2',\n   [[['plate', 10, ['marinate']], ['sauce', 30, ['prep', 'marinate']], ['roast', 90, []], ['prep', 10, []],\n     ['marinate', 90, ['prep']], ['rest', 240, ['sauce']]],\n    '12:00'],\n   [['prep', '05:50'], ['marinate', '06:00'], ['sauce', '07:30'], ['rest', '08:00'], ['roast', '10:30'],\n    ['plate', '11:50']]],\n  ['generated control 3', [[['roast', 240, []], ['marinate', 90, []], ['prep', 5, []]], '18:30'],\n   [['roast', '14:30'], ['marinate', '17:00'], ['prep', '18:25']]]],\n [['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: unknown dependency check',\n   [[['sauce', 30, ['prep', 'roast']], ['prep', 240, ['shop']], ['roast', 5, ['prep', 'marinate']],\n     ['plate', 30, ['prep', 'sauce']], ['marinate', 10, ['prep']], ['rest', 45, ['marinate']]],\n    '18:30'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['sauce', 5, ['roast']], ['prep', 90, []], ['rest', 45, ['prep']], ['marinate', 15, ['prep']],\n     ['plate', 45, ['shop']], ['roast', 30, ['prep']]],\n    '18:30'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['marinate', 30, []], ['prep', 15, []], ['roast', 45, []]], '18:30'],\n   [['roast', '17:45'], ['marinate', '18:00'], ['prep', '18:15']]],\n  ['generated control 2',\n   [[['marinate', 10, []], ['prep', 30, []], ['rest', 10, []], ['plate', 10, ['prep', 'sauce']],\n     ['roast', 10, []], ['sauce', 10, ['prep', 'marinate']]],\n    '01:15'],\n   [['prep', '00:25'], ['marinate', '00:45'], ['sauce', '00:55'], ['plate', '01:05'], ['rest', '01:05'],\n    ['roast', '01:05']]],\n  ['generated control 3',\n   [[['roast', 15, ['prep', 'marinate']], ['marinate', 5, []], ['prep', 90, []],\n     ['sauce', 240, ['marinate', 'roast']]],\n    '02:00'],\n   [['prep', '20:15'], ['marinate', '21:40'], ['roast', '21:45'], ['sauce', '22:00']]]]]\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":"95055c08d7af3b6e1a4c0a081e7133c29dcf62e623552bc2a8a3f57e06a9387c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(steps, serve):\n    by = {s[0]: s for s in steps}\n    for s in steps:\n        for d in s[2]:\n            if d not in by:\n                continue\n    h, m = serve.split(':')\n    T = int(h) * 60 + int(m)\n    latest = {}\n    visiting = set()\n    def ls(n):\n        if n in latest:\n            return latest[n]\n        if n in visiting:\n            return None\n        visiting.add(n)\n        finish = T\n        for s in steps:\n            if n in s[2]:\n                v = ls(s[0])\n                if v is None:\n                    return None\n                finish = min(finish, v)\n        visiting.discard(n)\n        latest[n] = finish - by[n][1]\n        return latest[n]\n    rows = []\n    for s in steps:\n        v = ls(s[0])\n        if v is None:\n            return 'error: cycle'\n        rows.append((v, s[0]))\n    rows.sort()\n    return [[n, '%02d:%02d' % divmod(v % 1440, 60)] for v, n in rows]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: unknown dependency check',\n   [[['marinate', 45, []], ['roast', 5, ['prep']], ['prep', 5, ['shop']]], '02:00'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['plate', 45, []], ['sauce', 5, ['prep', 'marinate']], ['roast', 240, []], ['marinate', 10, []],\n     ['rest', 45, ['sauce']], ['prep', 240, ['shop']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['roast', 5, []], ['marinate', 10, []], ['prep', 90, []]], '18:30'],\n   [['prep', '17:00'], ['marinate', '18:20'], ['roast', '18:25']]],\n  ['generated control 2', [[['marinate', 240, ['prep']], ['roast', 30, ['prep']], ['prep', 45, []]], '01:15'],\n   [['prep', '20:30'], ['marinate', '21:15'], ['roast', '00:45']]],\n  ['generated control 3',\n   [[['rest', 45, ['prep', 'sauce']], ['sauce', 90, ['marinate', 'roast']], ['prep', 240, []],\n     ['marinate', 45, []], ['roast', 45, ['marinate']]],\n    '12:00'],\n   [['prep', '07:15'], ['marinate', '08:15'], ['roast', '09:00'], ['sauce', '09:45'], ['rest', '11:15']]]],\n [['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['regression: unknown dependency check',\n   [[['prep', 15, ['shop']], ['sauce', 5, ['roast']], ['roast', 5, ['prep', 'marinate']],\n     ['marinate', 45, []]],\n    '19:45'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['marinate', 10, []], ['roast', 10, ['prep']], ['rest', 5, ['roast', 'sauce']], ['prep', 90, []],\n     ['sauce', 30, ['prep', 'roast', 'shop']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['roast', 240, ['prep']], ['prep', 10, []], ['marinate', 10, []]], '02:00'],\n   [['prep', '21:50'], ['roast', '22:00'], ['marinate', '01:50']]],\n  ['generated control 2',\n   [[['sauce', 15, ['roast']], ['roast', 45, ['prep']], ['rest', 10, []], ['marinate', 90, ['prep']],\n     ['prep', 45, []]],\n    '00:30'],\n   [['prep', '22:15'], ['marinate', '23:00'], ['roast', '23:30'], ['sauce', '00:15'], ['rest', '00:20']]],\n  ['generated control 3', [[['roast', 90, []], ['marinate', 10, ['prep']], ['prep', 45, []]], '12:00'],\n   [['roast', '10:30'], ['prep', '11:05'], ['marinate', '11:50']]]],\n [['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['regression: unknown dependency check',\n   [[['sauce', 90, ['prep']], ['prep', 45, []], ['rest', 15, ['prep', 'sauce']],\n     ['roast', 10, ['prep', 'marinate', 'shop']], ['marinate', 30, ['prep']]],\n    '01:15'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['plate', 15, ['marinate', 'sauce']], ['rest', 30, ['prep', 'marinate', 'sauce']],\n     ['sauce', 10, ['marinate']], ['roast', 15, ['marinate']], ['marinate', 10, ['prep', 'shop']],\n     ['prep', 45, ['plate']]],\n    '02:00'],\n   'error: unknown step shop'],\n  ['generated control 1',\n   [[['rest', 240, ['prep', 'sauce']], ['roast', 10, ['prep', 'marinate']], ['sauce', 90, ['prep']],\n     ['prep', 30, ['rest']], ['marinate', 15, []]],\n    '02:00'],\n   'error: cycle'],\n  ['generated control 2',\n   [[['prep', 45, []], ['marinate', 10, []], ['roast', 10, []], ['sauce', 5, []]], '00:30'],\n   [['prep', '23:45'], ['marinate', '00:20'], ['roast', '00:20'], ['sauce', '00:25']]],\n  ['generated control 3',\n   [[['prep', 5, []], ['marinate', 240, ['prep']], ['roast', 5, []], ['sauce', 30, ['prep', 'roast']],\n     ['rest', 45, ['sauce']]],\n    '01:15'],\n   [['prep', '21:10'], ['marinate', '21:15'], ['roast', '23:55'], ['sauce', '00:00'], ['rest', '00:30']]]],\n [['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['regression: unknown dependency check',\n   [[['roast', 30, ['prep', 'marinate']], ['sauce', 10, ['prep', 'roast']], ['marinate', 30, []],\n     ['rest', 45, ['prep', 'marinate']], ['plate', 45, ['marinate', 'sauce', 'shop']], ['prep', 45, []]],\n    '00:30'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['sauce', 45, ['prep', 'roast']], ['plate', 90, ['prep', 'rest', 'shop']], ['roast', 30, []],\n     ['rest', 240, []], ['prep', 45, []], ['marinate', 90, ['prep']]],\n    '02:00'],\n   'error: unknown step shop'],\n  ['generated control 1',\n   [[['sauce', 90, ['prep', 'marinate', 'roast']], ['roast', 10, ['marinate']], ['prep', 10, []],\n     ['rest', 30, []], ['marinate', 5, []]],\n    '19:45'],\n   [['marinate', '18:00'], ['prep', '18:05'], ['roast', '18:05'], ['sauce', '18:15'], ['rest', '19:15']]],\n  ['generated control 2',\n   [[['plate', 10, ['marinate']], ['sauce', 30, ['prep', 'marinate']], ['roast', 90, []], ['prep', 10, []],\n     ['marinate', 90, ['prep']], ['rest', 240, ['sauce']]],\n    '12:00'],\n   [['prep', '05:50'], ['marinate', '06:00'], ['sauce', '07:30'], ['rest', '08:00'], ['roast', '10:30'],\n    ['plate', '11:50']]],\n  ['generated control 3', [[['roast', 240, []], ['marinate', 90, []], ['prep', 5, []]], '18:30'],\n   [['roast', '14:30'], ['marinate', '17:00'], ['prep', '18:25']]]],\n [['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: unknown dependency check',\n   [[['sauce', 30, ['prep', 'roast']], ['prep', 240, ['shop']], ['roast', 5, ['prep', 'marinate']],\n     ['plate', 30, ['prep', 'sauce']], ['marinate', 10, ['prep']], ['rest', 45, ['marinate']]],\n    '18:30'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['sauce', 5, ['roast']], ['prep', 90, []], ['rest', 45, ['prep']], ['marinate', 15, ['prep']],\n     ['plate', 45, ['shop']], ['roast', 30, ['prep']]],\n    '18:30'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['marinate', 30, []], ['prep', 15, []], ['roast', 45, []]], '18:30'],\n   [['roast', '17:45'], ['marinate', '18:00'], ['prep', '18:15']]],\n  ['generated control 2',\n   [[['marinate', 10, []], ['prep', 30, []], ['rest', 10, []], ['plate', 10, ['prep', 'sauce']],\n     ['roast', 10, []], ['sauce', 10, ['prep', 'marinate']]],\n    '01:15'],\n   [['prep', '00:25'], ['marinate', '00:45'], ['sauce', '00:55'], ['plate', '01:05'], ['rest', '01:05'],\n    ['roast', '01:05']]],\n  ['generated control 3',\n   [[['roast', 15, ['prep', 'marinate']], ['marinate', 5, []], ['prep', 90, []],\n     ['sauce', 240, ['marinate', 'roast']]],\n    '02:00'],\n   [['prep', '20:15'], ['marinate', '21:40'], ['roast', '21:45'], ['sauce', '22:00']]]]]\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":"e787a02d8a61647df2e246f322de2e8c47114cabe0dee1cf754c065dc6d0a984","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(steps, serve):\n    by = {s[0]: s for s in steps}\n    for s in steps:\n        for d in s[2]:\n            if d not in by:\n                return 'error: unknown step ' + d\n    h, m = serve.split(':')\n    T = int(h) * 60 + int(m)\n    latest = {}\n    visiting = set()\n    def ls(n):\n        if n in latest:\n            return latest[n]\n        if n in visiting:\n            return None\n        visiting.add(n)\n        finish = T\n        for s in steps:\n            if n in s[2]:\n                v = ls(s[0])\n                if v is None:\n                    return None\n                finish = min(finish, v)\n        visiting.discard(n)\n        latest[n] = finish - by[n][1]\n        return latest[n]\n    rows = []\n    for s in steps:\n        v = ls(s[0])\n        if v is None:\n            return 'error: cycle'\n        rows.append((v, s[0]))\n    rows.sort()\n    return [[n, '%02d:%02d' % divmod(v % 1440, 60)] for v, n in rows]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: unknown dependency check',\n   [[['marinate', 45, []], ['roast', 5, ['prep']], ['prep', 5, ['shop']]], '02:00'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['plate', 45, []], ['sauce', 5, ['prep', 'marinate']], ['roast', 240, []], ['marinate', 10, []],\n     ['rest', 45, ['sauce']], ['prep', 240, ['shop']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['roast', 5, []], ['marinate', 10, []], ['prep', 90, []]], '18:30'],\n   [['prep', '17:00'], ['marinate', '18:20'], ['roast', '18:25']]],\n  ['generated control 2', [[['marinate', 240, ['prep']], ['roast', 30, ['prep']], ['prep', 45, []]], '01:15'],\n   [['prep', '20:30'], ['marinate', '21:15'], ['roast', '00:45']]],\n  ['generated control 3',\n   [[['rest', 45, ['prep', 'sauce']], ['sauce', 90, ['marinate', 'roast']], ['prep', 240, []],\n     ['marinate', 45, []], ['roast', 45, ['marinate']]],\n    '12:00'],\n   [['prep', '07:15'], ['marinate', '08:15'], ['roast', '09:00'], ['sauce', '09:45'], ['rest', '11:15']]]],\n [['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['regression: unknown dependency check',\n   [[['prep', 15, ['shop']], ['sauce', 5, ['roast']], ['roast', 5, ['prep', 'marinate']],\n     ['marinate', 45, []]],\n    '19:45'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['marinate', 10, []], ['roast', 10, ['prep']], ['rest', 5, ['roast', 'sauce']], ['prep', 90, []],\n     ['sauce', 30, ['prep', 'roast', 'shop']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['roast', 240, ['prep']], ['prep', 10, []], ['marinate', 10, []]], '02:00'],\n   [['prep', '21:50'], ['roast', '22:00'], ['marinate', '01:50']]],\n  ['generated control 2',\n   [[['sauce', 15, ['roast']], ['roast', 45, ['prep']], ['rest', 10, []], ['marinate', 90, ['prep']],\n     ['prep', 45, []]],\n    '00:30'],\n   [['prep', '22:15'], ['marinate', '23:00'], ['roast', '23:30'], ['sauce', '00:15'], ['rest', '00:20']]],\n  ['generated control 3', [[['roast', 90, []], ['marinate', 10, ['prep']], ['prep', 45, []]], '12:00'],\n   [['roast', '10:30'], ['prep', '11:05'], ['marinate', '11:50']]]],\n [['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['regression: unknown dependency check',\n   [[['sauce', 90, ['prep']], ['prep', 45, []], ['rest', 15, ['prep', 'sauce']],\n     ['roast', 10, ['prep', 'marinate', 'shop']], ['marinate', 30, ['prep']]],\n    '01:15'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['plate', 15, ['marinate', 'sauce']], ['rest', 30, ['prep', 'marinate', 'sauce']],\n     ['sauce', 10, ['marinate']], ['roast', 15, ['marinate']], ['marinate', 10, ['prep', 'shop']],\n     ['prep', 45, ['plate']]],\n    '02:00'],\n   'error: unknown step shop'],\n  ['generated control 1',\n   [[['rest', 240, ['prep', 'sauce']], ['roast', 10, ['prep', 'marinate']], ['sauce', 90, ['prep']],\n     ['prep', 30, ['rest']], ['marinate', 15, []]],\n    '02:00'],\n   'error: cycle'],\n  ['generated control 2',\n   [[['prep', 45, []], ['marinate', 10, []], ['roast', 10, []], ['sauce', 5, []]], '00:30'],\n   [['prep', '23:45'], ['marinate', '00:20'], ['roast', '00:20'], ['sauce', '00:25']]],\n  ['generated control 3',\n   [[['prep', 5, []], ['marinate', 240, ['prep']], ['roast', 5, []], ['sauce', 30, ['prep', 'roast']],\n     ['rest', 45, ['sauce']]],\n    '01:15'],\n   [['prep', '21:10'], ['marinate', '21:15'], ['roast', '23:55'], ['sauce', '00:00'], ['rest', '00:30']]]],\n [['unknown dependency', [[['a', 5, ['shop']]], '18:00'], 'error: unknown step shop'],\n  ['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['regression: unknown dependency check',\n   [[['roast', 30, ['prep', 'marinate']], ['sauce', 10, ['prep', 'roast']], ['marinate', 30, []],\n     ['rest', 45, ['prep', 'marinate']], ['plate', 45, ['marinate', 'sauce', 'shop']], ['prep', 45, []]],\n    '00:30'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['sauce', 45, ['prep', 'roast']], ['plate', 90, ['prep', 'rest', 'shop']], ['roast', 30, []],\n     ['rest', 240, []], ['prep', 45, []], ['marinate', 90, ['prep']]],\n    '02:00'],\n   'error: unknown step shop'],\n  ['generated control 1',\n   [[['sauce', 90, ['prep', 'marinate', 'roast']], ['roast', 10, ['marinate']], ['prep', 10, []],\n     ['rest', 30, []], ['marinate', 5, []]],\n    '19:45'],\n   [['marinate', '18:00'], ['prep', '18:05'], ['roast', '18:05'], ['sauce', '18:15'], ['rest', '19:15']]],\n  ['generated control 2',\n   [[['plate', 10, ['marinate']], ['sauce', 30, ['prep', 'marinate']], ['roast', 90, []], ['prep', 10, []],\n     ['marinate', 90, ['prep']], ['rest', 240, ['sauce']]],\n    '12:00'],\n   [['prep', '05:50'], ['marinate', '06:00'], ['sauce', '07:30'], ['rest', '08:00'], ['roast', '10:30'],\n    ['plate', '11:50']]],\n  ['generated control 3', [[['roast', 240, []], ['marinate', 90, []], ['prep', 5, []]], '18:30'],\n   [['roast', '14:30'], ['marinate', '17:00'], ['prep', '18:25']]]],\n [['chain', [[['prep', 10, []], ['roast', 90, ['prep']], ['rest', 15, ['roast']]], '18:30'],\n   [['prep', '16:35'], ['roast', '16:45'], ['rest', '18:15']]],\n  ['overnight marinade', [[['marinate', 480, []], ['grill', 20, ['marinate']]], '12:00'],\n   [['marinate', '03:40'], ['grill', '11:40']]],\n  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: unknown dependency check',\n   [[['sauce', 30, ['prep', 'roast']], ['prep', 240, ['shop']], ['roast', 5, ['prep', 'marinate']],\n     ['plate', 30, ['prep', 'sauce']], ['marinate', 10, ['prep']], ['rest', 45, ['marinate']]],\n    '18:30'],\n   'error: unknown step shop'],\n  ['repair check: unknown dependency check',\n   [[['sauce', 5, ['roast']], ['prep', 90, []], ['rest', 45, ['prep']], ['marinate', 15, ['prep']],\n     ['plate', 45, ['shop']], ['roast', 30, ['prep']]],\n    '18:30'],\n   'error: unknown step shop'],\n  ['generated control 1', [[['marinate', 30, []], ['prep', 15, []], ['roast', 45, []]], '18:30'],\n   [['roast', '17:45'], ['marinate', '18:00'], ['prep', '18:15']]],\n  ['generated control 2',\n   [[['marinate', 10, []], ['prep', 30, []], ['rest', 10, []], ['plate', 10, ['prep', 'sauce']],\n     ['roast', 10, []], ['sauce', 10, ['prep', 'marinate']]],\n    '01:15'],\n   [['prep', '00:25'], ['marinate', '00:45'], ['sauce', '00:55'], ['plate', '01:05'], ['rest', '01:05'],\n    ['roast', '01:05']]],\n  ['generated control 3',\n   [[['roast', 15, ['prep', 'marinate']], ['marinate', 5, []], ['prep', 90, []],\n     ['sauce', 240, ['marinate', 'roast']]],\n    '02:00'],\n   [['prep', '20:15'], ['marinate', '21:40'], ['roast', '21:45'], ['sauce', '22:00']]]]]\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-backward-schedule-unknown-dependency-check","generated_at":"2026-09-29T14:52:30.964311+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Dinner-party and restaurant prep planners schedule long marinades and roasts backward from service.","repair":"Return an error for any unknown dependency.","root_cause":"Unknown dependencies are skipped instead of reported.","sha256":"1bc92afcb31ac67b421d2ce2aeedf857ff766bb38e4d844f725a7c3a38e9f1a9","title":"Backward recipe step scheduler: unknown dependency check · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.899,"exit_code":1,"observations":[{"actual":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"check":"chain","expected":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"passed":true},{"actual":[["marinate","03:40"],["grill","11:40"]],"check":"overnight marinade","expected":[["marinate","03:40"],["grill","11:40"]],"passed":true},{"actual":"error: cycle","check":"cycle","expected":"error: cycle","passed":true},{"actual":[["marinate","01:15"],["prep","01:50"],["roast","01:55"]],"check":"regression: unknown dependency check","expected":"error: unknown step shop","passed":false},{"actual":[["prep","07:10"],["roast","08:00"],["marinate","11:00"],["sauce","11:10"],["plate","11:15"],["rest","11:15"]],"check":"repair check: unknown dependency check","expected":"error: unknown step shop","passed":false},{"actual":[["prep","17:00"],["marinate","18:20"],["roast","18:25"]],"check":"generated control 1","expected":[["prep","17:00"],["marinate","18:20"],["roast","18:25"]],"passed":true},{"actual":[["prep","20:30"],["marinate","21:15"],["roast","00:45"]],"check":"generated control 2","expected":[["prep","20:30"],["marinate","21:15"],["roast","00:45"]],"passed":true},{"actual":[["prep","07:15"],["marinate","08:15"],["roast","09:00"],["sauce","09:45"],["rest","11:15"]],"check":"generated control 3","expected":[["prep","07:15"],["marinate","08:15"],["roast","09:00"],["sauce","09:45"],["rest","11:15"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"chain\", \"actual\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"expected\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"passed\": true}, {\"check\": \"overnight marinade\", \"actual\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"expected\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"passed\": true}, {\"check\": \"cycle\", \"actual\": \"error: cycle\", \"expected\": \"error: cycle\", \"passed\": true}, {\"check\": \"regression: unknown dependency check\", \"actual\": [[\"marinate\", \"01:15\"], [\"prep\", \"01:50\"], [\"roast\", \"01:55\"]], \"expected\": \"error: unknown step shop\", \"passed\": false}, {\"check\": \"repair check: unknown dependency check\", \"actual\": [[\"prep\", \"07:10\"], [\"roast\", \"08:00\"], [\"marinate\", \"11:00\"], [\"sauce\", \"11:10\"], [\"plate\", \"11:15\"], [\"rest\", \"11:15\"]], \"expected\": \"error: unknown step shop\", \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [[\"prep\", \"17:00\"], [\"marinate\", \"18:20\"], [\"roast\", \"18:25\"]], \"expected\": [[\"prep\", \"17:00\"], [\"marinate\", \"18:20\"], [\"roast\", \"18:25\"]], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [[\"prep\", \"20:30\"], [\"marinate\", \"21:15\"], [\"roast\", \"00:45\"]], \"expected\": [[\"prep\", \"20:30\"], [\"marinate\", \"21:15\"], [\"roast\", \"00:45\"]], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [[\"prep\", \"07:15\"], [\"marinate\", \"08:15\"], [\"roast\", \"09:00\"], [\"sauce\", \"09:45\"], [\"rest\", \"11:15\"]], \"expected\": [[\"prep\", \"07:15\"], [\"marinate\", \"08:15\"], [\"roast\", \"09:00\"], [\"sauce\", \"09:45\"], [\"rest\", \"11:15\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.788,"exit_code":1,"observations":[{"actual":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"check":"chain","expected":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"passed":true},{"actual":[["marinate","03:40"],["grill","11:40"]],"check":"overnight marinade","expected":[["marinate","03:40"],["grill","11:40"]],"passed":true},{"actual":"error: cycle","check":"cycle","expected":"error: cycle","passed":true},{"actual":[["marinate","01:15"],["prep","01:50"],["roast","01:55"]],"check":"regression: unknown dependency check","expected":"error: unknown step shop","passed":false},{"actual":[["prep","07:10"],["roast","08:00"],["marinate","11:00"],["sauce","11:10"],["plate","11:15"],["rest","11:15"]],"check":"repair check: unknown dependency check","expected":"error: unknown step shop","passed":false},{"actual":[["prep","17:00"],["marinate","18:20"],["roast","18:25"]],"check":"generated control 1","expected":[["prep","17:00"],["marinate","18:20"],["roast","18:25"]],"passed":true},{"actual":[["prep","20:30"],["marinate","21:15"],["roast","00:45"]],"check":"generated control 2","expected":[["prep","20:30"],["marinate","21:15"],["roast","00:45"]],"passed":true},{"actual":[["prep","07:15"],["marinate","08:15"],["roast","09:00"],["sauce","09:45"],["rest","11:15"]],"check":"generated control 3","expected":[["prep","07:15"],["marinate","08:15"],["roast","09:00"],["sauce","09:45"],["rest","11:15"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"chain\", \"actual\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"expected\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"passed\": true}, {\"check\": \"overnight marinade\", \"actual\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"expected\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"passed\": true}, {\"check\": \"cycle\", \"actual\": \"error: cycle\", \"expected\": \"error: cycle\", \"passed\": true}, {\"check\": \"regression: unknown dependency check\", \"actual\": [[\"marinate\", \"01:15\"], [\"prep\", \"01:50\"], [\"roast\", \"01:55\"]], \"expected\": \"error: unknown step shop\", \"passed\": false}, {\"check\": \"repair check: unknown dependency check\", \"actual\": [[\"prep\", \"07:10\"], [\"roast\", \"08:00\"], [\"marinate\", \"11:00\"], [\"sauce\", \"11:10\"], [\"plate\", \"11:15\"], [\"rest\", \"11:15\"]], \"expected\": \"error: unknown step shop\", \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [[\"prep\", \"17:00\"], [\"marinate\", \"18:20\"], [\"roast\", \"18:25\"]], \"expected\": [[\"prep\", \"17:00\"], [\"marinate\", \"18:20\"], [\"roast\", \"18:25\"]], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [[\"prep\", \"20:30\"], [\"marinate\", \"21:15\"], [\"roast\", \"00:45\"]], \"expected\": [[\"prep\", \"20:30\"], [\"marinate\", \"21:15\"], [\"roast\", \"00:45\"]], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [[\"prep\", \"07:15\"], [\"marinate\", \"08:15\"], [\"roast\", \"09:00\"], [\"sauce\", \"09:45\"], [\"rest\", \"11:15\"]], \"expected\": [[\"prep\", \"07:15\"], [\"marinate\", \"08:15\"], [\"roast\", \"09:00\"], [\"sauce\", \"09:45\"], [\"rest\", \"11:15\"]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.293,"exit_code":0,"observations":[{"actual":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"check":"chain","expected":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"passed":true},{"actual":[["marinate","03:40"],["grill","11:40"]],"check":"overnight marinade","expected":[["marinate","03:40"],["grill","11:40"]],"passed":true},{"actual":"error: cycle","check":"cycle","expected":"error: cycle","passed":true},{"actual":"error: unknown step shop","check":"regression: unknown dependency check","expected":"error: unknown step shop","passed":true},{"actual":"error: unknown step shop","check":"repair check: unknown dependency check","expected":"error: unknown step shop","passed":true},{"actual":[["prep","17:00"],["marinate","18:20"],["roast","18:25"]],"check":"generated control 1","expected":[["prep","17:00"],["marinate","18:20"],["roast","18:25"]],"passed":true},{"actual":[["prep","20:30"],["marinate","21:15"],["roast","00:45"]],"check":"generated control 2","expected":[["prep","20:30"],["marinate","21:15"],["roast","00:45"]],"passed":true},{"actual":[["prep","07:15"],["marinate","08:15"],["roast","09:00"],["sauce","09:45"],["rest","11:15"]],"check":"generated control 3","expected":[["prep","07:15"],["marinate","08:15"],["roast","09:00"],["sauce","09:45"],["rest","11:15"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"chain\", \"actual\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"expected\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"passed\": true}, {\"check\": \"overnight marinade\", \"actual\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"expected\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"passed\": true}, {\"check\": \"cycle\", \"actual\": \"error: cycle\", \"expected\": \"error: cycle\", \"passed\": true}, {\"check\": \"regression: unknown dependency check\", \"actual\": \"error: unknown step shop\", \"expected\": \"error: unknown step shop\", \"passed\": true}, {\"check\": \"repair check: unknown dependency check\", \"actual\": \"error: unknown step shop\", \"expected\": \"error: unknown step shop\", \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": [[\"prep\", \"17:00\"], [\"marinate\", \"18:20\"], [\"roast\", \"18:25\"]], \"expected\": [[\"prep\", \"17:00\"], [\"marinate\", \"18:20\"], [\"roast\", \"18:25\"]], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [[\"prep\", \"20:30\"], [\"marinate\", \"21:15\"], [\"roast\", \"00:45\"]], \"expected\": [[\"prep\", \"20:30\"], [\"marinate\", \"21:15\"], [\"roast\", \"00:45\"]], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [[\"prep\", \"07:15\"], [\"marinate\", \"08:15\"], [\"roast\", \"09:00\"], [\"sauce\", \"09:45\"], [\"rest\", \"11:15\"]], \"expected\": [[\"prep\", \"07:15\"], [\"marinate\", \"08:15\"], [\"roast\", \"09:00\"], [\"sauce\", \"09:45\"], [\"rest\", \"11:15\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}