{
  "schemaVersion": 1,
  "engineVersion": 3,
  "version": 1,
  "weekId": "lentil-pantry",
  "title": "Red lentil pantry week",
  "goal": "Four lentil recipes and a wrap break; freeze the two late soup portions on prep day.",
  "servings": 4,
  "firstDate": "2026-10-26",
  "prepStartHour": 19,
  "prepStartMinute": 0,
  "input": {
    "servings": 4,
    "mealStartDate": "2026-10-26",
    "potLitres": 6,
    "availableEquipment": [
      "stove",
      "oven"
    ],
    "prepSelections": [
      "prep-carrot-lentil-pot"
    ],
    "pantryItems": [
      {
        "ingredientId": "lentil",
        "quantity": 300,
        "unit": "g",
        "state": "dry",
        "userConfirmed": true
      }
    ],
    "excludeTags": [],
    "preparedBatches": {},
    "thawedPortions": {}
  },
  "dinners": [
    {
      "dayIndex": 0,
      "date": "2026-10-26",
      "recipe": {
        "id": "carrot-lentil-pot",
        "slug": "carrot-lentil-pot",
        "title": "Carrot and lentil pot",
        "summary": "A cumin-scented carrot and red lentil pot finished with spinach for a soft, spoonable dinner.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "lentil",
            "quantity": 320,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "carrot",
            "quantity": 600,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "onion",
            "quantity": 200,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "spinach",
            "quantity": 200,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "cumin",
            "quantity": 4,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "oil",
            "quantity": 30,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 6,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 2,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 1400,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 12,
        "elapsedMinutes": 45,
        "steps": [
          {
            "id": "carrot-lentil-pot-1",
            "instructions": "Rinse 320g red lentils. Cut 600g carrots into 1cm cubes and 200g onions into 5mm dice. Warm 30ml olive oil in a pot over medium heat and soften the vegetables for 5 minutes. Stir in 4g ground cumin for 30 seconds until fragrant; lower heat if it smells toasted sharply.",
            "ingredientRefs": [
              "lentil",
              "carrot",
              "onion",
              "oil",
              "cumin"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "fragrant; lower heat if it smells toasted sharply"
          },
          {
            "id": "carrot-lentil-pot-2",
            "instructions": "Add the lentils, 1400ml recipe water, 6g salt and 2g black pepper. Bring to a boil, reduce to low and partly cover for 20–30 minutes, stirring every 5 minutes until the carrots crush under a fork and the lentils are creamy. If it catches, lower the heat and add hot processing water in small amounts; record it.",
            "ingredientRefs": [
              "water",
              "salt",
              "pepper"
            ],
            "durationRange": [
              20,
              30
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-lentil-pot-1"
            ],
            "doneCondition": "the carrots crush under a fork and the lentils are creamy"
          },
          {
            "id": "carrot-lentil-pot-3",
            "instructions": "Wash 200g spinach, remove tough stalk ends and roughly chop into 3cm strips. Stir into the hot lentil base and simmer for 2–3 minutes until wilted throughout.",
            "ingredientRefs": [
              "spinach"
            ],
            "durationRange": [
              2,
              3
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-lentil-pot-2"
            ],
            "doneCondition": "wilted throughout"
          },
          {
            "id": "carrot-lentil-pot-4",
            "instructions": "Rest off the heat for 2 minutes. Stir once and divide between bowls; loosen with a small splash of hot processing water if it thickens while standing.",
            "ingredientRefs": [],
            "durationRange": [
              2,
              4
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-lentil-pot-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "carrot-lentil-pot-5",
            "instructions": "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time. Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-lentil-pot-4"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          }
        ],
        "storagePolicy": {
          "maxRefrigeratedHours": 72,
          "reheatC": 74,
          "sourceRefs": [
            "usda",
            "storage"
          ]
        },
        "provenance": {
          "type": "AI-assisted original",
          "accessedAt": "2026-10-04",
          "licenseStatus": "Original project content; MIT"
        },
        "freezable": true,
        "potLitres": 3,
        "familyId": "simmered-pots",
        "batchServings": 8,
        "makeAhead": {
          "id": "prep-carrot-lentil-pot",
          "title": "Carrot lentil base",
          "ingredientIds": [
            "lentil",
            "carrot",
            "onion",
            "oil",
            "cumin",
            "water",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 72,
          "prepMinutes": 42,
          "finishMinutes": 8,
          "prepInstructions": [
            "Rinse {qty:lentil}. Cut {qty:carrot} into 1cm cubes and {qty:onion} into 5mm dice. Warm {qty:oil} in a pot over medium heat and soften the vegetables for 5 minutes. Stir in {qty:cumin} for 30 seconds until fragrant; lower heat if it smells toasted sharply.",
            "Add the lentils, {qty:water}, {qty:salt} and {qty:pepper}. Bring to a boil, reduce to low and partly cover for 20–30 minutes, stirring every 5 minutes until the carrots crush under a fork and the lentils are creamy. If it catches, lower the heat and add hot processing water in small amounts; record it.",
            "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
            "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
          ],
          "finishInstructions": [
            "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
            "Wash {qty:spinach}, remove tough stalk ends and roughly chop into 3cm strips. Stir into the hot lentil base and simmer for 2–3 minutes until wilted throughout.",
            "Rest off the heat for 2 minutes. Stir once and divide between bowls; loosen with a small splash of hot processing water if it thickens while standing."
          ],
          "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate."
        },
        "finishAfterPrep": 8,
        "servings": 4
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 6L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 8
    },
    {
      "dayIndex": 1,
      "date": "2026-10-27",
      "recipe": {
        "id": "tomato-lentil-rice",
        "slug": "tomato-lentil-rice",
        "title": "Tomato lentil rice pot",
        "summary": "Rice and red lentils simmer together into a thick tomato pot with finely diced carrots.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "rice",
            "quantity": 240,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "lentil",
            "quantity": 240,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "canned-tomato",
            "quantity": 800,
            "unit": "g",
            "state": "canned"
          },
          {
            "ingredientId": "carrot",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "onion",
            "quantity": 200,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 30,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 6,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 2,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 1400,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 12,
        "elapsedMinutes": 50,
        "steps": [
          {
            "id": "tomato-lentil-rice-1",
            "instructions": "Rinse 240g rice and 240g red lentils. Cut 300g carrots into 5mm dice and 200g onions into 5mm dice. Heat 30ml olive oil in a broad pot over medium heat and soften the vegetables for 5 minutes.",
            "ingredientRefs": [
              "rice",
              "lentil",
              "carrot",
              "onion",
              "oil"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "tomato-lentil-rice-2",
            "instructions": "Add rice, lentils, 800g canned tomatoes, 1400ml recipe water, 6g salt and 2g black pepper. Bring to a boil, partly cover and reduce to a gentle simmer for 25–35 minutes. Stir the bottom every 5 minutes until lentils collapse and rice has no hard centre.",
            "ingredientRefs": [
              "canned-tomato",
              "water",
              "salt",
              "pepper"
            ],
            "durationRange": [
              25,
              35
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "tomato-lentil-rice-1"
            ],
            "doneCondition": "lentils collapse and rice has no hard centre"
          },
          {
            "id": "tomato-lentil-rice-3",
            "instructions": "If the rice is firm but the liquid is gone, add boiling processing water a little at a time and continue simmering; record the addition. If too soupy once tender, uncover for 3–5 minutes. Rest off the heat for 5 minutes.",
            "ingredientRefs": [],
            "durationRange": [
              3,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "tomato-lentil-rice-2"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "tomato-lentil-rice-4",
            "instructions": "Stir once and ladle into bowls. The texture should be thick and spoonable, with soft grains rather than separate dry rice.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "tomato-lentil-rice-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "tomato-lentil-rice-5",
            "instructions": "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time. Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits. For this planner, refrigerate cooked rice for at most 24 hours or freeze promptly on the preparation day after rapid cooling in shallow containers. This 24-hour rice limit is a conservative product choice, not a USDA-specific rice rule. Reheat the cooked portion evenly to 74°C with a thermometer.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "tomato-lentil-rice-4"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          }
        ],
        "storagePolicy": {
          "maxRefrigeratedHours": 24,
          "reheatC": 74,
          "sourceRefs": [
            "usda",
            "storage"
          ],
          "policyNote": "24 hours for cooked rice is a conservative product choice."
        },
        "provenance": {
          "type": "AI-assisted original",
          "accessedAt": "2026-10-04",
          "licenseStatus": "Original project content; MIT"
        },
        "freezable": true,
        "potLitres": 4,
        "familyId": "grain-pots",
        "batchServings": 8,
        "makeAhead": {
          "id": "prep-tomato-lentil-rice",
          "title": "Tomato lentil rice pot",
          "ingredientIds": [
            "rice",
            "lentil",
            "carrot",
            "onion",
            "oil",
            "canned-tomato",
            "water",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 24,
          "prepMinutes": 45,
          "finishMinutes": 12,
          "prepInstructions": [
            "Rinse {qty:rice} and {qty:lentil}. Cut {qty:carrot} into 5mm dice and {qty:onion} into 5mm dice. Heat {qty:oil} in a broad pot over medium heat and soften the vegetables for 5 minutes.",
            "Add rice, lentils, {qty:canned-tomato}, {qty:water}, {qty:salt} and {qty:pepper}. Bring to a boil, partly cover and reduce to a gentle simmer for 25–35 minutes. Stir the bottom every 5 minutes until lentils collapse and rice has no hard centre.",
            "If the rice is firm but the liquid is gone, add boiling processing water a little at a time and continue simmering; record the addition. If too soupy once tender, uncover for 3–5 minutes. Rest off the heat for 5 minutes.",
            "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
            "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits. For this planner, refrigerate cooked rice for at most 24 hours or freeze promptly on the preparation day after rapid cooling in shallow containers. This 24-hour rice limit is a conservative product choice, not a USDA-specific rice rule. Reheat the cooked portion evenly to 74°C with a thermometer."
          ],
          "finishInstructions": [
            "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
            "Stir once and ladle into bowls. The texture should be thick and spoonable, with soft grains rather than separate dry rice."
          ],
          "qualityNotes": "This intentionally soft rice pot thickens on standing. Freeze promptly for late-week dinners. The 24-hour chilled rice limit is this planner’s conservative policy."
        },
        "finishAfterPrep": 12,
        "servings": 4
      },
      "batches": 2,
      "capacityNote": "Use 2 batch(es) with your 6L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 60
    },
    {
      "dayIndex": 2,
      "date": "2026-10-28",
      "recipe": {
        "id": "lentil-cabbage-soup",
        "slug": "lentil-cabbage-soup",
        "title": "Lentil cabbage soup",
        "summary": "A tomato-free lentil soup with soft potato cubes, sweet carrots and ribbons of cabbage.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "lentil",
            "quantity": 320,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "cabbage",
            "quantity": 600,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "carrot",
            "quantity": 400,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "onion",
            "quantity": 200,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "potato",
            "quantity": 400,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 30,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 6,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 2,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 1800,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 15,
        "elapsedMinutes": 50,
        "steps": [
          {
            "id": "lentil-cabbage-soup-1",
            "instructions": "Sort and rinse 320g red lentils. Cut 400g carrots and 400g potatoes into 1cm cubes, 200g onions into 5mm dice and 600g cabbage into 5mm ribbons. Heat 30ml olive oil in a large pot over medium heat and soften onion and carrot for 5 minutes.",
            "ingredientRefs": [
              "lentil",
              "carrot",
              "potato",
              "onion",
              "cabbage",
              "oil"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "lentil-cabbage-soup-2",
            "instructions": "Add lentils, potatoes and 1800ml recipe water. Bring to a boil, partly cover and simmer over low heat for 20–30 minutes, stirring occasionally, until lentils break down and potatoes are fork-tender. If the base catches, lower the heat and add a little hot processing water.",
            "ingredientRefs": [
              "water"
            ],
            "durationRange": [
              20,
              30
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-cabbage-soup-1"
            ],
            "doneCondition": "lentils break down and potatoes are fork-tender"
          },
          {
            "id": "lentil-cabbage-soup-3",
            "instructions": "Add cabbage, 6g salt and 2g black pepper; simmer for 5–8 minutes until the thickest cabbage ribs are tender. If it is too thick to ladle, add and record extra processing water.",
            "ingredientRefs": [
              "salt",
              "pepper"
            ],
            "durationRange": [
              5,
              8
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-cabbage-soup-2"
            ],
            "doneCondition": "the thickest cabbage ribs are tender"
          },
          {
            "id": "lentil-cabbage-soup-4",
            "instructions": "Rest for 2 minutes and serve in warmed bowls. Freeze late-week prep portions promptly in shallow containers on preparation day.",
            "ingredientRefs": [],
            "durationRange": [
              2,
              4
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-cabbage-soup-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "lentil-cabbage-soup-5",
            "instructions": "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time. Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-cabbage-soup-4"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          }
        ],
        "storagePolicy": {
          "maxRefrigeratedHours": 72,
          "reheatC": 74,
          "sourceRefs": [
            "usda",
            "storage"
          ]
        },
        "provenance": {
          "type": "AI-assisted original",
          "accessedAt": "2026-10-04",
          "licenseStatus": "Original project content; MIT"
        },
        "freezable": true,
        "potLitres": 4,
        "familyId": "simmered-pots",
        "batchServings": 8,
        "makeAhead": {
          "id": "prep-lentil-cabbage-soup",
          "title": "Lentil cabbage soup",
          "ingredientIds": [
            "lentil",
            "carrot",
            "potato",
            "onion",
            "cabbage",
            "oil",
            "water",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 72,
          "prepMinutes": 48,
          "finishMinutes": 12,
          "prepInstructions": [
            "Sort and rinse {qty:lentil}. Cut {qty:carrot} and {qty:potato} into 1cm cubes, {qty:onion} into 5mm dice and {qty:cabbage} into 5mm ribbons. Heat {qty:oil} in a large pot over medium heat and soften onion and carrot for 5 minutes.",
            "Add lentils, potatoes and {qty:water}. Bring to a boil, partly cover and simmer over low heat for 20–30 minutes, stirring occasionally, until lentils break down and potatoes are fork-tender. If the base catches, lower the heat and add a little hot processing water.",
            "Add cabbage, {qty:salt} and {qty:pepper}; simmer for 5–8 minutes until the thickest cabbage ribs are tender. If it is too thick to ladle, add and record extra processing water.",
            "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
            "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
          ],
          "finishInstructions": [
            "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
            "Rest for 2 minutes and serve in warmed bowls. Freeze late-week prep portions promptly in shallow containers on preparation day."
          ],
          "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate."
        },
        "finishAfterPrep": 12,
        "servings": 4
      },
      "batches": 2,
      "capacityNote": "Use 2 batch(es) with your 6L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 25
    },
    {
      "dayIndex": 3,
      "date": "2026-10-29",
      "recipe": {
        "id": "lemon-bean-wraps",
        "slug": "lemon-bean-wraps",
        "title": "Lemon bean wraps",
        "summary": "Half-mashed white beans make a creamy lemon filling for crisp vegetable wraps.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "tortilla",
            "quantity": 8,
            "unit": "count",
            "state": "cooked"
          },
          {
            "ingredientId": "white-bean",
            "quantity": 480,
            "unit": "g",
            "state": "drained"
          },
          {
            "ingredientId": "cabbage",
            "quantity": 400,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "carrot",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "lemon",
            "quantity": 40,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 20,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 6,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 2,
            "unit": "g",
            "state": "dry"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 12,
        "elapsedMinutes": 20,
        "steps": [
          {
            "id": "lemon-bean-wraps-1",
            "instructions": "Drain 480g white beans. Mash half with 40ml lemon juice, 6g salt and 2g black pepper; leave the other half whole for texture. The mash should hold together on a spoon rather than run.",
            "ingredientRefs": [
              "white-bean",
              "lemon",
              "salt",
              "pepper"
            ],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "lemon-bean-wraps-2",
            "instructions": "Heat 20ml olive oil in a skillet over medium-low heat. Add all the mashed and whole beans and cook for 5 minutes, stirring until steaming. If too stiff to spread, stir in a little processing water; if loose, cook uncovered briefly.",
            "ingredientRefs": [
              "oil"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lemon-bean-wraps-1"
            ],
            "doneCondition": "steaming"
          },
          {
            "id": "lemon-bean-wraps-3",
            "instructions": "Wash and dry 400g cabbage, then shred into 2mm ribbons. Grate 300g carrots coarsely. Warm 8 pieces plain flour tortillas in a dry pan for 20–30 seconds on each side until supple; check the actual brand ingredients.",
            "ingredientRefs": [
              "cabbage",
              "carrot",
              "tortilla"
            ],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lemon-bean-wraps-2"
            ],
            "doneCondition": "supple; check the actual brand ingredients"
          },
          {
            "id": "lemon-bean-wraps-4",
            "instructions": "Divide the bean filling and raw vegetables evenly between the warm tortillas. Fold in the sides and roll; add the crunchy vegetables just before serving so they stay crisp.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lemon-bean-wraps-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "lemon-bean-wraps-5",
            "instructions": "The displayed quantities already match your selected servings. For 1 or 2 servings, use a smaller pan and check early; keep the stated cut sizes. For 4 servings use a broad pan or uncrowded trays; for 8 split every ingredient evenly into two 4-serving batches (more if the pan or pot capacity requires it). Keep pans below 80% full and vegetables in one layer when browning. Repeat the cooking and doneness checks for each batch; elapsed time increases for sequential batches. Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lemon-bean-wraps-4"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          }
        ],
        "storagePolicy": {
          "maxRefrigeratedHours": 72,
          "reheatC": 74,
          "sourceRefs": [
            "usda",
            "storage"
          ]
        },
        "provenance": {
          "type": "AI-assisted original",
          "accessedAt": "2026-10-04",
          "licenseStatus": "Original project content; MIT"
        },
        "potLitres": 2,
        "familyId": "filled-wraps",
        "batchServings": 4,
        "makeAhead": {
          "id": "prep-lemon-bean-wraps",
          "title": "Lemon white bean filling",
          "ingredientIds": [
            "white-bean",
            "lemon",
            "salt",
            "pepper",
            "oil"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 72,
          "prepMinutes": 10,
          "finishMinutes": 8,
          "prepInstructions": [
            "Drain {qty:white-bean}. Mash half with {qty:lemon}, {qty:salt} and {qty:pepper}; leave the other half whole for texture. The mash should hold together on a spoon rather than run.",
            "Heat {qty:oil} in a skillet over medium-low heat. Add all the mashed and whole beans and cook for 5 minutes, stirring until steaming. If too stiff to spread, stir in a little processing water; if loose, cook uncovered briefly.",
            "The displayed quantities already match your selected servings. For 1 or 2 servings, use a smaller pan and check early; keep the stated cut sizes. For 4 servings use a broad pan or uncrowded trays; for 8 split every ingredient evenly into two 4-serving batches (more if the pan or pot capacity requires it). Keep pans below 80% full and vegetables in one layer when browning. Repeat the cooking and doneness checks for each batch; elapsed time increases for sequential batches.",
            "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
          ],
          "finishInstructions": [
            "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
            "Wash and dry {qty:cabbage}, then shred into 2mm ribbons. Grate {qty:carrot} coarsely. Warm {qty:tortilla} in a dry pan for 20–30 seconds on each side until supple; check the actual brand ingredients.",
            "Divide the bean filling and raw vegetables evenly between the warm tortillas. Fold in the sides and roll; add the crunchy vegetables just before serving so they stay crisp."
          ],
          "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate."
        },
        "freezable": true,
        "finishAfterPrep": 8,
        "servings": 4
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 6L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 20
    },
    {
      "dayIndex": 4,
      "date": "2026-10-30",
      "recipe": {
        "id": "lentil-tomato-soup",
        "slug": "lentil-tomato-soup",
        "title": "Lentil tomato soup with bread",
        "summary": "Red lentils thicken a tomato and cabbage soup, with bread kept dry until serving.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "lentil",
            "quantity": 320,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "canned-tomato",
            "quantity": 800,
            "unit": "g",
            "state": "canned"
          },
          {
            "ingredientId": "carrot",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "onion",
            "quantity": 200,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "cabbage",
            "quantity": 400,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "bread",
            "quantity": 320,
            "unit": "g",
            "state": "cooked"
          },
          {
            "ingredientId": "oil",
            "quantity": 30,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 6,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 2,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 1600,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 15,
        "elapsedMinutes": 50,
        "steps": [
          {
            "id": "lentil-tomato-soup-1",
            "instructions": "Sort and rinse 320g red lentils. Cut 300g carrots into 8mm dice and 200g onions into 5mm dice; shred 400g cabbage into 5mm ribbons. Heat 30ml olive oil in a large pot over medium heat. Soften onion and carrot for 5 minutes, stirring; reduce heat if onion starts to scorch.",
            "ingredientRefs": [
              "lentil",
              "carrot",
              "onion",
              "cabbage",
              "oil"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "lentil-tomato-soup-2",
            "instructions": "Add the lentils, 800g canned tomatoes and 1600ml recipe water. Bring to a boil, reduce to a gentle simmer and partly cover for 20–30 minutes, stirring the bottom every 5 minutes, until lentils collapse when pressed. If still firm, add a little hot processing water and continue simmering; record added water.",
            "ingredientRefs": [
              "canned-tomato",
              "water"
            ],
            "durationRange": [
              20,
              30
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-tomato-soup-1"
            ],
            "doneCondition": "lentils collapse when pressed"
          },
          {
            "id": "lentil-tomato-soup-3",
            "instructions": "Stir in the cabbage, 6g salt and 2g black pepper. Simmer for 5–8 minutes until cabbage ribs are tender. The soup should pour from a ladle; add a little processing water if it has become a paste.",
            "ingredientRefs": [
              "salt",
              "pepper"
            ],
            "durationRange": [
              5,
              8
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-tomato-soup-2"
            ],
            "doneCondition": "cabbage ribs are tender"
          },
          {
            "id": "lentil-tomato-soup-4",
            "instructions": "Serve the soup with 320g plain bread on the side. If this is a late-week prep dinner, portion and freeze the soup promptly on preparation day; keep the bread separate until the dinner.",
            "ingredientRefs": [
              "bread"
            ],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-tomato-soup-3"
            ],
            "doneCondition": "the dinner"
          },
          {
            "id": "lentil-tomato-soup-5",
            "instructions": "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time. Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lentil-tomato-soup-4"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          }
        ],
        "storagePolicy": {
          "maxRefrigeratedHours": 72,
          "reheatC": 74,
          "sourceRefs": [
            "usda",
            "storage"
          ]
        },
        "provenance": {
          "type": "AI-assisted original",
          "accessedAt": "2026-10-04",
          "licenseStatus": "Original project content; MIT"
        },
        "freezable": true,
        "potLitres": 4,
        "familyId": "simmered-pots",
        "batchServings": 8,
        "makeAhead": {
          "id": "prep-lentil-tomato-soup",
          "title": "Lentil tomato soup",
          "ingredientIds": [
            "lentil",
            "carrot",
            "onion",
            "cabbage",
            "oil",
            "canned-tomato",
            "water",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 72,
          "prepMinutes": 48,
          "finishMinutes": 10,
          "prepInstructions": [
            "Sort and rinse {qty:lentil}. Cut {qty:carrot} into 8mm dice and {qty:onion} into 5mm dice; shred {qty:cabbage} into 5mm ribbons. Heat {qty:oil} in a large pot over medium heat. Soften onion and carrot for 5 minutes, stirring; reduce heat if onion starts to scorch.",
            "Add the lentils, {qty:canned-tomato} and {qty:water}. Bring to a boil, reduce to a gentle simmer and partly cover for 20–30 minutes, stirring the bottom every 5 minutes, until lentils collapse when pressed. If still firm, add a little hot processing water and continue simmering; record added water.",
            "Stir in the cabbage, {qty:salt} and {qty:pepper}. Simmer for 5–8 minutes until cabbage ribs are tender. The soup should pour from a ladle; add a little processing water if it has become a paste.",
            "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
            "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
          ],
          "finishInstructions": [
            "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
            "Serve the soup with {qty:bread} on the side. If this is a late-week prep dinner, portion and freeze the soup promptly on preparation day; keep the bread separate until the dinner."
          ],
          "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate."
        },
        "finishAfterPrep": 10,
        "servings": 4
      },
      "batches": 2,
      "capacityNote": "Use 2 batch(es) with your 6L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 25
    }
  ],
  "shopping": [
    {
      "ingredientId": "lentil",
      "name": "Red lentils",
      "required": 1200,
      "prepared": 0,
      "pantryUsed": 300,
      "initial": 300,
      "net": 900,
      "purchased": 1000,
      "remaining": 100,
      "unit": "g",
      "state": "dry",
      "packageQty": 500,
      "packCount": 2,
      "notPurchased": false,
      "packAssumption": "Example package: 500g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "carrot",
      "name": "Carrots",
      "required": 1900,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 1900,
      "purchased": 2000,
      "remaining": 100,
      "unit": "g",
      "state": "raw",
      "packageQty": 1000,
      "packCount": 2,
      "notPurchased": false,
      "packAssumption": "Example package: 1000g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "onion",
      "name": "Onions",
      "required": 800,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 800,
      "purchased": 1000,
      "remaining": 200,
      "unit": "g",
      "state": "raw",
      "packageQty": 500,
      "packCount": 2,
      "notPurchased": false,
      "packAssumption": "Example package: 500g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "spinach",
      "name": "Spinach",
      "required": 200,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 200,
      "purchased": 200,
      "remaining": 0,
      "unit": "g",
      "state": "raw",
      "packageQty": 200,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 200g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "cumin",
      "name": "Ground cumin",
      "required": 4,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 4,
      "purchased": 40,
      "remaining": 36,
      "unit": "g",
      "state": "dry",
      "packageQty": 40,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 40g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "oil",
      "name": "Olive oil",
      "required": 140,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 140,
      "purchased": 500,
      "remaining": 360,
      "unit": "ml",
      "state": "raw",
      "packageQty": 500,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 500ml usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "salt",
      "name": "Salt",
      "required": 30,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 30,
      "purchased": 250,
      "remaining": 220,
      "unit": "g",
      "state": "dry",
      "packageQty": 250,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 250g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "pepper",
      "name": "Black pepper",
      "required": 10,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 10,
      "purchased": 50,
      "remaining": 40,
      "unit": "g",
      "state": "dry",
      "packageQty": 50,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 50g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "water",
      "name": "Recipe water",
      "required": 6200,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 6200,
      "purchased": 0,
      "remaining": 0,
      "unit": "ml",
      "state": "raw",
      "packageQty": 0,
      "packCount": 0,
      "notPurchased": true,
      "packAssumption": "Tap water; recipe water excludes processing water.",
      "retained": 0
    },
    {
      "ingredientId": "rice",
      "name": "Rice",
      "required": 240,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 240,
      "purchased": 500,
      "remaining": 260,
      "unit": "g",
      "state": "dry",
      "packageQty": 500,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 500g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "canned-tomato",
      "name": "Canned tomatoes",
      "required": 1600,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 1600,
      "purchased": 1600,
      "remaining": 0,
      "unit": "g",
      "state": "canned",
      "packageQty": 400,
      "packCount": 4,
      "notPurchased": false,
      "packAssumption": "Example package: 400g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "cabbage",
      "name": "Cabbage",
      "required": 1400,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 1400,
      "purchased": 1600,
      "remaining": 200,
      "unit": "g",
      "state": "raw",
      "packageQty": 800,
      "packCount": 2,
      "notPurchased": false,
      "packAssumption": "Example package: 800g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "potato",
      "name": "Potatoes",
      "required": 400,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 400,
      "purchased": 1000,
      "remaining": 600,
      "unit": "g",
      "state": "raw",
      "packageQty": 1000,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 1000g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "tortilla",
      "name": "Plain flour tortillas",
      "required": 8,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 8,
      "purchased": 8,
      "remaining": 0,
      "unit": "count",
      "state": "cooked",
      "packageQty": 8,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Reference recipe: wheat, water, oil, salt. Check the actual brand for milk, soy and other ingredients.",
      "retained": 0
    },
    {
      "ingredientId": "white-bean",
      "name": "White beans",
      "required": 480,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 480,
      "purchased": 480,
      "remaining": 0,
      "unit": "g",
      "state": "drained",
      "packageQty": 240,
      "packCount": 2,
      "notPurchased": false,
      "packAssumption": "Example package: 240g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "lemon",
      "name": "Lemon juice",
      "required": 40,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 40,
      "purchased": 250,
      "remaining": 210,
      "unit": "ml",
      "state": "raw",
      "packageQty": 250,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 250ml usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "bread",
      "name": "Plain bread",
      "required": 320,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 320,
      "purchased": 400,
      "remaining": 80,
      "unit": "g",
      "state": "cooked",
      "packageQty": 400,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Reference loaf: wheat, water, yeast, salt. Actual products may differ.",
      "retained": 0
    }
  ],
  "warnings": [
    "Reference packaged-food ingredients may differ by brand. Check actual labels and cross-contact information. Exclusions filter recipe ingredients and cannot certify allergy safety."
  ],
  "schedule": [
    {
      "id": "check",
      "duration": 5,
      "resources": [
        "person"
      ],
      "dependsOn": [],
      "label": "Check labels, edible pantry quantities, usable dates, containers and fridge / freezer temperatures.",
      "start": 0,
      "end": 5
    },
    {
      "id": "make-prep-carrot-lentil-pot",
      "late": false,
      "minimumFinish": 0,
      "minimumStart": 0,
      "duration": 42,
      "resources": [
        "person",
        "stove"
      ],
      "dependsOn": [
        "check"
      ],
      "label": "Prepare Carrot lentil base in 1 load(s). Rinse 320g red lentils. Cut 600g carrots into 1cm cubes and 200g onions into 5mm dice. Warm 30ml olive oil in a pot over medium heat and soften the vegetables for 5 minutes. Stir in 4g ground cumin for 30 seconds until fragrant; lower heat if it smells toasted sharply. Add the lentils, 1400ml recipe water, 6g salt and 2g black pepper. Bring to a boil, reduce to low and partly cover for 20–30 minutes, stirring every 5 minutes until the carrots crush under a fork and the lentils are creamy. If it catches, lower the heat and add hot processing water in small amounts; record it. The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time. Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits.",
      "start": 5,
      "end": 47
    },
    {
      "id": "portion-prep-carrot-lentil-pot",
      "late": false,
      "minimumFinish": 0,
      "duration": 5,
      "resources": [
        "person"
      ],
      "dependsOn": [
        "make-prep-carrot-lentil-pot"
      ],
      "label": "Divide Carrot lentil base into 1 labelled Y/1 shares. Chill promptly in shallow containers; refrigerate or freeze within 2 hours, or 1 hour above 32°C.",
      "start": 47,
      "end": 52
    }
  ],
  "transitions": [
    {
      "from": "carrot-lentil-pot",
      "componentId": "prep-carrot-lentil-pot",
      "to": "carrot-lentil-pot",
      "dayIndex": 0,
      "preparedAt": "2026-10-25T19:52:00",
      "useAt": "2026-10-26T18:00:00",
      "storageType": "refrigerated",
      "hours": 22.133333333333333,
      "allowed": true,
      "action": "Refrigerate promptly at 4°C or below. Reheat cooked food to 74°C, checked with a thermometer.",
      "freezeAt": null,
      "thawAt": null,
      "thawed": false,
      "plannedThawAt": null,
      "useBy": "2026-10-28T19:52:00",
      "portion": "Y/1"
    }
  ],
  "prepComponents": [
    {
      "id": "prep-carrot-lentil-pot",
      "title": "Carrot lentil base",
      "ingredientIds": [
        "lentil",
        "carrot",
        "onion",
        "oil",
        "cumin",
        "water",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 72,
      "prepMinutes": 42,
      "finishMinutes": 8,
      "prepInstructions": [
        "Rinse 320g red lentils. Cut 600g carrots into 1cm cubes and 200g onions into 5mm dice. Warm 30ml olive oil in a pot over medium heat and soften the vegetables for 5 minutes. Stir in 4g ground cumin for 30 seconds until fragrant; lower heat if it smells toasted sharply.",
        "Add the lentils, 1400ml recipe water, 6g salt and 2g black pepper. Bring to a boil, reduce to low and partly cover for 20–30 minutes, stirring every 5 minutes until the carrots crush under a fork and the lentils are creamy. If it catches, lower the heat and add hot processing water in small amounts; record it.",
        "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
        "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
      ],
      "finishInstructions": [
        "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
        "Wash 200g spinach, remove tough stalk ends and roughly chop into 3cm strips. Stir into the hot lentil base and simmer for 2–3 minutes until wilted throughout.",
        "Rest off the heat for 2 minutes. Stir once and divide between bowls; loosen with a small splash of hot processing water if it thickens while standing."
      ],
      "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate.",
      "recipeIds": [
        "carrot-lentil-pot"
      ],
      "baseAmounts": {
        "lentil": 160,
        "carrot": 300,
        "onion": 100,
        "cumin": 2,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 700
      },
      "rawAmounts": [
        {
          "ingredientId": "lentil",
          "quantity": 320,
          "unit": "g"
        },
        {
          "ingredientId": "carrot",
          "quantity": 600,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 200,
          "unit": "g"
        },
        {
          "ingredientId": "cumin",
          "quantity": 4,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 30,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 6,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 2,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 1400,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 4,
      "signature": "[{\"ingredientId\":\"lentil\",\"quantity\":320,\"unit\":\"g\"},{\"ingredientId\":\"carrot\",\"quantity\":600,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":200,\"unit\":\"g\"},{\"ingredientId\":\"cumin\",\"quantity\":4,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":30,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":6,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":2,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":1400,\"unit\":\"ml\"}]",
      "selected": true,
      "prepared": false,
      "preparedAt": "2026-10-25T19:52:00",
      "storage": "refrigerated",
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 0,
          "recipeId": "carrot-lentil-pot",
          "date": "2026-10-26"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {
        "0": 300
      },
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ],
      "finishTaskId": "portion-prep-carrot-lentil-pot",
      "useBy": "2026-10-28T19:52:00",
      "openedAt": null
    },
    {
      "id": "prep-tomato-lentil-rice",
      "title": "Tomato lentil rice pot",
      "ingredientIds": [
        "rice",
        "lentil",
        "carrot",
        "onion",
        "oil",
        "canned-tomato",
        "water",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 24,
      "prepMinutes": 45,
      "finishMinutes": 12,
      "prepInstructions": [
        "Rinse 240g rice and 240g red lentils. Cut 300g carrots into 5mm dice and 200g onions into 5mm dice. Heat 30ml olive oil in a broad pot over medium heat and soften the vegetables for 5 minutes.",
        "Add rice, lentils, 800g canned tomatoes, 1400ml recipe water, 6g salt and 2g black pepper. Bring to a boil, partly cover and reduce to a gentle simmer for 25–35 minutes. Stir the bottom every 5 minutes until lentils collapse and rice has no hard centre.",
        "If the rice is firm but the liquid is gone, add boiling processing water a little at a time and continue simmering; record the addition. If too soupy once tender, uncover for 3–5 minutes. Rest off the heat for 5 minutes.",
        "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
        "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits. For this planner, refrigerate cooked rice for at most 24 hours or freeze promptly on the preparation day after rapid cooling in shallow containers. This 24-hour rice limit is a conservative product choice, not a USDA-specific rice rule. Reheat the cooked portion evenly to 74°C with a thermometer."
      ],
      "finishInstructions": [
        "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
        "Stir once and ladle into bowls. The texture should be thick and spoonable, with soft grains rather than separate dry rice."
      ],
      "qualityNotes": "This intentionally soft rice pot thickens on standing. Freeze promptly for late-week dinners. The 24-hour chilled rice limit is this planner’s conservative policy.",
      "recipeIds": [
        "tomato-lentil-rice"
      ],
      "baseAmounts": {
        "rice": 120,
        "lentil": 120,
        "canned-tomato": 400,
        "carrot": 150,
        "onion": 100,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 700
      },
      "rawAmounts": [
        {
          "ingredientId": "rice",
          "quantity": 240,
          "unit": "g"
        },
        {
          "ingredientId": "lentil",
          "quantity": 240,
          "unit": "g"
        },
        {
          "ingredientId": "canned-tomato",
          "quantity": 800,
          "unit": "g"
        },
        {
          "ingredientId": "carrot",
          "quantity": 300,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 200,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 30,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 6,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 2,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 1400,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 4,
      "signature": "[{\"ingredientId\":\"rice\",\"quantity\":240,\"unit\":\"g\"},{\"ingredientId\":\"lentil\",\"quantity\":240,\"unit\":\"g\"},{\"ingredientId\":\"canned-tomato\",\"quantity\":800,\"unit\":\"g\"},{\"ingredientId\":\"carrot\",\"quantity\":300,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":200,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":30,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":6,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":2,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":1400,\"unit\":\"ml\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 1,
          "recipeId": "tomato-lentil-rice",
          "date": "2026-10-27"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-lentil-cabbage-soup",
      "title": "Lentil cabbage soup",
      "ingredientIds": [
        "lentil",
        "carrot",
        "potato",
        "onion",
        "cabbage",
        "oil",
        "water",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 72,
      "prepMinutes": 48,
      "finishMinutes": 12,
      "prepInstructions": [
        "Sort and rinse 320g red lentils. Cut 400g carrots and 400g potatoes into 1cm cubes, 200g onions into 5mm dice and 600g cabbage into 5mm ribbons. Heat 30ml olive oil in a large pot over medium heat and soften onion and carrot for 5 minutes.",
        "Add lentils, potatoes and 1800ml recipe water. Bring to a boil, partly cover and simmer over low heat for 20–30 minutes, stirring occasionally, until lentils break down and potatoes are fork-tender. If the base catches, lower the heat and add a little hot processing water.",
        "Add cabbage, 6g salt and 2g black pepper; simmer for 5–8 minutes until the thickest cabbage ribs are tender. If it is too thick to ladle, add and record extra processing water.",
        "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
        "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
      ],
      "finishInstructions": [
        "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
        "Rest for 2 minutes and serve in warmed bowls. Freeze late-week prep portions promptly in shallow containers on preparation day."
      ],
      "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate.",
      "recipeIds": [
        "lentil-cabbage-soup"
      ],
      "baseAmounts": {
        "lentil": 160,
        "cabbage": 300,
        "carrot": 200,
        "onion": 100,
        "potato": 200,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 900
      },
      "rawAmounts": [
        {
          "ingredientId": "lentil",
          "quantity": 320,
          "unit": "g"
        },
        {
          "ingredientId": "cabbage",
          "quantity": 600,
          "unit": "g"
        },
        {
          "ingredientId": "carrot",
          "quantity": 400,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 200,
          "unit": "g"
        },
        {
          "ingredientId": "potato",
          "quantity": 400,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 30,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 6,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 2,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 1800,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 4,
      "signature": "[{\"ingredientId\":\"lentil\",\"quantity\":320,\"unit\":\"g\"},{\"ingredientId\":\"cabbage\",\"quantity\":600,\"unit\":\"g\"},{\"ingredientId\":\"carrot\",\"quantity\":400,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":200,\"unit\":\"g\"},{\"ingredientId\":\"potato\",\"quantity\":400,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":30,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":6,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":2,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":1800,\"unit\":\"ml\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 2,
          "recipeId": "lentil-cabbage-soup",
          "date": "2026-10-28"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-lemon-bean-wraps",
      "title": "Lemon white bean filling",
      "ingredientIds": [
        "white-bean",
        "lemon",
        "salt",
        "pepper",
        "oil"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 72,
      "prepMinutes": 10,
      "finishMinutes": 8,
      "prepInstructions": [
        "Drain 480g white beans. Mash half with 40ml lemon juice, 6g salt and 2g black pepper; leave the other half whole for texture. The mash should hold together on a spoon rather than run.",
        "Heat 20ml olive oil in a skillet over medium-low heat. Add all the mashed and whole beans and cook for 5 minutes, stirring until steaming. If too stiff to spread, stir in a little processing water; if loose, cook uncovered briefly.",
        "The displayed quantities already match your selected servings. For 1 or 2 servings, use a smaller pan and check early; keep the stated cut sizes. For 4 servings use a broad pan or uncrowded trays; for 8 split every ingredient evenly into two 4-serving batches (more if the pan or pot capacity requires it). Keep pans below 80% full and vegetables in one layer when browning. Repeat the cooking and doneness checks for each batch; elapsed time increases for sequential batches.",
        "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
      ],
      "finishInstructions": [
        "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
        "Wash and dry 400g cabbage, then shred into 2mm ribbons. Grate 300g carrots coarsely. Warm 8 pieces plain flour tortillas in a dry pan for 20–30 seconds on each side until supple; check the actual brand ingredients.",
        "Divide the bean filling and raw vegetables evenly between the warm tortillas. Fold in the sides and roll; add the crunchy vegetables just before serving so they stay crisp."
      ],
      "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate.",
      "recipeIds": [
        "lemon-bean-wraps"
      ],
      "baseAmounts": {
        "white-bean": 240,
        "lemon": 20,
        "oil": 10,
        "salt": 3,
        "pepper": 1
      },
      "rawAmounts": [
        {
          "ingredientId": "white-bean",
          "quantity": 480,
          "unit": "g"
        },
        {
          "ingredientId": "lemon",
          "quantity": 40,
          "unit": "ml"
        },
        {
          "ingredientId": "oil",
          "quantity": 20,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 6,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 2,
          "unit": "g"
        }
      ],
      "portions": 1,
      "servings": 4,
      "signature": "[{\"ingredientId\":\"white-bean\",\"quantity\":480,\"unit\":\"g\"},{\"ingredientId\":\"lemon\",\"quantity\":40,\"unit\":\"ml\"},{\"ingredientId\":\"oil\",\"quantity\":20,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":6,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":2,\"unit\":\"g\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 3,
          "recipeId": "lemon-bean-wraps",
          "date": "2026-10-29"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-lentil-tomato-soup",
      "title": "Lentil tomato soup",
      "ingredientIds": [
        "lentil",
        "carrot",
        "onion",
        "cabbage",
        "oil",
        "canned-tomato",
        "water",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 72,
      "prepMinutes": 48,
      "finishMinutes": 10,
      "prepInstructions": [
        "Sort and rinse 320g red lentils. Cut 300g carrots into 8mm dice and 200g onions into 5mm dice; shred 400g cabbage into 5mm ribbons. Heat 30ml olive oil in a large pot over medium heat. Soften onion and carrot for 5 minutes, stirring; reduce heat if onion starts to scorch.",
        "Add the lentils, 800g canned tomatoes and 1600ml recipe water. Bring to a boil, reduce to a gentle simmer and partly cover for 20–30 minutes, stirring the bottom every 5 minutes, until lentils collapse when pressed. If still firm, add a little hot processing water and continue simmering; record added water.",
        "Stir in the cabbage, 6g salt and 2g black pepper. Simmer for 5–8 minutes until cabbage ribs are tender. The soup should pour from a ladle; add a little processing water if it has become a paste.",
        "The displayed quantities already match your selected servings. For 1 serving use a small covered pot and check liquid early; for 2 use the stated method. For 4 or 8 use the planned pot-capacity batches and divide every ingredient proportionally. Keep each pot below 80% full. Maintain a gentle simmer and judge each batch by texture, not by multiplying the cooking time.",
        "Serve promptly. Cool any extra cooked food in shallow containers and refrigerate within two hours, or one hour above 32°C. Keep the fridge at 4°C or below. Reheat cooked leftovers evenly to 74°C, checking several places with a food thermometer. Keep raw garnishes and cold yogurt or tahini sauces separate and use them cold within their label limits."
      ],
      "finishInstructions": [
        "Use the labelled component for this dinner. If frozen promptly, thaw in the fridge the previous evening; if still frozen, heat gently from frozen, stirring where possible. Reheat cooked food evenly to 74°C with a thermometer before the fresh finishing steps. Add a splash of processing water if it catches, recording any extra water.",
        "Serve the soup with 320g plain bread on the side. If this is a late-week prep dinner, portion and freeze the soup promptly on preparation day; keep the bread separate until the dinner."
      ],
      "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate.",
      "recipeIds": [
        "lentil-tomato-soup"
      ],
      "baseAmounts": {
        "lentil": 160,
        "canned-tomato": 400,
        "carrot": 150,
        "onion": 100,
        "cabbage": 200,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 800
      },
      "rawAmounts": [
        {
          "ingredientId": "lentil",
          "quantity": 320,
          "unit": "g"
        },
        {
          "ingredientId": "canned-tomato",
          "quantity": 800,
          "unit": "g"
        },
        {
          "ingredientId": "carrot",
          "quantity": 300,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 200,
          "unit": "g"
        },
        {
          "ingredientId": "cabbage",
          "quantity": 400,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 30,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 6,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 2,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 1600,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 4,
      "signature": "[{\"ingredientId\":\"lentil\",\"quantity\":320,\"unit\":\"g\"},{\"ingredientId\":\"canned-tomato\",\"quantity\":800,\"unit\":\"g\"},{\"ingredientId\":\"carrot\",\"quantity\":300,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":200,\"unit\":\"g\"},{\"ingredientId\":\"cabbage\",\"quantity\":400,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":30,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":6,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":2,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":1600,\"unit\":\"ml\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 4,
          "recipeId": "lentil-tomato-soup",
          "date": "2026-10-30"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    }
  ],
  "portionLabels": [
    {
      "id": "prep-carrot-lentil-pot-1",
      "componentId": "prep-carrot-lentil-pot",
      "title": "Carrot lentil base",
      "portion": "Y/1",
      "portionNumber": 1,
      "servings": 4,
      "preparedAt": "2026-10-25T19:52:00",
      "storage": "refrigerated",
      "originalStorage": "refrigerated",
      "freezeAt": null,
      "plannedThawAt": null,
      "thawAt": null,
      "thawed": false,
      "useBy": "2026-10-28T19:52:00",
      "dinnerDate": "2026-10-26",
      "recipeId": "carrot-lentil-pot",
      "status": "planned",
      "instructions": "Refrigerate promptly at 4°C or below. Reheat cooked food to 74°C, checked with a thermometer."
    }
  ],
  "leftovers": {
    "pantry": [
      {
        "lotId": "purchase-lentil",
        "source": "planned-purchase",
        "ingredientId": "lentil",
        "name": "Red lentils",
        "quantity": 100,
        "unit": "g",
        "state": "dry",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-carrot",
        "source": "planned-purchase",
        "ingredientId": "carrot",
        "name": "Carrots",
        "quantity": 100,
        "unit": "g",
        "state": "raw",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-onion",
        "source": "planned-purchase",
        "ingredientId": "onion",
        "name": "Onions",
        "quantity": 200,
        "unit": "g",
        "state": "raw",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-cumin",
        "source": "planned-purchase",
        "ingredientId": "cumin",
        "name": "Ground cumin",
        "quantity": 36,
        "unit": "g",
        "state": "dry",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-oil",
        "source": "planned-purchase",
        "ingredientId": "oil",
        "name": "Olive oil",
        "quantity": 360,
        "unit": "ml",
        "state": "raw",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-salt",
        "source": "planned-purchase",
        "ingredientId": "salt",
        "name": "Salt",
        "quantity": 220,
        "unit": "g",
        "state": "dry",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-pepper",
        "source": "planned-purchase",
        "ingredientId": "pepper",
        "name": "Black pepper",
        "quantity": 40,
        "unit": "g",
        "state": "dry",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-rice",
        "source": "planned-purchase",
        "ingredientId": "rice",
        "name": "Rice",
        "quantity": 260,
        "unit": "g",
        "state": "dry",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-cabbage",
        "source": "planned-purchase",
        "ingredientId": "cabbage",
        "name": "Cabbage",
        "quantity": 200,
        "unit": "g",
        "state": "raw",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-potato",
        "source": "planned-purchase",
        "ingredientId": "potato",
        "name": "Potatoes",
        "quantity": 600,
        "unit": "g",
        "state": "raw",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-lemon",
        "source": "planned-purchase",
        "ingredientId": "lemon",
        "name": "Lemon juice",
        "quantity": 210,
        "unit": "ml",
        "state": "raw",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      },
      {
        "lotId": "purchase-bread",
        "source": "planned-purchase",
        "ingredientId": "bread",
        "name": "Plain bread",
        "quantity": 80,
        "unit": "g",
        "state": "cooked",
        "openedAt": null,
        "useBy": null,
        "status": "projected",
        "instructions": "Package surplus if you buy the listed amount. Record the actual package use-by and opening date; keep it separate from existing lots."
      }
    ],
    "prepared": []
  },
  "component": null,
  "diff": [],
  "knownLimitations": [
    "Original recipes have not undergone real cooking trials. Package sizes are examples; confirm actual labels.",
    "Serving equivalents are cooking quantities, not individualized nutritional needs.",
    "Times are planning estimates. A saved record cannot verify actual cooling, temperatures or food handling."
  ],
  "validation": {
    "checks": [
      "quantities",
      "units",
      "exclusions",
      "equipment",
      "storage",
      "complete-recipes",
      "component-ledger"
    ],
    "validatedAt": "2026-10-25T06:05:08.838Z"
  }
}
