{
 "issue_day": "2026-11-05",
 "issued_at_myt": "2026-11-05T11:14:26.274684+08:00",
 "horizon_days": 3,
 "model": "longrecord_model (pack MY)",
 "tau": 0.72888,
 "tau_watch": 0.6909,
 "nwp": "Open-Meteo best_match hourly",
 "glofas": "GloFAS v4 reanalysis + forecast (Open-Meteo flood API)",
 "backfill": false,
 "states": {
  "Perlis": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.4963,
     "level": 0,
     "call": "clear",
     "rain_mm": 4.6,
     "rain3_mm": 36.1,
     "sat": 1.217,
     "glofas_ratio": 0.326,
     "point_rain_max_mm": 8.9
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.4764,
     "level": 0,
     "call": "clear",
     "rain_mm": 9.8,
     "rain3_mm": 26.2,
     "sat": 1.144,
     "glofas_ratio": 0.338,
     "point_rain_max_mm": 14.6
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.4456,
     "level": 0,
     "call": "clear",
     "rain_mm": 7.3,
     "rain3_mm": 21.7,
     "sat": 1.145,
     "glofas_ratio": 0.296,
     "point_rain_max_mm": 10.0
    }
   },
   "today": {
    "p": 0.3727,
    "level": 0,
    "rain_mm_so_far": 11.8,
    "sat": 1.24
   }
  },
  "Kedah": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.6019,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.3,
     "rain3_mm": 40.5,
     "sat": 1.231,
     "glofas_ratio": 0.452,
     "point_rain_max_mm": 20.3
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.5849,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.2,
     "rain3_mm": 33.4,
     "sat": 1.209,
     "glofas_ratio": 0.456,
     "point_rain_max_mm": 25.1
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.5543,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.6,
     "rain3_mm": 31.1,
     "sat": 1.19,
     "glofas_ratio": 0.411,
     "point_rain_max_mm": 22.2
    }
   },
   "today": {
    "p": 0.4929,
    "level": 0,
    "rain_mm_so_far": 12.9,
    "sat": 1.24
   }
  },
  "Pulau Pinang": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.1984,
     "level": 0,
     "call": "clear",
     "rain_mm": 14.2,
     "rain3_mm": 48.8,
     "sat": 1.5,
     "glofas_ratio": 0.493,
     "point_rain_max_mm": 18.7,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 22.2,
      "model": "best_match",
      "point": [
       5.3,
       100.2
      ],
      "by_model": {
       "best_match": 22.2,
       "ecmwf_ifs025": 20.4,
       "icon_seamless": 21.6
      },
      "n_points": 9
     }
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.2373,
     "level": 0,
     "call": "clear",
     "rain_mm": 9.6,
     "rain3_mm": 37.0,
     "sat": 1.5,
     "glofas_ratio": 0.447,
     "point_rain_max_mm": 16.8,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 16.4,
      "model": "best_match",
      "point": [
       5.4,
       100.5
      ],
      "by_model": {
       "best_match": 16.4,
       "ecmwf_ifs025": 14.1,
       "icon_seamless": 12.5
      },
      "n_points": 9
     }
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.1924,
     "level": 0,
     "call": "clear",
     "rain_mm": 12.9,
     "rain3_mm": 36.6,
     "sat": 1.437,
     "glofas_ratio": 0.497,
     "point_rain_max_mm": 23.1,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 25.8,
      "model": "icon_seamless",
      "point": [
       5.5,
       100.5
      ],
      "by_model": {
       "best_match": 23.6,
       "ecmwf_ifs025": 19.7,
       "icon_seamless": 25.8
      },
      "n_points": 9
     }
    }
   },
   "today": {
    "p": 0.1967,
    "level": 0,
    "rain_mm_so_far": 13.3,
    "sat": 1.5,
    "level_rule": 0,
    "urban_rule": {
     "level": 0,
     "max_mm": 26.5,
     "model": "icon_seamless",
     "point": [
      5.5,
      100.5
     ],
     "by_model": {
      "best_match": 21.7,
      "ecmwf_ifs025": 18.0,
      "icon_seamless": 26.5
     },
     "n_points": 9,
     "basis": "NWP local-day total (analysed hours + forecast) at the wettest point"
    },
    "level_final": 0
   }
  },
  "Perak": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.4845,
     "level": 0,
     "call": "clear",
     "rain_mm": 15.2,
     "rain3_mm": 42.0,
     "sat": 1.204,
     "glofas_ratio": 0.372,
     "point_rain_max_mm": 28.7
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.5137,
     "level": 0,
     "call": "clear",
     "rain_mm": 9.9,
     "rain3_mm": 39.7,
     "sat": 1.234,
     "glofas_ratio": 0.354,
     "point_rain_max_mm": 17.5
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.5054,
     "level": 0,
     "call": "clear",
     "rain_mm": 12.7,
     "rain3_mm": 37.8,
     "sat": 1.201,
     "glofas_ratio": 0.351,
     "point_rain_max_mm": 24.7
    }
   },
   "today": {
    "p": 0.4519,
    "level": 0,
    "rain_mm_so_far": 14.6,
    "sat": 1.171
   }
  },
  "Selangor": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.1541,
     "level": 0,
     "call": "clear",
     "rain_mm": 17.0,
     "rain3_mm": 40.9,
     "sat": 1.398,
     "glofas_ratio": 0.369,
     "point_rain_max_mm": 32.4,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 27.0,
      "model": "icon_seamless",
      "point": [
       2.9,
       101.8
      ],
      "by_model": {
       "best_match": 24.0,
       "ecmwf_ifs025": 22.2,
       "icon_seamless": 27.0
      },
      "n_points": 64
     }
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.1643,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.1,
     "rain3_mm": 40.1,
     "sat": 1.477,
     "glofas_ratio": 0.417,
     "point_rain_max_mm": 31.7,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 26.1,
      "model": "best_match",
      "point": [
       3.4,
       101.7
      ],
      "by_model": {
       "best_match": 26.1,
       "ecmwf_ifs025": 19.8,
       "icon_seamless": 23.8
      },
      "n_points": 64
     }
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.1723,
     "level": 0,
     "call": "clear",
     "rain_mm": 12.2,
     "rain3_mm": 39.3,
     "sat": 1.418,
     "glofas_ratio": 0.445,
     "point_rain_max_mm": 39.1,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 31.1,
      "model": "ecmwf_ifs025",
      "point": [
       3.7,
       101.4
      ],
      "by_model": {
       "best_match": 27.6,
       "ecmwf_ifs025": 31.1,
       "icon_seamless": 29.7
      },
      "n_points": 64
     }
    }
   },
   "today": {
    "p": 0.103,
    "level": 0,
    "rain_mm_so_far": 13.0,
    "sat": 1.327,
    "level_rule": 0,
    "urban_rule": {
     "level": 0,
     "max_mm": 42.0,
     "model": "icon_seamless",
     "point": [
      3.5,
      101.4
     ],
     "by_model": {
      "best_match": 32.6,
      "ecmwf_ifs025": 26.0,
      "icon_seamless": 42.0
     },
     "n_points": 64,
     "basis": "NWP local-day total (analysed hours + forecast) at the wettest point"
    },
    "level_final": 0
   }
  },
  "Kuala Lumpur": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.0842,
     "level": 0,
     "call": "clear",
     "rain_mm": 17.0,
     "rain3_mm": 40.4,
     "sat": 1.377,
     "glofas_ratio": 0.257,
     "point_rain_max_mm": 26.6,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 26.3,
      "model": "icon_seamless",
      "point": [
       3.06,
       101.74
      ],
      "by_model": {
       "best_match": 16.3,
       "ecmwf_ifs025": 15.9,
       "icon_seamless": 26.3
      },
      "n_points": 13
     }
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.0744,
     "level": 0,
     "call": "clear",
     "rain_mm": 8.6,
     "rain3_mm": 35.3,
     "sat": 1.451,
     "glofas_ratio": 0.259,
     "point_rain_max_mm": 16.4,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 18.8,
      "model": "icon_seamless",
      "point": [
       3.22,
       101.66
      ],
      "by_model": {
       "best_match": 18.0,
       "ecmwf_ifs025": 14.7,
       "icon_seamless": 18.8
      },
      "n_points": 13
     }
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.0759,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.1,
     "rain3_mm": 35.7,
     "sat": 1.377,
     "glofas_ratio": 0.264,
     "point_rain_max_mm": 12.7,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 29.7,
      "model": "icon_seamless",
      "point": [
       3.22,
       101.66
      ],
      "by_model": {
       "best_match": 11.6,
       "ecmwf_ifs025": 9.9,
       "icon_seamless": 29.7
      },
      "n_points": 13
     }
    }
   },
   "today": {
    "p": 0.1071,
    "level": 0,
    "rain_mm_so_far": 9.6,
    "sat": 1.404,
    "level_rule": 0,
    "urban_rule": {
     "level": 0,
     "max_mm": 22.4,
     "model": "icon_seamless",
     "point": [
      3.14,
      101.68
     ],
     "by_model": {
      "best_match": 14.6,
      "ecmwf_ifs025": 13.8,
      "icon_seamless": 22.4
     },
     "n_points": 13,
     "basis": "NWP local-day total (analysed hours + forecast) at the wettest point"
    },
    "level_final": 0
   }
  },
  "Putrajaya": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.0867,
     "level": 0,
     "call": "clear",
     "rain_mm": 23.6,
     "rain3_mm": 48.5,
     "sat": 1.397,
     "glofas_ratio": 0.254,
     "point_rain_max_mm": 29.4,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 27.0,
      "model": "icon_seamless",
      "point": [
       2.9,
       101.7
      ],
      "by_model": {
       "best_match": 20.6,
       "ecmwf_ifs025": 11.4,
       "icon_seamless": 27.0
      },
      "n_points": 10
     }
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.0838,
     "level": 0,
     "call": "clear",
     "rain_mm": 9.8,
     "rain3_mm": 43.5,
     "sat": 1.479,
     "glofas_ratio": 0.241,
     "point_rain_max_mm": 11.5,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 11.5,
      "model": "best_match",
      "point": [
       2.9,
       101.7
      ],
      "by_model": {
       "best_match": 11.5,
       "ecmwf_ifs025": 8.4,
       "icon_seamless": 9.5
      },
      "n_points": 10
     }
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.0753,
     "level": 0,
     "call": "clear",
     "rain_mm": 11.2,
     "rain3_mm": 44.6,
     "sat": 1.416,
     "glofas_ratio": 0.211,
     "point_rain_max_mm": 12.7,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 29.4,
      "model": "icon_seamless",
      "point": [
       2.94,
       101.7
      ],
      "by_model": {
       "best_match": 12.7,
       "ecmwf_ifs025": 9.9,
       "icon_seamless": 29.4
      },
      "n_points": 10
     }
    }
   },
   "today": {
    "p": 0.1319,
    "level": 0,
    "rain_mm_so_far": 10.1,
    "sat": 1.42,
    "level_rule": 0,
    "urban_rule": {
     "level": 0,
     "max_mm": 20.6,
     "model": "icon_seamless",
     "point": [
      2.9,
      101.66
     ],
     "by_model": {
      "best_match": 19.8,
      "ecmwf_ifs025": 11.4,
      "icon_seamless": 20.6
     },
     "n_points": 10,
     "basis": "NWP local-day total (analysed hours + forecast) at the wettest point"
    },
    "level_final": 0
   }
  },
  "Negeri Sembilan": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.2099,
     "level": 0,
     "call": "clear",
     "rain_mm": 14.1,
     "rain3_mm": 37.7,
     "sat": 1.156,
     "glofas_ratio": 0.099,
     "point_rain_max_mm": 22.5
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.2307,
     "level": 0,
     "call": "clear",
     "rain_mm": 7.8,
     "rain3_mm": 31.6,
     "sat": 1.19,
     "glofas_ratio": 0.128,
     "point_rain_max_mm": 14.2
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.2632,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.9,
     "rain3_mm": 32.8,
     "sat": 1.155,
     "glofas_ratio": 0.171,
     "point_rain_max_mm": 18.5
    }
   },
   "today": {
    "p": 0.1936,
    "level": 0,
    "rain_mm_so_far": 9.7,
    "sat": 1.161
   }
  },
  "Melaka": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.0805,
     "level": 0,
     "call": "clear",
     "rain_mm": 14.1,
     "rain3_mm": 37.8,
     "sat": 1.398,
     "glofas_ratio": 0.18,
     "point_rain_max_mm": 23.0,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 17.1,
      "model": "best_match",
      "point": [
       2.4,
       102.0
      ],
      "by_model": {
       "best_match": 17.1,
       "ecmwf_ifs025": 10.6,
       "icon_seamless": 11.1
      },
      "n_points": 13
     }
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.0707,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.1,
     "rain3_mm": 36.4,
     "sat": 1.437,
     "glofas_ratio": 0.201,
     "point_rain_max_mm": 29.2,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 31.5,
      "model": "best_match",
      "point": [
       2.3,
       102.4
      ],
      "by_model": {
       "best_match": 31.5,
       "ecmwf_ifs025": 28.2,
       "icon_seamless": 12.4
      },
      "n_points": 13
     }
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.0737,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.0,
     "rain3_mm": 34.2,
     "sat": 1.402,
     "glofas_ratio": 0.206,
     "point_rain_max_mm": 14.2,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 21.8,
      "model": "best_match",
      "point": [
       2.2,
       102.4
      ],
      "by_model": {
       "best_match": 21.8,
       "ecmwf_ifs025": 17.1,
       "icon_seamless": 10.5
      },
      "n_points": 13
     }
    }
   },
   "today": {
    "p": 0.0632,
    "level": 0,
    "rain_mm_so_far": 12.2,
    "sat": 1.342,
    "level_rule": 0,
    "urban_rule": {
     "level": 0,
     "max_mm": 26.4,
     "model": "best_match",
     "point": [
      2.3,
      102.3
     ],
     "by_model": {
      "best_match": 26.4,
      "ecmwf_ifs025": 20.9,
      "icon_seamless": 17.4
     },
     "n_points": 13,
     "basis": "NWP local-day total (analysed hours + forecast) at the wettest point"
    },
    "level_final": 0
   }
  },
  "Johor": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.3922,
     "level": 0,
     "call": "clear",
     "rain_mm": 14.9,
     "rain3_mm": 33.1,
     "sat": 1.121,
     "glofas_ratio": 0.287,
     "point_rain_max_mm": 27.8
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.3999,
     "level": 0,
     "call": "clear",
     "rain_mm": 8.7,
     "rain3_mm": 35.3,
     "sat": 1.172,
     "glofas_ratio": 0.288,
     "point_rain_max_mm": 22.1
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.4193,
     "level": 0,
     "call": "clear",
     "rain_mm": 11.0,
     "rain3_mm": 34.7,
     "sat": 1.153,
     "glofas_ratio": 0.307,
     "point_rain_max_mm": 23.2
    }
   },
   "today": {
    "p": 0.2793,
    "level": 0,
    "rain_mm_so_far": 11.7,
    "sat": 1.074
   }
  },
  "Pahang": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.2576,
     "level": 0,
     "call": "clear",
     "rain_mm": 14.1,
     "rain3_mm": 36.3,
     "sat": 1.083,
     "glofas_ratio": 0.21,
     "point_rain_max_mm": 27.5
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.2813,
     "level": 0,
     "call": "clear",
     "rain_mm": 8.0,
     "rain3_mm": 34.5,
     "sat": 1.107,
     "glofas_ratio": 0.219,
     "point_rain_max_mm": 15.8
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.2915,
     "level": 0,
     "call": "clear",
     "rain_mm": 13.2,
     "rain3_mm": 35.4,
     "sat": 1.089,
     "glofas_ratio": 0.226,
     "point_rain_max_mm": 21.1
    }
   },
   "today": {
    "p": 0.2299,
    "level": 0,
    "rain_mm_so_far": 12.3,
    "sat": 1.063
   }
  },
  "Terengganu": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.2686,
     "level": 0,
     "call": "clear",
     "rain_mm": 17.1,
     "rain3_mm": 33.1,
     "sat": 1.052,
     "glofas_ratio": 0.237,
     "point_rain_max_mm": 28.1
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.3031,
     "level": 0,
     "call": "clear",
     "rain_mm": 9.3,
     "rain3_mm": 36.7,
     "sat": 1.1,
     "glofas_ratio": 0.24,
     "point_rain_max_mm": 16.5
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.306,
     "level": 0,
     "call": "clear",
     "rain_mm": 17.3,
     "rain3_mm": 43.6,
     "sat": 1.091,
     "glofas_ratio": 0.254,
     "point_rain_max_mm": 30.4
    }
   },
   "today": {
    "p": 0.2629,
    "level": 0,
    "rain_mm_so_far": 10.4,
    "sat": 1.037
   }
  },
  "Kelantan": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.2443,
     "level": 0,
     "call": "clear",
     "rain_mm": 14.4,
     "rain3_mm": 38.0,
     "sat": 1.09,
     "glofas_ratio": 0.174,
     "point_rain_max_mm": 24.2
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.2814,
     "level": 0,
     "call": "clear",
     "rain_mm": 8.8,
     "rain3_mm": 36.1,
     "sat": 1.114,
     "glofas_ratio": 0.184,
     "point_rain_max_mm": 31.6
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.2854,
     "level": 0,
     "call": "clear",
     "rain_mm": 11.5,
     "rain3_mm": 34.8,
     "sat": 1.098,
     "glofas_ratio": 0.173,
     "point_rain_max_mm": 22.7
    }
   },
   "today": {
    "p": 0.2539,
    "level": 0,
    "rain_mm_so_far": 12.8,
    "sat": 1.072
   }
  },
  "Sabah": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.5208,
     "level": 0,
     "call": "clear",
     "rain_mm": 6.6,
     "rain3_mm": 11.2,
     "sat": 1.016,
     "glofas_ratio": 0.479,
     "point_rain_max_mm": 13.1
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.3586,
     "level": 0,
     "call": "clear",
     "rain_mm": 7.6,
     "rain3_mm": 17.0,
     "sat": 1.024,
     "glofas_ratio": 0.46,
     "point_rain_max_mm": 18.8
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.2552,
     "level": 0,
     "call": "clear",
     "rain_mm": 5.2,
     "rain3_mm": 19.4,
     "sat": 1.037,
     "glofas_ratio": 0.456,
     "point_rain_max_mm": 15.6
    }
   },
   "today": {
    "p": 0.5144,
    "level": 0,
    "rain_mm_so_far": 2.7,
    "sat": 1.035
   }
  },
  "Sarawak": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.4217,
     "level": 0,
     "call": "clear",
     "rain_mm": 9.8,
     "rain3_mm": 23.7,
     "sat": 1.065,
     "glofas_ratio": 0.227,
     "point_rain_max_mm": 19.0
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.3065,
     "level": 0,
     "call": "clear",
     "rain_mm": 10.6,
     "rain3_mm": 27.8,
     "sat": 1.074,
     "glofas_ratio": 0.243,
     "point_rain_max_mm": 22.3
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.2641,
     "level": 0,
     "call": "clear",
     "rain_mm": 4.6,
     "rain3_mm": 25.1,
     "sat": 1.084,
     "glofas_ratio": 0.266,
     "point_rain_max_mm": 12.3
    }
   },
   "today": {
    "p": 0.5059,
    "level": 0,
    "rain_mm_so_far": 7.4,
    "sat": 1.072
   }
  },
  "Labuan": {
   "obs_end": "2026-11-04",
   "days": {
    "2026-11-06": {
     "lead": 1,
     "p": 0.0214,
     "level": 0,
     "call": "clear",
     "rain_mm": 8.0,
     "rain3_mm": 15.5,
     "sat": 1.146,
     "glofas_ratio": 0.0,
     "point_rain_max_mm": 8.0,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 9.3,
      "model": "ecmwf_ifs025",
      "point": [
       5.38,
       115.24
      ],
      "by_model": {
       "best_match": 8.2,
       "ecmwf_ifs025": 9.3,
       "icon_seamless": 7.1
      },
      "n_points": 19
     }
    },
    "2026-11-07": {
     "lead": 2,
     "p": 0.0132,
     "level": 0,
     "call": "clear",
     "rain_mm": 6.4,
     "rain3_mm": 20.0,
     "sat": 1.206,
     "glofas_ratio": 0.0,
     "point_rain_max_mm": 6.4,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 10.8,
      "model": "icon_seamless",
      "point": [
       5.28,
       115.2
      ],
      "by_model": {
       "best_match": 6.2,
       "ecmwf_ifs025": 7.8,
       "icon_seamless": 10.8
      },
      "n_points": 19
     }
    },
    "2026-11-08": {
     "lead": 3,
     "p": 0.0133,
     "level": 0,
     "call": "clear",
     "rain_mm": 4.3,
     "rain3_mm": 18.7,
     "sat": 1.215,
     "glofas_ratio": 0.0,
     "point_rain_max_mm": 4.3,
     "level_logistic": 0,
     "urban_rule": {
      "level": 0,
      "max_mm": 7.4,
      "model": "icon_seamless",
      "point": [
       5.28,
       115.18
      ],
      "by_model": {
       "best_match": 4.5,
       "ecmwf_ifs025": 2.4,
       "icon_seamless": 7.4
      },
      "n_points": 19
     }
    }
   },
   "today": {
    "p": 0.0322,
    "level": 0,
    "rain_mm_so_far": 5.6,
    "sat": 1.12,
    "level_rule": 0,
    "urban_rule": {
     "level": 0,
     "max_mm": 7.9,
     "model": "icon_seamless",
     "point": [
      5.28,
      115.18
     ],
     "by_model": {
      "best_match": 5.6,
      "ecmwf_ifs025": 5.1,
      "icon_seamless": 7.9
     },
     "n_points": 19,
     "basis": "NWP local-day total (analysed hours + forecast) at the wettest point"
    },
    "level_final": 0
   }
  }
 },
 "pack": "MY",
 "tz": "MYT",
 "urban_rule": {
  "watch_mm": 100.0,
  "warning_mm": 150.0,
  "models": [
   "best_match",
   "ecmwf_ifs025",
   "icon_seamless"
  ],
  "version": "3.3.3-U3",
  "source": "Open-Meteo forecast, best_match+ecmwf_ifs025+icon_seamless",
  "regions": [
   "Kuala Lumpur",
   "Labuan",
   "Melaka",
   "Pulau Pinang",
   "Putrajaya",
   "Selangor"
  ]
 },
 "local_signal": {
  "rule": "persistence: agency trigger on the last closed day with truth (issue day − 1, else − 2) → local_watch = 1 for D+1…D+3 (3.3.4, fixed a priori)",
  "status": "no truth for 2026-11-04 or 2026-11-03 — local signal not issued"
 }
}