ALL SYSTEMS · NOMINAL
UTC --:--:--
Docs·Concepts·Hard gates

Hard gates override the score

Some conditions are unsafe regardless of how good the rest of the forecast looks. Goable encodes these as hard gates — when one fires, the verdict becomes unsafe and the score floors.

What a hard gate is

Most scoring dimensions are smooth: more wind is gradually better up to a point, then gradually worse. Some are step functions — lightning within 10km of your spot doesn't degrade conditions, it makes them unsafe to be in the water at all. Hard gates encode these. When a gated dimension exceeds threshold, the engine flips the verdict to unsafe and surfaces an alert in the alerts array of the response.

Universal gates

Two gates apply to every activity across every family — they operate independently of the profile:

Lightning proximity ≥ 0.85

Strikes detected within 10km of the spot within the request window. The number is normalised; ≥0.85 means high probability of in-window strike. Triggers unsafe verdict + alert lightning_proximity.

Air quality category = hazardous

OpenAQ / CAMS reports PM2.5 / O3 / NO2 in the hazardous band. Outdoor sustained activity unsafe regardless of the rest. Triggers unsafe + alert hazardous_aqi.

Profile-specific gates

Beyond the universal pair, each activity profile can declare its own gates on its dimensions. Some examples shipped in the public catalog:

  • Kitesurfing — beginner profile: wave height ceiling at 1.2m. Above it, the verdict floors regardless of wind quality.
  • Ski-touring — avalanche-aware profiles: SLF avalanche bulletin ≥ "considerable" (level 3) on the relevant aspect/elevation gate.
  • Paragliding: wind gust factor above pilot certification's ceiling forces unsafe.

Browse the per-profile gates in the activity catalog. Adding a new gate is a PR to the public profiles repo — schema is documented at the same URL.

How they appear in the response

A gated unsafe verdict carries the same score-and-breakdown shape as any other response — but verdict is forced to unsafe, and the alerts array lists every gate that fired. Treat alerts as authoritative: if it's non-empty, the verdict tells you not to go.