{
  "schemaVersion": 1,
  "engineVersion": 3,
  "version": 1,
  "weekId": "dry-rice-pantry",
  "title": "Dry rice pantry week",
  "goal": "Use 800g dry rice across the week for two servings; prepare rice fresh each night.",
  "servings": 2,
  "firstDate": "2026-10-26",
  "prepStartHour": 19,
  "prepStartMinute": 0,
  "input": {
    "servings": 2,
    "mealStartDate": "2026-10-26",
    "potLitres": 4,
    "availableEquipment": [
      "stove",
      "oven"
    ],
    "prepSelections": [],
    "pantryItems": [
      {
        "ingredientId": "rice",
        "quantity": 300,
        "unit": "g",
        "state": "dry",
        "userConfirmed": true
      }
    ],
    "excludeTags": [],
    "preparedBatches": {},
    "thawedPortions": {}
  },
  "dinners": [
    {
      "dayIndex": 0,
      "date": "2026-10-26",
      "recipe": {
        "id": "lemon-chickpea-rice",
        "slug": "lemon-chickpea-rice",
        "title": "Lemon chickpea rice",
        "summary": "A lemony chickpea and zucchini skillet keeps the vegetables separate from freshly cooked rice.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "rice",
            "quantity": 160,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "chickpea",
            "quantity": 240,
            "unit": "g",
            "state": "drained"
          },
          {
            "ingredientId": "zucchini",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "carrot",
            "quantity": 150,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "onion",
            "quantity": 100,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 20,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "lemon",
            "quantity": 20,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 3,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 1,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 300,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 15,
        "elapsedMinutes": 35,
        "steps": [
          {
            "id": "lemon-chickpea-rice-1",
            "instructions": "Cut 300g zucchini into 1.5cm cubes, 150g carrots into 5mm dice and 100g onions into 5mm dice. Heat 20ml olive oil in a skillet over medium heat. Cook carrot and onion for 5 minutes, then add zucchini and cook for 6–8 minutes until tender with golden edges. Spread onto two pans if liquid pools.",
            "ingredientRefs": [
              "zucchini",
              "carrot",
              "onion",
              "oil"
            ],
            "durationRange": [
              6,
              8
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "tender with golden edges"
          },
          {
            "id": "lemon-chickpea-rice-2",
            "instructions": "Add 240g chickpeas, 3g salt and 1g black pepper. Cook for 5 minutes, stirring until the chickpeas steam throughout. If the pan is dry, loosen with a little processing water.",
            "ingredientRefs": [
              "chickpea",
              "salt",
              "pepper"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lemon-chickpea-rice-1"
            ],
            "doneCondition": "the chickpeas steam throughout"
          },
          {
            "id": "lemon-chickpea-rice-3",
            "instructions": "With two burners, cook this rice while making the topping; on one burner finish the topping first and allow extra time. Rinse 160g rice and cook with 300ml recipe water in a covered saucepan according to the packet ratio. Bring to a boil, then cook on low for 12–18 minutes until tender. Add a little boiling processing water if hard in the centre, then rest off the heat for 5 minutes.",
            "ingredientRefs": [
              "rice",
              "water"
            ],
            "durationRange": [
              12,
              18
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "tender"
          },
          {
            "id": "lemon-chickpea-rice-4",
            "instructions": "Stir 20ml lemon juice through the hot chickpea topping just before serving. Fluff the rice and divide the topping over it.",
            "ingredientRefs": [
              "lemon"
            ],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "lemon-chickpea-rice-2",
              "lemon-chickpea-rice-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "lemon-chickpea-rice-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. 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": [
              "lemon-chickpea-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"
        },
        "potLitres": 3,
        "familyId": "saute-toss",
        "batchServings": 4,
        "makeAhead": {
          "id": "prep-lemon-chickpea-rice",
          "title": "Lemon chickpea vegetable topping",
          "ingredientIds": [
            "zucchini",
            "carrot",
            "onion",
            "oil",
            "chickpea",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 72,
          "prepMinutes": 28,
          "finishMinutes": 22,
          "prepInstructions": [
            "Cut {qty:zucchini} into 1.5cm cubes, {qty:carrot} into 5mm dice and {qty:onion} into 5mm dice. Heat {qty:oil} in a skillet over medium heat. Cook carrot and onion for 5 minutes, then add zucchini and cook for 6–8 minutes until tender with golden edges. Spread onto two pans if liquid pools.",
            "Add {qty:chickpea}, {qty:salt} and {qty:pepper}. Cook for 5 minutes, stirring until the chickpeas steam throughout. If the pan is dry, loosen with a little processing water.",
            "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.",
            "With two burners, cook this rice while making the topping; on one burner finish the topping first and allow extra time. Rinse {qty:rice} and cook with {qty:water} in a covered saucepan according to the packet ratio. Bring to a boil, then cook on low for 12–18 minutes until tender. Add a little boiling processing water if hard in the centre, then rest off the heat for 5 minutes.",
            "Stir {qty:lemon} through the hot chickpea topping just before serving. Fluff the rice and divide the topping over it."
          ],
          "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": 22,
        "servings": 2
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 4L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 35
    },
    {
      "dayIndex": 1,
      "date": "2026-10-27",
      "recipe": {
        "id": "bean-rice-bowls",
        "slug": "bean-rice-bowls",
        "title": "Bean rice bowls",
        "summary": "A soft pepper, tomato and black bean skillet served over separately cooked rice.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "rice",
            "quantity": 160,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "black-bean",
            "quantity": 240,
            "unit": "g",
            "state": "drained"
          },
          {
            "ingredientId": "bell-pepper",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "onion",
            "quantity": 100,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "fresh-tomato",
            "quantity": 200,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 15,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 3,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 1,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 300,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 15,
        "elapsedMinutes": 35,
        "steps": [
          {
            "id": "bean-rice-bowls-1",
            "instructions": "Cut 100g onions into 5mm dice, 300g bell pepper into 1cm squares and 200g fresh tomatoes into 1cm pieces. Heat 15ml olive oil in a broad skillet over medium heat. Cook the onion for 3 minutes, then add the pepper and cook for 6–8 minutes until softened and lightly golden. Lower the heat if the edges darken before the centres soften.",
            "ingredientRefs": [
              "onion",
              "bell-pepper",
              "fresh-tomato",
              "oil"
            ],
            "durationRange": [
              6,
              8
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "softened and lightly golden"
          },
          {
            "id": "bean-rice-bowls-2",
            "instructions": "Add the diced tomato, 240g black beans, 3g salt and 1g black pepper. Simmer uncovered for 5–7 minutes until the tomato breaks down and the beans steam throughout. If the topping is watery, simmer uncovered another 2 minutes; if dry, add a splash of processing water.",
            "ingredientRefs": [
              "black-bean",
              "salt",
              "pepper"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "bean-rice-bowls-1"
            ],
            "doneCondition": "the tomato breaks down and the beans steam throughout"
          },
          {
            "id": "bean-rice-bowls-3",
            "instructions": "With two burners, cook the rice while making the skillet topping; with one burner, finish the topping first and allow extra time. Rinse 160g rice. Put it in a fitted-lid saucepan with 300ml recipe water, checking the packet ratio first. Bring to a boil, reduce to low, cover and cook for 12–18 minutes until the liquid is absorbed and a grain is tender. If still chalky, add a little boiling processing water and cover for 3 minutes more. Rest off the heat for 5 minutes.",
            "ingredientRefs": [
              "rice",
              "water"
            ],
            "durationRange": [
              12,
              18
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "the liquid is absorbed and a grain is tender"
          },
          {
            "id": "bean-rice-bowls-4",
            "instructions": "Fluff the rice and divide it into bowls. Spoon the hot bean topping over it just before serving.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "bean-rice-bowls-2",
              "bean-rice-bowls-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "bean-rice-bowls-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. 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": [
              "bean-rice-bowls-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"
        },
        "potLitres": 2,
        "familyId": "saute-toss",
        "batchServings": 4,
        "makeAhead": {
          "id": "prep-bean-rice-bowls",
          "title": "Pepper and black bean topping",
          "ingredientIds": [
            "onion",
            "bell-pepper",
            "fresh-tomato",
            "oil",
            "black-bean",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 72,
          "prepMinutes": 18,
          "finishMinutes": 22,
          "prepInstructions": [
            "Cut {qty:onion} into 5mm dice, {qty:bell-pepper} into 1cm squares and {qty:fresh-tomato} into 1cm pieces. Heat {qty:oil} in a broad skillet over medium heat. Cook the onion for 3 minutes, then add the pepper and cook for 6–8 minutes until softened and lightly golden. Lower the heat if the edges darken before the centres soften.",
            "Add the diced tomato, {qty:black-bean}, {qty:salt} and {qty:pepper}. Simmer uncovered for 5–7 minutes until the tomato breaks down and the beans steam throughout. If the topping is watery, simmer uncovered another 2 minutes; if dry, add a splash of processing water.",
            "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.",
            "With two burners, cook the rice while making the skillet topping; with one burner, finish the topping first and allow extra time. Rinse {qty:rice}. Put it in a fitted-lid saucepan with {qty:water}, checking the packet ratio first. Bring to a boil, reduce to low, cover and cook for 12–18 minutes until the liquid is absorbed and a grain is tender. If still chalky, add a little boiling processing water and cover for 3 minutes more. Rest off the heat for 5 minutes.",
            "Fluff the rice and divide it into bowls. Spoon the hot bean topping over it just before serving."
          ],
          "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": 22,
        "servings": 2
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 4L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 35
    },
    {
      "dayIndex": 2,
      "date": "2026-10-28",
      "recipe": {
        "id": "pea-rice-pot",
        "slug": "pea-rice-pot",
        "title": "Lemon pea rice pot",
        "summary": "Peas finish steaming on lemon-scented rice in one covered saucepan.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "rice",
            "quantity": 160,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pea",
            "quantity": 200,
            "unit": "g",
            "state": "frozen"
          },
          {
            "ingredientId": "onion",
            "quantity": 100,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "lemon",
            "quantity": 20,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 15,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 3,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 1,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 350,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 10,
        "elapsedMinutes": 40,
        "steps": [
          {
            "id": "pea-rice-pot-1",
            "instructions": "Cut 100g onions into 5mm dice. Heat 15ml olive oil in a fitted-lid pot over medium-low heat and soften onion for 3 minutes. Rinse 160g rice, drain and stir it through the onion for 1 minute.",
            "ingredientRefs": [
              "onion",
              "oil",
              "rice"
            ],
            "durationRange": [
              3,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "pea-rice-pot-2",
            "instructions": "Add 350ml recipe water, 3g salt and 1g black pepper, checking the rice packet ratio before cooking. Bring to a boil, cover and reduce to low for 12–15 minutes until most liquid is absorbed and rice has only a small firm centre.",
            "ingredientRefs": [
              "water",
              "salt",
              "pepper"
            ],
            "durationRange": [
              12,
              15
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "pea-rice-pot-1"
            ],
            "doneCondition": "most liquid is absorbed and rice has only a small firm centre"
          },
          {
            "id": "pea-rice-pot-3",
            "instructions": "Scatter 200g peas over the rice, cover and cook for 5–7 minutes until peas are tender and rice is cooked through. If rice is dry but hard, add a little boiling processing water at the edge and cook covered for another 3 minutes. Rest off the heat for 5 minutes.",
            "ingredientRefs": [
              "pea"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "pea-rice-pot-2"
            ],
            "doneCondition": "peas are tender and rice is cooked through"
          },
          {
            "id": "pea-rice-pot-4",
            "instructions": "Fluff gently with a fork and stir through 20ml lemon juice. Divide into bowls while hot.",
            "ingredientRefs": [
              "lemon"
            ],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "pea-rice-pot-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "pea-rice-pot-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. 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": [
              "pea-rice-pot-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"
        },
        "potLitres": 2,
        "familyId": "grain-pots",
        "batchServings": 4,
        "makeAhead": {
          "id": "prep-pea-rice-pot",
          "title": "Pea rice pot",
          "ingredientIds": [
            "onion",
            "oil",
            "rice",
            "water",
            "salt",
            "pepper",
            "pea"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 24,
          "prepMinutes": 35,
          "finishMinutes": 10,
          "prepInstructions": [
            "Cut {qty:onion} into 5mm dice. Heat {qty:oil} in a fitted-lid pot over medium-low heat and soften onion for 3 minutes. Rinse {qty:rice}, drain and stir it through the onion for 1 minute.",
            "Add {qty:water}, {qty:salt} and {qty:pepper}, checking the rice packet ratio before cooking. Bring to a boil, cover and reduce to low for 12–15 minutes until most liquid is absorbed and rice has only a small firm centre.",
            "Scatter {qty:pea} over the rice, cover and cook for 5–7 minutes until peas are tender and rice is cooked through. If rice is dry but hard, add a little boiling processing water at the edge and cook covered for another 3 minutes. Rest off the heat for 5 minutes.",
            "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. 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.",
            "Fluff gently with a fork and stir through {qty:lemon}. Divide into bowls while hot."
          ],
          "qualityNotes": "Cool quickly in shallow portions. The 24-hour refrigerated rice limit is this planner’s conservative choice; freeze promptly for later dinners. Add lemon after reheating."
        },
        "freezable": true,
        "finishAfterPrep": 10,
        "servings": 2
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 4L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 40
    },
    {
      "dayIndex": 3,
      "date": "2026-10-29",
      "recipe": {
        "id": "broccoli-rice",
        "slug": "broccoli-rice",
        "title": "Broccoli and black bean rice",
        "summary": "Broccoli steams above rice before black beans and lemon are folded through.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "rice",
            "quantity": 160,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "broccoli",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "black-bean",
            "quantity": 240,
            "unit": "g",
            "state": "drained"
          },
          {
            "ingredientId": "lemon",
            "quantity": 20,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 15,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 3,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 1,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 350,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 12,
        "elapsedMinutes": 40,
        "steps": [
          {
            "id": "broccoli-rice-1",
            "instructions": "Rinse 160g rice and put in a fitted-lid pot with 350ml recipe water, checking the packet ratio first. Bring to a boil, reduce to low, cover and simmer for 12–15 minutes until most liquid is absorbed but the centre of a grain is still slightly firm.",
            "ingredientRefs": [
              "rice",
              "water"
            ],
            "durationRange": [
              12,
              15
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "most liquid is absorbed but the centre of a grain is still slightly firm"
          },
          {
            "id": "broccoli-rice-2",
            "instructions": "Cut 300g broccoli into 2cm florets and peel thick stems before slicing them 5mm thick. Scatter over the rice, cover and steam for 5–7 minutes until a knife enters the stems easily. If rice is hard and dry, add a splash of boiling processing water before covering again.",
            "ingredientRefs": [
              "broccoli"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "broccoli-rice-1"
            ],
            "doneCondition": "a knife enters the stems easily"
          },
          {
            "id": "broccoli-rice-3",
            "instructions": "Fold in 240g black beans, 15ml olive oil, 3g salt and 1g black pepper. Cover over low heat for 3–5 minutes until the beans steam throughout. Rest off the heat for 5 minutes.",
            "ingredientRefs": [
              "black-bean",
              "oil",
              "salt",
              "pepper"
            ],
            "durationRange": [
              3,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "broccoli-rice-2"
            ],
            "doneCondition": "the beans steam throughout"
          },
          {
            "id": "broccoli-rice-4",
            "instructions": "Stir through 20ml lemon juice and fluff gently without crushing the broccoli. Divide evenly into bowls.",
            "ingredientRefs": [
              "lemon"
            ],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "broccoli-rice-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "broccoli-rice-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. 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": [
              "broccoli-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"
        },
        "potLitres": 3,
        "familyId": "grain-pots",
        "batchServings": 4,
        "makeAhead": {
          "id": "prep-broccoli-rice",
          "title": "Broccoli and bean rice",
          "ingredientIds": [
            "rice",
            "water",
            "broccoli",
            "black-bean",
            "oil",
            "salt",
            "pepper"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 24,
          "prepMinutes": 35,
          "finishMinutes": 10,
          "prepInstructions": [
            "Rinse {qty:rice} and put in a fitted-lid pot with {qty:water}, checking the packet ratio first. Bring to a boil, reduce to low, cover and simmer for 12–15 minutes until most liquid is absorbed but the centre of a grain is still slightly firm.",
            "Cut {qty:broccoli} into 2cm florets and peel thick stems before slicing them 5mm thick. Scatter over the rice, cover and steam for 5–7 minutes until a knife enters the stems easily. If rice is hard and dry, add a splash of boiling processing water before covering again.",
            "Fold in {qty:black-bean}, {qty:oil}, {qty:salt} and {qty:pepper}. Cover over low heat for 3–5 minutes until the beans steam throughout. Rest off the heat for 5 minutes.",
            "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. 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 through {qty:lemon} and fluff gently without crushing the broccoli. Divide evenly into bowls."
          ],
          "qualityNotes": "Frozen broccoli will be softer. Cool in shallow portions and freeze promptly for later dinners; the 24-hour rice limit is a conservative planner policy."
        },
        "freezable": true,
        "finishAfterPrep": 10,
        "servings": 2
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 4L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 40
    },
    {
      "dayIndex": 4,
      "date": "2026-10-30",
      "recipe": {
        "id": "carrot-bean-rice",
        "slug": "carrot-bean-rice",
        "title": "Carrot and white bean rice",
        "summary": "Small carrot dice cook alongside rice, with white beans folded in gently at the end.",
        "version": 1,
        "locale": "en",
        "baseServings": 2,
        "ingredients": [
          {
            "ingredientId": "rice",
            "quantity": 160,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "carrot",
            "quantity": 300,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "white-bean",
            "quantity": 240,
            "unit": "g",
            "state": "drained"
          },
          {
            "ingredientId": "onion",
            "quantity": 100,
            "unit": "g",
            "state": "raw"
          },
          {
            "ingredientId": "oil",
            "quantity": 15,
            "unit": "ml",
            "state": "raw"
          },
          {
            "ingredientId": "salt",
            "quantity": 3,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "pepper",
            "quantity": 1,
            "unit": "g",
            "state": "dry"
          },
          {
            "ingredientId": "water",
            "quantity": 350,
            "unit": "ml",
            "state": "raw"
          }
        ],
        "equipment": [
          "stove"
        ],
        "activeMinutes": 12,
        "elapsedMinutes": 40,
        "steps": [
          {
            "id": "carrot-bean-rice-1",
            "instructions": "Cut 300g carrots into 5mm dice and 100g onions into 5mm dice. Rinse 160g rice. Heat 15ml olive oil in a fitted-lid pot over medium heat and soften the vegetables for 5 minutes.",
            "ingredientRefs": [
              "carrot",
              "onion",
              "rice",
              "oil"
            ],
            "durationRange": [
              5,
              7
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "carrot-bean-rice-2",
            "instructions": "Stir in the rice, 350ml recipe water, 3g salt and 1g black pepper; check the rice packet liquid ratio first. Bring to a boil, cover and simmer over low heat for 12–18 minutes until rice and carrot are tender. If the rice centre stays firm, add a little boiling processing water and cover for 3 minutes more.",
            "ingredientRefs": [
              "water",
              "salt",
              "pepper"
            ],
            "durationRange": [
              12,
              18
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-bean-rice-1"
            ],
            "doneCondition": "rice and carrot are tender"
          },
          {
            "id": "carrot-bean-rice-3",
            "instructions": "Fold in 240g white beans, cover and heat on low for 4–5 minutes until beans steam throughout. Rest off the heat for 5 minutes.",
            "ingredientRefs": [
              "white-bean"
            ],
            "durationRange": [
              4,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-bean-rice-2"
            ],
            "doneCondition": "beans steam throughout"
          },
          {
            "id": "carrot-bean-rice-4",
            "instructions": "Fluff gently from the edges so the white beans stay whole. Divide evenly and serve while hot.",
            "ingredientRefs": [],
            "durationRange": [
              1,
              5
            ],
            "equipmentIds": [
              "stove"
            ],
            "dependsOn": [
              "carrot-bean-rice-3"
            ],
            "doneCondition": "Complete the stated preparation, texture and serving checks before continuing."
          },
          {
            "id": "carrot-bean-rice-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. 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": [
              "carrot-bean-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"
        },
        "potLitres": 3,
        "familyId": "grain-pots",
        "batchServings": 4,
        "makeAhead": {
          "id": "prep-carrot-bean-rice",
          "title": "Carrot and white bean rice",
          "ingredientIds": [
            "carrot",
            "onion",
            "rice",
            "oil",
            "water",
            "salt",
            "pepper",
            "white-bean"
          ],
          "freezable": true,
          "storageKind": "cooked",
          "serveCold": false,
          "maxRefrigeratedHours": 24,
          "prepMinutes": 35,
          "finishMinutes": 10,
          "prepInstructions": [
            "Cut {qty:carrot} into 5mm dice and {qty:onion} into 5mm dice. Rinse {qty:rice}. Heat {qty:oil} in a fitted-lid pot over medium heat and soften the vegetables for 5 minutes.",
            "Stir in the rice, {qty:water}, {qty:salt} and {qty:pepper}; check the rice packet liquid ratio first. Bring to a boil, cover and simmer over low heat for 12–18 minutes until rice and carrot are tender. If the rice centre stays firm, add a little boiling processing water and cover for 3 minutes more.",
            "Fold in {qty:white-bean}, cover and heat on low for 4–5 minutes until beans steam throughout. Rest off the heat for 5 minutes.",
            "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. 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.",
            "Fluff gently from the edges so the white beans stay whole. Divide evenly and serve while hot."
          ],
          "qualityNotes": "Cool quickly and freeze promptly for later dinners. The 24-hour refrigerated rice limit is a conservative product choice; add a splash of water when reheating."
        },
        "freezable": true,
        "finishAfterPrep": 10,
        "servings": 2
      },
      "batches": 1,
      "capacityNote": "Use 1 batch(es) with your 4L pot. Keep each load below 80% of capacity; roast no more than four servings per tray.",
      "finishMinutes": 40
    }
  ],
  "shopping": [
    {
      "ingredientId": "rice",
      "name": "Rice",
      "required": 800,
      "prepared": 0,
      "pantryUsed": 300,
      "initial": 300,
      "net": 500,
      "purchased": 500,
      "remaining": 0,
      "unit": "g",
      "state": "dry",
      "packageQty": 500,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 500g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "chickpea",
      "name": "Chickpeas",
      "required": 240,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 240,
      "purchased": 240,
      "remaining": 0,
      "unit": "g",
      "state": "drained",
      "packageQty": 240,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example: 400g gross can, 240g drained. Confirm your label.",
      "retained": 0
    },
    {
      "ingredientId": "zucchini",
      "name": "Zucchini",
      "required": 300,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 300,
      "purchased": 300,
      "remaining": 0,
      "unit": "g",
      "state": "raw",
      "packageQty": 0,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Buy exact edible weight; record any trimming losses.",
      "retained": 0
    },
    {
      "ingredientId": "carrot",
      "name": "Carrots",
      "required": 450,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 450,
      "purchased": 1000,
      "remaining": 550,
      "unit": "g",
      "state": "raw",
      "packageQty": 1000,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 1000g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "onion",
      "name": "Onions",
      "required": 400,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 400,
      "purchased": 500,
      "remaining": 100,
      "unit": "g",
      "state": "raw",
      "packageQty": 500,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 500g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "oil",
      "name": "Olive oil",
      "required": 80,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 80,
      "purchased": 500,
      "remaining": 420,
      "unit": "ml",
      "state": "raw",
      "packageQty": 500,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 500ml usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "lemon",
      "name": "Lemon juice",
      "required": 60,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 60,
      "purchased": 250,
      "remaining": 190,
      "unit": "ml",
      "state": "raw",
      "packageQty": 250,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 250ml usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "salt",
      "name": "Salt",
      "required": 15,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 15,
      "purchased": 250,
      "remaining": 235,
      "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": 5,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 5,
      "purchased": 50,
      "remaining": 45,
      "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": 1650,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 1650,
      "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": "black-bean",
      "name": "Black 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: 400g gross can, 240g drained. Confirm your label.",
      "retained": 0
    },
    {
      "ingredientId": "bell-pepper",
      "name": "Bell pepper",
      "required": 300,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 300,
      "purchased": 300,
      "remaining": 0,
      "unit": "g",
      "state": "raw",
      "packageQty": 0,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Buy exact edible weight; record any trimming losses.",
      "retained": 0
    },
    {
      "ingredientId": "fresh-tomato",
      "name": "Fresh tomatoes",
      "required": 200,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 200,
      "purchased": 200,
      "remaining": 0,
      "unit": "g",
      "state": "raw",
      "packageQty": 0,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Buy exact edible weight; record any trimming losses.",
      "retained": 0
    },
    {
      "ingredientId": "pea",
      "name": "Peas",
      "required": 200,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 200,
      "purchased": 500,
      "remaining": 300,
      "unit": "g",
      "state": "frozen",
      "packageQty": 500,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 500g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "broccoli",
      "name": "Broccoli",
      "required": 300,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 300,
      "purchased": 400,
      "remaining": 100,
      "unit": "g",
      "state": "raw",
      "packageQty": 400,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 400g usable quantity. Confirm label/edible weight.",
      "retained": 0
    },
    {
      "ingredientId": "white-bean",
      "name": "White beans",
      "required": 240,
      "prepared": 0,
      "pantryUsed": 0,
      "initial": 0,
      "net": 240,
      "purchased": 240,
      "remaining": 0,
      "unit": "g",
      "state": "drained",
      "packageQty": 240,
      "packCount": 1,
      "notPurchased": false,
      "packAssumption": "Example package: 240g usable quantity. Confirm label/edible weight.",
      "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
    }
  ],
  "transitions": [],
  "prepComponents": [
    {
      "id": "prep-lemon-chickpea-rice",
      "title": "Lemon chickpea vegetable topping",
      "ingredientIds": [
        "zucchini",
        "carrot",
        "onion",
        "oil",
        "chickpea",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 72,
      "prepMinutes": 28,
      "finishMinutes": 22,
      "prepInstructions": [
        "Cut 300g zucchini into 1.5cm cubes, 150g carrots into 5mm dice and 100g onions into 5mm dice. Heat 20ml olive oil in a skillet over medium heat. Cook carrot and onion for 5 minutes, then add zucchini and cook for 6–8 minutes until tender with golden edges. Spread onto two pans if liquid pools.",
        "Add 240g chickpeas, 3g salt and 1g black pepper. Cook for 5 minutes, stirring until the chickpeas steam throughout. If the pan is dry, loosen with a little processing water.",
        "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.",
        "With two burners, cook this rice while making the topping; on one burner finish the topping first and allow extra time. Rinse 160g rice and cook with 300ml recipe water in a covered saucepan according to the packet ratio. Bring to a boil, then cook on low for 12–18 minutes until tender. Add a little boiling processing water if hard in the centre, then rest off the heat for 5 minutes.",
        "Stir 20ml lemon juice through the hot chickpea topping just before serving. Fluff the rice and divide the topping over it."
      ],
      "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate.",
      "recipeIds": [
        "lemon-chickpea-rice"
      ],
      "baseAmounts": {
        "chickpea": 240,
        "zucchini": 300,
        "carrot": 150,
        "onion": 100,
        "oil": 20,
        "salt": 3,
        "pepper": 1
      },
      "rawAmounts": [
        {
          "ingredientId": "chickpea",
          "quantity": 240,
          "unit": "g"
        },
        {
          "ingredientId": "zucchini",
          "quantity": 300,
          "unit": "g"
        },
        {
          "ingredientId": "carrot",
          "quantity": 150,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 100,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 20,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 3,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 1,
          "unit": "g"
        }
      ],
      "portions": 1,
      "servings": 2,
      "signature": "[{\"ingredientId\":\"chickpea\",\"quantity\":240,\"unit\":\"g\"},{\"ingredientId\":\"zucchini\",\"quantity\":300,\"unit\":\"g\"},{\"ingredientId\":\"carrot\",\"quantity\":150,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":100,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":20,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":3,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":1,\"unit\":\"g\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 0,
          "recipeId": "lemon-chickpea-rice",
          "date": "2026-10-26"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-bean-rice-bowls",
      "title": "Pepper and black bean topping",
      "ingredientIds": [
        "onion",
        "bell-pepper",
        "fresh-tomato",
        "oil",
        "black-bean",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 72,
      "prepMinutes": 18,
      "finishMinutes": 22,
      "prepInstructions": [
        "Cut 100g onions into 5mm dice, 300g bell pepper into 1cm squares and 200g fresh tomatoes into 1cm pieces. Heat 15ml olive oil in a broad skillet over medium heat. Cook the onion for 3 minutes, then add the pepper and cook for 6–8 minutes until softened and lightly golden. Lower the heat if the edges darken before the centres soften.",
        "Add the diced tomato, 240g black beans, 3g salt and 1g black pepper. Simmer uncovered for 5–7 minutes until the tomato breaks down and the beans steam throughout. If the topping is watery, simmer uncovered another 2 minutes; if dry, add a splash of processing water.",
        "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.",
        "With two burners, cook the rice while making the skillet topping; with one burner, finish the topping first and allow extra time. Rinse 160g rice. Put it in a fitted-lid saucepan with 300ml recipe water, checking the packet ratio first. Bring to a boil, reduce to low, cover and cook for 12–18 minutes until the liquid is absorbed and a grain is tender. If still chalky, add a little boiling processing water and cover for 3 minutes more. Rest off the heat for 5 minutes.",
        "Fluff the rice and divide it into bowls. Spoon the hot bean topping over it just before serving."
      ],
      "qualityNotes": "Freeze promptly on preparation day for dinners outside the refrigerated window. Texture may soften after freezing; keep the fresh finish separate.",
      "recipeIds": [
        "bean-rice-bowls"
      ],
      "baseAmounts": {
        "black-bean": 240,
        "bell-pepper": 300,
        "onion": 100,
        "fresh-tomato": 200,
        "oil": 15,
        "salt": 3,
        "pepper": 1
      },
      "rawAmounts": [
        {
          "ingredientId": "black-bean",
          "quantity": 240,
          "unit": "g"
        },
        {
          "ingredientId": "bell-pepper",
          "quantity": 300,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 100,
          "unit": "g"
        },
        {
          "ingredientId": "fresh-tomato",
          "quantity": 200,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 15,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 3,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 1,
          "unit": "g"
        }
      ],
      "portions": 1,
      "servings": 2,
      "signature": "[{\"ingredientId\":\"black-bean\",\"quantity\":240,\"unit\":\"g\"},{\"ingredientId\":\"bell-pepper\",\"quantity\":300,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":100,\"unit\":\"g\"},{\"ingredientId\":\"fresh-tomato\",\"quantity\":200,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":15,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":3,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":1,\"unit\":\"g\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 1,
          "recipeId": "bean-rice-bowls",
          "date": "2026-10-27"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-pea-rice-pot",
      "title": "Pea rice pot",
      "ingredientIds": [
        "onion",
        "oil",
        "rice",
        "water",
        "salt",
        "pepper",
        "pea"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 24,
      "prepMinutes": 35,
      "finishMinutes": 10,
      "prepInstructions": [
        "Cut 100g onions into 5mm dice. Heat 15ml olive oil in a fitted-lid pot over medium-low heat and soften onion for 3 minutes. Rinse 160g rice, drain and stir it through the onion for 1 minute.",
        "Add 350ml recipe water, 3g salt and 1g black pepper, checking the rice packet ratio before cooking. Bring to a boil, cover and reduce to low for 12–15 minutes until most liquid is absorbed and rice has only a small firm centre.",
        "Scatter 200g peas over the rice, cover and cook for 5–7 minutes until peas are tender and rice is cooked through. If rice is dry but hard, add a little boiling processing water at the edge and cook covered for another 3 minutes. Rest off the heat for 5 minutes.",
        "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. 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.",
        "Fluff gently with a fork and stir through 20ml lemon juice. Divide into bowls while hot."
      ],
      "qualityNotes": "Cool quickly in shallow portions. The 24-hour refrigerated rice limit is this planner’s conservative choice; freeze promptly for later dinners. Add lemon after reheating.",
      "recipeIds": [
        "pea-rice-pot"
      ],
      "baseAmounts": {
        "rice": 160,
        "pea": 200,
        "onion": 100,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 350
      },
      "rawAmounts": [
        {
          "ingredientId": "rice",
          "quantity": 160,
          "unit": "g"
        },
        {
          "ingredientId": "pea",
          "quantity": 200,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 100,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 15,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 3,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 1,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 350,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 2,
      "signature": "[{\"ingredientId\":\"rice\",\"quantity\":160,\"unit\":\"g\"},{\"ingredientId\":\"pea\",\"quantity\":200,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":100,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":15,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":3,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":1,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":350,\"unit\":\"ml\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 2,
          "recipeId": "pea-rice-pot",
          "date": "2026-10-28"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-broccoli-rice",
      "title": "Broccoli and bean rice",
      "ingredientIds": [
        "rice",
        "water",
        "broccoli",
        "black-bean",
        "oil",
        "salt",
        "pepper"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 24,
      "prepMinutes": 35,
      "finishMinutes": 10,
      "prepInstructions": [
        "Rinse 160g rice and put in a fitted-lid pot with 350ml recipe water, checking the packet ratio first. Bring to a boil, reduce to low, cover and simmer for 12–15 minutes until most liquid is absorbed but the centre of a grain is still slightly firm.",
        "Cut 300g broccoli into 2cm florets and peel thick stems before slicing them 5mm thick. Scatter over the rice, cover and steam for 5–7 minutes until a knife enters the stems easily. If rice is hard and dry, add a splash of boiling processing water before covering again.",
        "Fold in 240g black beans, 15ml olive oil, 3g salt and 1g black pepper. Cover over low heat for 3–5 minutes until the beans steam throughout. Rest off the heat for 5 minutes.",
        "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. 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 through 20ml lemon juice and fluff gently without crushing the broccoli. Divide evenly into bowls."
      ],
      "qualityNotes": "Frozen broccoli will be softer. Cool in shallow portions and freeze promptly for later dinners; the 24-hour rice limit is a conservative planner policy.",
      "recipeIds": [
        "broccoli-rice"
      ],
      "baseAmounts": {
        "rice": 160,
        "broccoli": 300,
        "black-bean": 240,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 350
      },
      "rawAmounts": [
        {
          "ingredientId": "rice",
          "quantity": 160,
          "unit": "g"
        },
        {
          "ingredientId": "broccoli",
          "quantity": 300,
          "unit": "g"
        },
        {
          "ingredientId": "black-bean",
          "quantity": 240,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 15,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 3,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 1,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 350,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 2,
      "signature": "[{\"ingredientId\":\"rice\",\"quantity\":160,\"unit\":\"g\"},{\"ingredientId\":\"broccoli\",\"quantity\":300,\"unit\":\"g\"},{\"ingredientId\":\"black-bean\",\"quantity\":240,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":15,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":3,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":1,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":350,\"unit\":\"ml\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 3,
          "recipeId": "broccoli-rice",
          "date": "2026-10-29"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    },
    {
      "id": "prep-carrot-bean-rice",
      "title": "Carrot and white bean rice",
      "ingredientIds": [
        "carrot",
        "onion",
        "rice",
        "oil",
        "water",
        "salt",
        "pepper",
        "white-bean"
      ],
      "freezable": true,
      "storageKind": "cooked",
      "serveCold": false,
      "maxRefrigeratedHours": 24,
      "prepMinutes": 35,
      "finishMinutes": 10,
      "prepInstructions": [
        "Cut 300g carrots into 5mm dice and 100g onions into 5mm dice. Rinse 160g rice. Heat 15ml olive oil in a fitted-lid pot over medium heat and soften the vegetables for 5 minutes.",
        "Stir in the rice, 350ml recipe water, 3g salt and 1g black pepper; check the rice packet liquid ratio first. Bring to a boil, cover and simmer over low heat for 12–18 minutes until rice and carrot are tender. If the rice centre stays firm, add a little boiling processing water and cover for 3 minutes more.",
        "Fold in 240g white beans, cover and heat on low for 4–5 minutes until beans steam throughout. Rest off the heat for 5 minutes.",
        "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. 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.",
        "Fluff gently from the edges so the white beans stay whole. Divide evenly and serve while hot."
      ],
      "qualityNotes": "Cool quickly and freeze promptly for later dinners. The 24-hour refrigerated rice limit is a conservative product choice; add a splash of water when reheating.",
      "recipeIds": [
        "carrot-bean-rice"
      ],
      "baseAmounts": {
        "rice": 160,
        "carrot": 300,
        "white-bean": 240,
        "onion": 100,
        "oil": 15,
        "salt": 3,
        "pepper": 1,
        "water": 350
      },
      "rawAmounts": [
        {
          "ingredientId": "rice",
          "quantity": 160,
          "unit": "g"
        },
        {
          "ingredientId": "carrot",
          "quantity": 300,
          "unit": "g"
        },
        {
          "ingredientId": "white-bean",
          "quantity": 240,
          "unit": "g"
        },
        {
          "ingredientId": "onion",
          "quantity": 100,
          "unit": "g"
        },
        {
          "ingredientId": "oil",
          "quantity": 15,
          "unit": "ml"
        },
        {
          "ingredientId": "salt",
          "quantity": 3,
          "unit": "g"
        },
        {
          "ingredientId": "pepper",
          "quantity": 1,
          "unit": "g"
        },
        {
          "ingredientId": "water",
          "quantity": 350,
          "unit": "ml"
        }
      ],
      "portions": 1,
      "servings": 2,
      "signature": "[{\"ingredientId\":\"rice\",\"quantity\":160,\"unit\":\"g\"},{\"ingredientId\":\"carrot\",\"quantity\":300,\"unit\":\"g\"},{\"ingredientId\":\"white-bean\",\"quantity\":240,\"unit\":\"g\"},{\"ingredientId\":\"onion\",\"quantity\":100,\"unit\":\"g\"},{\"ingredientId\":\"oil\",\"quantity\":15,\"unit\":\"ml\"},{\"ingredientId\":\"salt\",\"quantity\":3,\"unit\":\"g\"},{\"ingredientId\":\"pepper\",\"quantity\":1,\"unit\":\"g\"},{\"ingredientId\":\"water\",\"quantity\":350,\"unit\":\"ml\"}]",
      "selected": false,
      "prepared": false,
      "preparedAt": null,
      "storage": null,
      "retainedPortions": 0,
      "scheduledPortions": 1,
      "uses": [
        {
          "dayIndex": 4,
          "recipeId": "carrot-bean-rice",
          "date": "2026-10-30"
        }
      ],
      "eligibleStorage": [
        "refrigerated",
        "frozen"
      ],
      "pantryAllocations": {},
      "sourceRefs": [
        "fda-storage",
        "fda-chill",
        "foodsafety-cold-storage"
      ]
    }
  ],
  "portionLabels": [],
  "leftovers": {
    "pantry": [
      {
        "lotId": "purchase-carrot",
        "source": "planned-purchase",
        "ingredientId": "carrot",
        "name": "Carrots",
        "quantity": 550,
        "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": 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-oil",
        "source": "planned-purchase",
        "ingredientId": "oil",
        "name": "Olive oil",
        "quantity": 420,
        "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-lemon",
        "source": "planned-purchase",
        "ingredientId": "lemon",
        "name": "Lemon juice",
        "quantity": 190,
        "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": 235,
        "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": 45,
        "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-pea",
        "source": "planned-purchase",
        "ingredientId": "pea",
        "name": "Peas",
        "quantity": 300,
        "unit": "g",
        "state": "frozen",
        "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-broccoli",
        "source": "planned-purchase",
        "ingredientId": "broccoli",
        "name": "Broccoli",
        "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."
      }
    ],
    "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.971Z"
  }
}
