{
  "ok": true,
  "patchId": "patch-hazard-forecast-card-3",
  "canonPatchId": "patch-weather-disaster-library-canon-1",
  "settlePatchId": "patch-hazard-settlement-8",
  "feedPatchId": "patch-weather-feed-coaches-2",
  "active": true,
  "templateId": "weather_risk",
  "status": "composed",
  "hazard": "weather_risk_reference",
  "timeWindow": "next 24-48h",
  "location": "New York",
  "locationUncertainty": "county-scale cone",
  "probability": 0.494,
  "intensity": "low-medium — sparse sensor humility",
  "triggerVariables": [
    {
      "id": "seismic_activity",
      "status": "active",
      "note": "Seismic activity lane — hazard probability only."
    },
    {
      "id": "water_level",
      "status": "watching",
      "note": "Water level pressure 50%"
    },
    {
      "id": "fuel_moisture",
      "status": "armed",
      "note": "Fire weather proxy from environmental lane."
    }
  ],
  "triggers": [
    {
      "id": "seismic_activity",
      "status": "active",
      "note": "Seismic activity lane — hazard probability only."
    },
    {
      "id": "water_level",
      "status": "watching",
      "note": "Water level pressure 50%"
    },
    {
      "id": "fuel_moisture",
      "status": "armed",
      "note": "Fire weather proxy from environmental lane."
    }
  ],
  "confidence": "medium",
  "failureMode": "model_shift · upstream_soundings · compound_hazard",
  "failureModes": [
    "model_shift",
    "upstream_soundings",
    "compound_hazard"
  ],
  "actionThreshold": "prepare",
  "validationPlan": [
    "brier",
    "reliability",
    "pod_far"
  ],
  "mindChangers": [
    "model_shift",
    "upstream_soundings",
    "radar_trend",
    "official_watch_upgrade"
  ],
  "coaches": [
    {
      "id": "coach_vasquez_analysis",
      "book": "Weather Analysis and Forecasting Handbook",
      "line": "Synoptic map literacy before hazard claim — troughs, ridges, and model disagreement labeled.",
      "boundary": "Analysis coach — not NWP oracle."
    }
  ],
  "shelfCoaches": [
    {
      "id": "coach_doswell_tornado",
      "book": "Severe Convective Storms",
      "line": "Supercell and mesocyclone vocabulary — tornado watch vs warning is educational only.",
      "metric": "tornado"
    },
    {
      "id": "coach_vasquez_severe",
      "book": "The Severe Weather Forecasting Primer",
      "line": "Hook echo and debris signature labels — not tornadogenesis solve.",
      "metric": "supercell"
    }
  ],
  "wp11PatchId": "patch-weather-cascade-hro-11",
  "compoundHazard": false,
  "cascadeTriggers": {
    "patchId": "patch-weather-cascade-hro-11",
    "triggers": [
      "power_outage",
      "hospital_capacity",
      "evacuation_delay",
      "comms_failure"
    ],
    "active": [],
    "compoundHazardCopy": "Single-hazard probability is insufficient when infrastructure coupling amplifies exposure."
  },
  "cascadeCoaches": [],
  "hroCoaches": [
    {
      "id": "coach_dekker_shelf",
      "bookId": "g20_dekker_drift",
      "book": "Drift into Failure",
      "line": "Slow drift degrades warning performance before catastrophe.",
      "metric": "drift_into_failure"
    }
  ],
  "warningComms": {
    "patchId": "patch-warning-comms-10",
    "actionThreshold": "prepare",
    "primary": "Baseline readiness — not an evacuation order from KELLY.",
    "watch": "Conditions are favorable for the hazard — prepare and monitor official sources.",
    "warning": "Hazard is imminent, occurring, or indicated by radar/observations — official NWS/USGS guidance decides action.",
    "coaches": [
      {
        "id": "coach_lundgren_watch",
        "book": "Risk Communication",
        "line": "Watch = conditions favorable; Warning = hazard imminent or occurring — KELLY educates vocabulary, official sources decide action.",
        "boundary": "Not evacuation orders."
      },
      {
        "id": "coach_slovic_risk",
        "book": "The Psychology of Risk",
        "line": "Probability formats matter — use calibrated ranges, not false certainty from sparse sensors.",
        "boundary": "Psychology context — not emergency instruction."
      }
    ],
    "boundary": "Educational watch/warning vocabulary only. KELLY never issues evacuation orders or emergency instructions."
  },
  "warningCommsPatchId": "patch-warning-comms-10",
  "stage": "W1_DYNAMICS",
  "proof": {
    "feedBackedNodes": [
      "WEATHER:RISK",
      "WEATHER:PRECIP_NOW",
      "WEATHER:WIND_SPEED",
      "DISASTER:RISK",
      "DISASTER:EARTHQUAKE_PRESSURE",
      "DISASTER:WATER_LEVEL"
    ],
    "brierEligible": true,
    "notComputed": [
      "full_nwp_wrf",
      "deterministic_earthquake",
      "tsunami_inundation_solve",
      "fire_spread_simulator",
      "landslide_physics_engine",
      "var_nwp_assimilation"
    ],
    "earthquakeBoundary": null,
    "feedHonesty": {
      "ok": true,
      "patchId": "patch-weather-feed-coaches-2",
      "templateId": "weather_risk",
      "freshnessTier": "fresh",
      "feedOkCount": 3,
      "feedStaleCount": 0,
      "sensorSparse": false,
      "emergencyWarning": "KELLY shows calibrated hazard risk and uncertainty — not evacuation orders, not emergency instructions, not certainty from sparse sensors. Watches/warnings vocabulary is educational; official NWS/USGS sources decide action.",
      "earthquakeBoundary": null,
      "boundary": "Hazard feed honesty — sparse sensors widen uncertainty; official NWS/USGS sources decide action."
    },
    "lastSettlement": {
      "brierScore": 0.123904,
      "logLoss": 0.464376,
      "population": "feed_observation"
    },
    "population": "hazard_forward",
    "outputArtifact": "HazardForecastCard",
    "composerSource": "brain",
    "brainPatchId": "patch-hazard-forecast-card-3"
  },
  "redFlags": [
    "sparse_sensors",
    "model_disagreement",
    "false_alarm_history",
    "compound_hazard"
  ],
  "professionalSkill": "observe → model → forecast → warning threshold → outcome → verification → memory update",
  "boundary": "HazardForecastCard — calibrated probability education only. NOT evacuation orders. NOT NWP oracle in Node. This lens composes the card from canonical routes; it does not write KELLY Prime ground truth.",
  "emergencyWarning": "KELLY shows calibrated hazard risk and uncertainty — not evacuation orders, not emergency instructions, not certainty from sparse sensors. Watches/warnings vocabulary is educational; official NWS/USGS sources decide action.",
  "notComputed": [
    {
      "id": "full_nwp_wrf",
      "label": "WRF/HRRR solve in Node"
    },
    {
      "id": "deterministic_earthquake",
      "label": "earthquake prediction by date/time/magnitude"
    },
    {
      "id": "tsunami_inundation_solve",
      "label": "full COMCOT inundation solve"
    },
    {
      "id": "fire_spread_simulator",
      "label": "coupled fire-atmosphere spread model"
    },
    {
      "id": "landslide_physics_engine",
      "label": "3D slope stability FEM"
    }
  ],
  "pinReady": true,
  "questionId": "rain",
  "tick": 3,
  "readings": {
    "weatherRisk": {
      "nodeId": "WEATHER:RISK",
      "value": 0.494428,
      "ok": true
    },
    "precip": {
      "nodeId": "WEATHER:PRECIP_NOW",
      "value": 0.482579,
      "ok": true
    },
    "wind": {
      "nodeId": "WEATHER:WIND_SPEED",
      "value": 0.482211,
      "ok": true
    },
    "disasterRisk": {
      "nodeId": "DISASTER:RISK",
      "value": 0.49935,
      "ok": true
    },
    "eqPressure": {
      "nodeId": "DISASTER:EARTHQUAKE_PRESSURE",
      "value": 0.5,
      "ok": true
    },
    "waterLevel": {
      "nodeId": "DISASTER:WATER_LEVEL",
      "value": 0.5,
      "ok": true
    },
    "alerts": {
      "nodeId": "DISASTER:OFFICIAL_ALERTS",
      "value": 0.478356,
      "ok": true
    }
  },
  "contentHash": "eafac6ecc4d291b02f2acb6ceee19df524de397dd3122ce54e82234982387df8",
  "endpoint": "/api/hazard-forecast-card",
  "brainComposer": true,
  "feedTick": {
    "ok": true,
    "reason": "hazard_forecast_card",
    "ran": [
      "open-meteo",
      "nws",
      "rainviewer"
    ],
    "skipped": [],
    "requested": [
      "open-meteo",
      "nws",
      "rainviewer"
    ],
    "boundary": "Priority burst runs settlement-matching feeds when ripe forecasts await observations."
  },
  "horizon": "next 24-48h",
  "viewport_location_applied": false,
  "viewport_location": null,
  "generatedAt": "2026-07-08T03:58:09.824Z",
  "priorityLaneCacheHit": false,
  "priorityLaneCacheAgeMs": 0,
  "schema": "kelly-lens-hazard-forecast-card-v1",
  "composerSource": "brain",
  "lensComposer": false,
  "brainEndpoint": "/api/weather/hazard-forecast-card",
  "routeStatus": [
    {
      "label": "Brain HazardForecastCard",
      "source": "https://kelly-and-causalea-production.up.railway.app/api/weather/hazard-forecast-card?template=weather_risk",
      "ok": true,
      "status": 200,
      "error": null,
      "selected": true
    }
  ],
  "checkedRoutes": [
    "https://kelly-and-causalea-production.up.railway.app/api/weather/hazard-forecast-card?template=weather_risk"
  ],
  "brainCandidateCount": 5,
  "brain_strategy": "hazard_card_quorum_fastest_success",
  "lensId": "weather-disaster",
  "service": "Weather and Disaster Lab",
  "readOnly": true,
  "publicMutationAllowed": false,
  "publicUserWriteAllowed": false,
  "groundTruthWriteAllowed": false,
  "glassLabArtifactUrl": "https://glass-lab.up.railway.app?artifact=weather-disaster%3Ahazard-forecast-card",
  "artifactSpineUrl": "/api/lens-artifact-spine"
}