{
  "schema": "unitiqx.simworks.ops-lab.public-rules.v1",
  "version": "1.0.0",
  "description": "Six distinct original operational capacity/utility toy models that can be computed without browser control or provider credentials.",
  "safety": "All results are fictional classroom-style estimates. No access to real VPS admin, electrical/water infrastructure, financial accounts, vehicle fleets or physical systems.",
  "ui": "/simworks/lab.html",
  "source_code": "/simworks/models.js",
  "modes": [
    {
      "id": "water",
      "name": "Hydraulic Utility Model",
      "icon": "◉",
      "category": "PLUMBING & WATER",
      "intro": "Explore how a virtual pumping station, pipe length and leaks interact. Quantities are illustrative, NOT hydraulically calibrated.",
      "variables": [
        {
          "id": "pressure",
          "name": "PUMP PRESSURE (fictional kPa)",
          "min": 20,
          "max": 300,
          "step": 10,
          "start": 180,
          "unit": "kPa"
        },
        {
          "id": "length",
          "name": "PIPE RUN LENGTH (m)",
          "min": 20,
          "max": 500,
          "step": 20,
          "start": 220,
          "unit": "m"
        },
        {
          "id": "leak",
          "name": "LEAK LOSS (%)",
          "min": 0,
          "max": 50,
          "step": 5,
          "start": 20,
          "unit": "%"
        }
      ],
      "target": "Deliver 80 fictional liters per minute to the service neighborhood.",
      "pass_metric": "delivered",
      "min_to_pass": 80,
      "safety": "Do not use this model to size, install or operate pumps, drinking-water mains or building plumbing."
    },
    {
      "id": "power",
      "name": "Renewable Grid Dispatch",
      "icon": "ϟ",
      "category": "ELECTRIC SYSTEMS",
      "intro": "Balance a fictional electrical load with available renewable and grid capacity. Not a circuit, frequency or protection-relay model.",
      "variables": [
        {
          "id": "solar",
          "name": "SOLAR SUPPLY (virtual kW)",
          "min": 0,
          "max": 120,
          "step": 10,
          "start": 40,
          "unit": "kW"
        },
        {
          "id": "grid",
          "name": "GRID IMPORT CAP (virtual kW)",
          "min": 0,
          "max": 150,
          "step": 10,
          "start": 40,
          "unit": "kW"
        },
        {
          "id": "load",
          "name": "DEMAND (virtual kW)",
          "min": 40,
          "max": 220,
          "step": 10,
          "start": 150,
          "unit": "kW"
        }
      ],
      "target": "Serve at least 98% of the city's fictional electric demand.",
      "pass_metric": "served_pct",
      "min_to_pass": 98,
      "safety": "Never infer real high-voltage safety, voltage, short-circuit or power quality from this toy capacity calculation."
    },
    {
      "id": "cloud",
      "name": "Cloud Service Capacity",
      "icon": "⌘",
      "category": "COMPUTE, SERVERS & NETWORKS",
      "intro": "Plan synthetic service replicas under request load. A simplified throughput model; no traffic is sent to private servers.",
      "variables": [
        {
          "id": "replicas",
          "name": "APP REPLICAS",
          "min": 1,
          "max": 12,
          "step": 1,
          "start": 2,
          "unit": "replicas"
        },
        {
          "id": "traffic",
          "name": "REQUESTS PER SECOND",
          "min": 10,
          "max": 1000,
          "step": 10,
          "start": 420,
          "unit": "rps"
        },
        {
          "id": "capacity",
          "name": "SERVICE CAPACITY PER REPLICA",
          "min": 20,
          "max": 160,
          "step": 10,
          "start": 90,
          "unit": "rps"
        }
      ],
      "target": "Serve at least 95% of fictional requests without overload.",
      "pass_metric": "served_pct",
      "min_to_pass": 95,
      "safety": "This is not a live load test, cluster deployment, network scan or reliable latency/SLA forecast."
    },
    {
      "id": "transport",
      "name": "Fleet & Logistics",
      "icon": "↗",
      "category": "TRANSIT & FREIGHT",
      "intro": "Estimate delivery capacity for a fictional cargo fleet by changing vehicle count, trip distance and daily demand.",
      "variables": [
        {
          "id": "vehicles",
          "name": "VEHICLES",
          "min": 1,
          "max": 24,
          "step": 1,
          "start": 3,
          "unit": "vehicles"
        },
        {
          "id": "distance",
          "name": "ONE-WAY TRIP (km)",
          "min": 5,
          "max": 125,
          "step": 5,
          "start": 70,
          "unit": "km"
        },
        {
          "id": "freight",
          "name": "DAILY FREIGHT DEMAND (tons)",
          "min": 10,
          "max": 300,
          "step": 10,
          "start": 170,
          "unit": "tons"
        }
      ],
      "target": "Deliver at least 90% of fictional daily freight demand.",
      "pass_metric": "served_pct",
      "min_to_pass": 90,
      "safety": "Not real route-optimization, vehicle safety, road traffic or fleet operating advice."
    },
    {
      "id": "hvac",
      "name": "Building Climate Control",
      "icon": "❄",
      "category": "HEATING, COOLING & BUILDINGS",
      "intro": "Explore a simplified indoor temperature equilibrium under outdoor conditions, envelope insulation and an electric HVAC setting.",
      "variables": [
        {
          "id": "units",
          "name": "HEAT PUMP HEAT/COOL UNITS",
          "min": 0,
          "max": 12,
          "step": 1,
          "start": 3,
          "unit": "units"
        },
        {
          "id": "insulation",
          "name": "BUILDING INSULATION SCORE",
          "min": 1,
          "max": 10,
          "step": 1,
          "start": 3,
          "unit": "score"
        },
        {
          "id": "outside",
          "name": "OUTDOOR TEMP (°C)",
          "min": -10,
          "max": 45,
          "step": 1,
          "start": 34,
          "unit": "°C"
        }
      ],
      "target": "Reach a fictional indoor comfort band between 19–25°C.",
      "pass_metric": "comfort",
      "min_to_pass": 1,
      "safety": "Not a validated thermodynamic, refrigeration, HVAC sizing or indoor air-quality design."
    },
    {
      "id": "factory",
      "name": "Production & Automation Line",
      "icon": "⚙",
      "category": "FACTORIES & QUEUE BOTTLENECKS",
      "intro": "Identify the throughput bottleneck between simulated raw inputs, machine assembly and shipping.",
      "variables": [
        {
          "id": "raw",
          "name": "RAW MATERIAL INPUT (units/day)",
          "min": 20,
          "max": 300,
          "step": 10,
          "start": 150,
          "unit": "/day"
        },
        {
          "id": "assembly",
          "name": "ASSEMBLY CAPACITY (units/day)",
          "min": 20,
          "max": 300,
          "step": 10,
          "start": 65,
          "unit": "/day"
        },
        {
          "id": "shipping",
          "name": "SHIPPING CAPACITY (units/day)",
          "min": 20,
          "max": 300,
          "step": 10,
          "start": 110,
          "unit": "/day"
        }
      ],
      "target": "Reach a fictional completed product throughput of 130 units per day.",
      "pass_metric": "throughput",
      "min_to_pass": 130,
      "safety": "Does not simulate labor safety, chemical handling, supplier risk, real factory operations or industrial engineering certification."
    }
  ],
  "formulas": {
    "water": "flow = pressure*1.5/(1 + length/180)*(1 - leak/100); pass if >=80. This is not Darcy-Weisbach or Hazen-Williams.",
    "power": "served = min(load, solar+grid); served% = 100*served/load. No AC waveform, frequency, voltage or protection modeling.",
    "cloud": "capacity=replicas*capacity_per_replica; served%=min(100,100*capacity/traffic). The illustrative latency is NOT a valid p95 prediction.",
    "transport": "trips=floor(9/(2*distance/55+1.25)); deliveries=vehicles*trips*8 tons; served%=100*min(deliveries,freight)/freight.",
    "hvac": "thermal correction=units*0.8*(0.5+insulation/5); indoor temp approaches 22C by a bounded correction. Not calibrated.",
    "factory": "throughput=min(raw,assembly,shipping); limiting stages equal that minimum."
  },
  "ai_read_only": {
    "methods": [
      "GET",
      "HEAD"
    ],
    "format": "JSON",
    "legal_actions": [
      "evaluate published bounded scenario",
      "propose one parameter change",
      "compare two outcomes and label assumptions",
      "cite formula and source limitations"
    ],
    "refuses": [
      "real water pressure reports",
      "actual server availability predictions",
      "real vehicle movement",
      "money trading or wallet operations",
      "electrical installation guidance",
      "private VPS execution"
    ],
    "provenance_label": "rule-derived hypothetical local computation, not an observed system outcome"
  },
  "examples": "/simworks/lab-examples.json",
  "privacy": {
    "personal_or_private_data": false,
    "cloud_saves": false,
    "server_side_execution": false,
    "credentials": false,
    "optional_local_json_export": true
  }
}
