Kosciuszko NP · Main Range
How this works
Every figure on the brief is computed by a deterministic model from public weather data and one depth observation. A language model may draft the wording of the daily call, but it works only from those computed figures and cannot introduce a number of its own. This page explains the model — and its limits.
The pipeline
Twice a day, Aspect fetches hourly forecast data from Open-Meteo for five points on the range (Thredbo top station, Mt Kosciuszko, Mt Twynam, Guthega, Dead Horse Gap), requesting site elevation explicitly — the default grid height is a cell average and badly wrong in terrain this steep. It combines that with the latest Snowy Hydro snow-depth reading at Spencers Creek (1830 m), scores every aspect at every site for today plus six days, and publishes the result as a single validated snapshot. The page you read is a rendering of that snapshot — if a refresh fails, the previous snapshot stays up with a staleness warning rather than silently pretending to be current.
Solar & surface model
Sun position uses the full NOAA algorithm, then irradiance is decomposed onto each 30° slope: direct beam by geometry, diffuse by sky view, plus ground reflection. It is hemisphere-correct — the midday sun sits to the north here, so the corn cycle runs NE → N → NW through the day.
Each hour adds melt energy from a hybrid radiation + temperature index. Two corrections keep shaded aspects honest: absorbed sunlight must first exceed the clear-sky longwave loss (~70 W/m² — this is why a due-south face stays frozen all midwinter day under diffuse-only light), and the temperature term is gated by insolation so a mild but shaded hour is not scored as softening. Any cold dark hour resets the index to zero — that is the overnight refreeze. Surface class (frozen → firm → corn → soft → slush) is a function of the index accumulated since that reset.
Scoring
Hourly quality is a continuous curve peaking at the centre of the corn band. The aspect score blends peak quality (55%) with the mean of the best three hours (45%), scaled by how long the contiguous good window lasts. Wind loading is assigned to lee aspects when transportable snow is available — and appears only ever as a caution flag, never as a positive input to the score.
Depth & elevation
Snow depth is anchored to the Spencers Creek observation and extrapolated with a lapse rate of 19 cm per 100 m, rather than trusting the weather model's snow field, which is unreliable in Australian conditions. The snowline, elevation bands and approach verdicts (on snow / thin / bootpack / no-go) all derive from that one anchor — which is also why the page flags loudly when the reading is more than eight days old.
The aspect rose is scored three times over the same weather column — Thredbo top station's coordinates downscaled by Open-Meteo to roughly 1600, 1940 and 2200 m — so the Low / Mid / High toggle means “same place, different height”, not a change of location. Each band's snow depth comes from the same Spencers Creek lapse used for the coverage bands. Three discrete bands, not a continuous elevation dial, because the underlying model is one weather column plus a fixed lapse rate — finer resolution would be false precision.
Prose — where the language model sits
The scoring engine makes every call; templates turn those calls into sentences. When configured, Claude rewrites the daily verdict's wording from the computed figures — it is told the judgement is already made and it may not change it, soften a caution, or use any number not present in the data. A validator then checks every numeric token in the output against the input set; a single unexplained figure and that day falls back to the template. "The workings" section states which path produced the text you're reading. No language model ever touches a score, a window, a depth or a flag.
Confidence
Forecast skill decays with lead time, so every day carries a tier: high (today, tomorrow), medium (2–3 days out), low (4+ days). A low-confidence day is pattern-level guidance for planning leave, not a timing call.
Tuning constants — documented, not measured
| Constant | Value | What it sets |
|---|---|---|
cornLower / cornUpper | 3 / 14 | The corn band. If the page says 10:00 and you find it frozen at 11:00, this is what to raise. |
longwaveLossWm2 | 70 | Clear-sky radiative loss a slope must beat before melting. |
hardRefreezeC | −2 | Overnight minimum required before a softening cycle counts as true corn; a marginal refreeze is scored as wet spring snow with a capped ceiling. |
gustTransportFactor | 0.6 | Fraction of the gust speed treated as transport wind — the model's sustained 10 m wind badly understates exposed ridges. |
meltRateDivisorWm2 | 42 | Absorbed W/m² per melt-index unit per hour. |
DEPTH_LAPSE_CM_PER_100M | 19 | Depth change with elevation; recomputed when both Snowy Hydro sites report. |
| persistence weight | 0.4 | How much a long window beats a brief perfect one. Can rank a slow shaded aspect above a fast solar one on warm days. |
These are physically reasonable starting points, not measured values. The honest test is whether the model's call matches what is found on the hill, logged over a season — until there is enough of that log, treat the rankings as a strong hypothesis.
What this is not
There is no snowpack layering, no persistent-weak-layer tracking, and no field observation anywhere in this model. It cannot see a wind slab, a buried crust, or a cornice. It is a timing-and-aspect planning tool. Check the Mountain Safety Collective Main Range report before travelling, carry the gear, and make the real decision at the trailhead with your own eyes.