{"abstract":"The previous-evening marinade is listed after the morning steps.","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.","contract_signature":"steps, serve","evaluation_group":"w2-recipe_scaling_and_nutrition-backward-schedule","failed_approach":"Sorting by name ignores chronology entirely.","family":"w2-recipe_scaling_and_nutrition-backward-schedule-chronological-ordering","id":"FA-97306","implementations":{"attempt":{"sha256":"f83f35fccb5acc5b5fdd6fa8af26b688cba3bf645f1932c27b086d0744bdca89","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(key=lambda x: x[1])\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: chronological ordering',\n   [[['plate', 15, ['rest']], ['rest', 45, ['prep', 'marinate']], ['roast', 240, []],\n     ['sauce', 240, ['prep', 'roast']], ['marinate', 45, ['prep']], ['prep', 240, []]],\n    '00:30'],\n   [['prep', '16:30'], ['roast', '16:30'], ['sauce', '20:30'], ['marinate', '22:45'], ['rest', '23:30'],\n    ['plate', '00:15']]],\n  ['repair check: chronological ordering',\n   [[['sauce', 15, []], ['prep', 45, []], ['marinate', 240, ['prep']], ['roast', 15, []],\n     ['rest', 5, ['prep', 'marinate', 'roast']]],\n    '12:00'],\n   [['prep', '07:10'], ['marinate', '07:55'], ['roast', '11:40'], ['sauce', '11:45'], ['rest', '11:55']]],\n  ['generated control 1',\n   [[['roast', 45, []], ['sauce', 15, ['roast']], ['prep', 5, []], ['marinate', 5, ['prep']]], '19:45'],\n   [['roast', '18:45'], ['sauce', '19:30'], ['prep', '19:35'], ['marinate', '19:40']]],\n  ['generated control 2',\n   [[['sauce', 45, ['prep', 'marinate']], ['rest', 45, ['marinate', 'roast']], ['roast', 240, []],\n     ['marinate', 240, ['prep']], ['prep', 90, []]],\n    '00:30'],\n   [['prep', '18:15'], ['marinate', '19:45'], ['roast', '19:45'], ['rest', '23:45'], ['sauce', '23:45']]],\n  ['generated control 3', [[['marinate', 45, ['prep']], ['prep', 90, []], ['roast', 240, []]], '00:30'],\n   [['roast', '20:30'], ['prep', '22:15'], ['marinate', '23:45']]]],\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: chronological ordering',\n   [[['roast', 10, ['marinate']], ['marinate', 45, ['prep']], ['prep', 10, []], ['sauce', 5, ['roast']]],\n    '00:30'],\n   [['prep', '23:20'], ['marinate', '23:30'], ['roast', '00:15'], ['sauce', '00:25']]],\n  ['repair check: chronological ordering',\n   [[['marinate', 240, []], ['roast', 30, ['prep']], ['prep', 240, []]], '00:30'],\n   [['prep', '20:00'], ['marinate', '20:30'], ['roast', '00:00']]],\n  ['generated control 1',\n   [[['roast', 90, ['prep', 'marinate']], ['rest', 45, ['prep', 'roast']], ['marinate', 15, []],\n     ['sauce', 15, []], ['prep', 240, ['shop', 'rest']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 2', [[['roast', 10, []], ['prep', 10, []], ['marinate', 15, ['shop']]], '12:00'],\n   'error: unknown step shop'],\n  ['generated control 3',\n   [[['marinate', 30, []], ['roast', 15, ['prep', 'marinate']], ['rest', 240, []],\n     ['plate', 5, ['prep', 'marinate', 'roast', 'rest']], ['sauce', 5, ['prep', 'marinate']],\n     ['prep', 45, ['shop']]],\n    '02:00'],\n   'error: unknown step shop']],\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: chronological ordering',\n   [[['plate', 30, ['prep', 'marinate', 'roast']], ['sauce', 45, ['roast']], ['marinate', 240, ['prep']],\n     ['prep', 240, []], ['rest', 15, ['prep', 'roast']], ['roast', 5, []]],\n    '00:30'],\n   [['prep', '16:00'], ['marinate', '20:00'], ['roast', '23:40'], ['sauce', '23:45'], ['plate', '00:00'],\n    ['rest', '00:15']]],\n  ['repair check: chronological ordering',\n   [[['rest', 240, ['roast', 'sauce']], ['marinate', 240, []], ['roast', 15, ['prep']], ['prep', 5, []],\n     ['sauce', 30, ['prep']]],\n    '12:00'],\n   [['prep', '07:25'], ['sauce', '07:30'], ['roast', '07:45'], ['marinate', '08:00'], ['rest', '08:00']]],\n  ['generated control 1',\n   [[['sauce', 30, ['roast']], ['roast', 15, ['shop']], ['marinate', 10, ['prep']], ['prep', 30, []]],\n    '19:45'],\n   'error: unknown step shop'],\n  ['generated control 2', [[['marinate', 5, []], ['roast', 15, ['prep']], ['prep', 240, ['roast']]], '01:15'],\n   'error: cycle'],\n  ['generated control 3',\n   [[['prep', 30, ['shop']], ['marinate', 5, []], ['rest', 45, []], ['roast', 90, []],\n     ['plate', 240, ['marinate', 'roast', 'rest']], ['sauce', 90, []]],\n    '18:30'],\n   'error: unknown step shop']],\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: chronological ordering',\n   [[['roast', 45, ['prep', 'marinate']], ['prep', 240, []], ['marinate', 30, ['prep']], ['sauce', 90, []]],\n    '01:15'],\n   [['prep', '20:00'], ['sauce', '23:45'], ['marinate', '00:00'], ['roast', '00:30']]],\n  ['repair check: chronological ordering',\n   [[['marinate', 15, ['prep']], ['prep', 90, []], ['sauce', 45, ['marinate']],\n     ['roast', 240, ['prep', 'marinate']], ['plate', 15, ['roast', 'sauce', 'rest']],\n     ['rest', 15, ['prep', 'marinate', 'sauce']]],\n    '19:45'],\n   [['prep', '13:45'], ['marinate', '15:15'], ['roast', '15:30'], ['sauce', '18:30'], ['rest', '19:15'],\n    ['plate', '19:30']]],\n  ['generated control 1',\n   [[['roast', 240, ['prep', 'marinate']], ['sauce', 10, ['prep']], ['marinate', 30, []], ['prep', 15, []]],\n    '00:30'],\n   [['marinate', '20:00'], ['prep', '20:15'], ['roast', '20:30'], ['sauce', '00:20']]],\n  ['generated control 2', [[['roast', 240, ['prep']], ['marinate', 15, []], ['prep', 30, []]], '19:45'],\n   [['prep', '15:15'], ['roast', '15:45'], ['marinate', '19:30']]],\n  ['generated control 3',\n   [[['rest', 10, ['prep', 'roast', 'sauce']], ['marinate', 5, []], ['prep', 45, []],\n     ['sauce', 90, ['prep', 'roast']], ['plate', 30, ['prep', 'rest', 'shop']], ['roast', 10, ['marinate']]],\n    '00:30'],\n   '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  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: chronological ordering',\n   [[['marinate', 45, ['prep']], ['rest', 45, ['sauce']], ['sauce', 90, ['marinate', 'roast']],\n     ['prep', 90, []], ['roast', 90, ['prep']]],\n    '02:00'],\n   [['prep', '20:45'], ['roast', '22:15'], ['marinate', '23:00'], ['sauce', '23:45'], ['rest', '01:15']]],\n  ['repair check: chronological ordering',\n   [[['roast', 10, ['prep']], ['prep', 240, []], ['marinate', 10, []], ['sauce', 240, ['marinate']]],\n    '18:30'],\n   [['marinate', '14:20'], ['prep', '14:20'], ['sauce', '14:30'], ['roast', '18:20']]],\n  ['generated control 1', [[['roast', 10, ['prep']], ['prep', 30, []], ['marinate', 15, []]], '18:30'],\n   [['prep', '17:50'], ['marinate', '18:15'], ['roast', '18:20']]],\n  ['generated control 2',\n   [[['prep', 90, ['plate']], ['plate', 45, ['marinate']], ['rest', 90, ['prep', 'roast', 'sauce', 'shop']],\n     ['sauce', 240, ['prep']], ['roast', 90, ['marinate']], ['marinate', 5, []]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 3',\n   [[['marinate', 10, []], ['sauce', 5, []], ['prep', 10, []], ['roast', 45, ['prep']],\n     ['plate', 30, ['sauce', 'rest']], ['rest', 15, ['prep', 'shop']]],\n    '01:15'],\n   'error: unknown step shop']]]\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":"9b16a3589dbca77b6a30ca02d8a7a2b4565fe2d1c095af5e7a88e89bf5b59dfa","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(key=lambda x: ('%02d:%02d' % divmod(x[0] % 1440, 60), x[1]))\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: chronological ordering',\n   [[['plate', 15, ['rest']], ['rest', 45, ['prep', 'marinate']], ['roast', 240, []],\n     ['sauce', 240, ['prep', 'roast']], ['marinate', 45, ['prep']], ['prep', 240, []]],\n    '00:30'],\n   [['prep', '16:30'], ['roast', '16:30'], ['sauce', '20:30'], ['marinate', '22:45'], ['rest', '23:30'],\n    ['plate', '00:15']]],\n  ['repair check: chronological ordering',\n   [[['sauce', 15, []], ['prep', 45, []], ['marinate', 240, ['prep']], ['roast', 15, []],\n     ['rest', 5, ['prep', 'marinate', 'roast']]],\n    '12:00'],\n   [['prep', '07:10'], ['marinate', '07:55'], ['roast', '11:40'], ['sauce', '11:45'], ['rest', '11:55']]],\n  ['generated control 1',\n   [[['roast', 45, []], ['sauce', 15, ['roast']], ['prep', 5, []], ['marinate', 5, ['prep']]], '19:45'],\n   [['roast', '18:45'], ['sauce', '19:30'], ['prep', '19:35'], ['marinate', '19:40']]],\n  ['generated control 2',\n   [[['sauce', 45, ['prep', 'marinate']], ['rest', 45, ['marinate', 'roast']], ['roast', 240, []],\n     ['marinate', 240, ['prep']], ['prep', 90, []]],\n    '00:30'],\n   [['prep', '18:15'], ['marinate', '19:45'], ['roast', '19:45'], ['rest', '23:45'], ['sauce', '23:45']]],\n  ['generated control 3', [[['marinate', 45, ['prep']], ['prep', 90, []], ['roast', 240, []]], '00:30'],\n   [['roast', '20:30'], ['prep', '22:15'], ['marinate', '23:45']]]],\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: chronological ordering',\n   [[['roast', 10, ['marinate']], ['marinate', 45, ['prep']], ['prep', 10, []], ['sauce', 5, ['roast']]],\n    '00:30'],\n   [['prep', '23:20'], ['marinate', '23:30'], ['roast', '00:15'], ['sauce', '00:25']]],\n  ['repair check: chronological ordering',\n   [[['marinate', 240, []], ['roast', 30, ['prep']], ['prep', 240, []]], '00:30'],\n   [['prep', '20:00'], ['marinate', '20:30'], ['roast', '00:00']]],\n  ['generated control 1',\n   [[['roast', 90, ['prep', 'marinate']], ['rest', 45, ['prep', 'roast']], ['marinate', 15, []],\n     ['sauce', 15, []], ['prep', 240, ['shop', 'rest']]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 2', [[['roast', 10, []], ['prep', 10, []], ['marinate', 15, ['shop']]], '12:00'],\n   'error: unknown step shop'],\n  ['generated control 3',\n   [[['marinate', 30, []], ['roast', 15, ['prep', 'marinate']], ['rest', 240, []],\n     ['plate', 5, ['prep', 'marinate', 'roast', 'rest']], ['sauce', 5, ['prep', 'marinate']],\n     ['prep', 45, ['shop']]],\n    '02:00'],\n   'error: unknown step shop']],\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: chronological ordering',\n   [[['plate', 30, ['prep', 'marinate', 'roast']], ['sauce', 45, ['roast']], ['marinate', 240, ['prep']],\n     ['prep', 240, []], ['rest', 15, ['prep', 'roast']], ['roast', 5, []]],\n    '00:30'],\n   [['prep', '16:00'], ['marinate', '20:00'], ['roast', '23:40'], ['sauce', '23:45'], ['plate', '00:00'],\n    ['rest', '00:15']]],\n  ['repair check: chronological ordering',\n   [[['rest', 240, ['roast', 'sauce']], ['marinate', 240, []], ['roast', 15, ['prep']], ['prep', 5, []],\n     ['sauce', 30, ['prep']]],\n    '12:00'],\n   [['prep', '07:25'], ['sauce', '07:30'], ['roast', '07:45'], ['marinate', '08:00'], ['rest', '08:00']]],\n  ['generated control 1',\n   [[['sauce', 30, ['roast']], ['roast', 15, ['shop']], ['marinate', 10, ['prep']], ['prep', 30, []]],\n    '19:45'],\n   'error: unknown step shop'],\n  ['generated control 2', [[['marinate', 5, []], ['roast', 15, ['prep']], ['prep', 240, ['roast']]], '01:15'],\n   'error: cycle'],\n  ['generated control 3',\n   [[['prep', 30, ['shop']], ['marinate', 5, []], ['rest', 45, []], ['roast', 90, []],\n     ['plate', 240, ['marinate', 'roast', 'rest']], ['sauce', 90, []]],\n    '18:30'],\n   'error: unknown step shop']],\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: chronological ordering',\n   [[['roast', 45, ['prep', 'marinate']], ['prep', 240, []], ['marinate', 30, ['prep']], ['sauce', 90, []]],\n    '01:15'],\n   [['prep', '20:00'], ['sauce', '23:45'], ['marinate', '00:00'], ['roast', '00:30']]],\n  ['repair check: chronological ordering',\n   [[['marinate', 15, ['prep']], ['prep', 90, []], ['sauce', 45, ['marinate']],\n     ['roast', 240, ['prep', 'marinate']], ['plate', 15, ['roast', 'sauce', 'rest']],\n     ['rest', 15, ['prep', 'marinate', 'sauce']]],\n    '19:45'],\n   [['prep', '13:45'], ['marinate', '15:15'], ['roast', '15:30'], ['sauce', '18:30'], ['rest', '19:15'],\n    ['plate', '19:30']]],\n  ['generated control 1',\n   [[['roast', 240, ['prep', 'marinate']], ['sauce', 10, ['prep']], ['marinate', 30, []], ['prep', 15, []]],\n    '00:30'],\n   [['marinate', '20:00'], ['prep', '20:15'], ['roast', '20:30'], ['sauce', '00:20']]],\n  ['generated control 2', [[['roast', 240, ['prep']], ['marinate', 15, []], ['prep', 30, []]], '19:45'],\n   [['prep', '15:15'], ['roast', '15:45'], ['marinate', '19:30']]],\n  ['generated control 3',\n   [[['rest', 10, ['prep', 'roast', 'sauce']], ['marinate', 5, []], ['prep', 45, []],\n     ['sauce', 90, ['prep', 'roast']], ['plate', 30, ['prep', 'rest', 'shop']], ['roast', 10, ['marinate']]],\n    '00:30'],\n   '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  ['cycle', [[['a', 5, ['b']], ['b', 5, ['a']]], '18:00'], 'error: cycle'],\n  ['regression: chronological ordering',\n   [[['marinate', 45, ['prep']], ['rest', 45, ['sauce']], ['sauce', 90, ['marinate', 'roast']],\n     ['prep', 90, []], ['roast', 90, ['prep']]],\n    '02:00'],\n   [['prep', '20:45'], ['roast', '22:15'], ['marinate', '23:00'], ['sauce', '23:45'], ['rest', '01:15']]],\n  ['repair check: chronological ordering',\n   [[['roast', 10, ['prep']], ['prep', 240, []], ['marinate', 10, []], ['sauce', 240, ['marinate']]],\n    '18:30'],\n   [['marinate', '14:20'], ['prep', '14:20'], ['sauce', '14:30'], ['roast', '18:20']]],\n  ['generated control 1', [[['roast', 10, ['prep']], ['prep', 30, []], ['marinate', 15, []]], '18:30'],\n   [['prep', '17:50'], ['marinate', '18:15'], ['roast', '18:20']]],\n  ['generated control 2',\n   [[['prep', 90, ['plate']], ['plate', 45, ['marinate']], ['rest', 90, ['prep', 'roast', 'sauce', 'shop']],\n     ['sauce', 240, ['prep']], ['roast', 90, ['marinate']], ['marinate', 5, []]],\n    '12:00'],\n   'error: unknown step shop'],\n  ['generated control 3',\n   [[['marinate', 10, []], ['sauce', 5, []], ['prep', 10, []], ['roast', 45, ['prep']],\n     ['plate', 30, ['sauce', 'rest']], ['rest', 15, ['prep', 'shop']]],\n    '01:15'],\n   'error: unknown step shop']]]\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-chronological-ordering","generated_at":"2026-09-29T14:52:30.950423+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.","root_cause":"Rows are sorted by the wrapped clock string instead of absolute start.","sha256":"bc3cf66b82ea398e113ec33c5658f18607b343617c500f4224e3cbbf9d56e318","title":"Backward recipe step scheduler: chronological ordering · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.979,"exit_code":1,"observations":[{"actual":[["prep","16:35"],["rest","18:15"],["roast","16:45"]],"check":"chain","expected":[["prep","16:35"],["roast","16:45"],["rest","18:15"]],"passed":false},{"actual":[["grill","11:40"],["marinate","03:40"]],"check":"overnight marinade","expected":[["marinate","03:40"],["grill","11:40"]],"passed":false},{"actual":"error: cycle","check":"cycle","expected":"error: cycle","passed":true},{"actual":[["marinate","22:45"],["plate","00:15"],["prep","16:30"],["rest","23:30"],["roast","16:30"],["sauce","20:30"]],"check":"regression: chronological ordering","expected":[["prep","16:30"],["roast","16:30"],["sauce","20:30"],["marinate","22:45"],["rest","23:30"],["plate","00:15"]],"passed":false},{"actual":[["marinate","07:55"],["prep","07:10"],["rest","11:55"],["roast","11:40"],["sauce","11:45"]],"check":"repair check: chronological ordering","expected":[["prep","07:10"],["marinate","07:55"],["roast","11:40"],["sauce","11:45"],["rest","11:55"]],"passed":false},{"actual":[["marinate","19:40"],["prep","19:35"],["roast","18:45"],["sauce","19:30"]],"check":"generated control 1","expected":[["roast","18:45"],["sauce","19:30"],["prep","19:35"],["marinate","19:40"]],"passed":false},{"actual":[["marinate","19:45"],["prep","18:15"],["rest","23:45"],["roast","19:45"],["sauce","23:45"]],"check":"generated control 2","expected":[["prep","18:15"],["marinate","19:45"],["roast","19:45"],["rest","23:45"],["sauce","23:45"]],"passed":false},{"actual":[["marinate","23:45"],["prep","22:15"],["roast","20:30"]],"check":"generated control 3","expected":[["roast","20:30"],["prep","22:15"],["marinate","23:45"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"chain\", \"actual\": [[\"prep\", \"16:35\"], [\"rest\", \"18:15\"], [\"roast\", \"16:45\"]], \"expected\": [[\"prep\", \"16:35\"], [\"roast\", \"16:45\"], [\"rest\", \"18:15\"]], \"passed\": false}, {\"check\": \"overnight marinade\", \"actual\": [[\"grill\", \"11:40\"], [\"marinate\", \"03:40\"]], \"expected\": [[\"marinate\", \"03:40\"], [\"grill\", \"11:40\"]], \"passed\": false}, {\"check\": \"cycle\", \"actual\": \"error: cycle\", \"expected\": \"error: cycle\", \"passed\": true}, {\"check\": \"regression: chronological ordering\", \"actual\": [[\"marinate\", \"22:45\"], [\"plate\", \"00:15\"], [\"prep\", \"16:30\"], [\"rest\", \"23:30\"], [\"roast\", \"16:30\"], [\"sauce\", \"20:30\"]], \"expected\": [[\"prep\", \"16:30\"], [\"roast\", \"16:30\"], [\"sauce\", \"20:30\"], [\"marinate\", \"22:45\"], [\"rest\", \"23:30\"], [\"plate\", \"00:15\"]], \"passed\": false}, {\"check\": \"repair check: chronological ordering\", \"actual\": [[\"marinate\", \"07:55\"], [\"prep\", \"07:10\"], [\"rest\", \"11:55\"], [\"roast\", \"11:40\"], [\"sauce\", \"11:45\"]], \"expected\": [[\"prep\", \"07:10\"], [\"marinate\", \"07:55\"], [\"roast\", \"11:40\"], [\"sauce\", \"11:45\"], [\"rest\", \"11:55\"]], \"passed\": false}, {\"check\": \"generated control 1\", \"actual\": [[\"marinate\", \"19:40\"], [\"prep\", \"19:35\"], [\"roast\", \"18:45\"], [\"sauce\", \"19:30\"]], \"expected\": [[\"roast\", \"18:45\"], [\"sauce\", \"19:30\"], [\"prep\", \"19:35\"], [\"marinate\", \"19:40\"]], \"passed\": false}, {\"check\": \"generated control 2\", \"actual\": [[\"marinate\", \"19:45\"], [\"prep\", \"18:15\"], [\"rest\", \"23:45\"], [\"roast\", \"19:45\"], [\"sauce\", \"23:45\"]], \"expected\": [[\"prep\", \"18:15\"], [\"marinate\", \"19:45\"], [\"roast\", \"19:45\"], [\"rest\", \"23:45\"], [\"sauce\", \"23:45\"]], \"passed\": false}, {\"check\": \"generated control 3\", \"actual\": [[\"marinate\", \"23:45\"], [\"prep\", \"22:15\"], [\"roast\", \"20:30\"]], \"expected\": [[\"roast\", \"20:30\"], [\"prep\", \"22:15\"], [\"marinate\", \"23:45\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.729,"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":[["plate","00:15"],["prep","16:30"],["roast","16:30"],["sauce","20:30"],["marinate","22:45"],["rest","23:30"]],"check":"regression: chronological ordering","expected":[["prep","16:30"],["roast","16:30"],["sauce","20:30"],["marinate","22:45"],["rest","23:30"],["plate","00:15"]],"passed":false},{"actual":[["prep","07:10"],["marinate","07:55"],["roast","11:40"],["sauce","11:45"],["rest","11:55"]],"check":"repair check: chronological ordering","expected":[["prep","07:10"],["marinate","07:55"],["roast","11:40"],["sauce","11:45"],["rest","11:55"]],"passed":true},{"actual":[["roast","18:45"],["sauce","19:30"],["prep","19:35"],["marinate","19:40"]],"check":"generated control 1","expected":[["roast","18:45"],["sauce","19:30"],["prep","19:35"],["marinate","19:40"]],"passed":true},{"actual":[["prep","18:15"],["marinate","19:45"],["roast","19:45"],["rest","23:45"],["sauce","23:45"]],"check":"generated control 2","expected":[["prep","18:15"],["marinate","19:45"],["roast","19:45"],["rest","23:45"],["sauce","23:45"]],"passed":true},{"actual":[["roast","20:30"],["prep","22:15"],["marinate","23:45"]],"check":"generated control 3","expected":[["roast","20:30"],["prep","22:15"],["marinate","23:45"]],"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: chronological ordering\", \"actual\": [[\"plate\", \"00:15\"], [\"prep\", \"16:30\"], [\"roast\", \"16:30\"], [\"sauce\", \"20:30\"], [\"marinate\", \"22:45\"], [\"rest\", \"23:30\"]], \"expected\": [[\"prep\", \"16:30\"], [\"roast\", \"16:30\"], [\"sauce\", \"20:30\"], [\"marinate\", \"22:45\"], [\"rest\", \"23:30\"], [\"plate\", \"00:15\"]], \"passed\": false}, {\"check\": \"repair check: chronological ordering\", \"actual\": [[\"prep\", \"07:10\"], [\"marinate\", \"07:55\"], [\"roast\", \"11:40\"], [\"sauce\", \"11:45\"], [\"rest\", \"11:55\"]], \"expected\": [[\"prep\", \"07:10\"], [\"marinate\", \"07:55\"], [\"roast\", \"11:40\"], [\"sauce\", \"11:45\"], [\"rest\", \"11:55\"]], \"passed\": true}, {\"check\": \"generated control 1\", \"actual\": [[\"roast\", \"18:45\"], [\"sauce\", \"19:30\"], [\"prep\", \"19:35\"], [\"marinate\", \"19:40\"]], \"expected\": [[\"roast\", \"18:45\"], [\"sauce\", \"19:30\"], [\"prep\", \"19:35\"], [\"marinate\", \"19:40\"]], \"passed\": true}, {\"check\": \"generated control 2\", \"actual\": [[\"prep\", \"18:15\"], [\"marinate\", \"19:45\"], [\"roast\", \"19:45\"], [\"rest\", \"23:45\"], [\"sauce\", \"23:45\"]], \"expected\": [[\"prep\", \"18:15\"], [\"marinate\", \"19:45\"], [\"roast\", \"19:45\"], [\"rest\", \"23:45\"], [\"sauce\", \"23:45\"]], \"passed\": true}, {\"check\": \"generated control 3\", \"actual\": [[\"roast\", \"20:30\"], [\"prep\", \"22:15\"], [\"marinate\", \"23:45\"]], \"expected\": [[\"roast\", \"20:30\"], [\"prep\", \"22:15\"], [\"marinate\", \"23:45\"]], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}