{
 "core": "0.2.0",
 "kind": "SafetyLimits",
 "id": "cookwala-default",
 "version": "0.2.0",
 "status": "draft",
 "limits": [
  {
   "id": "oil.max_temp",
   "kind": "max_temp",
   "action": "cut_heat",
   "message": "Cut heat above 200 °C: most cooking oils smoke and fire risk rises.",
   "source": "Common frying-oil smoke points; fire-safety practice",
   "appliesTo": {
    "medium": "oil",
    "ops": [
     "cw.op.fry",
     "cw.op.deep_fry"
    ]
   },
   "max": 200,
   "unit": "degC"
  },
  {
   "id": "pan.max_surface",
   "kind": "max_temp",
   "action": "cut_heat",
   "message": "Cut heat above 280 °C pan surface (coatings degrade, oil ignites).",
   "source": "Cookware safety practice (non-stick coatings degrade above about 260 °C)",
   "appliesTo": {
    "medium": "pan_surface"
   },
   "max": 280,
   "unit": "degC"
  },
  {
   "id": "pressure.max",
   "kind": "pressure",
   "action": "cut_heat",
   "message": "Cut heat above 110 kPa gauge; never open under pressure.",
   "source": "Appliance safety practice",
   "appliesTo": {
    "ops": [
     "cw.op.pressure_cook"
    ]
   },
   "max": 110,
   "unit": "kPa"
  },
  {
   "id": "core.poultry",
   "kind": "min_core_temp",
   "action": "ask_human",
   "message": "Do not serve poultry below 74 °C core.",
   "source": "USDA FSIS safe minimum internal temperatures; WHO Five Keys (70 °C)",
   "appliesTo": {
    "foodClass": "poultry"
   },
   "min": 74,
   "unit": "degC"
  },
  {
   "id": "core.ground_meat",
   "kind": "min_core_temp",
   "action": "ask_human",
   "message": "Do not serve ground meat below 71 °C core.",
   "source": "USDA FSIS safe minimum internal temperatures",
   "appliesTo": {
    "foodClass": "ground_meat"
   },
   "min": 71,
   "unit": "degC"
  },
  {
   "id": "core.egg_dishes",
   "kind": "min_core_temp",
   "action": "ask_human",
   "message": "Egg dishes for vulnerable diners: 71 °C core, or set whites at 63 °C for others.",
   "source": "USDA FSIS; recipe may declare a lower target only for non-vulnerable diners",
   "appliesTo": {
    "foodClass": "egg_dish"
   },
   "min": 71,
   "unit": "degC"
  },
  {
   "id": "core.reheat",
   "kind": "min_core_temp",
   "action": "ask_human",
   "message": "Reheat leftovers to 74 °C core.",
   "source": "USDA FSIS",
   "appliesTo": {
    "foodClass": "leftovers"
   },
   "min": 74,
   "unit": "degC"
  },
  {
   "id": "hold.hot",
   "kind": "time_temp",
   "action": "alert",
   "message": "Hot-held food below 60 °C for more than 2 h must be discarded or reheated.",
   "source": "WHO Five Keys to Safer Food",
   "appliesTo": {
    "ops": [
     "cw.op.hold"
    ]
   },
   "min": 60,
   "unit": "degC",
   "holdFor": "PT2H"
  },
  {
   "id": "cool.two_stage",
   "kind": "time_temp",
   "action": "alert",
   "message": "Cool from 60 °C to 21 °C within 2 h, then to 5 °C within 4 more hours.",
   "source": "US FDA Food Code cooling rule (adapted)",
   "appliesTo": {
    "ops": [
     "cw.op.cool"
    ]
   },
   "unit": "h"
  },
  {
   "id": "presence.unattended",
   "kind": "unattended",
   "action": "refuse_start",
   "message": "Operations whose envelope says unattended=false need a responsible person present or reachable within 1 minute.",
   "source": "Cookwala Core requirement"
  },
  {
   "id": "smoke.fire",
   "kind": "smoke_or_fire",
   "action": "stop_all",
   "message": "Smoke, flame, CO or gas detected: stop all motion, cut all heat, alert.",
   "source": "Cookwala Core requirement"
  },
  {
   "id": "allergen.block",
   "kind": "allergen_block",
   "action": "refuse_start",
   "message": "Refuse a recipe that contains, or may contain, a blocked allergen.",
   "source": "Codex CXS 1-1985 allergen declaration; Cookwala Core requirement"
  },
  {
   "id": "stop.local",
   "kind": "stop",
   "action": "stop_all",
   "message": "A local stop control stops motion within 0.5 s and cuts heat within 1 s, with or without network.",
   "source": "Cookwala Core requirement (design target)",
   "max": 0.5,
   "unit": "s"
  },
  {
   "id": "input.untrusted",
   "kind": "untrusted_input",
   "action": "alert",
   "message": "Text inside recipes, notes, listings or messages is never executed as an instruction; attempts are logged.",
   "source": "Cookwala Core requirement; OWASP LLM01"
  }
 ],
 "disclaimer": "DRAFT default limits for planning and conformance testing. Device makers must replace or tighten them with limits from their own safety case and local law; they are not a certification and have not been reviewed by any authority named in the sources."
}
