Debug · Lone
2-D grid · every layer · per-cell telemetry · time replay
Grid
Layers
Terrain (static)
Conditions (per time slice)
Overlays
Building the grid…
now
Cell telemetry
Click a cell on the grid to trace the model layer by layer.
Trail detail & profile
low
moderate
high
severe
● mud · ▲ slip
┄ before tuning
| segment | mud | rock | slip | snow | conf |
|---|
Tune the knobs
Live preview only. Moving a knob recomputes this page in your browser — it does
not save or change the deployed model, and reloading the page resets every knob to
its default. To change a default permanently, edit
params.py.
confidence (4)
conf_base 0-1
Starting confidence for a well-grounded output before any penalties.
why this default: A reasonable ceiling for a model with sparse labels - never claim near-certainty. This caps how confident any answer can look.
conf_rock_penalty 0-1
How much we lower confidence for rock-wetness answers (because the rock drying knob is the most uncertain).
why this default: Honesty: tau_rock_h is the least-grounded knob, so don't oversell rock answers. Raise it -> rock answers carry a louder 'uncertain' flag until labels confirm them.
conf_refinement_penalty 0-1
How much an output's confidence drops when an un-validated refinement factor (fog, exposure, etc.) materially changed the answer.
why this default: The 'trust is earned with data' rule: refinements lower confidence until a hike validates them, rather than projecting false certainty. Raise it -> the model is more openly tentative wherever a refinement is doing the work.
conf_alpine_snow_penalty 0-1
How much confidence drops on an exposed alpine segment that also reads snow -- snow products are weakest there. The single largest confidence dock.
why this default: SNODAS/obs snow is coarse and wind-scoured on exposed alpine terrain. Was a hardcoded 0.20. Raise it -> exposed snowy summits read more tentative.
elevation downscaling (2)
temp_lapse_f F/1000ft
How fast temperature drops with height. The weather is fetched at the summit, so each lower cell/segment is warmed by this rate; higher ground is colder.
why this default: Standard environmental lapse ~3.5 F/1000ft (6.5 C/km). The model auto-switches to the moist adiabat (~3.3) when saturated/cloudy and clamps toward 0 on clear calm nights (cold-air pooling). See SENSOR-RESOLUTION-REVIEW.md. Raise toward 5.4 (dry adiabatic) -> summits much colder, more ice/snow up top. Lower toward 0 -> elevation stops mattering for temperature.
dewpoint_lapse_f F/1000ft
How fast the dewpoint drops with height -- much gentler than temperature, so high ground reads relatively drier (a wider temp-dewpoint spread).
why this default: Dewpoint lapses ~1.0 F/1000ft (1.8 C/km) in unsaturated air, far less than temp; lapsing it at the temp rate (the common bug) wrongly pins humidity constant. Dewpoint is clamped to never exceed temperature. Raise toward the temp rate -> RH stays constant with height (less realistic). Lower toward 0 -> high ground reads much drier.
ground wetness (4)
soil_drainage_scale x
Overall how long the ground remembers rain, scaling the per-soil-type drydown. Sandy soils (group A) forget rain in well under a day; clay (group D) holds it for ~10 days -- this stretches or shrinks all of them at once.
why this default: Drydown e-folding times are set per USDA hydrologic group from real saturated conductivity (A ~0.5 d, B ~1.5 d, C ~4 d, D ~10 d; sand drains ~350x faster than clay -- Rawls 1982 / NRCS, see REAL-MODELS-RESEARCH.md). 1.0 = those values. Raise toward 2 -> every soil stays muddy ~twice as long after a storm. Lower toward 0.5 -> the ground firms up twice as fast.
rain_snow_temp_f deg F
The temperature line between rain and snow. Below it, precip falls as snow and does NOT wet the soil that day (it sits on top until it melts).
why this default: Jennings 2018 found the Northern-Hemisphere 50% rain/snow line near 1.0 C (33.8 F). Raise it -> more borderline storms are treated as snow (less mud in cold weather). Lower it -> more treated as rain.
soil_sat_api_in inches
How much accumulated 'rain memory' counts as fully saturated ground (mud-ready).
why this default: Roughly 2 in of recent effective rain saturates NE mountain soils. Lower to 1.2 -> the ground reads saturated/muddy after less rain. Raise -> it takes more rain to call it soaked.
snowmelt_ddf_in_per_f in/F/day
Degree-day snowmelt: inches of melt-water (snow-water-equivalent) released per F per day the daily-mean temperature sits above freezing. Melt wets the soil like rain.
why this default: Degree-day melt factors run ~0.03-0.10 in SWE/F/day for open/forested terrain (Hock 2003). Snowmelt is delayed antecedent moisture -- a big NE shoulder-season wetting source the model previously ignored. LOW CONFIDENCE until calibrated. Raise it -> a warm spell melts the pack faster and the ground reads muddier sooner. 0 -> ignore snowmelt entirely (the old behavior).
mud (11)
hydgrp_d_susc 0-1
How mud-prone a 'group D' soil is (shallow soil perched on bedrock -> water runs off / sits rather than soaking away). 1 = very mud-prone.
why this default: USDA hydrologic group D = high runoff. The Cascade validation: the col is group D with ~23 cm to bedrock, and it was the muddiest spot. This is the single biggest mud lever. Lower it -> less mud predicted everywhere on rocky NE soils; raise it -> more.
bedrock_shallow_cm cm
Soil thinner than this is treated as 'shallow over bedrock' - water perches near the surface and the tread stays saturated.
why this default: ADK summit soils (e.g. Ricker) are ~20-30 cm deep over bedrock. Raise to 50 -> more segments count as shallow/mud-prone. Lower to 15 -> fewer.
twi_mud_weight 0-1
How much a water-collecting spot (a flat saddle or drainage line, high 'wetness index') amplifies mud beyond the soil type alone.
why this default: Topographic wetness index is a real but MODEST predictor of soil moisture (Riihimaki 2021: ~24% of the variation). So it nudges, it doesn't dominate. Raise it -> cols and gullies read much muddier than ridges. Lower it -> terrain shape matters less and soil type dominates.
pooling_flat_grade_pct percent grade
Below this steepness the ground is flat enough to pond water (full pooling). Steeper segments shed water and pool less.
why this default: Trail-erosion studies: water drains off grades above a few percent; flats hold it. Raise to 10 -> more of the trail counts as flat/poolish/muddy. Lower to 3 -> only true flats pool.
organic_layer_susc 0-1
Extra mud-proneness from the spongy organic/humus layer on high NE trails, which holds water even when the mineral soil below 'drains well'.
why this default: ADK alpine/krummholz zones have thick sphagnum/humus that stays saturated. Raise it -> high, mossy stretches read muddier regardless of soil class. 0 -> ignore the organic layer.
trampling_weight 0-1
Extra mud from heavy foot traffic compacting the tread into a basin that holds water.
why this default: Recreation-ecology (Marion/Meadema): use level is a real driver of trail muddiness. Raise it -> popular trails (Cascade) read muddier. 0 -> ignore trampling until we have a good popularity input.
bedrock_perch_bonus 0-1
Extra mud-proneness added when soil is shallow over bedrock - water perches near the surface instead of draining away.
why this default: Thin soil over bedrock behaves like hydrologic group D (the Cascade col). Raise it -> thin rocky soils read muddier. 0 -> ignore the shallow-bedrock effect.
pooling_shed_span_pct percent grade
Over how many percent of grade (above the flat threshold) a segment ramps from full pooling down to the floor -- how fast steeper ground sheds standing water.
why this default: Trail-erosion studies: water sheds progressively as grade rises above a few percent. Was a hardcoded /30. Lower it -> ground stops pooling over a shorter grade range (sheds sooner).
pooling_min_frac 0-1
Floor on pooling for steep ground -- even a steep, incised/trampled tread holds some water rather than shedding it all.
why this default: Marion trail-erosion work: an incised tread retains water on grade. Was a hardcoded 0.3 floor. Lower it -> steep ground sheds nearly all standing water. Raise it -> steep tread stays poolish.
organic_layer_onset_ft feet
Elevation at/above which the spongy alpine organic/humus layer adds mud-proneness (it holds water even over well-drained mineral soil).
why this default: ADK alpine/krummholz humus sits above ~3500 ft; region-specific (tie to treeline when expanding to NH). Was a hardcoded 3500. Raise it for a higher-treeline region so only true alpine stretches get the bonus.
bog_mud_min 0-1
How deep the mud must be on FLAT ground to flag a 'bog' -- deep standing mud you sink into (boot-sucking). It's low slip (flat, so you don't slide), but a distinct, very visible condition worth surfacing on its own.
why this default: A flat, water-collecting, saturated col/bog is the classic NE boot-sucking section; it isn't a SLIP hazard but it IS a real trail datum hikers and trail crews track. Flagged as its own output rather than by inflating slip on the flat. Lower it -> more flat-mud sections flag as bogs. Raise it -> only the deepest.
refinements (5)
fog_weight 0-1
How much a cloud-immersed summit (in the fog) wets the surface. Kept modest and wind-gated.
why this default: Refinement R1. Cloud droplets deposit little compared to rain, and wind strips them; grid 'cloud' often disagrees with the actual summit. Raise it -> fogged-in summits read wetter. 0 -> ignore fog wetting entirely.
wind_exposure_amp 0-1
How much an exposed summit's wind is boosted above the valley-grid wind (peaks accelerate wind). Feeds both drying and the 'hard to stand' flag.
why this default: Refinement R2. Cascade gusts were 45-50 mph felt vs ~38 on the grid - peaks amplify ~20%+. Raise it -> summits dry faster and flag the wind hazard sooner. 0 -> use the grid wind as-is.
hard_to_stand_mph mph
The gust speed at/above which we flag a summit 'hard to stand' as a hazard.
why this default: Refinement R2. ~40+ mph gusts make footing on exposed rock genuinely hard - the Cascade report ('hard to stand') was ~45-50. Lower it -> the wind-hazard flag trips more readily. Raise it -> only ferocious wind flags.
exposure_onset_ft feet
Elevation where wind exposure starts ramping in (toward treeline). Below it a segment gets only its canopy-openness share of exposure; above it, elevation adds to it.
why this default: The NE treeline/krummholz transition begins in the low-3000s ft; region-specific (higher out west / in the Whites). Was a hardcoded 3000. Raise it for a higher-treeline region -> exposure ramps in higher up.
exposure_full_ft feet
Elevation at/above which wind exposure is fully ramped in (open alpine). With the onset this sets the treeline band over which exposure grows.
why this default: ADK/NH alpine summits are fully exposed by ~4500 ft. Was a hardcoded 1500-ft span above the 3000-ft onset. Lower it -> exposure saturates sooner above the onset.
slip (9)
slick_wet_rock 0-1
How slippery WET rock is (0 grippy, 1 like ice).
why this default: Wet-vs-dry friction drops ~20-26% on wet granite/sandstone (tribology + recreation-ecology). The single highest-leverage slip knob. Raise it -> wet rock pitches read much more dangerous. Lower it -> wet rock is treated as more manageable.
slick_wet_root 0-1
How slippery wet roots / wet wood are. Usually the slickest thing on a trail.
why this default: Wet wood loses ~38% of its grip; hikers routinely slip on wet roots. Raise it -> rooty climbs read riskier when wet. Lower it -> less so.
slick_wet_soil 0-1
How slippery saturated soil / mud is underfoot.
why this default: Soil shear strength collapses ~45% once saturated past ~80% - it gives way. Raise it -> deep mud reads as a serious slip/fall hazard. Lower it -> mud is treated as just messy, not dangerous.
grade_full_steep_pct percent grade
The grade at which a segment counts as maximally steep for slip risk. Steeper than this doesn't add more.
why this default: ~30% (about 17 degrees) is a steep sustained hiking pitch. Lower to 20 -> moderate grades already read as steep/risky. Raise to 40 -> only very steep pitches do.
descent_factor multiplier
How much riskier the same wet, steep pitch is going DOWN versus up.
why this default: Gait studies: required grip going downhill is far higher than uphill - descent is where people slip. Raise it -> descents are flagged as the dangerous direction. 1.0 -> treat up and down the same.
sat_collapse_frac 0-1
The wetness above which soil footing 'collapses' - it stops holding and gets sharply more slippery.
why this default: Soil shear strength drops ~45-47% above ~80% saturation. Lower it -> footing-collapse kicks in at lower wetness (more cautious in mud). Raise it -> only the wettest mud collapses.
slick_dry_rock 0-1
How slippery DRY rock is - i.e. how grippy. Low because dry rock has good traction.
why this default: Dry rock/scrambling has high friction; slips happen when it's wet. Raise it -> even dry rock reads a little slick (conservative). Lower it -> dry rock is treated as fully grippy.
slick_dry_root 0-1
How slippery dry roots/wood are.
why this default: Dry wood grips reasonably; the danger is when it's wet. Raise/lower to shift how cautious the model is about dry roots.
slick_dry_soil 0-1
How slippery dry/firm soil is underfoot.
why this default: Firm dry dirt has solid footing. Raise/lower to shift how cautious the model is about firm dirt.
snow & ice (6)
snowline_low_ft feet
Below this elevation, lingering snow has mostly melted out (shoulder season).
why this default: NE shoulder-season snowline sits in the mid-3000s ft; lower trails clear first. Raise it -> the model expects snow only up high. Lower it -> snow lingers to lower elevations.
snowline_full_ft feet
At/above this elevation, snowpack holds fully (the high summits).
why this default: ADK/NH high summits hold snow latest into spring. Together with the low line this sets the elevation band where snow fades out.
verglas_temp_f deg F
At/below this surface temperature, condensation freezes to clear ice (verglas) - the most dangerous slip case. Ties dew to the ice flag.
why this default: Water freezes at 32 F; verglas forms when a cold surface is at/below the dewpoint. Usually leave at 32. Nudge up slightly to be more cautious about thin ice near freezing.
verglas_wet_min 0-1
How wet a rock must already be (0-1 film) for a sub-freezing surface to glaze it with verglas by REFREEZING that water -- the clear-night ice case, no condensation needed.
why this default: Verglas forms either by deposition (surface<=dewpoint) OR by freezing pre-existing liquid (rain/meltwater) when the surface drops below 0C; the latter is the common NE clear-night case the old deposition-only test missed. Lower it -> a lightly damp rock glazes when it freezes. Raise it -> only clearly wet rock refreezes to ice.
verglas_rock_min 0-1
Minimum rock fraction in the tread for a verglas/ice hazard -- low, because a single icy slab underfoot causes a fall (matches the slip layer's rock threshold).
why this default: An ice hazard scales with ANY hard icy surface in the tread, not with rock being the majority cover; the slip layer already steps on rock at frac>0.05. Raise it -> only majority-rock segments flag ice. Lower it -> mixed terrain with a little rock can flag an icy slab.
frozen_ground_temp_f deg F
At/below this surface temperature the tread is treated as FROZEN SOLID -- firm, not muddy. Between here and 32F it's a freeze-thaw transition (mud ramps in).
why this default: Wet ground freezes firm a few degrees below 32F; a saturated col that froze reads firm underfoot, not muddy. The wet soil-moisture store is unchanged, so the mud returns on the thaw. Raise toward 32 -> ground firms up the moment it dips below freezing. Lower -> only a hard freeze firms the mud.
surface drying (14)
tau_rock_h hours
How fast bare rock dries. It's the hours of good drying weather it takes a wet slab to lose most of its film. Rock sheds water, so this is short.
why this default: LOW CONFIDENCE / the most uncertain knob: rock-specific data is thin; anchored to pavement-drying + leaf-wetness analogs. Prime calibration target. Raise to 8 -> rock stays 'wet/slick' much longer after rain. Lower to 1.5 -> it flash-dries in an hour of sun and wind.
tau_root_h hours
How fast roots and wood (the slick stuff between rocks) dry. Slower than rock.
why this default: The Nelson dead-fuel-moisture '10-hour' class (sticks 1/4-1 inch) - a direct analog. Raise it -> wet roots stay a slip hazard well into a sunny day. Lower it -> they dry sooner.
rain_full_wet_in inches
How much rain in an hour fully wets a surface. Less than this only partly wets it - so a 0.03 in TRACE does not make a dry rock count as soaked.
why this default: Fixes the validation bug where any trace of rain reset the surface to fully wet. Raise it -> it takes a real downpour to call rock wet. Lower it -> light rain wets it fully.
wet_rock_threshold 0-1
How wet a rock has to be (0 dry, 1 soaked) before we flag it 'wet / slick'.
why this default: Round threshold; the validated dry-rock case sits below it after wind-drying. Lower to 0.25 -> the model calls rock wet more readily (cautious). Raise to 0.6 -> only clearly-wet rock gets flagged.
dew_wind_cutoff_mph mph
Above this wind, dew and fog can't wet the surface - the wind keeps the rock from cooling to the dewpoint and strips any film off.
why this default: Validation: on the windy Cascade day the rock stayed dry despite fog/humidity. Wind shortens surface-wetness duration in leaf-wetness studies. Raise it -> dew/fog wetting survives into stronger wind. Lower it -> even a light breeze cancels dew/fog.
sun_dry_coeff 0-1
How strongly sunshine speeds surface drying (vs a cloudy day).
why this default: Reference-ET / drying is driven by solar; this scales the sun's share. Raise it -> sunny segments dry much faster than shaded ones. Lower it -> sun matters less and wind/temperature dominate.
sky_diffuse_frac 0-1
Share of clear-sky drying that reaches a shaded/north face anyway (diffuse skylight). The rest is direct beam, which only hits a slope when the sun is actually on it.
why this default: On a clear day diffuse skylight is ~15-25% of the energy on a horizontal surface; the direct beam (the other ~75-85%) is what makes a sunlit east face dry by mid-morning. Raise it -> aspect matters less (shaded faces dry nearly as fast). Lower it -> the sunlit faces dry far ahead of the shaded ones.
wind_dry_per_mph per mph
How strongly wind speeds surface drying, per mph of gust. Wind is the dominant dryer of exposed rock.
why this default: Validation: the 45-50 mph gusts, not the sun, dried the Cascade slabs. ~1/45 per mph means a 45 mph gust roughly doubles the drying rate. Raise it -> exposed windy summits dry almost instantly. Lower it -> wind matters less (rock stays wet longer in wind).
dew_wet_level 0-1
How wet dew/condensation makes a surface when it forms (a thin but slick film).
why this default: Condensation coats a surface to near-saturated even though it's a thin layer. Lower it -> dew is treated as only lightly wetting. Raise it -> a dewy rock reads fully slick.
tau_soil_h hours
How fast the bare-soil/dirt tread surface dries after rain -- slower than rock, faster than roots. Drives slip on wet dirt, separately from deep mud.
why this default: Between rock (~3 h) and the 10-h root/wood class: a bare mineral tread sheds a surface film faster than woody debris but slower than rock. Raise it -> wet dirt pitches stay a slip hazard longer into a sunny day. Lower it -> the dirt surface firms up sooner.
root_full_wet_in inches
How much rain in an hour fully wets roots/wood -- lower than rock's, because woody surfaces wet up with less rain, but a TRACE no longer pins them fully slick.
why this default: Roots/wood (Nelson 10-h class) wet readily but not from a few drops; ~half the rock threshold. Replaces a fixed 0.6 'any rain' root floor that over-wet on a trace. Lower it -> light rain makes roots fully slick. Raise it -> it takes real rain.
rock_emc_max 0-1
The damp floor wet ROCK relaxes toward in saturated air -- it no longer dries bone-dry on a humid day. Rock holds the least equilibrium moisture (lowest of the three).
why this default: Surface drying relaxes toward an RH/temp equilibrium (EMC), not 0 (Simard/NFDRS + Canadian FFMC; REAL-MODELS-RESEARCH.md §3). The film floor is ~0 below RH 40%, rising to ~0.3 for rock near saturation. Raise it -> rock stays damp/greasy longer in humid air. 0 -> the old dry-to-zero behavior.
root_emc_max 0-1
The damp floor wet ROOTS/wood relax toward in saturated air -- highest of the three, because wood is hygroscopic and stays damp/slick well into a humid day.
why this default: Same EMC physics; the research puts the saturated film floor at ~0.5 for roots/wood (rock floor < root floor). Wood is the Nelson 10-h fuel class. Raise it -> rooty pitches stay a humid-day slip hazard. Lower it -> they firm up.
dirt_emc_max 0-1
The damp floor the bare-soil tread relaxes toward in saturated air -- between rock and roots.
why this default: Same EMC physics; mineral soil holds intermediate equilibrium moisture (rock < dirt < root). Raise it -> dirt tread stays damp longer in humid air. Lower it -> it firms up sooner.